2017-04-03 183 views
0

我想了解如何在Matlab中使用for循环中的if语句。 我喜欢我的Go []数组像这样[1,1,1,1,1,2,3,3,3,3]而不是图像的结果[1,0,0,0,0,0 ,0,0,0,3]。if语句里面for循环for Matlab

有人可以帮助我的代码?

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

建议的解决方案

一个更好的办法来解决这个问题将作如下安排:

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

问题与解决方案

我强烈建议要充分认识我的推荐代码上面,并使用它。 然而,学习之用,如果我们想使你的代码的工作,主要有两分方面的问题两个来处理:

  1. 最好的用例是定义围棋和F循环之前开始为空载体。
  2. 在循环运行期间,使用不同的变量(其他则是Go)来保存要分配的临时值。

代码示例:

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) 
0

从你在每次循环覆盖围棋的价值你写在你的问题的代码!

所以在最后一次迭代中,如果语句设置Go=3(即标量或尺寸为1x1矩阵),那么分配集合Go(10) = 3(大小= 1×10)和(即2:9)之间的值都为0所有的值,因为它们尚未初始化。

你的代码基本上有一个逻辑错误。

+0

ü可以用代码帮助,以了解什么ü意思。为什么F []按我的意愿工作是我的逻辑错误? – kosar

+0

MATLAB不会以这种方式编制索引。如果您自己不了解该语言的基本语法,请不要回答问题。 – Adriaan

+0

@Adriaan它只是'Go [10]'的背影而已'困扰着你?是的,它应该是括号,但整个解释仍然是正确的。 –