⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 list.m

📁 matlab算法集 matlab算法集
💻 M
字号:
function list (dev,s,A)
%----------------------------------------------------------------
% Usage:       list (dev,s,A)
%
% Description: Display a matrix on a device 
%
% Inputs:      dev = device or file id returned by fopen
%                    
%                    1 = stdout
%                    2 = stderr 
%
%              s   = string used to label the matrix
%              A   = matrix to be displayed
%----------------------------------------------------------------

   rows = 22;           % rows per screen 
   cols = 80;           % columns per screen
   rlab = 5;
   last = 0;
   ne = ' '; se = ' '; nw = ' '; sw = ' ';
   bar = '|'; 
   dash = '-';
   for i = 1 : 80
      dashes(i) = dash;
   end

% Initialize 

   [m,n] = size(A);

   if isreal(A)

% Construct format string
 
      col = 12;
      format = strings2 ('%',num2str(col));
      format = strings2 (format,'.4g');
      c = length(s) + 3;
      width = floor((cols - 7 - c)/col);
      n0 = 1;
      n1 = min([n width]);
      y1 = round((m+1)/2);

% Real scalar 

      if m*n == 1
         fprintf (dev,'\n%s = ',s);	
         fprintf (dev,'%.4g\n',A(1,1));
         return;
      end 

      while ~last

% Label columns 

         if n > 1 
            fprintf (dev,'%s',blanks(c+col/2+1));
            for i = n0 : n1
               fprintf (dev,'%3i',i);
               if i < n1
                  fprintf (dev,'%s',blanks(col-3));
               end
            end
         end

% Print real A    
   
         k = n1 - n0 + 1;
         fprintf (dev,'\n');
         for i = 0 : m+1
            if (i == 0) | (i == (m+1))
               fprintf (dev,'%s',blanks(c));
               if i == 0    
                  fprintf (dev,'%c',nw);
               else
                  fprintf (dev,'%c',sw);
               end
               fprintf (dev,'%s',dashes(1:col*k+1)); 
               if i == 0    
                  fprintf (dev,'%c\n',ne);
               else
                  fprintf (dev,'%c\n',se);
               end
            else 
               if rem(i+1,rows) == 0
                  wait
               end
               if (i == y1) 
                  fprintf (dev,'%s = ',s);
               else
                  fprintf (dev,'%s',blanks(c));
               end
               fprintf (dev,'%c',bar);      
               for j = n0 : n1
                  fprintf (dev,format,A(i,j));
               end 
               if (m > 2*rlab) & (rem(i,rlab) == 0)
                  fprintf (dev,' %c%3i\n',bar,i);
               else
                  fprintf (dev,' %c\n',bar); 
               end
            end
         end
         if n1 < n
            n0 = n1 + 1;
            n1 = min([n1+width,n]); 
            wait
         else
            last = 1;
         end
      end
   else

% Comstruct format string

      col = 24;
      format = strings2 ('%',num2str(col/2-1));
      format = strings2 (format,'.4g%+');
      format = strings2 (format,num2str(col/2-1));
      format = strings2 (format,'.4gi');
      c = length(s) + 3;
      width = floor((cols - 7 - c)/col);
      n0 = 1;
      n1 = min([n,width]);
      y1 = round((m+1)/2);

% Complex scalar

      if m*n == 1
         fprintf (dev,'\n%s = ',s);	
         fprintf (dev,'%.4g%+.4gi\n',real(A(1,1)),imag(A(1,1)));
         return;
      end 

      while ~last
   
% Label columns 

         if n > 1 
            fprintf (dev,'%s',blanks(c+col/2-1));
            for i = n0 : n1
               fprintf (dev,'%3i',i);
               if i < n1 
                  fprintf (dev,'%s',blanks(col-3));
               end
            end
         end

% Print complex A    

         k = n1 - n0 + 1;
         fprintf (dev,'\n');
         for i = 0 : m+1
            if (i == 0) | (i == (m+1))
               fprintf (dev,'%s',blanks(c));
               if i == 0    
                  fprintf (dev,'%c',nw);
               else
                  fprintf (dev,'%c',sw);
               end
               fprintf (dev,'%s',dashes(1:col*k-1));
               if n1 == n
                  fprintf (dev,'%c',dash);
               end
               if i == 0    
                  fprintf (dev,'%c\n',ne);
               else
                  fprintf (dev,'%c\n',se);
               end
            else 
               if rem(i+1,rows) == 0
                  wait
               end
               if (i == y1) 
                  fprintf (dev,'%s = ',s);
               else
                  fprintf (dev,'%s',blanks(c));
               end
               fprintf (dev,'%c',bar);      
               for j = n0 : n1
                  fprintf (dev,format,real(A(i,j)),imag(A(i,j))); 
               end
               if (m > 2*rlab) & (rem(i,rlab) == 0)
                  fprintf (dev,' %c%3i\n',bar,i);
               else
                  fprintf (dev,' %c\n',bar); 
               end
            end
         end
         if n1 < n 
            n0 = n1 + 1;
            n1 = min([n1+width,n]);
            wait  
         else
            last = 1; 
         end
      end
   end

% Finalize 
  
   if dev > 1 
      fclose (dev);
   end
%----------------------------------------------------------------

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -