www.gusucode.com > signal 工具箱matlab源码程序 > signal/@dfilt/@df1/thislimitcycle.m
function [y,zi,overflows] = thislimitcycle(Hd,x) %THISLIMITCYCLE % Author(s): V. Pellissier % Copyright 2005 The MathWorks, Inc. q = Hd.filterquantizer; numstateq = quantizer([q.InputWordLength q.InputFracLength]); denstateq = quantizer([q.OutputWordLength q.OutputFracLength]); % The values are distributed over the range of the state format zi = Hd.States; zi.Numerator = randquant(numstateq, size(Hd.HiddenStates.Numerator)); zi.Denominator = randquant(denstateq, size(Hd.HiddenStates.Denominator)); % Quantize States zi = quantizestates(q, zi); num = Hd.privNum; den = Hd.privDen; % Reach steady state N = impzlength(Hd); [y,ziiNum,ziiDen,Nidx,Didx] = df1filter(q,num,den,x(1:N,:),zi.Numerator,zi.Denominator,0,0); % Look for limitcycles in steady state only [y,zfNum,zfDen,Nidx,Didx,overflows] = df1filter(q,num,den,x(N+1:end),ziiNum,ziiDen,Nidx,Didx,'limitcycle'); Hd.TapIndex = [Nidx Didx]; Hd.HiddenStates = filtstates.dfiir(zfNum,zfDen);; % Return visible initial conditions only if length(zi.Numerator)>1, zi.Numerator = zi.Numerator(2:end); % tapindex(1) was reset to zero else zi.Numerator(1) = []; end zi.Numerator = flipud(zi.Numerator); zi.Denominator = flipud(zi.Denominator); % [EOF]