我正在搜索this request
的反向因此,当我输入num2str(foo,3)
时,我得到了这个:
foo=0.00781
foo=0.0313
foo=0.125
foo=0.5
foo=2
foo=8
但是我想让它们全长相同,所以像这样:
foo=0.0078
foo=0.0313
foo=0.1250
foo=0.5000
foo=2.0000
foo=8.0000
- 如何使用num2str
执行此操作? (如果mat2str
)
感谢您的帮助!
我注意到这个问题有另一个尚未解决的问题,即数字大于10,或100,1000等。
那么如果我想要这个怎么办??
foo=000.5000
foo=002.0000
foo=008.0000
foo=032.0000
foo=128.0000
即。将前导零添加到指定的长度?我试过了'%3.3f'
,但它没有用。
答案 0 :(得分:3)
您可以在format specifier中添加类似C的num2str
:
>> num2str(.125, '%0.4f')
ans =
0.1250
或使用sprintf
:
>> sprintf('%0.4f', .125)
ans =
0.1250
将num2str
与矩阵输入一起使用。在格式说明符中包含所需的分隔符列(此类空格):
>> num2str([.125 .5; 2 8], '%0.4f ')
ans =
0.1250 0.5000
2.0000 8.0000
如果您想要mat2str
- 就像格式一样,您只需要在每行末尾处理生成的字符串以包含;
(或只是;
)并用{括起来[
{1}},]
:
x = [.125 .5; 2 8];
s = num2str(x, '%0.4f ');
s = [s repmat('; ', size(s,1), 1)].';
s = ['[' s(1:end-2) ']'];
在示例中,这给出了
>> s
s =
[0.1250 0.5000; 2.0000 8.0000]
如果您希望前导零获得固定数量的字符,请使用格式'%08.4f'
的格式说明符。这意味着4位小数,总共8个字符,最多可提供3个前导零。例如,
x = [.125 .5; 2 8];
s = num2str(x, '%08.4f ');
s = [s repmat('; ', size(s,1), 1)].';
s = ['[' s(1:end-2) ']'];
给出
>> s
s =
[000.1250 000.5000; 002.0000 008.0000]