source: trunk/src/cell2tab.m @ 1114

Last change on this file since 1114 was 1107, checked in by g7moreau, 3 years ago

Update Copyright to 2022

File size: 2.7 KB
RevLine 
[8]1%'cell2tab': transform a Matlab cell in a character array suitable for display in a table
[89]2%------------------------------------------------------------------------
3% function Tabchar=cell2tab(Tabcell,separator)
4%
5% OUTPUT:
[128]6% Tabchar: column cell of char strings suitable for display (equal length)
[89]7%
[8]8% INPUT:
[128]9% Tabcell: (ni,nj) cell matrix of char strings to be displayed as  ni lines , nj column
10% separator: char string used for separating displayed columns
[89]11
[809]12%=======================================================================
[1107]13% Copyright 2008-2022, LEGI UMR 5519 / CNRS UGA G-INP, Grenoble, France
[809]14%   http://www.legi.grenoble-inp.fr
15%   Joel.Sommeria - Joel.Sommeria (A) legi.cnrs.fr
16%
17%     This file is part of the toolbox UVMAT.
18%
19%     UVMAT is free software; you can redistribute it and/or modify
20%     it under the terms of the GNU General Public License as published
21%     by the Free Software Foundation; either version 2 of the license,
22%     or (at your option) any later version.
23%
24%     UVMAT is distributed in the hope that it will be useful,
25%     but WITHOUT ANY WARRANTY; without even the implied warranty of
26%     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
27%     GNU General Public License (see LICENSE.txt) for more details.
28%=======================================================================
29
[8]30function Tabchar=cell2tab(Tabcell,separator)
[125]31[ni,nj]=size(Tabcell);
32
33%determine width of each column
[128]34if isequal(ni,1)
35    widthcolumn=cellfun('length',Tabcell);% case of a single line, no justification used
36else
37    widthcolumn=max(cellfun('length',Tabcell));
38end
39lsep=numel(separator); %nbre of characters of the separator
40nbchar_line=(sum(widthcolumn)+(nj-1)*lsep); %total nbre of characters in each output line
41default_line=blanks(nbchar_line); %default blank line
42Tabmat=reshape(blanks(nbchar_line*ni),ni,nbchar_line);
43Tabchar=mat2cell(Tabmat,ones(1,ni),nbchar_line); %default output
[125]44
[8]45%justify table
[125]46for itab=1:ni   
[128]47    charchain=default_line; 
[125]48    for jtab=1:nj% read line
[8]49        textlu=Tabcell{itab,jtab};
[128]50        if jtab==1
51            charchain(1:length(textlu))=textlu;%introduce separator chain string except for the first column
52            ind_column=widthcolumn(1);%new current char index in the line
53        else
54            charchain(ind_column+1:ind_column+lsep)=separator;%introduce separator chain string except for the first column
55            charchain(ind_column+lsep+1:ind_column+lsep+length(textlu))=textlu;%introduce separator chain string except for the first column
56            ind_column=ind_column+widthcolumn(jtab)+lsep;
[8]57        end
58    end
59    Tabchar(itab,1)={charchain};
[125]60end
Note: See TracBrowser for help on using the repository browser.