使⽤Matlab实现双线性变换法
Matlab提供的bilinear(num, den, Fs)函数可⽤来实现双线性变换, 其调⽤形式为
[numd, dend] = bilinear(num, den, Fs);
式中num和den分别表⽰模拟滤波器系统函数H(s)的分⼦多项式系数和分母多项式系数, Fs = 1 / T. 输出变量numd和dend分别表⽰数字滤波器H(z)的分⼦多项式系数和分母多项式系数. % 使⽤CB I型模拟滤波器设计模板和双线性变换法, 设计数字低通滤波器
Wp = 0.1 * pi;
Ws = 0.4 * pi;
Ap = 1;双面粘合衬
As = 25;
% 取 T = 2
收缩薄膜
T = 2;
% 通过转换得到模拟滤波器的指标
wp = 2 / T * tan(Wp / 2);电动绞磨
ws = 2 / T * tan(Ws / 2);
[N, wc] = cheb1ord(wp, ws, Ap, As, 's');
[num, den] = cheby1(N, Ap, wc, 's');
干手器
% 进⾏双线性变换
[numd, dend] = bilinear(num, den, 1 / T);
% 在[0, 0.5 * pi]区间上选取2000个采样点
W = linspace(0, 0.5 * pi, 2000);
% 求离散系统(所设计数字滤波器)的频率响应
H = freqz(numd, dend, W);
双向玻璃% 绘制系统增益响应曲线
plot(W / pi, 20 * log10(abs(H)));
% 检查所设计滤波器的关键指标是否满⾜要求
W = [Wp, Ws];
H = freqz(numd, dend, W);
滚珠丝杠副安装fprintf('Ap = %.4f\n', -20 * log10(abs(H(1))));
fprintf('As = %.4f\n', -20 * log10(abs(H(2)