kingsonuk 发表于 2010-8-19 03:04

[求助]用Matlab后处理的问题

做出几组数据,想用MATLAB处理下 但是不太会MATLAB各位大侠帮我看一下我也写了一点MFILE

假设我从MATLAB的TIMEHIST PRO得到4组变量数据,比如说分别是时间,位移,速度,加速度.都有相同的数量,而且分别参照时间

我如果想将数据分成数份做RMS来表示 是不是应该如下
%比如a=time, b=displacement c=velocity d=acceleration
%求数量
e=size(abs(a))
%设置份数 比如5

f=5
for i=1:e/f
%在计算X1 Y1 Y2 Y3时出现问题 没有出现我想象中的一组数据,请问应该怎么才能出现一组数据呢? 谢谢!
X1=Mean(a(1+(i-1)*f:i*f))
Y1=std(b(1+(i-1)*f:i*f))
Y2=std(c(1+(i-1)*f:i*f))
Y3=std(d(1+(i-1)*f:i*f))
Plot(X1 Y1)
Plot(X1 Y2)
Plot(X1 Y3)

VibrationMaster 发表于 2010-8-19 09:22

1. e=size(abs(a)) 应该为 e=length(abs(a))或者e=size(a,1)
2.如果e不恰好是5的倍数也有麻烦


ChaChing 发表于 2010-8-19 11:45

e=size(abs(a))中的abs好像不需要, size(a,1)也不一定对! time可能为列或行向量矩阵
还有应该加上floor, loop也不太对, 试试f=5; ee=floor(length(a)/5);
X1=zeros(5,1); Y1=X1; Y2=X1; Y3=X1;
for ii=1:f, ppp=1+(ii-1)*ee:ii*ee;
   X1(ii)=Mean(a(ppp)); Y1(ii)=std(b(ppp));
   Y2(ii)=std(c(ppp)); Y3(ii)=std(d(ppp));
end
Plot(X1 Y1); Plot(X1 Y2); Plot(X1 Y3)

kingsonuk 发表于 2010-8-19 13:27

先谢过各位大侠,小弟再研究研究

158680981 发表于 2010-8-22 20:31

for循环里面你最后算了只存在一个X1,Y1,Y2,Y3,不信你去掉plot先查看其值。可以先建4个数组,然后把值付进去,然后用plot。你这样plot绝对没有一条线,就一个点。。。
页: [1]
查看完整版本: [求助]用Matlab后处理的问题