作者NeatGar (neatgarden)
看板MATLAB
標題[討論] for loop的index可否使用小數?
時間Tue Jun 26 11:46:34 2012
各位大大,最近小弟用matlab 7.5.0 R2007b版寫了一支程式
裡面有個片段如下
for (loop=0.1:0.1:1.0)
ms_r=loop;
p_r=1.0;
level_p=3;
level_MS=2;
fusion_img = my_bf_fusion(p,q,ms_r,p_r,level_MS,level_p)
...
...
...
...
cc_value_g=corrcoef(old_q(:,:,2),fusion_img(:,:,2).*255);
performance_score(1,ceil(loop*10))=cc_value_g(1,2);
...
...
略...
end
執行之後,我的performance_score陣列在位置(1,3)和(1,7)都沒有值,
可是明明迴圈是從0.1,0.2,0.3,...,1.0每次都有跑阿?
但是為何0.3和0.7這個地方算完畢,程式就不會給值給陣列呢?
有高手知道原因嗎?
我如果迴圈的index用for(loop=1:1:10) 他就會正常給值??
是不是迴圈裡面不可以用小數呢? 若是,為何其他小數值可以正常執行,
0.3 and 0.7就會有問題??
先謝謝各位大大的回答,感激! ^_^
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.120.15.124
1F:推 ejialan:迴圈的index可以用小數 問題出在你矩陣存值的index 06/26 13:26
2F:→ ejialan:把ceil(loop*10)顯示出來會發現0.3和0.7時會變成4和8 06/26 13:27
3F:→ ejialan:這是因為浮點數誤差造成的 所以陣列的index最好不要這樣算 06/26 13:30
4F:→ ejialan:可以設一個整數變數 每次迴圈自動+1 確保一定是整數 06/26 13:32
5F:→ ejialan:或者先設好ms_r=0.1:0.1:1迴圈用for loop=1:length(ms_r) 06/26 13:35
6F:→ ejialan:這樣loop是整數可當陣列index 要用到ms_r時用ms_r(loop) 06/26 13:37