varargout
可変長の出力引数の一覧
説明
varargout
は、任意の数の出力引数を関数で返すことを可能にする関数定義ステートメントの出力変数です。小文字を使用して varargout
を指定し、明示的に宣言された出力の後に最後の出力引数として含めます。
関数を実行した場合、varargout
は 1 行 N 列の cell 配列となり、N は明示的に宣言された出力の後に要求された出力の数を表します。関数内で、varargout
は初期化されていない変数であり、事前に割り当てられません。
例
可変個の関数出力
returnVariableNumOutputs.m
というファイルに、出力サイズ ベクトル s
および可変個の追加の出力を返す関数を定義します。
type returnVariableNumOutputs
function [s,varargout] = returnVariableNumOutputs(x) nout = max(nargout,1) - 1; s = size(x); for k = 1:nout varargout{k} = s(k); end end
出力 s
には、入力配列 x
の次元が含まれます。追加の出力は、s
内の個々の次元に対応しています。
3 次元の配列を指定してこの関数を呼び出し、3 つの出力を要求します。
A = rand(4,5,2); [s,rows,cols] = returnVariableNumOutputs(A)
s = 1×3
4 5 2
rows = 4
cols = 5
4 次元の配列を指定してもう一度この関数を呼び出し、4 つの出力を要求します。このとき、この関数は 4 番目の次元を返しません。
A = zeros(1,4,5,2); [s,dim1,dim2,dim3] = returnVariableNumOutputs(A)
s = 1×4
1 4 5 2
dim1 = 1
dim2 = 4
dim3 = 5
A
に対してこの関数をもう一度呼び出し、1 つの出力を要求します。ここで、この関数は A
の各次元を返しますが、varargout
は返しません。
s = returnVariableNumOutputs(A)
s = 1×4
1 4 5 2
可変個の入力と出力
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++ コードを生成します。
使用上の注意事項および制限事項:
コード生成時に、エントリポイント (最上位) 関数で
varargout
を使用するには、codegen -nargout
構文を使用して、出力パラメーターの数を指定しなければなりません。varargout
のインデックスはコンパイル時の定数でなければなりません。
バージョン履歴
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)