作者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