消除异常值和过滤信号

1查看(最近30天)
Merkhav E.
Merkhav E. 于2021年8月13日
回答: Chunru. 于2021年8月13日
我正在使用此代码将不同的过滤器应用于来自应变计的数据。如何先删除异常值,以筛选滤波器并绘制两个信号?我需要使用FFT吗?
谢谢你。
加载('rrdata.mat');
r = rrdata.strain_c_fz;
l = rrdata.strain_hb_fy;
t = rrdata.time;
样本=长度(t);
FS =(样品-1)/(t(样本)-t(1));
[r_max,idx] = max(r);
[l_max,idx] = max(l);
t_m = t(idx);
图1)
%子图(3,2,1);
图(T,R);持有plot(t,l);传奇('对''剩下');
绘图(t_m,r_max,'^ r');抓住;绘图(t_m,l_max,'ro'
文字(t_m,r(idx),sprintf('\\ refrearrow max =%.6f \ n t =%.2f',r_max,t_m),'水平对齐''剩下''垂直对齐''最佳'
文本(t_m,l(idx),sprintf('\\ refrearrow max =%.6f \ n t =%.2f',l_max,t_m),'水平对齐''剩下''垂直对齐''最佳'
标题(['fs ='的数据样本num2str(圆形(fs))'赫兹']);
网格
%NB:DECIM = 1将无效(输出=输入)
Decim = 50;
如果排名> 1
r =枯萎(r,decim);
L = Difimate(L,Decim);
fs = fs / decim;
结尾
样本=长度(r);
T =(0:样品 - 1)* 1 / FS;
[r_max,idx] = max(r);
[l_max,idx] = max(l);
t_m = t(idx);
图(2)
%子图(3,2,2);
情节(t,r);抓住;情节(t,l);传奇('对''剩下');
绘图(t_m,r_max,'^ r');抓住;绘图(t_m,l_max,'ro'
文字(t_m,r(idx),sprintf('\\ refrearrow max =%.6f \ n t =%.2f',r_max,t_m),'水平对齐''剩下''垂直对齐''最佳'
文本(t_m,l(idx),sprintf('\\ refrearrow max =%.6f \ n t =%.2f',l_max,t_m),'水平对齐''剩下''垂直对齐''最佳'
标题(['fs ='的数据样本num2str(圆形(fs))'赫兹']);
网格
图(3)
n = 25;
Rs = SlidingAvg(R,N);
ls = slidingavg(l,n);
[r_max,idx] = max(rs);
[l_max,idx] = max(ls);
t_m = t(idx);
%子图(3,2,3);
情节(t,rs);抓住;情节(T,LS);传奇('对''剩下');
绘图(t_m,r_max,'^ r');抓住;绘图(t_m,l_max,'ro'
文字(t_m,r(idx),sprintf('\\ refrearrow max =%.6f \ n t =%.2f',r_max,t_m),'水平对齐''剩下''垂直对齐''最佳'
文本(t_m,l(idx),sprintf('\\ refrearrow max =%.6f \ n t =%.2f',l_max,t_m),'水平对齐''剩下''垂直对齐''最佳'
标题(['fs ='的数据样本num2str(圆形(fs))'用SlidingAvg''Hz / Smoothed]);
网格
图(4)
n = 50;
Rs = Medfilt1(r,n,'截短');
ls = medfilt1(l,n,'截短');
[r_max,idx] = max(rs);
[l_max,idx] = max(ls);
t_m = t(idx);
%子图(3,2,4);
情节(t,rs);抓住;情节(T,LS);传奇('对''剩下');
绘图(t_m,r_max,'^ r');抓住;绘图(t_m,l_max,'ro'
文字(t_m,r(idx),sprintf('\\ refrearrow max =%.6f \ n t =%.2f',r_max,t_m),'水平对齐''剩下''垂直对齐''最佳'
文本(t_m,l(idx),sprintf('\\ refrearrow max =%.6f \ n t =%.2f',l_max,t_m),'水平对齐''剩下''垂直对齐''最佳'
标题(['fs ='的数据样本num2str(圆形(fs))'Hz / Smoothed with Medfilt1']);
网格
图(5)
n = 50;
rs = sgolayfilt(r,3,51);
ls = sgolayfilt(l,3,51);
[rs_max,index] = max(rs);
[ls_max,index] = max(ls);
t_max = t(索引);
%子图(3,2,5);
情节(t,rs);抓住;情节(T,LS);传奇('对''剩下');
plot(t_max,rs_max,'^ r');抓住;绘图(t_max,ls_max,'ro'
文本(t_max,rs(索引),sprintf('\\ refrearrow max =%.6f \ n t =%.2f',rs_max,t_max),'水平对齐''剩下''垂直对齐''最佳'
文本(t_max,ls(索引),sprintf('\\ refrearrow max =%.6f \ n t =%.2f',ls_max,t_max),'水平对齐''剩下''垂直对齐''最佳'
标题(['fs ='的数据样本num2str(圆形(fs))'hz / spooled with sgolayfilt']);
网格

答案(1)

Chunru.
Chunru. 于2021年8月13日
加载rrdata.
%中位过滤器删除异常值(对于1个通道)
y1 = medfilt1(rrdata.strain_c_fz,7);
绘图(rrdata.time,rrdata.strain_c_fz,rrdata.time,y1)

下载188bet金宝搏

社区宝藏狩猎

找到Matlab Central中的宝藏,并发现社区如何帮助您!

开始狩猎!