matlab编写程序设计低通模拟滤波器,具体要求为:3db带宽10KHz,阻带起始频率12KHz,阻带应达到的最小衰减-30db。
时间: 2024-01-01 20:04:28 浏览: 130
MATLAB低通滤波器设计
3星 · 编辑精心推荐
好的,根据您的要求,我为您编写了一个MATLAB程序,实现了一个3dB带宽为10kHz、阻带起始频率为12kHz、最小衰减为-30dB的模拟低通滤波器的设计。以下是代码:
```
% 定义参数
fpass = 10e3; % 3dB带宽10kHz
fstop = 12e3; % 阻带起始频率12kHz
Astop = 30; % 阻带最小衰减30dB
% 设计滤波器
fs = 100e3; % 采样率100kHz(取决于信号的最高频率)
Wp = fpass / (fs/2); % 归一化通带截止频率
Ws = fstop / (fs/2); % 归一化阻带截止频率
[n, Wn] = buttord(Wp, Ws, 3, Astop); % 计算巴特沃斯滤波器阶数
[b, a] = butter(n, Wn); % 设计巴特沃斯滤波器
% 绘制幅频特性图
[H, f] = freqz(b, a, 1024, fs);
figure;
semilogx(f, 20*log10(abs(H)));
title('Magnitude Response');
xlabel('Frequency (Hz)');
ylabel('Magnitude (dB)');
grid on;
axis([1e2 1e5 -40 5]); % 设置坐标轴范围
% 绘制相频特性图
figure;
plot(f, unwrap(angle(H))*180/pi);
title('Phase Response');
xlabel('Frequency (Hz)');
ylabel('Phase (degrees)');
grid on;
% 绘制极点图和零点图
figure;
zplane(b, a);
title('Pole-Zero Plot');
grid on;
% 绘制单位脉冲响应
figure;
impulse(b, a);
title('Impulse Response');
xlabel('Time (s)');
ylabel('Amplitude');
grid on;
% 绘制单位阶跃响应
figure;
step(b, a);
title('Step Response');
xlabel('Time (s)');
ylabel('Amplitude');
grid on;
```
您可以将代码复制到MATLAB代码编辑器中运行,得到滤波器的幅频特性图、相频特性图、极点图和零点图,以及单位脉冲响应和单位阶跃响应。
阅读全文