2013-05-27 25 views
1

我試圖寫一個簡單的功能,e.g函數和函數名錯誤

function [x y] = functionname (a, b, c, d, e) 

所以我創建一個名爲function-name.m一個m文件,用指定的所有變量。然而,我打電話給functionname的m文件不喜歡這個名字,並且堅持稱它爲m文件的實際名稱(,即,我得到錯誤not enough input arguments)。

我該如何解決這個問題?

回答

2

你無法繞過它。在MATLAB中,您必須使用函數的名稱命名文件。該文件中具有不同名稱的任何函數都是私有的(對於該m文件內的代碼以外的任何代碼都不可見)。

2

MATLAB documentation指出,該文件的名稱和功能必須是相同的:

保存與.m擴展名的文件的功能代碼。文件的名稱應該與文件中第一個函數的名稱相匹配。有效的函數名稱以字母字符開頭,可以包含字母,數字或下劃線。

然而,是什麼在實踐中真正重要的是文件,在該文件中聲明的主要功能不是名稱的名稱。例如,如果您的文件名爲func.m,但裏面的函數定義爲function functionname(...),則需要將其作爲func()而不是functionname()調用。嘗試一下!

就你而言,情況更糟,因爲文件名是「function-name.m」,所以它包含一個連字符。連字符在函數名稱中是不允許的(MATLAB將它們解釋爲負號),所以你基本上被一個你無法調用的函數所困。

底線是,如果你不想遇到麻煩,按照MATLAB的要求去做,並保持文件和函數名稱相同。

+0

謝謝你們兩個 - 但我仍然無法讓它工作! @Eitan,我已經將該函數與載有該函數的實際文件(使用.m,但是作爲文本文件並且沒有連字符,正如您所建議的)一樣保存。現在,Matlab編輯器喜歡這個(並以綠色顯示所有內容)。但是,當我運行它時,我仍然得到相同的錯誤味精「沒有足夠的輸入參數」。當我在文本函數文件中定義函數時,是否需要遵守任何規則或「不要做」?謝謝你的提前。 – user2423335

+0

您是否試圖通過從m文件編輯器中按F5來運行它?如果是這樣,那就錯了。您需要使用所有必需的輸入參數從外部調用該函數(例如,從命令提示符處)。在你的例子中,你需要將5個輸入參數傳遞給你的函數。 –

+1

謝謝你的迴應。是的,我正在按F5運行它,這是錯誤的,但也有一個文件夾問題(該功能以某種方式保存在Matlab無法識別的地方)。修復這些,我的功能現在可以工作。謝謝! – user2423335