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:保存命令不起作用的主要内容,如果未能解决你的问题,请参考以下文章