Matlab中关于sprintf的问题

Posted

技术标签:

【中文标题】Matlab中关于sprintf的问题【英文标题】:Issue on sprintf in Matlab 【发布时间】:2011-10-01 06:25:31 【问题描述】:

如何在Matlab中打印如下......

0.01000E+02

我试过了

sprintf('%12.5e',[0.01000E+02])

它给了我

1.00000e+000

【问题讨论】:

【参考方案1】:

你的格式有点具体。您应该考虑编写自己的输出函数。

但有几点建议:

使用 upper 使 e 变大 通过正则表达式的 exp 编号中只有 2 位数字。 new_string = regexprep(old_string,'\d(\d2)$','\1') 在 exp 表示中以 0 开头的东西不是标准的 - 所以可能与 1e2 相乘,打印浮点数,然后附加 E+02

【讨论】:

谢谢....但是,这个 '0.01000E+02' 可以是任何 exp 数字...例如 0.01000E-10 .... 只是为了澄清您想要模式 0.02345E+67 中的结果?这意味着无论数字是多少,前面总是有 2 个零? 抱歉让我们难以理解...是的,模式是 0.XXXXXXXXE+XX...(X 是 (0-9) 之间的任何数字...非常感谢 好的,那么问题是你如何确定它是0.10000E01还是0.01000E02还是0.00001E05 @user974194:这就是使用 normalized scientific notation 的全部意义所在,第一个数字将始终介于 1 和 9 之间,这为我们提供了唯一的表示。否则,您如何从众多可能的形式中进行选择(如上面评论中的 bdecaf 所示)【参考方案2】:

如果我正确理解您的格式,['0.0' strrep(sprintf('%12.5E',v*100), '.', '')](带有v 您的值)之类的东西应该可以工作。

【讨论】:

以上是关于Matlab中关于sprintf的问题的主要内容,如果未能解决你的问题,请参考以下文章

matlab中关于10e-10的问题

MATLAB中关于solve函数的用法

matlab 中关于AX=B 的求解的一个问题

C sprint change 左对齐宽度

c语言中sprint函数怎么使用?

MATLAB中关于surf函数的使用