⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bilinear0.m

📁 这是关于数字信号处理的工具箱
💻 M
字号:
function [bd,ad] = bilinear0(ba,aa,Fs)
%《数字信号处理教程——MATLAB释义与实现》
% 双线性系数变换子程序
% 电子工业出版社出版  陈怀琛编著 2004年9月
%
% [bd,ad] = bilinear0(ba,aa,Fs)
% -------------------------------------------------------
% 从s域到z域的双线性频带变换
% 实现:
%          b(z)   b(s)|
%          ---- = ----|        1-z^(-1)    Nz(z)
%          a(z)   a(s)|@s = 2Fs-------- = ------
%                              1+z^(-1)    Dz(z)
% ba,aa按s的正幂降序排列至常数项结束
% Nz,Dz按z的负幂降序排列,从常数项开始,双线性变换:Nz=2*Fs*[1,-1];Dz=[1,1];
% bd,ad按z的负幂降序排列,从常数项开始
%
% 从常数项开始,把ba,aa按s的负幂降序排列。即将ba,aa中的短者左边补零成同长
lba=length(ba);laa=length(aa);
ld=laa-lba;
if ld>=0 ba=[zeros(1,ld),ba];   % 若aa长度大于ba,給ba前补ld个零
else aa=[zeros(1,-ld),aa];      % 若ba长度大于aa,給aa前补ld个零
end
Nz = 2*Fs*[1,-1]; Dz=[1,1];          % 双线性变换分子分母系数向量
N = max(lba,laa)-1;              % 模拟系统阶次N
bd = 0; ad = 0;                 % bd,ad系数向量初始化
for k = 0:N
    pld = [1];pln = [1];        % 双线性变换分子分母系数乘积项初始化
    for l = 0:k-1 
        pld = conv(pld,Dz);      % 求双线性变换分母系数k次幂Dz^k
    end
    for l = 0:N-k-1
        pln = conv(pln,Nz);      % 求双线性变换分子系数(N-k)次幂Nz^(N-k) 
    end
    bd = bd+ba(k+1)*conv(pln,pld);  % 分子系数多项式向量求和
    ad = ad+aa(k+1)*conv(pln,pld);  % 分母系数多项式向量求和
end
ad1 = ad(1); ad = ad/ad1; bd = bd/ad1;  % 用分母系数多项式首项使分子分母系数归一化

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -