www.gusucode.com > signal 工具箱matlab源码程序 > signal/@dfilt/@abstractallpass/iirxform.m

    function [Ht,anum,aden] = iirxform(Hd,fun,varargin)
%IIRXFORM IIR Transformations
%
%   Inputs:
%       Hd - Handle to original filter
%       fun - function handle to transformation
%
%   Outputs:
%       Hout - Transformed filter
%       anum - Allpass numerator
%       aden - Allpass denominator

%   Author(s): R. Losada
%   Copyright 1988-2006 The MathWorks, Inc.


[b , a]= tf(Hd);
[num,den,anum,aden] = feval(fun,b,a,varargin{:});
if isreal(num),
    if sign(num(end)) == sign(den(1)),
        Ht = feval(class(Hd),den(2:end));
    else
        % Coefficients are negative of each other, account for that
        Ht = cascade(dfilt.scalar(-1),feval(class(Hd),den(2:end)));
    end
else
    % Complex case; cannot use dfilt.allpass
    Ht  = dfilt.df2(num,den);
end