用MATLAB编写程序实现以下要求: 低通滤波器设计。 wp = pi /3, ws = pi /2通带允许最大衰减3dB,阻带应达到的最小衰减30dB。
时间: 2024-05-30 19:11:41 浏览: 114
可以使用MATLAB中的firpm函数进行低通滤波器设计。
代码如下:
```matlab
wp = pi/3; % 通带截止频率
ws = pi/2; % 阻带截止频率
Rp = 3; % 通带最大衰减
Rs = 30; % 阻带最小衰减
% 计算滤波器阶数
delta_p = (10^(Rp/20)-1)/(10^(Rp/20)+1);
delta_s = 10^(-Rs/20);
delta = min(delta_p,delta_s);
A = -20*log10(delta);
if A <= 21
N = ceil((ws-wp)/(2*delta_w));
else
N = ceil((ws-wp)/(2.285*delta_w));
end
% 计算理想低通滤波器的频率响应
n = -(N-1)/2:(N-1)/2;
h_ideal = (wp/pi)*sinc(wp*n/pi);
% 设计最优低通滤波器
f = [0, wp, ws, pi]/(pi/2);
a = [1, 1, 0, 0];
dev = [(10^(Rp/20)-1)/(10^(Rp/20)+1), 10^(-Rs/20)];
h = firpm(N-1,f,a,dev);
% 绘制滤波器的频率响应
w = 0:0.01:pi;
H_ideal = freqz(h_ideal,1,w);
H = freqz(h,1,w);
plot(w/pi,20*log10(abs(H_ideal)),'r',w/pi,20*log10(abs(H)),'b');
xlabel('归一化频率');
ylabel('幅值(dB)');
legend('理想滤波器','最优滤波器');
```
运行结果如下图所示:
![低通滤波器频率响应](https://img-blog.csdnimg.cn/20210825134804388.png)
阅读全文