3

他のワークスペース、特に現在の関数が呼び出されるワークスペースから変数にアクセスする方法を探しています。

私は単純なケースでそれを行う方法を知っています:

% Get a variable called `x` from the base workspace
x = evalin('base', 'x');

ただし、関数がさまざまな関数 (編集できない) によって呼び出される状況を考えてみてください。myFunそして、それぞれに変数があることを知っていますx

xさて、呼び出されたワークスペースから変数を確認するにはどうすればよいでしょうmyFunか?

したがって、私の質問の重要なポイントは次のとおりだと思います。

上記のワークスペースにプログラムで移動するにはどうすればよいですか?


手動で行う方法は次のとおりです。

  1. ブレークポイントを設定する
  2. ブレークポイントに到達したら使用dbup
  3. x を見つけてそれを見てください (またはそれを使って何かを行います (たとえば、evalinまたはsave/を使用して))。load
  4. f5を叩く
4

1 に答える 1

4

どうですか:

x = evalin('caller', 'x')

ただし、Matlab のドキュメントによると、次のような制限があります。

evalin を再帰的に使用して式を評価することはできません。たとえば、evalin('caller','evalin(''caller'', ''x'')') という形式のシーケンスは機能しません。

ただし、evalin優れた機能ではありません。私見では、いかなる使用も避けるべきです。

于 2013-09-12T15:25:39.600 に答える