0

コード用のmatlabファイルがあります。このファイルに新しい関数を定義したいのですが、このファイルはWebotsのエージェントを制御するコードであり、コントローラーファイルは単一である必要があるため、この関数に新しいファイルを追加したくありません。ファイル。関数は、ファイル内の最初のコードまたは最後のコードを定義する必要がありますか...?

4

3 に答える 3

3

スクリプト内で関数を定義することはできませんが、関数 m ファイル内でローカル関数を定義することはできます...したがって、スクリプトが次のようになっているとします。

blah blah         %// This is your main code

%// Here you want to add another function, for example:
function y = foo(x)
    y = x + 2;

上記を実行しようとすると、次のエラーが発生します。

Function definitions are not permitted at the prompt or in scripts.

ただし、メイン スクリプトを関数に変更するだけで、ローカル関数を定義できるようになります。

function mainfunc %// Main function name to your choosing
blah blah         %// This is your main code

function y = foo(x)
    y = x + 2;

あなたのmainfuncは引数を受け入れたり返したりしないので、通常のスクリプトのように実行できます。また、メイン関数と m ファイルは同じ名前にすることをお勧めします。

EDIT : Shai はコメントで、ここには注意点があると述べています。スクリプトはメイン ワークスペースの変数にアクセスできますが、関数には独自のスコープがあります。心に留めておきます。loadただし、、、、およびコマンドsaveを使用してワークスペース変数を操作することはできます。evalinassignin

于 2013-02-28T14:20:17.437 に答える
2

関数が非常に小さい場合は、無名関数として定義できます

于 2013-02-28T08:38:28.160 に答える