Problem building C++ code from a neural network Simulink model

Hi, I have used nftool to create and train a neural network. I want to add its functionality in a C++ program so I needed to convert it somehow into C++ code. Nftool has the option of automatically exporting the simulink model of a trained neural network and I did so, in order to covert it to C++ code using Real-Time Workshop. Problem is that when I try to build it, I get the following "Model error":
".../Neural Network/Process Output 1/removeconstantrows_reverse/MATLAB Fcn", block type "MATLABFcn": Not yet supported by Real-Time Workshop"
When I click on the error, I am presented with a block diagram with a "Matlab Function" square highlighted. When I click the square, I see that a "flipud" function is used, which I suspect is the source of the problem.
Is there another way to extract the functionality of a neural network in C++ and if not, what should I do?
Thank you in advance.

 採用された回答

Kaustubha Govind
Kaustubha Govind 2011 年 7 月 8 日

0 投票

You can replace the MATLAB Fcn block with a corresponding Simulink library blocks-based implementation that imitates flipud. If the size of the input is fixed and is a small number, it might be as simple as using a Demux block to separate out the rows and then use a Mux block to concatenate them back in reverse order.
Another easier alternative is to replace the MATLAB Fcn block with an Embedded MATLAB Fcn block, which supports flipud for code-generation. Your Embedded MATLAB Fcn can simply be:
function y = flipud_fcn(u)
%#eml
y = flipud(u);
Essentially, you need to convert the flipud functionality to a form that is supported for code-generation.

1 件のコメント

Constantine
Constantine 2011 年 7 月 8 日
Thank you very much for your prompt answer.
I'm afraid I have no experience with simulink at all in order to manually replace the functionality of the specific function block, I just wanted to use it as a passing stage so as to embed the neural network's functionality in a C++ program.
As I can see, the block that causes the problem is a part of a "removeconstantrows_reverse" block. Are there any references I could study in order to get acquainted with the way I could use an Embedded MATLAB function?

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

その他の回答 (0 件)

カテゴリ

ヘルプ センター および File ExchangeSimulink Coder についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by