[题目要求]
设计满足下列指标的模拟低通滤波器.
fp=1kHz, fs=3kHz, Ap<=1dB, As>=50dB.
[分析]Matlab信号处理工具提供了常用的设计模拟低通滤波器的函数. 无论是BW型、CB型还是椭圆模拟低通滤波器, Matlab提供了两个函数来实现其设计. 首先根据设计指标确定出相应模方函数中的参数, 然后由确定好的参数获得模拟低通滤波器的系统函数H(s). 在实际应用中, 可方便地调用这些函数完成模拟滤波器的设计.
[解法1(使用BW型模拟低通滤波器模板)]
[设计代码]
% 设计Butterworth模拟低通滤波器
% fp=1kHz, fs=3kHz, Ap<=1dB, As>=50dB
% 滤波器指标
% 低通滤波器的通带截频
wp = 2 * pi * 1000;
% 低通滤波器的阻带截频
ws = 2 * pi * 3000;
% 滤波器的通带衰减(dB)
Ap = 1;
% 滤波器的阻带衰减(dB)
As = 50;
% 设计butterworth型滤波器
[N, wc] = buttord(wp, ws, Ap, As, 's');
% butter()函数返回BW型滤波器系统函数H(s)的分子多项式系数(num)和分母多项式系数(den)
[num, den] = butter(N, wc, 's');
% 滤波器的增益响应
% y = linspace(x1, x2, n);
% 生成n个点, 这些点的间距为(x2-x1)/(n-1)
w = linspace(0, 5000 * pi * 2, 5000);
% freqs()返回一个模拟滤波器H(jw)的复频域响应(Laplace格式)
% freqs(num, den, w) -> 根据系数向量num, den计算并返回模拟滤波器的复频域响应H(s)
% 角频率w确定了输入的实向量, 因此必须包含至少一个频率点
h = freqs(num, den, w);
% 角频率w/(2*pi)即为频率f
% 绘制BW型模拟低通滤波器的增益响应曲线
% 横轴单位为Hz
% abs(x)函数对括号内的元素x求绝对值: 当x为复数时, 返回该复数的幅值
plot(w / (2 * pi), 20 * log10(abs(h)));
% plot(w/ (2 * pi), abs(h));
% 计算Ap和As
% 改变角频率w的样点值
w = [wp, ws];
h = freqs(num, den, w);
% 计算设计完成后的滤波器的通带截频
fprintf('Ap=%.4f\n', -20 * log10(abs(h(1))));