MATLAB 在同一行的数字之间创建恒定间距

MATLAB create constant spacing between numbers on same line

早上好,

我确定有一个内置函数,但我找不到它。我想为发送到 MATLAB 文本文档的信息创建静态定位。例如:

height          weight          age          favorite number
------------------------------------------------------------     
60              140             24           9
30              45              3            10000000
48              100             9            19
9               7               1            1

目前,我只是用填充空格进行 fprint 调用以使其对齐,但问题出现在具有不同长度数字导致对齐关闭的情况下,如下所示:

height          weight          age          favorite number
------------------------------------------------------------     
60              140             24           9
30              45             3           10000000
48              100             9           19
1              7              1           1

提前致谢。

这里有一个示例脚本,可以说明我的意思:

fid1 = fopen('Whosebugtest', 'w');
if fid1 < 3,
  error('ERROR');
end;

fprintf(fid1, 'height          weight          age          favorite number \n');
fprintf(fid1, '------------------------------------------------------------ \n');

height = 0;
weight = 10;
age = 100;
number = 3;

for i = 1:100
    fprintf(fid1, "%d              ', height);
    fprintf(fid1, "%d              ', weight);
    fprintf(fid1, "%d          ', age);
    fprintf(fid1, "%d \n", number);

    height = height + 3;
    weight = weight + 6;
    age = age - 1;
    number = number + 23;
end

您可以使用 fprintf format specification 执行此操作,例如 %-15d

这里,- 是一个标志,指定左对齐,15 指定在表示周围留下多少space。

我们可以用

重现你的例子
A = [60 140 24 9
     30 45  3  10000000
     48 100 9  19
     9  7   1  1];
fprintf('height          weight          age          favorite number \n'),...
fprintf('------------------------------------------------------------ \n'),...
fprintf('%-15d %-15d %-12d %-15d \n',A')

其中显示

height          weight          age          favorite number 
------------------------------------------------------------ 
60              140             24           9               
30              45              3            10000000        
48              100             9            19              
9               7               1            1   

编辑: 您可以将此数据存储为 table

height = A(:,1)
weight = A(:,2);
age  = A(:,3);
favourite_number = A(:,4);
tab1 = table(height, weight, age, favourite_number);
disp(tab1);

这将打印到屏幕

height    weight    age    favourite_number
______    ______    ___    ________________

60        140       24         9           
30         45        3     1e+07           
48        100        9        19           
 9          7        1         1       

但我不确定如何将此表示保存到文件中。