一種特別的輸入引數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...