Mercurial > octave-nkf
diff scripts/control/util/zginit.m @ 7132:b01db194c526
[project @ 2007-11-08 16:17:34 by jwe]
author | jwe |
---|---|
date | Thu, 08 Nov 2007 16:17:34 +0000 |
parents | f084ba47812b |
children |
line wrap: on
line diff
--- a/scripts/control/util/zginit.m Thu Nov 08 15:55:02 2007 +0000 +++ b/scripts/control/util/zginit.m Thu Nov 08 16:17:34 2007 +0000 @@ -38,58 +38,61 @@ print_usage (); endif - [nn,mm] = size(b); - [pp,mm] = size(d); + [nn, mm] = size (b); + [pp, mm] = size (d); nmp = nn+mm+pp; ## set up log vector zz - zz = zeros(nmp,1); + zz = zeros (nmp, 1); ## zz part 1: - for i=1:nn + for i = 1:nn ## nonzero off diagonal entries of a - if(nn > 1) - nidx = complement(i,1:nn); - a_row_i = a(i,nidx); a_col_i = a(nidx,i); - arnz = a_row_i(find(a_row_i != 0)); acnz = a_col_i(find(a_col_i != 0)); + if (nn > 1) + nidx = complement (i, 1:nn); + a_row_i = a(i,nidx); + a_col_i = a(nidx,i); + arnz = a_row_i(find (a_row_i != 0)); + acnz = a_col_i(find (a_col_i != 0)); else arnz = acnz = []; endif ## row of b - bidx = find(b(i,:) != 0); + bidx = find (b(i,:) != 0); b_row_i = b(i,bidx); ## column of c - cidx = find(c(:,i) != 0); + cidx = find (c(:,i) != 0); c_col_i = c(cidx,i); ## sum the entries - zz(i) = sum(log(abs(acnz))) - sum(log(abs(arnz))) ... - - sum(log(abs(b_row_i))) + sum(log(abs(c_col_i))); + zz(i) = sum (log (abs (acnz))) - sum (log (abs (arnz))) ... + - sum (log (abs (b_row_i))) + sum (log (abs (c_col_i))); endfor ## zz part 2: - bd = [b;d]; - for i=1:mm + bd = [b; d]; + for i = 1:mm i1 = i+nn; ## column of [b;d] - bdidx = find(bd(:,i) != 0); + bdidx = find (bd(:,i) != 0); bd_col_i = bd(bdidx,i); - zz(i1) = sum(log(abs(bd_col_i))); + zz(i1) = sum (log (abs(bd_col_i))); endfor ## zz part 3: cd = [c, d]; - for i=1:pp + for i = 1:pp i1 = i+nn+mm; - cdidx = find(cd(i,:) != 0); + cdidx = find (cd(i,:) != 0); cd_row_i = cd(i,cdidx); - zz(i1) = -sum(log(abs(cd_row_i))); + zz(i1) = -sum (log (abs (cd_row_i))); endfor ## now set zz as log base 2 - zz = zz*(1/log(2)); + zz *= (1 / log (2)); + endfunction