在Matlab中的for循环中的if语句

时间:2017-04-03 14:35:49

标签: matlab

我试图理解如何在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)

My results

2 个答案:

答案 0 :(得分:2)

建议的解决方案

解决此问题的更好方法如下:

Go = [ones(1,5),2,ones(1,4)*3];
F = 1:10;

您的解决方案的问题

我强烈建议您完全理解我上面建议的代码,并使用它。 但是,出于学习目的,如果我们确实希望使您的代码有效,则有两个主要问题需要处理:

  1. 最好的用例是在循环开始之前将Go和F定义为空向量。
  2. 在循环运行期间,使用不同的变量(除Go之外)保存要分配的临时值。
  3. 代码示例:

    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,因为它们尚未初始化。

您的代码中基本上存在逻辑错误。