我试图理解如何在Matlab中的for循环中使用if语句。 我希望我的Go []数组像这样[1,1,1,1,1,2,3,3,3,3]而不是图像的结果[1,0,0,0, 0,0,0,0,0,3]。
有人可以帮我处理代码吗?
for f=1:10
if (f>=1)&&(f<=5)
Go=1;
end
if (f>5)&&(f<7)
Go=2;
end
if (f>=7)
Go=3;
end
F(f)=f;
Go(f)=Go;
end
plot(F,Go)
答案 0 :(得分:2)
建议的解决方案
解决此问题的更好方法如下:
Go = [ones(1,5),2,ones(1,4)*3];
F = 1:10;
您的解决方案的问题
我强烈建议您完全理解我上面建议的代码,并使用它。 但是,出于学习目的,如果我们确实希望使您的代码有效,则有两个主要问题需要处理:
代码示例:
Go = zeros(1,10);
F = zeros(1,10);
for f=1:10
if (f>=1)&&(f<=5)
temp=1;
elseif (f>5)&&(f<7)
temp=2;
else
temp=3;
end
F(f)=f;
Go(f)=temp;
end
plot(F,Go)
答案 1 :(得分:0)
根据您在问题中编写的代码,您将在循环的每次迭代中覆盖Go的值!
所以在最后一次迭代中,if语句设置Go=3
(即大小为1x1的标量或矩阵),然后赋值集Go(10) = 3
(size = 1x10)和其间的所有值(即2:9
)为0,因为它们尚未初始化。
您的代码中基本上存在逻辑错误。