Loading Structure from base workspace to embedded matlab

3 Ansichten (letzte 30 Tage)
Robbo
Robbo am 3 Aug. 2011
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 !
  2 Kommentare
Kaustubha Govind
Kaustubha Govind am 3 Aug. 2011
Have you tried making it a parameter of the Embedded MATLAB block?
Robbo
Robbo am 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 ?

Melden Sie sich an, um zu kommentieren.

Antworten (2)

Arnaud Miege
Arnaud Miege am 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)
%#codegen
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.
HTH,
Arnaud
  6 Kommentare
Robbo
Robbo am 3 Aug. 2011
I see, as soon as I deleted the arrays in my structures it worked. Thank you
Gilles
Gilles am 5 Mär. 2013
It works like a charm !

Melden Sie sich an, um zu kommentieren.


Fangjun Jiang
Fangjun Jiang am 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 Kommentar
Robbo
Robbo am 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.

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu Simulink Functions finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by