MATLAB 数字滤波器 直接型转并联型 您所在的位置:网站首页 matlab传函串联 MATLAB 数字滤波器 直接型转并联型

MATLAB 数字滤波器 直接型转并联型

#MATLAB 数字滤波器 直接型转并联型| 来源: 网络整理| 查看: 265

手写的MATLAB dir2par函数

最近在学习数字滤波器的设计,有一道题是直接型滤波器转成并联型滤波器。 查到网上的dir2par函数还需要cplxcomp函数,才能计算。我手敲了全部代码发现效果并不好,于是自己手写了一个。

由于最近课业繁重,就不详细说了,主要说一下residuesz。 这个函数很厉害,大家可以使用doc residuesz查看它的文档。

我一直不是很喜欢help,它给出的帮助很少,而且matlab交互窗就那么大,看起来也不方便。文档的话有详细的使用方法,还有部分算法说明。看的同时也能提示英语水平 hhh。

residuez函数

这个函数说白了,就是将直接型的系统函数,分解成

doc residuesz的部分截图 很多个一阶项的相加,并联型就是将这些一阶项两两合并变成二阶项。然后就没有然后了……

当然这里需要考虑奇偶的问题,如果是奇数的话,就有一个一阶项不能合并。单独处理它就好了。

贴代码 function [C,B,A]=dir2par(b,a) % 直接型转并联型 [r,p,C]=residuez(b,a);% 直接项 常数项 % 计算r/p的长度【两者长度相同】 % 若为奇数 会留下一个一阶项(全部为实数) 不能完全两两组合 % 若为偶数 则所有项两两组合 %% 初始化 N=length(r); % 初始化B,A % 3列代表二阶项 A=zeros(ceil(N/2),3);B=A; %% 求解B,A k=1;% 遍历过程中R和P的下标 if mod(N,2)==1 % 为奇数 for i=1:2:N-1 % 将零点和极点分别两两组合,最后剩一个 % r(1)和r(2),r(3)和r(4)……以此类推 r(N-2)和r(N-1) [B(k,:),A(k,:)]=residuez([r(i),r(i+1)],[p(i),p(i+1)],0); % 上一行代码的目的就是两两合并,然后分子存B,分母存A(注意是三个参数) k=k+1; end % 注意一阶项的处理,doc residuez可以看到极点 z^-1项的系数带负号 % 要把这个负号重新添上 % 补最后一项 一阶项 B(end,:)=[r(end),0,0]; A(end,:)=[1,-p(end),0]; else for i=1:2:N % 将零点和极点分别两两组合,最后剩一个 % r(1)和r(2),r(3)和r(4)……以此类推 r(N-2)和r(N-1) [B(k,:),A(k,:)]=residuez([r(i),r(i+1)],[p(i),p(i+1)],0); k=k+1; end end end

中间那个三参数的使用可以看文档。

Best wishes! Happy everyday~



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有