使用matlab實現fir濾波,產生波形,並進行過濾


  • 代碼如下這里直接使用了matlab中的fir1函數進行濾波,具體fir1函數如何使用可以百度
Fs=2048;  %采樣頻率,根據香農采樣定理,被采樣信號頻率不可以高於采樣頻率的一半,否則無法恢復出原信號
%產生的信號頻率小於Fs/2,如果不滿足此條件會發生信號頻率的混疊,達不到預期的濾波效果
dt=1.0/Fs;
T=1;N=T/dt;t=[0:N-1]/N
x1=sin(2*pi*50*t)+sin(2*pi*300*t)+sin(2*pi*500*t);   %產生一個頻率為 50,300,500Hz的信號
subplot(3,1,1);plot(t,x1);  %繪制輸入信號       
axis([0,0.1,-2,2]);   %將x軸范圍限制在0-0.1,y軸限制在-2到2     
P=fft(x1,N);           %對信號進行傅里葉變換
Pyy=2*sqrt(P.*conj(P))/N;             
f=linspace(0,Fs/2,N/2);       
subplot(3,1,2);plot(f,Pyy(1:N/2)); %畫出信號頻譜圖
b=fir1(48,0.1); %濾波器取48長度,截至頻率為0.1,取出低頻信號,這里使用了matlab濾波函數
%b=fir1(48,[0.2 0.4]);    %產生帶通濾波器,取出中間的信號,濾去兩邊信號
%b=fir1(48,0.4,'high');     %讓高頻通過濾除兩邊信號
x2=filter(b,1,x1);
subplot(3,1,3);plot(t,x2);axis([0,0.1,-2,2]); %繪制濾除后的信號
  • 濾波效果圖如下


免責聲明!

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



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