11

同じファイルの後の部分に実装されているmファイルで関数を使用することは可能ですか?Cなどの他のプログラミング言語と同様のスタイルですか?

4

2 に答える 2

14

もちろん。

このような m ファイルでは、ローカル関数はメイン関数の後に宣言されます。例えば:

function y = main_func(x)
% # This is the main function
y = helper_func1(x) .* helper_func2(x);  % # Just an example

function h1 = helper_func1(x)
% # This is a helper function #1
h1 = x + 2;                              % # Just an example

function h2 = helper_func2(x)
% # This is a helper function #2
h2 = x * 2;                              % # Just an example

この例では、問題なくmain_func呼び出すことができます。テストを実行して、自分の目で確かめてください。helper_func1helper_func2

   >> main_func(8)

   ans =        
       160

前方宣言は必要ありません。

ところで、MATLAB に付属する多くの m-file はこの方法で実装されています。たとえば、corrcoef. でtype corrcoef、それを見ることができます。

注: ローカル関数の定義は、プロンプトまたはスクリプトでは許可されていないため、m ファイルで「メイン」関数を宣言する必要があります。演習として、私の例を新しい m ファイルにコピー アンド ペーストし、main_func(最初の行のみ) の宣言を削除して、何が起こるかを確認します。

于 2012-11-11T13:11:11.620 に答える
0

静的クラスを使用して、多くの関数の実装に同じ m ファイルを使用できます。

MATLAB の 1 つの関数 = 1 つのファイルの元の理由は何だったのですか? なぜ今でもそうなっているのでしょうか?

于 2012-11-12T00:00:36.543 に答える