[討論] for loop的index可否使用小數?

看板MATLAB作者 (neatgarden)時間13年前 (2012/06/26 11:46), 編輯推噓1(105)
留言6則, 1人參與, 最新討論串1/1
各位大大,最近小弟用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

06/26 13:26, , 1F
迴圈的index可以用小數 問題出在你矩陣存值的index
06/26 13:26, 1F

06/26 13:27, , 2F
把ceil(loop*10)顯示出來會發現0.3和0.7時會變成4和8
06/26 13:27, 2F

06/26 13:30, , 3F
這是因為浮點數誤差造成的 所以陣列的index最好不要這樣算
06/26 13:30, 3F

06/26 13:32, , 4F
可以設一個整數變數 每次迴圈自動+1 確保一定是整數
06/26 13:32, 4F

06/26 13:35, , 5F
或者先設好ms_r=0.1:0.1:1迴圈用for loop=1:length(ms_r)
06/26 13:35, 5F

06/26 13:37, , 6F
這樣loop是整數可當陣列index 要用到ms_r時用ms_r(loop)
06/26 13:37, 6F
文章代碼(AID): #1FwJ2Tk- (MATLAB)