nargin是用來判斷輸入變量個數的函數,這樣就可以針對不同的情況執行不同的功能。通常可以用他來設定一些預設值,如下面的函數。
函數檔案examp.m:
function fout=charray(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
指令檔案mydemo.m:
x=[1:3];y=[1;2;3];
examp(x)
examp(x,y')
examp(x,y,3)
執行mydemo.m 後的輸出是:
ans =
1 2 3
2 4 6
21
例子,函數test1的功能是輸出a和b的和。如果隻輸入一個變量,則認為另一個變量為0,如果兩個變量都沒有輸入,則預設兩者均為0。
function y=test1(a,b)
if nargin==0
a=0;b=0;
elseif nargin==1
b=0;
y=a+b;
function x=maiter(phi,x0,ep,N)
%x=chat3_ex3maiter(inline('x-(x-exp(-x))/(1+x)'),0.5,1e-5,400)
if nargin<4,N=500; end
if nargin<3,ep=1e4; end
k=0;
while k<N
x=f(phi,x0);
if abs(x-x0)<ep
break;
x0=x;k=k+1;
if k==N,warning('已達疊代次數上限'); end
disp(['k=',num2str(k)])
這是一個疊代求方程解的Matlab程式,請問if nargin<4,N=500;end和if nargin<3,ep=1e4;end這兩個語句在這個程式中起什麼作用?
NARGIN表示輸入變量的個數,程式中的意思是如果輸入參數小于4個,則N預設為500,如果輸入參數小于3個,預設輸入參數EP=1E4
這就是說輸入的變量式4各的時候是那樣運作,輸入變量式3各式運作以後的程式