home *** CD-ROM | disk | FTP | other *** search
- % function out = transp(mat)
- %
- % Transpose a VARYING matrix, or dual of a SYSTEM matrix
- %
- % See also: ', .', CJT, VTP, and VCJT.
-
- function out = transp(mat)
- if nargin ~= 1
- disp('usage: out = transp(mat)')
- return
- end
- [mtype,mrows,mcols,mnum] = minfo(mat);
- if mtype == 'vary'
- [nr,nc] = size(mat);
- omega = mat(1:mnum,nc);
- npts = mnum;
- nrout = mcols;
- ncout = mrows;
- out = zeros(nrout*npts+1,ncout+1);
- out(nrout*npts+1,ncout+1) = inf;
- out(nrout*npts+1,ncout) = npts;
- out(1:npts,ncout+1) = omega;
-
- fone = (npts+1)*mrows;
- fout = (npts+1)*nrout;
- pone = 1:mrows:fone;
- pout = 1:nrout:fout;
- ponem1 = pone(2:npts+1) - 1;
- poutm1 = pout(2:npts+1) - 1;
- for i=1:npts
- out(pout(i):poutm1(i),1:ncout) = ...
- mat(pone(i):ponem1(i),1:mcols).';
- end
- elseif mtype == 'syst'
- [a,b,c,d] = unpck(mat);
- out = pck(a.',c.',b.',d.');
- elseif mtype == 'cons'
- out = mat.';
- else
- out = [];
- end
- %
- % Copyright MUSYN INC 1991, All Rights Reserved
-