Overloaded feval function with cfit object when using Compiler

I'm attempting to compile an m-file that uses the overloaded feval or predict MATLAB functions.
My code currently evaluates a cfit object loaded from a .mat file the following way:
load some_cfit_object.mat
y = feval(some_cfit_object, x);
This works perfectly fine in MATLAB. However, once compiled, I get the following error when running the dll:
"Function to evaluate must be represented as a string scalar, character vector, or function_handle object".
This happens, because the MCR is using the generic feval function instead of the @cfit/feval function.
What is the best way to solve this issue?

 採用された回答

Benjamin Thompson
Benjamin Thompson 2022 年 2 月 2 日

0 投票

The dependency scanner cannot look into arguments passed to feval very well, per the MATLAB Compiler User Guide. Use the %#function directive in your code to explicitly list dependencies on functions or class types that feval will use.

3 件のコメント

Nicolas Hinze
Nicolas Hinze 2022 年 2 月 2 日
Thank you. I did read through that, but I do not understand the syntax to specfify the feval.m from the CurveFit function. The following has no effect:
%#feval
Benjamin Thompson
Benjamin Thompson 2022 年 2 月 2 日
In your M flie add something like
%#function function_name
%#function class_name
Here, class_name might be the class type of the object from the MAT file that you are passing to feval. It is not clear from your description what that class type is.
Nicolas Hinze
Nicolas Hinze 2022 年 2 月 2 日
The following is needed to use feval with a cfit object:
%#function feval
%#function cfit

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

ヘルプ センター および File ExchangeBig Data Processing についてさらに検索

製品

リリース

R2021b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by