matlab数据处理

来源:百度知道 编辑:UC知道 时间:2024/05/26 21:07:21
蛇行数据中,类似正弦曲线的数据,想找出第二、三、四个波峰值并求平均值。应该怎么处理呢?

%假设你的蛇形数据储存在向量x中
len=length(x);
%向量max用于存储搜索到的波峰值
%由于只需要第二、三、四个波峰值
max=zeros(1,3);
pt=1;%pt自动指向max的下一个元素
i=1;
j=i+1;
k=j+1;
cnt=0;%cnt用于记录检索到的波峰数
while(cnt<=3)
if(x(i)<x(j))
if(x(j)>x(k))
cnt=cnt+1;
if cnt>1
max(pt)=x(j);
pt=pt+1;
end
end
end
i=i+1;
j=j+1;
k=k+1;
end
average=sum(max)/3;
disp(max);
disp(average);

找波峰值,从图形上看应该是极大值,先对函有选举权取负,再用fminbnd取最小,得到峰值,再还原为正。取出来后,求平均就容易了。