I have this small code. If statement fails to execute when x(i)<=10^0 say for 10^-5, 10^-1 or 10^0 even though matrix x contains the given elements
1 回表示 (過去 30 日間)
古いコメントを表示
K Chiranjeevi Reddy
2015 年 3 月 10 日
コメント済み: K Chiranjeevi Reddy
2015 年 3 月 10 日
clear all
clc
y=10^-8;
z=1;
x(1)=y;
for i=0:16
for j=1:9
x(z+1)=x(z)+y;
z=z+1;
end
y=y*10;
end
[~,m]=size(x);
u=1;
for i=1:m
if x(i)==0.01
u=u+1
end
end
採用された回答
Michael Haderlein
2015 年 3 月 10 日
For the third time today, the answer is floating point arithmetics:
>> [f,ind]=min(abs(x-.01))
f =
1.7347e-18
ind =
55
So the 55th element of x is close to 0.01, but it actually isn't 0.01. Comparing double values, you should give some threshold under which two numbers are considered equal. E.q.
if abs(x(i)-.01)<1e-6
@Guillaume has given a good link for further information here: http://de.mathworks.com/matlabcentral/answers/182376-find-function-and-vectors-gives-empty-matrix-1-by-0#comment_270986
その他の回答 (0 件)
参考
カテゴリ
Help Center および File Exchange で Logical についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!