How to use inside a Simulink file a user-defined class previously written in matlab?

1 Ansicht (letzte 30 Tage)
Dear reader,
I have created a simple class given below:
classdef dummy3
properties
a = 0;
b;
end
methods
%constructor
function obj = dummy3(a,b)
% class constructor
if(nargin > 0)
obj.a = a;
obj.b = b;
end
end
end
methods(Static = true)
function value = roll(numdays)
value = numdays;
end
end
end
and let the object P be defined as:
P = dummy3(1,2)
The question is how can I use the variable P.a and how can I call the method P.roll(rand(1)) inside a Simulink file? For convenience, I'd prefer to use them inside a Matlab function, like this scheme:
where I've tried to place inside the code
y = P.a
which resulted in error "Undefined function or variable 'P'." Furthermore, replacing this line by
y = P.roll(rand(1))
yields the same error. I cannot understand why since I did add into File -> Model Properties -> Callbacks -> InitFcn the line of code
P=dummy3(1,2)
Thank you for your help.

Akzeptierte Antwort

Sebastian Castro
Sebastian Castro am 16 Jun. 2015
I found 2 main issues here:
First, methods of a class must have the object itself as the first argument. So, to correctly use the roll method, you may want to redefine it as:
function value = roll(obj,numdays)
Secondly, you need to create the object P in your MATLAB Function block. In other words, prior to calling P.roll(4), you should say:
P = dummy3(a,b);
val = P.roll(4);
- Sebastian
  3 Kommentare
Sebastian Castro
Sebastian Castro am 16 Jun. 2015
Yes -- sorry, I should have mentioned that. You can make P a persistent variable so it is created only on the first execution of the model.
persistent P;
if isempty(P)
P = dummy3(a,b);
end
- Sebastian
Stefan
Stefan am 17 Jun. 2015
Thank you very much for your time. I confirm this is indeed the functionality that I have been looking for. Additionally I have checked that it can be used for code generation purpose.

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

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

Produkte

Community Treasure Hunt

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

Start Hunting!

Translated by