資源簡介
對信號進行傅里葉變換,然后選擇寬度為10,30,50的濾波器對信號進行濾波,對濾波效果進行比較
代碼片段和文件信息
clc;
clear;
close?all;
%讀入原始數據
x=load(‘E:\實驗\實驗數據\張永江初測\v5.txt‘);
a=x‘;??%轉為行向量
d=a(1001:2024);
fs=1000;%采樣頻率
y=fft(d1024);??
?f=1000*(0:511)/1024;
%?f=0:0.977:500%(0:512)/1024;
figure(1);
subplot(411)
plot(fabs(y(1:512)));grid;
title(‘原始信號的頻譜圖‘);
xlabel(‘頻率/Hz‘);
ylabel(‘‘);
%%%%%%%%%%%%%%%5因為心電信號的能量主要集中在30HZ以下,在25HZ后迅速衰減到050HZ以后就幾乎沒有能量了。這樣可以做一個簡單的低通濾波,如下所示
%使用不同寬度的濾波器對頻譜進行濾波,抑制頻譜直接令其為0.
y1=y;?y1(10:1014)=0
y2=y;?y2(30:1004)=0
y3=y;?y3(45:994)=0;y3(1:2)=0;
%?pyy1=y1.*conj(y1)????%求y的模平方
%?pyy2=y2.*conj(y2)?
%?pyy3=y3.*conj(y3)?
f=1000*(0:511)/1024;
%?f=0:0.977:500%(0:512)/1024;
subplot(412)
plot(fabs(y1(1:512)));grid;
title(‘寬度為10的低通濾波器濾波后信號的頻譜圖‘);
xlabel(‘頻率/Hz‘);
ylabel(‘‘);
subplot(413)
plot(fabs(y2(1:512)));grid;
title(‘寬度為30的低通濾波器濾波后信號的頻譜圖‘);
xlabel(‘頻率/Hz‘);
ylabel(‘‘);
axis?tight;
subplot(414)
plot(abs(y3(1:512)));grid;
title(‘寬度為50的低通濾波器濾波后信號的頻譜圖‘);
xlabel(‘頻率/Hz‘);
ylabel(‘‘);
axis?tight;
%對經過濾波的頻譜做傅里葉逆變換,得到相應的降噪信號
xd1=real(ifft(y11024))
xd2=real(ifft(y21024))
xd3=real(ifft(y31024))
%畫出降噪以后的波形
figure(2)
subplot(411);plot(d);
xlabel(‘時間/ms‘);ylabel(‘幅值/mv‘);title(‘原始信號‘);
subplot(412);plot(xd1);
xlabel(‘時間/ms‘);ylabel(‘幅值/mv‘);title(‘寬度為10的低通濾波器濾波后的信號‘);
subplot(413);plot(xd2);
xlabel(‘時間/ms‘);ylabel(‘幅值/mv‘);title(‘寬度為30的低通濾波器濾波后的信號‘);
subplot(414);plot(xd3);
xlabel(‘
- 上一篇:自動控制系統校正課程設計
- 下一篇:TDOA常見算法的MATLAB源代碼
評論
共有 條評論