changeset 287:0b1580ed9b8b feature/textTable

latexTable: similar function that produces latex code.
author Martin Almquist <martin.almquist@it.uu.se>
date Mon, 12 Sep 2016 14:48:23 +0200
parents fdee7f66a5e9
children 2c47bc9c8df4
files latexTable.m
diffstat 1 files changed, 59 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/latexTable.m	Mon Sep 12 14:48:23 2016 +0200
@@ -0,0 +1,59 @@
+% data           -- cell array of numbers
+% leftColstrings -- cell array of strings, for left column
+% topRowStrings  -- cell array of strings, for top row
+% dataFormat     -- (optional) format specifier, e.g. '%.2f' 
+function latexTable(data, leftColStrings, topRowStrings, dataFormat)
+
+    default_arg('dataFormat','%8.2f')
+    
+    nRows = length(leftColStrings);
+    nCols = length(topRowStrings);
+    [m,n] = size(data);
+    
+    if(m ~= nRows || n ~=nCols)
+        error('Data dimensions must match labels');
+    end
+
+    header = {
+        '\begin{table}[H]'
+        '\centering'
+        ['\begin{tabular}{c' repmat('|c',1,nCols) '} &']
+        headers(topRowStrings)
+        '\hline'
+    };
+
+    footer = {
+        '\end{tabular}'
+        '\caption{DESCRIPTION.}'
+        '\label{table:LABEL}'
+        '\end{table}'
+    };
+    
+    nlc = sprintf('\n');
+    dataStr = '';
+    for i = 1:nRows
+        dataStr = [dataStr leftColStrings{i}]; %#ok<AGROW>
+        for j = 1:nCols
+            dataStr = [dataStr ' & ' sprintf(dataFormat,data{i,j}) ]; %#ok<AGROW>
+        end
+        if(i<nRows)
+            dataStr = [dataStr '  \\ ' nlc]; %#ok<AGROW>
+        end
+    end
+
+    header = strjoin(header', nlc);
+    footer = strjoin(footer', nlc);
+
+    table = strjoin({header, dataStr, footer}, nlc);
+    fprintf('%s\n', table);
+end
+
+
+function s = headers(strings)
+    s= [strings{1} ' '];
+    nCols = length(strings);
+    for i = 2:nCols
+        s = [s '& ' strings{i} ' ']; %#ok<AGROW>
+    end
+    s = [s ' \\'];
+end
\ No newline at end of file