9

次のコードがあるとします。

% Cellmode_subfunction_test.m
%% Cell 1
foo(1);

%% Cell 2
foo(2);

%% Definition of the foo subfunction
function foo(num)
disp(['num=' num2str(num)]);

最後にサブ関数が定義されているセル 1 とセル 2 をテストするにはどうすればよいですか?

編集:基本的に、この例の各セルは長い計算を実行するため、個別にテストしてデバッグしたいと思います。サブ関数を使用して一般的な機能を抽象化して再利用していますが、これまでのところ、この機能はこの特定のアプリケーションでのみ使用されているため、foo を別の m ファイルに配置したくありません。

編集(2): 関数 m ファイルではなく、matlab スクリプトでのみ動作するセル モードを漠然と思い出したことと、そのようなスクリプトではサブ関数とネストされた関数が許可されていないことを思い出しました。したがって、私が求めていることはおそらく不可能です。

以下に示す匿名関数のソリューションは、単一の式関数しか許可しないため、おそらく多少制限的ですが、実際には、私がやりたいことには十分だったので、問題の解決策として受け入れました。

4

2 に答える 2

5

修正:

CELLという言葉の使い方を誤解していました。謝罪いたします。.m ファイルに保存せずに、コマンド ラインで関数を定義したいだけのようです。このために、無名関数を使用できます。

foo = @(num) disp(['num=' num2str(num)]);

次に、他の関数と同じように「foo」を使用できます。

于 2009-02-02T16:02:36.283 に答える
0

私が通常それを処理する方法は、メイン関数内のどこかで dbstop を使用することです。次に、メイン関数が通常アクセスできるすべての関数にアクセスできます。ML エディターを使用している場合は、foo の最初の呼び出しでブレークポイントを使用するだけです。

それが役に立てば幸い。

ダン

于 2009-02-03T13:34:29.920 に答える