2013-05-26 67 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