使用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
  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

好梦成真Kevin

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值