MATLAB ヘルプ センター
コード生成用に MATLAB® コードで関数ハンドルを使用する場合は、次の制限事項に従ってください。
同じ変数を使用して異なる関数ハンドルを参照しない
場合によっては、同じ変数を使用して異なる関数ハンドルを参照すると、コンパイル時のエラーが発生します。たとえば、このコードではコンパイルできません。
function y = foo(p) x = @plus; if p x = @minus; end y = x(1, 2);
coder.ceval に対して関数ハンドルを受け渡ししない
coder.ceval
coder.ceval (MATLAB Coder) に対して、関数ハンドルを入力として渡すことも、出力として受け取ることもできません。たとえば、f および str.f が関数ハンドルであるとします。
f
str.f
f = @sin; str.x = pi; str.f = f;
次のステートメントはコンパイル エラーになります。
coder.ceval('foo', @sin); coder.ceval('foo', f); coder.ceval('foo', str);
関数ハンドルを外部関数に関連付けない
外部 MATLAB 関数を参照する関数ハンドルは作成できません。
外部関数に対して関数ハンドルを受け渡ししない
feval やその他の MATLAB 外部関数に対して、関数ハンドルを渡すことも受け取ることもできません。
feval
エントリポイント関数に対して関数ハンドルを受け渡ししない
エントリポイント関数に対して、関数ハンドルを入力として渡すことも、出力として受け取ることもできません。たとえば、以下の関数を考えます。
function x = plotFcn(fhandle, data) assert(isa(fhandle,'function_handle') && isa(data,'double')); plot(data, fhandle(data)); x = fhandle(data);
この例では、関数 plotFcn が関数ハンドルとそのデータを入力として受け取っています。plotFcn は、入力 data を指定して fhandle で参照されている関数を呼び出してから、その結果をプロットしようとしています。しかし、このコードはコンパイル エラーになります。関数 isa を MATLAB 関数内で呼び出して入力のプロパティを指定するときに、'function_handle' がクラス名として認識されないことがエラーで示されます。
plotFcn
data
fhandle
isa
'function_handle'
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Web サイトの選択
Web サイトを選択すると、翻訳されたコンテンツにアクセスし、地域のイベントやサービスを確認できます。現在の位置情報に基づき、次のサイトの選択を推奨します:
また、以下のリストから Web サイトを選択することもできます。
最適なサイトパフォーマンスの取得方法
中国のサイト (中国語または英語) を選択することで、最適なサイトパフォーマンスが得られます。その他の国の MathWorks のサイトは、お客様の地域からのアクセスが最適化されていません。
南北アメリカ
ヨーロッパ
アジア太平洋地域
最寄りの営業オフィスへのお問い合わせ