1. ホーム
  2. matlab

[解決済み] Matlabでforward inputnames?

2022-02-16 11:28:03

質問

を使おうとしています。 inputname を使用して基本的に入力引数を転送する関数呼び出しのスタックを介して varargin . こんな感じです。

function called_function( varargin )
    other_function(varargin{:});
end

function other_function( varargin )
    for i = 1:nargin
        inputname(i)
    end
end

問題は、Matlabがこれを好まないようなことです。例えば

>> x=1; y=2; called_function(x,y)

ans =

     ''

ans =

     ''

は、2つの空の文字列を返します。 'x''y' .

最初のレベルで入力名を抽出し、それをすべてのネストされたレベルに転送するのが明白な解決策であることは分かっていますが、それは醜いことです。Matlabで入力名を転送する方法はあるのでしょうか?

どのように解決するのですか?

コメントでDanielが言っているように、別の方法を使うのがベストでしょうが、そうしたい場合は、名前を別の引数で渡す必要があります。

function called_function( varargin )
    argnames = arrayfun(@inputname, 1:nargin, 'uni', 0);
    other_function(varargin, argnames);
end

function other_function( argvals, argnames )
    for i = 1:numel(argnames)
        argnames{i}
    end
end