2017-10-12 35 views
1

我提前道歉,我敢肯定這個問題的答案很微不足道,不幸的是我只是不確定發生了什麼。Matlab:if語句中的不等式導致錯誤

我試圖運行下面的代碼

a(1) = -2; 
b(1) = 2; 
c(1) = 0; 


for i = 1:15 

    if cubicPoly(a(i))*cubicPoly(c(i)) < 0 
    a(i+1) = a(i); 
    b(i+1) = c(i); 

    else 
    a(i+1) = c(i); 
    b(i+1) = b(i); 

    end 

end 

但是當我做我收到錯誤消息

Index exceeds matrix dimensions. 

Error in Assignment2 (line 31) 
if cubicPoly(a(i))*cubicPoly(c(i)) < 0 

如果我評估我的三次多項式函數cubicPoly正常,一切都運行得很好。但是當在序列a(i)和c(i)上進行評估時,在for/if循環中會導致錯誤。

任何幫助,將不勝感激。

+0

恩,不,我不這麼認爲。您看到的代碼除了單獨定義的函數外,還有其他所有代碼。 Idk也許我錯誤地創建了我的功能或者什麼?我想也許我應該發佈cubicPoly的代碼... – FofX

回答

3

它看起來不像你曾經添加更多元素到c;當i = 2時,您正試圖訪問if cubicPoly(a(i))*cubicPoly(c(i)) < 0中的c(2),這會將您帶出界限。

如果您打算在循環時將元素添加到c,則可能需要包含諸如c(i+1) = ...之類的內容。

+1

是的,我認爲就是這樣。謝謝。我意識到我需要c(i + 1)=(a(i)+ b(i))/ 2。在知道我做錯了什麼之後,我知道我會感到無聊。 – FofX