2017-04-03 344 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]'的背影而已'困擾着你?是的,它應該是括號,但整個解釋仍然是正確的。 –