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

1 回表示 (過去 30 日間)
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.

採用された回答

Sebastian Castro
Sebastian Castro 2015 年 6 月 16 日
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 件のコメント
Sebastian Castro
Sebastian Castro 2015 年 6 月 16 日
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 2015 年 6 月 17 日
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.

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeEvent Functions についてさらに検索

製品

Community Treasure Hunt

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

Start Hunting!

Translated by