1、目的
學習MATLAB的filter函數的使用,通過設計低通、帶通和高通濾波器對其進行仿真
2、用到的主要函數和工具
MATLAB、FDATOOL、filter、fft
3、設計
- 信號的產生
%% Parameter Interface
Frequence0 = 60; %單位:Hz
Frequence1 = 130; %單位:Hz
Frequence2 = 1e3; %單位:Hz
SampleFre = 4e3; %單位:Hz
SampleLen = SampleFre; %采樣點數
%% Main
%-------------------產生三路信號
t = 0:1/SampleLen:1/SampleFre*(SampleLen-1);
SignalData0 = sin(2*pi*Frequence0*t);
SignalData1 = sin(2*pi*Frequence1*t);
SignalData2 = sin(2*pi*Frequence2*t);
SignalData3 = SignalData0+SignalData1+SignalData2;
figure;hold on
plot(t(1:150),SignalData0(1:150),'b')
plot(t(1:150),SignalData1(1:150),'r')
plot(t(1:150),SignalData2(1:150),'k')
hold off
figure;plot(t(1:150),SignalData3(1:150))
title('三路信號求和')
三路信號的時域波形
三路求和信號頻譜分析
FFT_Data = fft(SignalData3);
2.低通濾波器設計
- 基於fdatool的低通濾波器的設計
在MATLAB命令行執行fdatool命令,彈出濾波器設計交互窗口,根據自己的需求設計符合自己要求的濾波器,這是我設計的低通濾波器見下圖
需要注意的是通過設計Fpass和Fstop確定了濾波器的帶寬,同時參數設計的越接近理論濾波器的性能,濾波器的階數越多,計算量越大,所以需要優化濾波器這兩個參數,在保證性能的同時確保階數越小(計算量越小)
- 濾波
- LPF_Data = filter(LPF_Coe.LPF_60M,1,SignalData3);
- 濾波后的時域和頻譜波形
3.帶通和高通操作步驟大體一致就不詳細說明
4、M代碼
代碼見https://download.csdn.net/download/flypassion/10627808
5、備注
1、濾波器出數有一定延遲,這在具體調制解調過程中需要注意