天天看點

matlab傅裡葉變換_MATLAB--運用傅裡葉變換對信号進行簡單的濾波

matlab傅裡葉變換_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))
           
結果
matlab傅裡葉變換_MATLAB--運用傅裡葉變換對信号進行簡單的濾波
matlab傅裡葉變換_MATLAB--運用傅裡葉變換對信号進行簡單的濾波
濾波後
matlab傅裡葉變換_MATLAB--運用傅裡葉變換對信号進行簡單的濾波
matlab傅裡葉變換_MATLAB--運用傅裡葉變換對信号進行簡單的濾波
matlab傅裡葉變換_MATLAB--運用傅裡葉變換對信号進行簡單的濾波