Global variable python code simulink

4 ビュー (過去 30 日間)
jose daniel hoyos giraldo
jose daniel hoyos giraldo 2022 年 9 月 3 日
Hello everyone.
I'm trying to run a python code which uses a neural network in sumlink. It works using the "trick" of "coder.extrinsic" to use pyrunfile("testSimulink.py")
The problem is that this code loads a neural network to analyze an input image, so every time the block in simulink is called, it re loads the neural network, which is too slow for real time applications.
Do you think any idea how to keep the neural network loaded as a global variable or background in the python environment?
The extrinsinc function I'm running looks like:
function y = NNextrinsic(colored)
delete('own\*')
imwrite(colored,'own/myGray.png')
pyrunfile("testSimulink.py")
A = imread("test.png");
A = imresize(A, [720,1280]);
y = A;
And the simulink block is a MatlabFunction block which looks like:
function y = ANNDepth(colored)
z=uint8(ones(720,1280,3));
coder.extrinsic('NNextrinsic');
z=NNextrinsic(colored);
y = z;
Thanks!
  4 件のコメント
Lucas García
Lucas García 2022 年 9 月 15 日
編集済み: Lucas García 2022 年 9 月 15 日
Hi Jose Daniel,
Here is something you might be able to try. Inside your MATLAB Function Block, you may use pyrun to load the model but declare the variable as persistent. Something like:
persistent model;
if isempty(model)
model = pyrun(<Python code to load model>, 'model');
end
Then, you may pass the model variable to your Python script in pyrunfile.
Hope this helps.
Lucas
jose daniel hoyos giraldo
jose daniel hoyos giraldo 2022 年 9 月 17 日
That works! ty so much

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

回答 (0 件)

カテゴリ

Help Center および File ExchangeCall Python from MATLAB についてさらに検索

製品


リリース

R2022a

Community Treasure Hunt

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

Start Hunting!

Translated by