2011-10-05 39 views
0

这很疯狂,一直困在这个MATLAB代码中的年龄。我所得到的是以下几点:简单的循环不起作用

for i = 1 : 0.1 : 5 

    index = find(someArray == i) 
    %do stuff 

end 

现在第一次循环运行,当i = 1,指数返回正确的值(如45)。现在,循环第二次运行时,索引被设置为一组空括号 - '[]'...! (对于其余的迭代也是一样)。

这很疯狂,因为在1.1处开始循环会将索引设置为逻辑数值。实际上,每个迭代都应该使用find为索引设置一个逻辑值。所以这就像'发现'不喜欢被用在循环内或东西....

任何想法或帮助,非常感谢!

+2

可能重复(http://stackoverflow.com/questions/2669942/problem-using-the-find-function-in-matlab) – Jonas

回答

6

确定someArray包含值1.1?这可能只是浮点精度的一个问题。有很多信息这样的事情在网络上,包括:

http://www.mathworks.com/company/newsletters/news_notes/pdf/Fall96Cleve.pdf

http://floating-point-gui.de/

http://www.mathworks.com/support/tech-notes/1100/1108.html

http://www.mathworks.com/help/techdoc/matlab_prog/f2-12135.html?#bqxyrhp

[使用MATLAB中的查找功能问题]的
+0

谢谢。我认为你救了我的理智。例如,(0.3 == 0.1 * 3)评估为false ...哇,不完全直观。 –

+1

欢迎来到数字算术的美妙世界。这与你在小学里学到的不一样!祝你好运。 – John