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

    function [y,zi,overflows] = thislimitcycle(Hd,x)
%THISLIMITCYCLE   

%   Author(s): V. Pellissier
%   Copyright 2005 The MathWorks, Inc.

q = Hd.filterquantizer;

stateq = quantizer([q.StateWordLength q.StateFracLength]);
% The values are distributed over the range of the state format
zi = randquant(stateq, size(Hd.HiddenStates)); 

num = Hd.privNum;
den = Hd.privDen;
sv = Hd.privScaleValues;
issvnoteq2one = Hd.issvnoteq2one;
nsecs = Hd.nsections;

if length(issvnoteq2one) > nsecs + 1
    warning(message('signal:dfilt:abstractsos:filter:ExtraScaleValues'));
    issvnoteq2one = issvnoteq2one(1:nsecs+1);
end

% Reach steady state
N = impzlength(Hd);
[y,zii] = df2tsosfilter(q,num,den,sv,issvnoteq2one,x(1:N,:),zi);

% Look for limitcycles in steady state only
[y,zf,overflows] = df2tsosfilter(q,num,den,sv,issvnoteq2one,x(N+1:end),zii,'limitcycle');

Hd.HiddenStates = zf;

% Return visible initial conditions only
[M,N] = size(zi);
zi = reshape(zi,2,M*N/2);

% [EOF]