2013-09-28 103 views
0
「類型‘雙重’的輸入參數的未定義函數或方法X」

我試圖與遞歸謝爾賓斯基三角形,但我得到這個錯誤:Matlab的錯誤:遞歸

??? Undefined function or method 'sierpinski' for input arguments of type 'double'. 

我明白,這與Matlab沒有找到我的函數的路徑,但奇怪的是,它可以找到我的主要sierpinski(x,y,n)函數,但不是我想稍後調用的相同函數,以便獲得遞歸。

我的代碼看起來是這樣的:

function sierpinski(x,y,n) 
... 
sierpinski(x2,y2,n-1) 
end 
sierpinski([0,1,0.5],[0,0,1],4) 

我將不勝感激,如果有人可以幫助我解決這個:)

+0

你能否提供更多的代碼作爲上下文?另外,當你從命令窗口調用函數時,會出現錯誤信息,還是在'sierpinski'代碼中引發錯誤? – Alan

+0

你的目錄中存在這個函數嗎添加到路徑中? – user1343318

+0

'函數的Sierpinski(X,Y,N) 暫緩 如果n == 0 填充(X,Y, 'R') 否則 X2 = [(X(2)-x(1))/ 2,(x(2)-x(3))/ 2,x(3)+(x(2)-x(3))/ 2]。 y2 = [y(1),y(3)/ 2,y(3)/ 2]; 謝爾賓斯基(X2,Y2,N-1) 端 端 的Sierpinski([0,1,0.5],[0,0,1],2)' 我的代碼還沒有準備好,所以我知道我我可能不會用到目前爲止的代碼來獲得Sierpinski三角形。無論如何,我想得到的東西,而不是錯誤。 – Djamillah

回答

1

我無法重現您報告的第一個錯誤。它可能與文件不在路徑上有關。避免這種情況的最簡單方法是將工作目錄更改爲包含.m文件的目錄。

您在您的評論描述第二個錯誤是由於這樣的事實,你想擁有的一個文件,該文件是一個Matlab的功能,並在同一時間MATLAB程序。兩者都有擴展.m,但第一個包含一個函數定義(可以用參數調用,具有局部變量,並且可以返回值的東西),另一個包含一系列matlab語句,這些語句要像執行一樣他們在命令窗口中被逐個輸入。

執行以下操作:

- 做一個MATLAB函數文件sierpinski.m只包括你的函數代碼:

function sierpinski(x,y,n) 
hold on 
if n == 0 
    fill(x,y,'r') 
else 
    x2 = [(x(2)-x(1))/2, (x(2)-x(3))/2, x(3)+(x(2)-x(3))/2]; 
    y2 = [y(1), y(3)/2, y(3)/2]; 
    sierpinski(x2, y2, n-1) 
end 

將文件保存到當前目錄或路徑的目錄。

- 在命令窗口中,輸入語句sierpinski([0,1,0.5],[0,0,1],2)。結果是一個帶有傾斜的紅色三角形的數字窗口。不是一個謝爾賓斯基三角形,但我想第一步就完成了。 ;-)

而不是在命令窗口中輸入該語句,您也可以製作一個Matlab腳本文件。用名稱編輯文件run_sierpinski.m,其中包含聲明:

sierpinski([0,1,0.5],[0,0,1],2) 

再次,將文件保存到當前目錄或路徑的目錄。

現在,您可以通過單擊GUI中的「運行」按鈕(綠色三角形左右)或在命令窗口中輸入run_sierpinski來運行該腳本。無論如何,結果應該與直接輸入聲明相同。