消除异常值,滤波信号

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 = (samples-1) / (t(样本)- t (1));
[R_max, idx] = max (R);
[L_max, idx] = max(左);
t_m = t (idx);
图(1)
%次要情节(3,2,1);
情节(t, R);传说;情节(t、L); (“对”“左”);
情节(t_m R_max,“^ r”);;情节(t_m L_max,“罗”
文本(t_m R (idx) sprintf ('\\leftarrow Max = %。6f\n t = %。2 f '、R_max t_m),“HorizontalAlignment”“左”“VerticalAlignment”“高级”
文本(t_m L (idx) sprintf ('\\leftarrow Max = %。6f\n t = %。2 f '、L_max t_m),“HorizontalAlignment”“左”“VerticalAlignment”“高级”
标题(['数据样本在Fs = 'num2str(圆(Fs))“赫兹”]);
网格
% NB: decim = 1将不做任何事情(输出=输入)
decim = 50;
如果decim > 1
R = decimate (R,decim);
L = decimate (L,decim);
Fs = Fs / decim;
结束
样品长度= (R);
t = (0:samples - 1)*1/Fs;
[R_max, idx] = max (R);
[L_max, idx] = max(左);
t_m = t (idx);
图(2)
%次要情节(3 2 2);
情节(t, R);持有;情节(t、L);传奇(“对”“左”);
情节(t_m R_max,“^ r”);;情节(t_m L_max,“罗”
文本(t_m R (idx) sprintf ('\\leftarrow Max = %。6f\n t = %。2 f '、R_max t_m),“HorizontalAlignment”“左”“VerticalAlignment”“高级”
文本(t_m L (idx) sprintf ('\\leftarrow Max = %。6f\n t = %。2 f '、L_max t_m),“HorizontalAlignment”“左”“VerticalAlignment”“高级”
标题(['数据样本在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,“罗”
文本(t_m R (idx) sprintf ('\\leftarrow Max = %。6f\n t = %。2 f '、R_max t_m),“HorizontalAlignment”“左”“VerticalAlignment”“高级”
文本(t_m L (idx) sprintf ('\\leftarrow Max = %。6f\n t = %。2 f '、L_max t_m),“HorizontalAlignment”“左”“VerticalAlignment”“高级”
标题(['数据样本在Fs = 'num2str(圆(Fs))“Hz / Smoothed with slidingavg”]);
网格
图(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);
%次要情节(2、4);
情节(t, Rs);持有;情节(t, Ls);传奇(“对”“左”);
情节(t_m R_max,“^ r”);;情节(t_m L_max,“罗”
文本(t_m R (idx) sprintf ('\\leftarrow Max = %。6f\n t = %。2 f '、R_max t_m),“HorizontalAlignment”“左”“VerticalAlignment”“高级”
文本(t_m L (idx) sprintf ('\\leftarrow Max = %。6f\n t = %。2 f '、L_max t_m),“HorizontalAlignment”“左”“VerticalAlignment”“高级”
标题(['数据样本在Fs = 'num2str(圆(Fs))'Hz / Smoothed with medfilt1']);
网格
图(5)
N = 50;
Rs = sgolayfilt (R, 3, 51);
51 Ls = sgolayfilt(左3);
[Rs_max,指数]= max (Rs);
[Ls_max,指数]= max (Ls);
t_max = t(指数);
%次要情节(3 2 5);
情节(t, Rs);持有;情节(t, Ls);传奇(“对”“左”);
情节(t_max Rs_max,“^ r”);;情节(t_max Ls_max,“罗”
文本(t_max Rs(索引),sprintf ('\\leftarrow Max = %。6f\n t = %。2 f '、Rs_max t_max),“HorizontalAlignment”“左”“VerticalAlignment”“高级”
文本(t_max Ls(索引),sprintf ('\\leftarrow Max = %。6f\n t = %。2 f '、Ls_max t_max),“HorizontalAlignment”“左”“VerticalAlignment”“高级”
标题(['数据样本在Fs = 'num2str(圆(Fs))'Hz / Smoothed with sgolayfilt']);
网格

答案(1)

Chunru
Chunru 2021年8月13日
负载RRData
%中值滤波器以去除异常值(对于1个通道)
日元= medfilt1 (RRData。Strain_C_Fz 7);
情节(RRData。时间,RRData。Strain_C_Fz RRData。时间,y1)

s manbetx 845

社区寻宝

在MATLAB中心找到宝藏,并发现社区如何可以帮助你!

开始狩猎!