disp.m
上传用户:haiyisale
上传日期:2013-01-09
资源大小:3246k
文件大小:4k
源码类别:

波变换

开发平台:

Matlab

  1. function varargout = disp(M,varName)
  2. %DISP Display a Laurent matrix object as text.
  3. %   DISP(M) displays the Laurent matrix M printing 
  4. %   the matrix name (here: M). 
  5. %   DISP(M,VarName) uses "VarName" as matrix name.
  6. %
  7. %   Example:
  8. %      Z = lp(1,1);  M = lm({1 Z;0 1});
  9. %      disp(M)
  10. %      disp(M,'Matrix')
  11. %   M. Misiti, Y. Misiti, G. Oppenheim, J.M. Poggi 29-Mar-2001.
  12. %   Last Revision 08-Jul-2003.
  13. %   Copyright (c) 1995-2003 The MathWorks, Inc.
  14. %   $Revision: 1.1.6.1 $ $Date: 2004/04/20 23:21:46 $ 
  15. if nargin<2 , varName = inputname(1); end
  16. flagHeadSep = false;
  17. headerSTR = [...
  18.     ' Laurent matrix object '
  19.     '======================='
  20.     ];
  21. lenSEP = size(headerSTR,2);
  22. [nbRow,nbCol] = size(M.Matrix);
  23. lenCOLS = zeros(1,nbCol);
  24. lenROWS = zeros(1,nbRow);
  25. for i=1:nbRow
  26.     for j=1:nbCol
  27.         coefSTR{i,j} = lpstr(M.Matrix{i,j},30);
  28.         sizeSTR{i,j} = size(coefSTR{i,j});
  29.         if sizeSTR{i,j}(1)>lenROWS(i) , lenROWS(i) = sizeSTR{i,j}(1); end
  30.         if sizeSTR{i,j}(2)>lenCOLS(j) , lenCOLS(j) = sizeSTR{i,j}(2); end
  31.     end
  32. end
  33. Sum_lenCOLS = sum(lenCOLS);
  34. if Sum_lenCOLS<100
  35.     dispSTR  = '';
  36.     for i=1:nbRow
  37.         colSTR = '';
  38.         for j=1:nbCol
  39.             blankSTR = repmat(' ',lenROWS(i),lenCOLS(j));
  40.             tmpSTR = fullSTR(blankSTR,coefSTR{i,j},'cu');
  41.             if j<nbCol , tmpSTR = [tmpSTR , repmat(' ',size(tmpSTR,1),4)]; end
  42.             colSTR = [colSTR , tmpSTR];
  43.         end
  44.         dispSTR = [dispSTR ; colSTR];
  45.         if i<nbRow , dispSTR = [dispSTR ; repmat(' ',3,size(dispSTR,2))]; end
  46.     end
  47.     rows = size(dispSTR,1);
  48.     dispSTR = [repmat('| ',rows,1) , dispSTR , repmat(' |',rows,1)];
  49.     if isempty(varName)
  50.         varNameSTR = '';
  51.     else
  52.         varNameSTR = [' ' , varName ' = '];
  53.     end
  54.     
  55.     lenVAR = length(varNameSTR);
  56.     tmpSTR = fullSTR(repmat(' ',rows,lenVAR),varNameSTR,'cc');
  57.     dispSTR = [tmpSTR , dispSTR];
  58.     
  59.     if size(dispSTR,2)>lenSEP , lenSEP = size(dispSTR,2); end
  60.     if nargout==0
  61.         disp(' ');
  62.         if flagHeadSep
  63.             disp(headerSTR); disp(' ');
  64.         end
  65.         disp(dispSTR);
  66.         if flagHeadSep
  67.             sepSTR = repmat('=',1,lenSEP+2);
  68.             disp(' '); disp(sepSTR); disp(' ');
  69.         end
  70.     else
  71.         varargout{1} = dispSTR;
  72.     end
  73.     
  74. else
  75.     if flagHeadSep
  76.         disp(' '); disp(headerSTR);
  77.     end
  78.     for i=1:nbRow
  79.         for j=1:nbCol
  80.             posSTR = [varName '(' int2str(i) ',' int2str(j) ') = '];
  81.             dispSTR = lpstr(M.Matrix{i,j},60);
  82.             if size(dispSTR,1)==1
  83.                 dispSTR = [posSTR dispSTR];
  84.                 posSTR  = '';
  85.             else
  86.                 posSTR = [posSTR ' ...'];
  87.             end
  88.             len = size(dispSTR,2)+1;
  89.             if len>lenSEP , lenSEP = len; end
  90.             sepSTR  = repmat('-',1,lenSEP);
  91.             disp(posSTR);
  92.             disp(dispSTR);
  93.             disp(sepSTR);
  94.         end
  95.     end
  96.     if flagHeadSep
  97.         sepSTR  = repmat('=',1,lenSEP+2);
  98.         disp(sepSTR);
  99.         disp(' ')
  100.     end
  101. end
  102. %------------------------------------------------------------------------%
  103. function Str1 = fullSTR(Str1,Str2,option)
  104. if nargin<3 , option = 'lu'; end
  105. s1 = size(Str1);
  106. s2 = size(Str2);
  107. switch option(1)
  108.     case 'l' , cBEG = 1; cEND = s2(2);
  109.     case 'c' , cBEG = 1+floor((s1(2)-s2(2))/2); cEND = cBEG + s2(2)-1;
  110. end
  111. switch option(2)
  112.     case 'u' , rBEG = 1; rEND = s2(1);
  113.     case 'c' , rBEG = 1+floor((s1(1)-s2(1))/2); rEND = rBEG + s2(1)-1;
  114. end
  115. Str1(rBEG:rEND,cBEG:cEND) = Str2;
  116. %------------------------------------------------------------------------%