nargin

nargin

nargin為“number of input arguments”的縮寫。 在matlab中定義一個函式時, 在函式體內部, nargin是用來判斷輸入變數個數的函式。在matlab命令視窗中輸入help nargin或者doc nargin即可獲得該函式的幫助信息。

基本介紹

  • 中文名:無
  • 外文名:nargin
  • 定義:用來判斷輸入變數個數的函式
  • 類別:計算機編程
  • 屬於:MATLAB函式
功能,調用格式,函式說明,套用舉例,相關函式:varargin,nargin與nargout,語法,函式描述,

功能

nargin是用來判斷輸入變數個數的函式,特別是在利用了可變參數列表的函式中, 用nargin獲取輸入參數個數很方便。

調用格式

nargin
nargin(fx)

函式說明

nargin通過調用當前正在執行的函式返回輸入參數的數量,只在函式體內使用nargin語法功能。
nargin(fx)在函式fx的定義聲明中返回輸入參數的個數。如果函式包括varargin其定義,那么nargin返回的輸入個數為負。例如函式foo輸入有 a,b,和varargin三個參數,那么nargin('foo”)返回值為-3。

套用舉例

例1:函式檔案 examp.m
function fout=examp(a,b,c)    if nargin==1       fout=a;    else if nargin==2       fout=a+b;    else if nargin==3       fout=(a*b*c)/2;end
例2:function名為myplot。
  function [x0,y0] = myplot(x, y, npts, angle, subdiv) % MYPLOTPlot a function. % MYPLOT(x, y, npts, angle, subdiv) %  The first two input arguments are %  required; the other three have default values  ... if  nargin< 5, subdiv = 20; end if  nargin< 4, angle = 10; end if  nargin< 3, npts = 25; end ...   if nargout == 0    plot(x, y) else    x0 = x;       y0 = y; end
註:%x,y是兩個變數,npt,angle,subdiv這三個參數具有默認值,不需要輸入。
if nargin < 5, subdiv = 20; end如果輸入變數的個數小於5個,那么給subdiv賦默認值。
if nargin < 4, angle = 10; end如果輸入變數的個數小於4個,那么給angle賦默認值。
詳細用法可以在matlab視窗中輸入輸入 help nargin命令。
注意:由於nargin()和nargout()是函式而不是變數,因此用戶不能用諸如nargin=nargin+pi之類的語句對它們進行重新賦值。
nargin和 nargout0是函式,當在函式中調用這兩個函式時,其值為該函式的輸入或輸出參數,而不需要進行聲明。如上面的例子中,在函式A中調用nargin(B(nargin,Y*rand(4)))表示函式A的輸入參數個數,在函式C中調用nargin表示函式C的輸入參數個數。

相關函式:varargin

varargin是參數數目可變的函式。
函式nargin()和函式nargout()允許函式接收或返回任意數目的參數。在嵌套函式中也可以使用可變參數。但需要注意的是,varargin、varargout和nargin、nargout的意義可能有所不同。
varargin和varargout為變數,與MATLAB其他變數的作用範圍相同。由於嵌套函式與主函式使用相同的工作區,因此varargin和varargout既可以表示嵌套函式的輸入輸出參數,也可以是主函式的輸入/輸出函式,具體值取決於程式中的變數聲明:
(1)如果嵌套函式在函式聲明中包含varargin或者varargout,則在該函式內部調用這兩個變數時,變數內容為該函式的輸入輸出參數;
(2)如果嵌套函式聲明中沒有包含varargin或者varargout,而在該函式的上層函式聲明中包含varargin或者varargout,則當在該嵌套函式內部調用這兩個變數時,變數內容為上層函式的輸入輸出參數。
例3:
function foo(argA, argB, argC, varargin)fprintf('How many input arguments? %d\n', nargin);fprintf('The input arguments are: %d %d %d ', argA, argB, argC);   for k=1:size(varargin, 2)      disp(varargin{k})   end   disp('Done');end
輸出結果如下
>> foo(1, 2, 3)How many input arguments? 3The input arguments are: 1 2 3 Done>> foo(1, 2, 3, [4, 5, 6])How many input arguments? 4The input arguments are: 1 2 3 4 5 6Done

nargin與nargout

nargin和nargout用來表示函式變數的數目。

語法

(1)n=nargin
(2)n=nargin('fun')
(3)n=nargout
(4)n=nargout('fun')

函式描述

在一個函式的M檔案內部,函式nargin和nargout分別顯示用戶提供的輸入和輸出變數的個數。在一個函式的M檔案外部,nargin和nargout為一個指定的函式給出其輸入或輸出變數的個數。當函式的變數個數可變時,變數的個數為負數。
(1)nargin
返回一個函式的輸入變數的數目。
(2)nargin('fun')
返回為M檔案函式fun定義的輸入變數的個數,或者如果函式的輸入變數可變時返回-1。
(3)nargout
為一個函式返回其輸出變數的數目。
(4)nargout('fun')
返回為M檔案函式fun定義的輸出變數的數目。

相關詞條

熱門詞條

聯絡我們