The code does not work with 1.7

This code works normally accept 1.7
it does not count 1.7
I coul not understand why
y=[1.3,1.3,1.7,1.3,1.7,1.6,1.8,1.9,1.6]; %y=[1.7,1.7,1.7,1.7,1.7,1.7,1.7,1.7,1.7]; x=1;
for i=1:0.1:1.9
v(x)=sum(y==i);
x=x+1;
end
v

댓글 수: 2

Wayne King
Wayne King 2011년 11월 30일
what are you trying to do with this code???
net
net 2011년 11월 30일
I wanted to count elements.
1.3 => 3 times
1.7 => 2 times etc.
These answers solved my problem.
Thanks for the all of answers.

댓글을 달려면 로그인하십시오.

 채택된 답변

Titus Edelhofer
Titus Edelhofer 2011년 11월 30일

1 개 추천

Hi,
this is due to roundoff: 0.1 is not representable as a finite number in binary system. Note the following:
i=1:0.1:1.9;
i(9)-1.8
ans =
-2.2204e-016
And then your test on equality fails ...
Titus

추가 답변 (3개)

Robert Cumming
Robert Cumming 2011년 11월 30일

1 개 추천

As said above you have encountered the problem of floating point arithmetic, if change your counter to be 1 instead of 0.1 (and change your inner the line to:
v = sum (y==i/10)
you will see 1.7 is counted.
Its worth understanding that computer are not exact due to the way they store information in memory, for example try:
[0.3-0.2 == 0.1]
[0.3-0.2-0.1]
They answers are not what you might expect... Note this is not a problem of Matlab alone. Have a read of this answer
Junaid
Junaid 2011년 11월 30일

1 개 추천

Anyway you can do what ever you want from this simple one lines.
v =hist(y,[1:.1:2])
This is simple. Take the histgram. The number of bins are decided by [1:.1:2].
net
net 2011년 11월 30일

0 개 추천

Thanks for the answers.

카테고리

도움말 센터File Exchange에서 Logical에 대해 자세히 알아보기

태그

질문:

net
2011년 11월 30일

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by