2016-02-25 192 views
1

QuestionMatlab未定義變量或函數輸出中的錯誤

附加圖像有我正在處理的問題。以下是我的m文件中的代碼和我在命令窗口中獲得的輸出。 M-文件編號:

function p = PolyEval (n, a, y, x)  
    for i = n+1:2 
     p = a(i - 1) + (x + y(i - 1))*a(i); 
     a(i-1) = p; 
    end 
    fprintf('%6.0f %18.8f \n', p); 
end 

命令窗口代碼和輸出:

PolyEval(5, [-1, 3.3, 0, -2.2, 5, -1.6], [-1, 1, -1, 1, -1], 1.53) 

未定義的函數或變量 「p」。

PolyEval中的錯誤(第6行) fprintf('%6.0f%18.8f \ n',p);

關於代碼和問題,n是控制兩個數組大小的變量,a是由n + 1個變量組成的一維數組,y是一個由n組成的一維數組變量,x是用於計算的變量。

我在一張紙上測試了代碼算法,它應該返回一個6.65的值,但在這種情況下,它給了我上面的錯誤。

你們能否幫我理解我爲什麼會出錯?請看看我想要寫這個matlab代碼的問題和方程組成的圖像。

+0

您的for循環不指望您認爲它的作用。當用筆和紙做的時候,在不同迭代中'i'的值是多少? – Daniel

+0

我的值應該從6降低到2在每次迭代中減少1 – Mihir

回答

0

循環for i = n+1:2是使用步驟+1(這是默認值)從6到2的循環。每當起始值高於最終值時,循環根本就不執行。你想要for i = n+1:-1:2

+1

非常感謝Daniel,for循環的變化起作用,並且我還必須將值初始化爲p,所以這是最終的代碼給我正確的答案 ' 函數p = PolyEval(n,a,y,x) p = a(n + 1);對於i = n:-1: p = a(i)+(x + y(i))* p; 結束 fprintf('%6.0f%18.8f \ n',p); end' – Mihir

相關問題