このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。
varargin
可変長の入力引数のリスト
構文
説明
varargin
は、任意の数の入力引数を関数で受け入れ可能にする関数定義ステートメントの入力変数です。小文字を使用して、varargin
を指定します。明示的に宣言された任意の入力の後に、varargin
を最後の入力引数として含めます。
関数を実行した場合、varargin
は 1 行 N 列の cell 配列となり、N は明示的に宣言された入力の後に関数が受け取る入力の数を表します。関数が、明示的に宣言された入力の後に入力を受け取らない場合、varargin
は空の cell 配列となります。
例
関数入力の変数番号
acceptVariableNumInputs.m
というファイルに、可変個の入力を受け入れて各入力値を表示する関数を定義します。
type acceptVariableNumInputs
function acceptVariableNumInputs(varargin) disp("Number of input arguments: " + nargin) celldisp(varargin) end
複数の入力を指定してこの関数を呼び出します。
acceptVariableNumInputs(ones(3),'some text',pi)
Number of input arguments: 3 varargin{1} = 1 1 1 1 1 1 1 1 1 varargin{2} = some text varargin{3} = 3.1416
varargin
および宣言された入力
definedAndVariableNumInputs.m
というファイルに、2 つの入力を想定し、さらに任意の数の追加入力も受け入れる関数を定義します。
type definedAndVariableNumInputs
function definedAndVariableNumInputs(X,Y,varargin) disp("Total number of input arguments: " + nargin) formatSpec = "Size of varargin cell array: %dx%d"; str = compose(formatSpec,size(varargin)); disp(str) end
複数の入力を指定してこの関数を呼び出します。
definedAndVariableNumInputs(7,pi,rand(4),datetime('now'),'hello')
Total number of input arguments: 5 Size of varargin cell array: 1x3
2 つの入力を指定してこの関数を呼び出します。varargin
は空の cell 配列になります。
definedAndVariableNumInputs(13,42)
Total number of input arguments: 2 Size of varargin cell array: 0x0
可変個の入力と出力
variableNumInputAndOutput.m
というファイルに、可変個の入力と出力を受け入れる関数を定義します。
type variableNumInputAndOutput
function varargout = variableNumInputAndOutput(varargin) disp(['Number of provided inputs: ' num2str(length(varargin))]) disp(['Number of requested outputs: ' num2str(nargout)]) for k = 1:nargout varargout{k} = k; end end
2 つの入力と 3 つの出力を指定して、この関数を呼び出します。
[d,g,p] = variableNumInputAndOutput(6,'Nexus')
Number of provided inputs: 2 Number of requested outputs: 3
d = 1
g = 2
p = 3
入力と出力を何も指定せずに、もう一度この関数を呼び出します。
variableNumInputAndOutput
Number of provided inputs: 0 Number of requested outputs: 0
関数ラッパーの作成
作業フォルダーのファイルで、赤のラインをプロットする関数 plot のラッパーを作成します。関数 redplot
は、可変長の入力引数リストを受け入れ、可変長の出力引数リストを返します。これにより、ラインの色が赤に設定され、他の入力値が関数 plot
に転送されます。この関数ラッパーを使用すると、redplot
に plot
と同じ入力を渡すことができ、ラインの色を赤に指定する必要がありません。
type redplot.m
function varargout = redplot(varargin) [varargout{1:nargout}] = plot(varargin{:},'Color',[1,0,0]); end
redplot
を使用してライン プロットを作成します。
x = 0:pi/100:2*pi; y = sin(x); redplot(x,y)
もう一度 redplot
を呼び出し、関数 plot
に転送する入力引数と出力引数を指定します。
h = redplot(x,y,'Marker','o','MarkerEdgeColor','green');
拡張機能
C/C++ コード生成
MATLAB® Coder™ を使用して C および C++ コードを生成します。
使用上の注意事項および制限事項:
varargin
を使用して、エントリポイント (最上位) 関数の引数を定義する場合、コード ジェネレーターは、固定数の入力引数を使用して C/C++ 関数を生成します。コードの生成時に指定する引数の数により、引数の固定数が決まります。varargin
に書き込むことはできません。入力引数に書き込む場合は、まず入力引数をローカル変数にコピーしてください。varargin
のインデックスはコンパイル時の定数でなければなりません。
HDL コード生成
HDL Coder™ を使用して FPGA 設計および ASIC 設計のための Verilog および VHDL のコードを生成します。
使用上の注意事項および制限事項:
varargin
に書き込むことはできません。入力引数に書き込む場合は、まず入力引数をローカル変数にコピーしてください。HDL ブロック プロパティ [アーキテクチャ] が
[MATLAB Datapath]
に設定された MATLAB function ブロックでの、varargin
の使用:varargin
の使用によってのみ cell 配列を作成することができます。関数cell
の使用やcellArr = {1,2,3}
のように中かっこを使用した cell 配列の作成など、他の初期化の手法は使用できません。cell 配列への複数のインデックス付けはできません。たとえば、次のコードの抜粋では HDL コード生成でエラーが発生します。
[x, y] = varargin{1:2};
バージョン履歴
R2006a より前に導入
MATLAB コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)