2013-05-26 42 views
0

我想用'save'命令在while循环的不同时间步中保存一些变量。它在我以前写过的其他程序中工作。这是它第一次没有保存。我尝试了很多事情,比如重命名保存数据的文件,重命名脚本,但不起作用。这里的示例代码:MATLAB:保存命令不能正常工作

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) 

我无法想出一个办法出于此。

回答

2

这可能是像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 
    ... 

的介绍,浮点运算,看看克利夫园地文章:浮动点(PDF

对于更严格以及有关浮点运算的详细信息,请参阅What Every Computer Scientist Should Know About Floating Point Arithmetic