2012-11-27 50 views
2

我只是寫了一個Matlab函數,想複製和粘貼我的交互式會話。有一些是nargin語句(例如if nargin < 1; a = 0; end;),並且事實證明nargin在我的工作區中的值11005,沒有我的具有分配它。有人知道這是什麼,它是否用於任何事情(功能之外),以及將它設置爲零是否有問題?什麼是函數之外的nargin?

+2

它有*可能*該值,因爲在全局工作區範圍(當用作變量而不是函數)它沒有用,因此它是未指定的。 *未定義的行爲類型的東西。*順便說一句,你仍然可以使用它作爲函數(在工作空間級別)使參數的數量是特定函數特徵的簽名。 – Acorbe

+1

來自[docs](http://www.mathworks.com/help/matlab/ref/nargin.html):''nargin'返回當前正在執行的函數中傳入的輸入參數的個數,使用' nargin'語法*僅在函數的主體*中。「 – plesiv

回答

3

當一個函數內使用,nargin給出了傳遞給該功能的參數的數目。與字符串參數fn一起使用,它是一個內置函數,它返回功能fn所採用參數的數量。你應該調用它,而不從工作區中的參數:

nargin返回在調用當前正在執行的函數傳遞輸入參數的個數。 僅在函數的主體中使用此簡單句法語法。

可以,但你應該避免nargin分配一個值,因爲它會再鬆第二語義:

nargin('sparse') 

ans = 

6 

nargin = 0; 
nargin('sparse') 
Index exceeds matrix dimensions. 
+0

這很有趣......在最後一種情況下,您隱藏了變量名稱後面的真實函數名稱。原則上你可以使用每個功能。 – Acorbe

+0

@Acorbe是的,可能不是非常有用..除非你想介紹很難找到你的代碼中的錯誤;) – angainor

+0

@Acorbe,我實際上遇到了這種情況。例如,我經常不得不努力抵制變量'set'的誘惑。:) – Nagel

相關問題