This repository has been archived on 2021-05-17. You can view files and clone it, but cannot push or open issues or pull requests.
scientificComputing/linearalgebra/code/matrixmultiplicationlatex.m
2014-11-12 18:39:02 +01:00

86 lines
2.2 KiB
Matlab

% open a file to write in the LaTeX commands:
f = fopen( 'matrices.tex','w');
fprintf( f, '\\documentclass{exam}\n' );
fprintf( f, '\\usepackage{amsmath}\n' );
fprintf( f, '\\begin{document}\n' );
for k = 1:40
% compute row and column numbers:
pd = rand( 1, 1 );
if pd < 0.05
% row vector multiplication that might not be possible:
am = 1;
an = randi( [ 2 4 ]);
bm = randi( [ 2 4 ]);
bn = 1;
elseif pd < 0.1
% column vector multiplication that might not be possible:
am = randi( [ 2 4 ]);
an = 1;
bm = 1;
bn = randi( [ 2 4 ]);
elseif pd < 0.4
% row vector multiplication that is possible:
am = 1;
an = randi( [ 2 4 ]);
bm = an;
bn = 1;
elseif pd < 0.5
% column vector multiplication that is possible:
am = randi( [ 2 4 ]);
an = 1;
bm = 1;
bn = am;
elseif pd < 0.6
% matrix multiplication that might not be possible:
am = randi( [ 2 4 ]);
an = randi( [ 2 4 ]);
bm = randi( [ 2 4 ]);
bn = randi( [ 2 4 ]);
else
% matrix multiplication that is possible:
am = randi( [ 2 4 ]);
an = randi( [ 2 4 ]);
bm = an;
bn = randi( [ 2 4 ]);
end
% generate the matrices:
a = randi( [-4 4], am, an );
b = randi( [-4 4], bm, bn );
% write them out as LaTeX code:
% matrix a:
fprintf( f, ' \\[ \\begin{pmatrix}' );
for r = 1:size( a, 1 )
for c = 1:size( a, 2 )
if c > 1
fprintf( f, ' &' );
end
fprintf( f, ' %d', a(r,c) );
end
if r < size( a, 1 )
fprintf( f, ' \\\\' );
end
end
fprintf( f, ' \\end{pmatrix} \\cdot\n' );
% matrix b:
fprintf( f, ' \\begin{pmatrix}' );
for r = 1:size( b, 1 )
for c = 1:size( b, 2 )
if c > 1
fprintf( f, ' &' );
end
fprintf( f, ' %d', b(r,c) );
end
if r < size( b, 1 )
fprintf( f, ' \\\\' );
end
end
fprintf( f, ' \\end{pmatrix} = \\]\n\n' );
end
% close the document and the file:
fprintf( f, '\\end{document}\n' );
fclose( f );