www.gusucode.com > signal 工具箱matlab源码程序 > signal/@dfilt/@df2tsos/lclcscalefactors.m
function c = lclcscalefactors(Hd,c,nb,opts) %LCLCSCALEFACTORS Local cumulative scale factor computation. % Author(s): Dr. Guenter Dehner, R. Losada % Copyright 1988-2006 The MathWorks, Inc. over = opts.over; smax = opts.smax; pnorm = opts.pnorm; bb = 1; aa = 1; soc = Hd.sosMatrix; for i= 1:nb, Hdpartial = cumsec(Hd,i); q1 = norm(Hdpartial,pnorm); switch over case {'wrap'} c(i) = smax/q1; case {'saturate'} Hdpartial = cumsec(Hd,i,true); Hdpartial.sosMatrix(1,1:2) = [(soc(i,4)*soc(i,2)-soc(i,5))... (soc(i,4)*soc(i,3)-soc(i,6))]; q3 = norm(Hdpartial,pnorm); % Reuse temp object for speed Hdpartial.sosMatrix(1,1:2) = [(soc(i,4)*soc(i,3)-soc(i,6))... (soc(i,5)*soc(i,3)-soc(i,6)*soc(i,2))]; q4 = norm(Hdpartial,pnorm); sp = [q1,q3,q4]; maxsp = max(sp); c(i) = smax/maxsp; case {'satall'} a0 = aa; b0 = bb; aa = conv(aa,soc(i,4:6)); bb = conv(bb,soc(i,1:3)); b3 = conv(b0,[(soc(i,4)*soc(i,2)-soc(i,5))... (soc(i,4)*soc(i,3)-soc(i,6)) 0]); q3 = norm(dfilt.df2t(b3,aa),pnorm); b4 = conv(b0,[(soc(i,4)*soc(i,3)-soc(i,6))... (soc(i,5)*soc(i,3)-soc(i,6)*soc(i,2)) 0]); q4 = norm(dfilt.df2t(b4,aa),pnorm); b5 = conv(b0,[(soc(i,4)*soc(i,2))... (soc(i,4)*soc(i,3)+soc(i,5)*soc(i,2)-soc(i,6))... (soc(i,5)*soc(i,3))]); q5 = norm(dfilt.df2t(b5,aa),pnorm); q0 = norm(dfilt.df2t(b0,a0),pnorm); asoc= abs(soc(i,:)); sp = [([1,asoc(4:6)])*q1,([1,asoc(2:3)])*q0,q3,q4,q5]; maxsp = max(sp); c(1,i) = smax/maxsp; end end % [EOF]