コード生成における関数ハンドルの制限事項
コード生成用に MATLAB® コードで関数ハンドルを使用する場合は、次の制限事項に従ってください。
場合によっては、同じ境界変数を使用して異なる関数ハンドルを参照すると、コンパイル時のエラーが発生します。たとえば、このコードではコンパイルできません。
function y = foo(p) x = @plus; if p x = @minus; end y = x(1, 2);
coder.ceval
に対して関数ハンドルを受け渡ししない
coder.ceval
に対して、関数ハンドルを入力として渡すことも、出力として受け取ることもできません。たとえば、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 外部関数に対して、関数ハンドルを渡すことも受け取ることもできません。
エントリポイント関数に対して、関数ハンドルを入力として渡すことも、出力として受け取ることもできません。たとえば、以下の関数を考えます。
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'
がクラス名として認識されないことがエラーで示されます。
関連するトピック
MATLAB コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)