輸入引數varargin

2022-03-20 12:54:34 字數 1734 閱讀 7790

一種特別的輸入引數varargin 可以在自定義函式中得到,這種函式支援輸入引數的變數的個數。這個引數顯在輸入引數列表的最後一項,它返回乙個單元陣列,所以乙個輸入實參可以包括任意數目的實參。每乙個實參都變成了由varagin 返回的單元陣列元素。如果它被應用,varagin 必須是函式中的最後乙個輸入引數。

varargin

【功能描述】返回函式輸入引數列表長度

【函式描述】function y=bar(varargin):得到函式輸入引數列表長度,varargin函式僅用於函式m檔案內。

varargin引數位於函式輸入引數列表的末尾,varargin必須小寫。

【函式例項】新建乙個名為lxyhds.m的函式,函式**如下:

function lxyhds(arga, argb, varargin) %lxyhds為自己起的任意乙個函式名字 

optargin=size(varargin,2);%獲取可選引數數目 nargin為系統變數,返回函式引數數目,此處返回除了可選變數之外的變 量數目

stdargin=nargin - optargin; %傳入引數至少有arga時才輸出arga

if stdargin >= 1 fprintf('

%d\n

', arga)

end %傳入引數有argb時輸出argb

if stdargin == 2

fprintf(

'%d\n

', argb)

end%size(varargin,2

)返回可選引數個數,此處輸出可選引數列表

for k= 1 : size(varargin,2

) fprintf(

'%d\n

', varargin)

end

end

例如,寫了乙個函式:function test(varargin)

那麼在這個函式裡,varargin就是乙個cell陣列,它包含了使用者輸入的引數。下面是乙個例子:

function test(varargin)

disp([

'nargin is

'num2str(nargin)]);

for v=1

:numel(varargin)

disp([

'varargin class is

'class

(varargin)]);

end

完全就是使用cell陣列的方法來處理使用者輸入的個數不定的引數,如果我們這樣呼叫這個函式:

>> test()

會得到結果:

nargin is 0

表示使用者輸入引數個數為0個,就是沒有輸入引數。

如果這樣呼叫:

>> test(1,'a',uint8(32),'123456');

會得到結果:

nargin is 4

varargin class is double

varargin class is char

varargin class is uint8

varargin class is char

表示使用者輸入了4個引數,第乙個是double型別,第二個是char型別,第三個是uint8型別,第四個也是char型別。

也就是說,只要把函式的引數列表的最後乙個引數寫成varargin,就可以在函式內部以訪問cell陣列的方式來獲取可變引數的資訊。

輸入引數varargin

一種特別的輸入引數varargin 可以在自定義函式中得到,這種函式支援輸入引數的變數的個數。這個引數顯在輸入引數列表的最後一項,它返回乙個單元陣列,所以乙個輸入實參可以包括任意數目的實參。每乙個實參都變成了由varagin 返回的單元陣列元素。如果它被應用,varagin 必須是函式中的最後乙個輸...

MATLAB中的varargin 函式

在matlab中有這一樣乙個奇怪的函式varargin,雖然我不覺得它是函式哈!感覺應該是識別符號。它代表了乙個陣列,應該可以這麼理解!但是又不是陣列,在matlan中陣列是a 這麼表示的。而varargin中的數用的是varargin,a應該是1,2,3自然數。這肯定不是陣列啊!這是什麼東東,我也...

動態輸入引數

select usename type,gender from user where usename and phone 如果第乙個if,usename不存在,那麼就變成了where and xx,會報錯 解決方法一 select usename type,gender from user wher...