The code does not work with 1.7

조회 수: 1 (최근 30일)
net
net 2011년 11월 30일
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일
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
  댓글 수: 1
Andrei Bobrov
Andrei Bobrov 2011년 11월 30일
sum(y == i1) -> sum(abs(y-i1) < 100*eps)

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

추가 답변 (3개)

Robert Cumming
Robert Cumming 2011년 11월 30일
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일
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일
Thanks for the answers.

카테고리

Help CenterFile Exchange에서 Environment and Settings에 대해 자세히 알아보기

태그

Community Treasure Hunt

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

Start Hunting!

Translated by