How to use inside a Simulink file a user-defined class previously written in matlab?
1 Ansicht (letzte 30 Tage)
Ältere Kommentare anzeigen
Stefan
am 16 Jun. 2015
Kommentiert: Stefan
am 17 Jun. 2015
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:
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/151234/image.png)
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.
0 Kommentare
Akzeptierte Antwort
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
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
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Simulink 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!