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
0 个评论
回答(2 个)
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);
0 个评论
Star Strider
2015-10-7
I would re-code your elseif line to:
elseif (x(i)>=0) & (x(i) <= pi/2)
1 个评论
Image Analyst
2015-10-7
Why & instead of &&?
此问题已关闭。
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!