matlab图像去毛刺_信号去毛刺,去零漂
這是用一種設備采集得到的車輛橫向加速度信號,設備很差,信號有很多毛刺,也有看似恒定的零漂,請問如何去掉這些毛刺和零漂同時保證信號的幅值不會減低啊?謝謝!
我同時用了一個五次三點平滑和濾波,同時減去了一個總體均值,得出的幅值感覺降低太多,下面是我的程序:
time=xlsread('E:\TWIN_NearCrash_All\18Vehicle(s) Changing Lanes - Vehicles Traveling in Same Direction\PS\3357\twin_datainfo_AxAyT.xlsx','Ax Ay Az T','D1:D1150');
ay=xlsread('E:\TWIN_NearCrash_All\18Vehicle(s) Changing Lanes - Vehicles Traveling in Same Direction\PS\3357\twin_datainfo_AxAyT.xlsx','Ax Ay Az T','A1:A1150');
%load V1.mat
subplot 211;
plot(time,ay);
grid on;
ay2=mean5_3(ay,10);
%
Wp=0.3;
%Ws=0.7;
Ws=0.7;
Rp=3;
Rs=40;
[n,Wn]=buttord(Wp,Ws,Rp,Rs);
[B,A]=butter(n,Wn);
%ay1=filter(B,A,ay);
%plot(time,ay1,'k','linewidth',2);
%hold on;
ay2=filtfilt(B,A,ay2);
ay2=ay2-mean(ay2);
%ay2=ay2-(-0.268);
%
subplot 212;
plot(time,ay2);
grid on;
xlswrite('E:\TWIN_NearCrash_All\18Vehicle(s) Changing Lanes - Vehicles Traveling in Same Direction\PS\3357\twin_datainfo_AxAyT.xlsx',ay2','Ax Ay Az T','F1:F1150');
function y=mean5_3(x,m)
% x為被處理的數據
% m 為循環次數
n=length(x);
a=x;
for k=1: m
b(1) = (69*a(1) +4*(a(2) +a(4)) -6*a(3) -a(5)) /70;
b(2) = (2* (a(1) +a(5)) +27*a(2) +12*a(3) -8*a(4)) /35;
for j=3:n-2
b (j) = (-3*(a(j-2) +a(j+2)) +12*(a(j-1) +a(j+1)) +17*a(j)) /35;
end
b (n-1) = (2*(a(n) +a(n-4)) +27*a(n-1) +12*a(n-2) -8*a(n-3)) /35;
b (n) = (69*a(n) +4* (a(n-1) +a(n-3)) -6*a(n-2) -a(n-4)) /70;
a=b;
end
y =a;
2014-1-15 08:53 上傳
原始信號
總結
以上是生活随笔為你收集整理的matlab图像去毛刺_信号去毛刺,去零漂的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 马斯克称已为推特找到新首席执行官 6周内
- 下一篇: mysql定时木马_Mysql的语句生成