matlab滤波怎么实现

tobin liao 2017-03-08 07:52:03
将波峰与波谷之间差小于某个阈值,则将这部分抖动的数据除去。(滤波)
与动态阈值数波峰计步类似。

数据剔除:将类似从下图的11直接到抖动部分的波谷连接起来

(不过不知道这样的计算会偏大很多,理论上应该曲线波峰比较少一点)

If 波峰与下个波谷之间的差 小于 阈值
//说明这个波峰不是正常的行走,取出这个波峰
获得波谷的位置
往回找 if 出现波谷 且 未找到比本波谷值低的点
则将两个波谷之间的数据删除(滤波)
If 找到比波谷值低的点,则将波谷与该点之间的数据删除

End

将波峰与波谷之间的数据删除
...全文
1468 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
tobin liao 2017-03-08
  • 打赏
  • 举报
回复
qq:1374465900
tobin liao 2017-03-08
  • 打赏
  • 举报
回复
clear all; data_tmp = importdata('data/downstaits13.txt');%('data/downstaits13.txt'); data=data_tmp(:,2); temp=data; % size(simple,1) plot(1:size(data,1),data,'g'); %%%%%%%%%%%%% %滤波 %找波峰,波谷 length=size(data,1);%raw is number %但是这样,在数值相同的点在波谷处或者波峰处,也计算进去,导致会有连续的波峰和波谷 %需要在后面判断 或者 可以再进行滤波,将相同的点过滤 % valleys=simple(loc_valleys); len_peaks=size(loc_peaks,1);%波峰的个数 len_valleys=size(loc_valleys,1);%波谷的个数 i=1;j=2;del=0; while (i<=len_peaks && j<=len_valleys) %一直循环一直到某一个数组的长度 % i if (loc_peaks(i)<loc_valleys(j)) %过滤掉波峰,前面的波谷-- while (loc_peaks(i)<loc_valleys(j)) %寻找波峰后面一个临近的波谷 i=i+1; end % end while i=i-1; %在循环的时候多加了一次1,所以需要减回来 if (data(loc_peaks(i)-del) - data(loc_valleys(j)-del) < 5)%判断是否小于 %消除两个波谷的点 % del if (j~=1)%当是第一个时候,直接退出 for k=(loc_valleys(j)-del):-1:(loc_valleys(j-1)-del) temp(k,1) temp(k,:)=[]; del=del+1; end % end for end %end if end %end if % % % % else j=j+1; %在这里实现波谷的位置移动,也就是过滤-- end i=i+1; % if mod(i,10)==0 % i % end end figure; plot(1:size(temp,1),temp,'r'); 这是没有是实现功能更的代码,不知大神们,请教怎么实现

241

社区成员

发帖
与我相关
我的任务
社区描述
企业开发 其他
社区管理员
  • 其他
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧