Main Content

inputname

説明

s = inputname(argNumber) は引数番号 argNumber に対応するワークスペース変数名 s を返します。

inputname は、MATLAB® コマンド プロンプトや、コマンド プロンプトから呼び出したスクリプト内で呼び出すことができません。

すべて折りたたむ

現在の作業フォルダー内のファイル getname.m に次の関数を作成します。

function getname(a,b)
s = inputname(1);
disp(['First calling variable is ''' s '''.'])
end

コマンド プロンプトで変数 xy を使用して関数を呼び出します。

x = 5;
y = 3;
getname(x,y)
First calling variable is 'x'.

変数の代わりに値を使用して関数を呼び出します。入力には名前がないので、関数 inputname は空の char 配列を返します。

getname(5,3)
First calling variable is ''.

現在の作業フォルダー内のファイル getname2.m に次の関数を作成します。

function getname2(a,b,c)
for m = 1:nargin
    disp(['Calling variable ' num2str(m) ' is ''' inputname(m) '''.'])
end

コマンド プロンプトで関数を呼び出します。

x = {'hello','goodbye'};
y = struct('a',42,'b',78);
z = rand(4);

getname2(x,y,z)
Calling variable 1 is 'x'.
Calling variable 2 is 'y'.
Calling variable 3 is 'z'.

y のフィールドを使用して関数を呼び出します。この入力引数はドット インデックスを含むので、関数 inputname は 2 番目の変数名およびその後にあるすべての変数名について空の char 配列を返します。

getname2(x,y.a,z)
Calling variable 1 is 'x'.
Calling variable 2 is ''.
Calling variable 3 is ''.

x の 2 番目のセルを使用して関数を呼び出します。この入力引数はセル インデックスを含むので、関数 inputname は 1 番目の変数名およびその後にあるすべての変数名について空の char 配列を返します。

getname2(x{2},y,z)
Calling variable 1 is ''.
Calling variable 2 is ''.
Calling variable 3 is ''.

入力引数

すべて折りたたむ

関数の入力引数の数。実数で正の整数スカラー値として指定します。argNumber が、関数に渡される入力引数の数よりも大きい場合、MATLAB はエラーをスローします。

データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

出力引数

すべて折りたたむ

ワークスペース変数名。文字ベクトルとして返されます。入力引数に名前がない場合、関数 inputname は空の文字配列 ('') を返します。たとえば、入力引数が変数ではなく数値、式またはインデックス式である場合、入力引数には名前がありません。

inputname を呼び出す関数の入力引数にセルまたはドットのインデックスが含まれる場合、inputname はその変数と後続の変数について空の文字配列を返します。cell 配列から要素を抽出したり、構造体からフィールドを抽出すると、コンマ区切りリストが生成されます。コンマ区切りリストの後にある入力の位置はすべて、動的になります。したがって、inputname はリストを生成した引数およびその後の引数について '' を返します。

ヒント

  • inputname は入力変数名を関数に通知する便利な方法です。たとえば、ある関数が入力のデータ型をチェックして、正しくない型を検出した場合、ワークスペースから変数名を表示します。

  • inputname をコードの重要なパスで使用したり、evalevalin および assignin などのコマンドと使用する変数名の取得に使用することは避けてください。このように inputname を使用すると、コードの管理が困難になることがあります。

  • オーバーロードされた subsrefsubsasgnsubsindexnumArgumentsFromSubscriptnumel、またはプロパティの set または get メソッド内部で inputname を呼び出した場合、エラーが返されます。

  • inputname は、転送されたインデックス演算に含まれる引数の名前を取得できません。代わりに、空の string を返します。

  • inputname を呼び出す関数が MATLAB コード ファイルから呼び出されていない場合、inputname は MATLAB コードからの呼び出しが見つかるまでスタックを上方向に検索し、そこで検出した名前を返します。たとえば、inputname が組み込み関数や MEX 関数から呼び出された場合にこの動作が発生します。

    組み込み関数 arrayfun が関数ハンドルを介して inputname を呼び出す次のコードを考えます。

    fn=@(x) inputname(x);
    a=1:4;
    arrayfun(fn,a,'uniformoutput',false)
    ans = 
    
        'fn'    'a'    ''    ''

    関数 inputname は、MATLAB コードからの呼び出しが見つかるまでスタックを上方向に検索します。この場合、MATLAB コードはベース ワークスペースであり、inputname はベース ワークスペースから変数名を返します。

拡張機能

バージョン履歴

R2006a より前に導入