MATLAB:保存命令不起作用

Posted

技术标签:

【中文标题】MATLAB:保存命令不起作用【英文标题】:MATLAB: Save command not working 【发布时间】:2013-05-26 01:57:37 【问题描述】:

我正在尝试使用“保存”命令在 while 循环中的不同时间步保存一些变量。它在我之前编写的其他程序中工作。这是第一次不保存。我尝试了很多事情,例如重命名保存数据的文件,重命名脚本,但它不起作用。这是示例代码:

T=0;
while T<300 (time loop)
loop1

loop2
.
.
.
if T==0.01
save('arbit100x100ht10e-3results.txt','Pnew','unew','-ascii','-append')
else if T==0.02
    save('arbit100x100ht10e-3results.txt','Pnew','unew','-ascii','-append')
else if T==0.04
        save('arbit100x100ht10e-3results.txt','Pnew','unew','-ascii','-append')
.
.
. (all the if-if else statements have their respective "end")


T=T+ht; %ht is time step

end (while loop)

我想不出办法。

【问题讨论】:

【参考方案1】:

可能是像if T==0.01 这样的情况由于浮点精度限制而永远不会发生,导致文件无法保存。

当您尝试比较两个浮点数时,在使用 == 时要非常小心。例如,当您尝试:

T=0.9-0.8;
T==0.1
ans =
     0

您会看到 T 永远不会是 ==0.1 因为双精度如何以二进制形式表示:

T-0.1
ans =
   -2.7756e-17

另一种比较方法是检查您要比较的两个数字是否“足够接近”(以容差表示)。尝试将if 条件更改为包含阈值容差的内容,例如:

if abs(T-0.01)<1e-10
    ...

有关浮点运算的介绍,请查看 Cleve 的文章:浮点 (PDF)

有关浮点运算的更严格和详细的信息,请阅读What Every Computer Scientist Should Know About Floating Point Arithmetic。

【讨论】:

以上是关于MATLAB:保存命令不起作用的主要内容,如果未能解决你的问题,请参考以下文章

为啥函数 lsqcurvefit 在 Matlab 2015b 中似乎不起作用?

为啥 matlab 中的源发送邮件(gmail)不起作用?

独立的matlab exe不起作用

matlab exe文件中的按钮不起作用

MATLAB - .dat 文件中的变量保存命令

SQL 更新命令不起作用