根据大小调整列宽

时间:2018-10-17 17:43:59

标签: matlab

我附上一张图片,以更好地说明我的问题。如果您注意到,每列之间都有相当大的间隔,这是因为我编写代码的方式,这迫使在每次放置一列之后向左对齐,长度为32个间隔。这是代码:

    function this = writeDataToFile(this, fileName)
       fid = fopen(fileName, 'w');
       for row=1:size(this.metaPrint,1)
           for col=1:size(this.metaPrint,2)
                fprintf(fid, '%s', this.metaPrint(row,col));
           end
           fprintf(fid, '\n');
       end %for

       %Write labels and units to file. These are cell arrays. Under
       %this is the numeric array of data.
       fprintf('\n');
       fprintf(fid, '%-42s', '============start of data============'); 
       fprintf(fid, '\n');
       fprintf(fid, '%-32s', this.colLabels{:});
       fprintf(fid, '\n');
       fprintf(fid, '%-32s', this.colUnits{:});
       fprintf(fid, '\n');

       for row=1:size(this.data,1)
           for col=1:size(this.data,2)
               fprintf(fid, '%-32s', this.data(row,col));
           end %for
           fprintf(fid, '\n');
       end %for
       fclose(fid);
    end %writeDataToFile

因此,您可以看到我只是对空格进行了硬编码,这是因为在列的下面我到达了colLabel是30个字符串的地方。如果我将间距减小得太小,则到达该点时输出会变得混乱。

现在,colLablescolUnits都以char的形式存储在单元格数组中,数据以double的形式存储在数值数组中。我想做的是能够基于任何给定行的列中的最大长度来调整间距-以便每列始终有maxRowLength + 2个空格(在列之间提供两个白色空格)。有没有办法使用函数来做到这一点?进行这种实施的最佳方法是什么?

预先感谢您,如果我可以提供其他方法或进一步改善我发布的代码的方式(即使不相关),请告诉我。

enter image description here

0 个答案:

没有答案