我正在尝试打印一个非常简单的表格(使用fprintf),显示我已经获得的一组数据的统计数据。
我是Matlab的新手,但是 - 我已经习惯了Java - 我认为这应该有用......
Labels = ['Max','Min','Mean','Median','Std. Dev.','Tol. Range'];
for i = 1:6
fprintf('| %c | %4.3f | %4.3f |\n', Labels(i), unmodVals(i), modVals(i));
end
但它不起作用。 :(
由于某种原因,字符串的数组索引与Java中的工作方式不同,所以我完全迷失了。
它最终打印出类似的东西:
| M | #### | #### |
| a | #### | #### |
| x | #### | #### |
| M | #### | #### |
| i | #### | #### |
| n | #### | #### |
有人能指出我正确的方向吗?
答案 0 :(得分:2)
字符数组在MATLAB中的工作方式略有不同。 Labels
不是像你期望的那样的1x6字符串数组;你拥有的那条线相当于
Labels = strcat('Max','Min','Mean','Median','Std. Dev.','Tol. Range');
所以它是一个1x35的字符数组,并且你一次索引一个字符。将Labels
更改为字符串的单元格数组,如下所示。您必须使用大括号{ }
而不是括号( )
对其进行索引,并将相应的fprintf
格式说明符更改为%s
(%c
用于打印字符)< / p>
Labels = {'Max','Min','Mean','Median','Std. Dev.','Tol. Range'};
for i = 1:6
fprintf('| %s | %4.3f | %4.3f |\n', Labels{i}, unmodVals(i), modVals(i));
end
答案 1 :(得分:0)
您将字符串存储在名为Labels
的数组中。在MATLAB中,当您编写['a', 'bc']
时,它会连接两个字符串并生成abc
。因此,您应该使用单元格数组来存储不同大小的字符串。
Labels = {'Max','Min','Mean','Median','Std. Dev.','Tol. Range'}; %notice the curly braces.
%generating random values of `unmodVals` and `modVals`
unmodVals=randi(1000,[1 6]);
modVals=randi(1000,[1 6]);
for i = 1:6
fprintf('| %s | %4.3f | %4.3f |\n', Labels{i}, unmodVals(i), modVals(i)); %notice change from `%c` to `%s`, c stands for charater, s for string.
end
注意:如果您看到Label
变量的外观,您会看到:
Labels = MaxMinMeanMedianStd. Dev.Tol. Range