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

    function [A,B,C,D] = ss(Hd)
%SS  Discrete-time filter to state-space conversion.
%   [A,B,C,D] = SS(Hd) converts discrete-time filter Hd to state-space
%   representation given by 
%     x(k+1) = A*x(k) + B*u(k)
%     y(k)   = C*x(k) + D*u(k)
%   where x is the state vector, u is the input vector, and y is the output
%   vector. 
%
%   See also DFILT.

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

[A1,B1,C1,D1] = ss(Hd.privAllpass1);
[A2,B2,C2,D2] = ss(Hd.privAllpass2);

beta = Hd.beta;

A = [A1, zeros(size(A1,1),size(A2,2));
     zeros(size(A2,1),size(A1,2)), A2];

if isempty(A)
  A = [];
  B = zeros(0,1);
  C = zeros(1,0);
else
  B = (i/2)*[B1;B2];
  C = [conj(beta)*C1, -beta*C2];
end

D = (i/2)*(conj(beta)*D1 - beta*D2);