Visto il periodo di intense relazioni al Poli, inteso che in questo semestre dovrei presentare una cosa come 4 relazioni dei mille laboratori che devo seguire, ho creato uno script Matlab - detto anche affettuosamente Sbatlab - per esportare una variabile in un ordinata tabella Latex!
Perchè va bene essere masochisti, ma un minimo di ingegno! :D
Ecco la function:
function table = latex_table(var,title)
% LATEX_TABLE
%
% Export var as latex table
%
% Title are used for the first row
% title must be a cell array with the same number of elements of the
% number of var's columns
%
% Created by Andrea Vannuccini - 2007.11
[r c] = size(var);
clc;
fprintf('\n\n\t --- LATEX TABLE OUTPUT --- \n\n');
table = [ '\begin{tabular}{'];
for k = 1:c
table = [table 'c'];
end
table = [table '}'];
fprintf('\n%s\n',table);
if nargin == 2
for k = 1:c
fprintf('\t')
if k == c
table = [table title{k} ' \\ \\hline'];
fprintf('%s \\\\ \\hline \n', title{k});
else
table = [table title{k} ' & '];
fprintf('%s & ', title{k});
end
end
end
for i = 1:r
fprintf('\t')
for k = 1:c
if k == c
table = [table num2str(var(i,k)) ' \\'];
fprintf('%.4f \\\\ \n',var(i,k));
else
table = [table num2str(var(i,k)) ' & '];
fprintf('%.4f & ',var(i,k));
end
end
end
table = [table '\end{tabular}\n\n'];
fprintf('\\end{tabular}\n\n')
Ovviamente dopo aver copiato e incollato lo script in un .m-file vuoto, lo salvate con lo stesso nome della function, altrimenti function NO!
Il funzionamento è semplice!
In ingresso ha bisogno di un vettore o una matrice [var], dove ogni colonna corrisponderà ad una colonna della tabella e un cell array [title] usato per l'intestazione delle colonne, in uscita restituisce una stringa [table].
Basta copiare l'output della CommandWindow nel file .tex, et voilà, tabella pronta! ;)
Esempio:
Le istruzioni:a = 1:5;
b = 5:-1:1;
title = {['a'] ['b']};
latex_table([a' b'],title);
Restituiscono a video:--- LATEX TABLE OUTPUT ---
\begin{tabular}{cc}
a & b \\ \hline
1 & 5 \\
2 & 4 \\
3 & 3 \\
4 & 2 \\
5 & 1 \\
\end{tabular}
Ecco qui!
Ovviamente commenti e suggerimenti sono sempre bene accetti.
Ciao a tutti,
Andrea
2 commenti:
sei un grande. la tua idea geniale mi ha fatto risparmiare qualche ora
Fantastico!Grazie mille!
Posta un commento