Loading Structure from base workspace to embedded matlab

2 views (last 30 days)
Does anyone know how to load a structure from base workspace to embedded matlab ?
The structure itself is a combination of constants and sub-structures containing more constants and all I really want is all this information to be made available in the embedded matlab function scope.
Cheers !
Robbo on 3 Aug 2011
I have but I get an error message implying that it cannot accept a structure as an input, only constants/bus objects..etc if that makes any sense ?

Sign in to comment.

Answers (2)

Arnaud Miege
Arnaud Miege on 3 Aug 2011
You need to define the scope of the structure as a parameter, not an input (which is the default). Here's a simple example. In the base workspace, I have defined:
s = struct;
s.a = 1;
s.b = 2;
and then I have a MATLAB Function block (previously called Embedded MATLAB Function):
function y = fcn(u,s)
y = s.a * u + s.b;
and s is defined as a parameter in the Model Explorer and it works fine. See Working with Structures and Bus Signals in the documentation.

Sign in to comment.

Fangjun Jiang
Fangjun Jiang on 3 Aug 2011
From the documentation, "The Embedded MATLAB Function block accepts inputs of any type that Simulink supports, including fixed-point and enumerated types. For more information, see Data Types Supported by Simulink in the Simulink documentation."
Looking further, structure data is not supported by Simulink. I guess you have to flatten your structure data then.
  1 Comment
Robbo on 3 Aug 2011
Oh I see, thank you very much. I was thinking of converting my structure into a bus object and tried the busCreate functionality which I assumed would turn a given MATLAB structure into a bus. I could then route this bus into the embedded matlab function as input, however I was unsuccessful again and obtained 2-3 error messages.

Sign in to comment.

Community Treasure Hunt

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

Start Hunting!