86 lines
2.2 KiB
Matlab
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 );
|