one case can not be initiatated when plotting using switch-case

when running the following code, case n=0.6 can not be implemented.
for n=0.2:0.2:0.8
switch n
case 0.2
h1=plot(1:3,sin(1:3)+n,'-.xr');
case 0.4
h2=plot(1:3,sin(1:3)+n,'-.xg');
case 0.6
h3=plot(1:3,sin(1:3)+n,'-.xk');
case 0.8
h4=plot(1:3,sin(1:3)+n,'-.xb');
end
hold on;
end
however, when I change the range of n from 0.2:0:2:0.8 to 1:4, everthing is Ok! I dont know why ,if anyone can help explain, thanks a lot!
for n=1:4
switch n
case 1
h1=plot(1:3,sin(1:3)+n);
case 2
h2=plot(1:3,sin(1:3)+n);
case 3
h3=plot(1:3,sin(1:3)+n);
case 4
h4=plot(1:3,sin(1:3)+n);
end
hold on;
end
legend('1','2','3','4')

 채택된 답변

per isakson
per isakson 2012년 5월 19일
!!! floating point arithmetic suffers from rounding errors !!!
Try: format hex
On my system your example works, but
for 0.0 : 0.3 : 1
does not

댓글 수: 3

thanks a lot, isakson! I modified the code to the following , but it still doesnt work.
for n=0.2:0.2:0.8
aa=fi(n,1,8,3);
tt=hex(aa);
switch tt
case 02
h1=plot(1:3,sin(1:3)+n,'-.xr');
case 03
h2=plot(1:3,sin(1:3)+n,'-.xg');
case 05
h3=plot(1:3,sin(1:3)+n,'-.xk');
case 06
h4=plot(1:3,sin(1:3)+n,'-.xb');
end
hold on;
kkk=3;
end
legend('1','2','3','4')
I add ' ' to 02, and now it works.
Is that the reason?

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

추가 답변 (0개)

카테고리

도움말 센터File Exchange에서 Creating, Deleting, and Querying Graphics Objects에 대해 자세히 알아보기

질문:

2012년 5월 19일

Community Treasure Hunt

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

Start Hunting!

Translated by