whats wrong with the code?

function fx=f(x)
for i=1:length(x)
if x(i)<0
fx(i)=x(i);
elseif x(i)==0:pi/2;
fx(i)=sin(x(i));
else
fx(i)=(sin(x(i)))
end
end
end

답변 (2개)

Thorsten
Thorsten 2015년 10월 7일
편집: Guillaume 2015년 10월 7일

1 개 추천

x(i)==0:pi/2
compares x(i) to 0 and 1 (largest integer below pi/2) and gives the result in matrix of size 1x2. A matrix is considered to be true if all values are nonzero. Since x cannot be 0 and 1 at the same time, this never becomes true.
The code after else gives the same result as in the elseif before, so it does not make sense to differ between the two cases.
You don't need a for loop but you can use logical indexing to write your code, e.g.
fx(x<0) = x(x<0);
fx(x>=0 & x <= pi/2) = sin(x(x>=0 & x <= pi/2));
fx(x>pi/2) = -sin(x>pi/2);
Star Strider
Star Strider 2015년 10월 7일

0 개 추천

I would re-code your elseif line to:
elseif (x(i)>=0) & (x(i) <= pi/2)

댓글 수: 1

Image Analyst
Image Analyst 2015년 10월 7일
Why & instead of &&?

이 질문은 마감되었습니다.

태그

아직 태그를 입력하지 않았습니다.

질문:

2015년 10월 7일

마감:

2021년 8월 20일

Community Treasure Hunt

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

Start Hunting!

Translated by