How to use object instances in embedded matlab function

I have question very similar to the below four year old post.
I have a similar problem. Interpreted matlab function block serves the purpose but it slows down the simulation. I tried using 'coder.extrinsic' in embedded matlab function block but i get list of error in 'make', 'parse' and 'coder'.
Problem Description: I have loaded an object called 'ice' in 'masked workspace'. I want to call 'ice.Tmax(u)' in simulink (where 'u' changes with time). Interpreted matlab function block works fine, but it slows down the simulation. I have many such blocks in my model, so i want to use some other block that is quick.
How do i use embedded matlab function block for this purpose ? I tried assigning the object to base workspace and then use 'coder.extrinsic' but i get error as mentioned above.

4 Comments

I wasn't sure that objects were supported at all; I think there was a time they were not. After some searching I found that they are; see this page for supported features. Unfortunately I cannot look at the specific page for information about code generation for classes as I do not have the proper license to look at it.
I have no knowledge of code generation, but definitely i will read and give it a try. However, my final objective is to make the simulation quick and i am not interested in code generation. May be code generation is required to make the block running.
Perhaps if you build a Level-2 S function; see here
If you find that is not fast enough then you will need to use a MATLAB Function Block, which will go through Code Generation when you Build your model. coder.extrinsic is part of Code Generation. I think MATLAB Function Block was formerly called Embedded MATLAB Function Block but that changed a few years ago.
I didn't have time to try with S-function but for now i have created a workaround and have avoided using embedded Matlab function block (EMFB). But the problem of using object in EMFB still persists.
I also tried making 'ice' global and call global ice in EMFB. But, to call a global variable into EMFB, i need either data store block or simulink.signal object defined. Both doesn't seem to work in my case because i am not able to define a data type.

Sign in to comment.

Answers (1)

Since "ice" is already a variable visible inside that mask, you could create a parameter in the MATLAB Function block, as shown here:
- Sebastian

Categories

Find more on Simulink Coder in Help Center and File Exchange

Asked:

on 11 May 2015

Answered:

on 24 Jun 2015

Community Treasure Hunt

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

Start Hunting!