在下面的代码中我很失望,因为我想让matlab做我能做的事情。 这段代码实际上工作得很好,如果我手工编写每一步,这当然是绝对的愚蠢:)但是如果我尝试使用循环来做任何人指出错误,你在评论部分中看到:(再次感谢, MGM
代码的目标:问matlab是否x(1)
clear;
x=[0 2 4 6 8 10];
y=[0 1.1 1.3 2 2.1 3.6 4.5 8.3 9];
z=zeros(9);
for j=1:length(y)
% for i=1:length(x)
% for k=1:length(y)
% if (x(i)<y(j))&&(y(j)<x(i+1))
% z(j,k)=(x(1)+x(2))./2;
% else
% z(j,k)=y(j);
%
% end
% end
% end
% end
if (x(1)<y(j))&&(y(j)<x(1+1))
z(j,1)=(x(1)+x(2))./2;
else
z(j,1)=y(j);
end
if (x(2)<y(j))&&(y(j)<x(2+1))
z(j,2)=(x(2)+x(3))./2;
else
z(j,2)=y(j);
end
if (x(3)<y(j))&&(y(j)<x(3+1))
z(j,3)=(x(3)+x(4))./2;
else
z(j,3)=y(j);
end
end
答案 0 :(得分:1)
在循环中,您编写z(j,k)
,但在没有循环的代码中,看起来您正在执行z(j,i)
也在loopwyou中写道:(x(1)+x(2))
,没有循环,看起来像(x(i)+x(1+i))
你应该写:
for j=1:length(y)
for i=1:length(x)
if (x(i)<y(j))&&(y(j)<x(i+1))
z(j,i)=(x(i)+x(i+1))./2;
else
z(j,i)=y(j);
end
end
end