文章目录
- 前言
- 一、MATLAB代码
- 二、仿真结果——幅度谱
前言
首先设计一个FIR带通滤波器,得到滤波器系数。然后使用freqz函数计算滤波器的频率响应,绘制其频响的幅度谱。给出完整的MATLAB代码。
一、MATLAB代码
代码如下:
% 设计一个FIR带通滤波器,通带在0.4π和0.8πrad/sample之间,纹波为3dB。
% 第一个阻带从0到0.3πrad/sample,衰减为60dB。第二个阻带从0.9πrad/样本到奈奎斯特频率,衰减为60dB。
% 计算频率响应。用线性单位和分贝绘制其幅度。
sf1 = 0.3;
pf1 = 0.4;
pf2 = 0.8;
sf2 = 0.9;
pb = linspace(pf1,pf2,1e3)*pi; % 通带频率范围bp = designfilt('bandpassfir', ...'StopbandAttenuation1',60, 'StopbandFrequency1',sf1,...'PassbandFrequency1',pf1,'PassbandRipple',3,'PassbandFrequency2',pf2, ...'StopbandFrequency2',sf2,'StopbandAttenuation2',60);b = bp.Coefficients; % 滤波器的系数
[h,w] = freqz(b); % 频率响应% 幅度谱(幅度取线性值)
figure()
subplot(2,1,1)
plot(w/pi,abs(h),'r','LineWidth',1.5)
grid on
axis([0 1 -0.2 1.2])
title('Magnitude spectrum of the filter')
ylabel('Magnitude')% 幅度谱(幅度取dB值)
subplot(2,1,2)
plot(w/pi,db(h),'b','LineWidth',1.5)
grid on
axis([0 1 -80 10])
xlabel('Normalized Frequency (\times\pi rad/sample)')
ylabel('Magnitude (dB)')
二、仿真结果——幅度谱
滤波器频响的幅度谱: