MATLAB的num2str格式化函数

4
我正在 MATLAB 中存储变量值,并将其中一个变量值作为文件名的一部分,例如 "Error=1e-003.mat"。但是,在使用 num2str 命令将数字转换为字符串时,不同版本的 MATLAB 给出了不同的格式。对于数字 1e-3,MATLAB2011 给出 1e-003,而 MATLAB2012 给出 1e-03。这会导致问题,当我尝试加载混合了这两种格式的文件批次时。是否有任何方法可以添加或删除指数的零以使名称一致?还是有其他方法解决这个问题吗?

你确定这是由于Matlab版本的差异引起的吗?根据此网站(靠近底部),这是PC / Unix的问题。 - Junuxx
我不能百分之百确定问题是由于不同版本的MATLAB引起的。但是产生不同结果的两台PC都运行Windows 7和MATLAB 64位。我能想到可能导致此问题的唯一区别(就我所知)就是不同版本的MATLAB。 - shshchch88
2个回答

1
这是一个相当强大的方法:
A = num2str(YOUR_NUMBER, '%0.0e');

if A(end-2)=='-' || A(end-2)=='+'
    A = [A(1:end-2) '0' A(end-1:end)]; end

换句话说,将数字转换并检查倒数第二个字符是否为'+''-'。如果是这样,则添加'0'


这是一个非常好的想法。运行得非常好。非常感谢你! - shshchch88

-1
请在第二个参数中指定一个“格式字符串”,例如:
>> disp(num2str(2920230,'%0.10e'))
2.9202300000e+006

这里的%0.10e表示以指数形式显示小数点前至少0位数字,小数点后正好10位数字。


问题不在于底数中零的数量,而在于指数。更改num2str格式并不会将e+006更改为e+06。 - Junuxx

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接