首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MATLAB强制num2str格式化

MATLAB强制num2str格式化
EN

Stack Overflow用户
提问于 2015-08-02 10:41:31
回答 1查看 732关注 0票数 3

我在寻找这一请求的反面

所以当我输入num2str(foo,3)时,我得到了这个:

代码语言:javascript
复制
foo=0.00781
foo=0.0313
foo=0.125
foo=0.5
foo=2
foo=8

不过,我想让它们都有相同的长度,所以这样的东西:

代码语言:javascript
复制
foo=0.0078
foo=0.0313
foo=0.1250
foo=0.5000
foo=2.0000
foo=8.0000

-怎么-我能用num2str做这个吗?(如果mat2str也能起作用,我会非常感激的)

谢谢你的帮助!

编辑:

我注意到还有另一个-yet没有解决--这个问题的一部分,是指大于10,或100,1000等的数字。

如果我想要这个呢?

代码语言:javascript
复制
foo=000.5000
foo=002.0000
foo=008.0000
foo=032.0000
foo=128.0000

例如,将前导零添加到指定的长度?我试过'%3.3f',但不起作用。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-08-02 10:43:08

一个数字

您可以在num2str中包含一个类似C的num2str

代码语言:javascript
复制
>> num2str(.125, '%0.4f')
ans =
0.1250

或者使用sprintf

代码语言:javascript
复制
>> sprintf('%0.4f', .125)
ans =
0.1250

对于矩阵

在输入矩阵时使用num2str。在格式说明符中包括所需的分隔符列(这样的空格):

代码语言:javascript
复制
>> num2str([.125 .5; 2 8], '%0.4f ')
ans =
0.1250 0.5000
2.0000 8.0000

如果您想要mat2str-like格式,您只需要处理生成的字符串,将; (或仅包括;)包含在每一行的末尾,并以[]括起来。

代码语言:javascript
复制
x = [.125 .5; 2 8]; 
s = num2str(x, '%0.4f ');
s = [s repmat('; ', size(s,1), 1)].';
s = ['[' s(1:end-2) ']'];

在这个例子中,这会给出

代码语言:javascript
复制
>> s
s =
[0.1250 0.5000; 2.0000 8.0000]

前导零点

如果要使前导零达到固定数量的字符,请使用表单'%08.4f'的格式说明符。这意味着小数点4位,总共8个字符,相当于3个前导零。例如,

代码语言:javascript
复制
x = [.125 .5; 2 8]; 
s = num2str(x, '%08.4f ');
s = [s repmat('; ', size(s,1), 1)].';
s = ['[' s(1:end-2) ']'];

给出

代码语言:javascript
复制
>> s
s =
[000.1250 000.5000; 002.0000 008.0000]
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31771025

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档