MATLAB--運用傅里葉變換對信號進行簡單的濾波


運用傅里葉變換對信號進行簡單的濾波
原理
將信號進行傅里葉變換可以信號中有哪些頻率成分,將需要濾除的頻率成分的幅值置零,然后進行傅里葉逆變換就可以達到濾波的目的。

注意點
運行FFT進行變換時需要考慮奈奎斯特之后的振幅和相位,進行傅里葉逆變換的時候是取N個點進行變換,而不是取一半。

下面以一個實例進行說明
信號:x=0.5sin(2pi3t)+cos(2pi10*t),濾除8Hz-12Hz的信號。

dt=0.02;%采樣間隔
N=512;%采樣點數
t=0:dt:(N-1)*dt;%采樣時刻
fs=1/dt;%采樣頻率,與才采樣間隔互為倒數
n=0:1:N-1;
f=(fs/N).*n;%X軸每個點對應的頻率
x=0.5*sin(2*pi*3*t)+cos(2*pi*10*t);%信號
figure(1)
plot(t,x)
y=fft(x);%傅里葉變換得到一個復數
Ay=abs(y);%取模
Ayy=Ay*2/N;%轉換成實際的幅值
figure(2)
plot(f(1:N/2),Ayy(1:N/2))
f1=8;
f2=15;
yy=zeros(1,length(y));
for m=0:N-1
if(m*(fs/N)>f1&m*(fs/N)&&(fs-f2)&m*(fs/N)<(fs-f1));%將奈奎斯特之后的頻率也濾除點掉
yy(m+1)=0;
else
yy(m+1)=y(m+1);
end
end %將頻率為8Hz-12Hz的信號的幅值置0
yyi=abs(yy);
figure(3)
plot(f(1:N/2),yyi(1:N/2))
yi=ifft(yy);
figure(4)
plot(t,real(yi))

結果

 

 

 

 濾波后

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM