MATLAB 强制 num2str 格式化
MATLAB force num2str to format
我正在搜索 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'
但它不起作用。
单个号码
你可以包含一个类 C format specifier in num2str
:
>> num2str(.125, '%0.4f')
ans =
0.1250
或使用sprintf
:
>> sprintf('%0.4f', .125)
ans =
0.1250
对于矩阵
对矩阵输入使用 num2str
。在格式说明符中包含所需的分隔列(如 space):
>> num2str([.125 .5; 2 8], '%0.4f ')
ans =
0.1250 0.5000
2.0000 8.0000
如果你想要 mat2str
-like 格式,你只需要处理结果字符串以在每行的末尾包含 ;
(或只是 ;
)并括起来[
, ]
:
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]
我正在搜索 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'
但它不起作用。
单个号码
你可以包含一个类 C format specifier in num2str
:
>> num2str(.125, '%0.4f')
ans =
0.1250
或使用sprintf
:
>> sprintf('%0.4f', .125)
ans =
0.1250
对于矩阵
对矩阵输入使用 num2str
。在格式说明符中包含所需的分隔列(如 space):
>> num2str([.125 .5; 2 8], '%0.4f ')
ans =
0.1250 0.5000
2.0000 8.0000
如果你想要 mat2str
-like 格式,你只需要处理结果字符串以在每行的末尾包含 ;
(或只是 ;
)并括起来[
, ]
:
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]