latex.m

来自「matlab算法集 matlab算法集」· M 代码 · 共 84 行

M
84
字号
function latex (fname,s,A)
%----------------------------------------------------------------
% Usage:       latex (fname,s,A)
%
% Description: Write a matrix to a file using Latex tabular
%              display format.
%
% Inputs:      fname = file id
%              s     = string to label A
%              A     = matrix to be written
%----------------------------------------------------------------
   [m,n] = size (A);
   fid = fopen (fname,'a');
   fprintf (fid,'\n\\begin{eqnarray*}\n');
   fprintf (fid,'%s = ',s);
   if (m > 1) | (n > 1)
      fprintf (fid,'\\left[ \\begin{array}{c}\n');
   end 
   if max(max(imag(A))) < eps                       % real

      if (m > 1) & (n > 1)
         for i = 1 : m-1
            fprintf (fid,'%.4g & ',A(i,1:n-1));
            fprintf (fid,'%.4g \\\\ \n',A(i,n));
         end
         fprintf (fid,'%.4g & ',A(m,1:n-1));
         fprintf (fid,'%.4g \n\n',A(m,n));
      end

      if (m > 1) & (n == 1)
         fprintf (fid,'%.4g \\\\ \n',A(1:m-1,1));
         fprintf (fid,'%.4g \n\n',A(m,1));
      end

      if (m == 1) & (n > 1)
         fprintf (fid,'%.4g \\\\ ',A(1,1:n-1));
         fprintf (fid,'%.4g \n\n',A(1,n));
      end

      if (m == 1) & (n == 1)
         fprintf (fid,'%g \n\n',A(1,1));
      end

   else                                            % complex

      if (m > 1) & (n > 1)
         for k = 1 : m-1
            for l = 1 : n-1
               fprintf (fid,'%.4g%+.4gj & ',real(A(k,l)),imag(A(k,l)));
            end 
            fprintf (fid,'%.4g%+.4gj \\\\ \n',real(A(k,n)),imag(A(k,n)));
         end
         for l = 1 : n-1
            fprintf (fid,'%.4g%+.4gj & ',real(A(m,l)),imag(A(m,l)));
         end
         fprintf (fid,'%.4g%+.4gj \n\n',real(A(m,n)),imag(A(m,n)));
      end

      if (m > 1) & (n == 1)
         for k = 1 : m-1 
            fprintf (fid,'%.4g%+.4gj \\\\ \n',real(A(k,1)),imag(A(k,1)));
         end
         fprintf (fid,'%.4g%+.4gj \n\n',real(A(m,1)),imag(A(m,1)));
      end

      if (m == 1) & (n > 1)
         for k = 1 : n-1   
            fprintf (fid,'%.4g%+.4gj \\\\',real(A(1,k)),imag(A(1,k)));
         end
         fprintf (fid,'%.4g%+.4gj \n\n',real(A(1,n)),imag(A(1,n)));
      end

      if (m == 1) & (n == 1)
         fprintf (fid,'%.4g%+.4gj \n\n',real(A(1,1)),imag(A(1,1)));
      end
   end
   if (m > 1) | (n > 1)
      fprintf (fid,'\\end{array} \\right]\n');
   end
   fprintf (fid,'\\end{eqnarray*}');
   fclose (fid);
%----------------------------------------------------------------

⌨️ 快捷键说明

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