Matlab Simulink without matlab function access
2 views (last 30 days)
Show older comments
I try to alter the properties of a MatlabFunction on Simulink. The recommended commands are below.
open_system('my_model');
S = sfroot
B = S.find('Name','myBlockName','-isa','Stateflow.EMChart');
The 'BlockName' is a MatlabFunction on the model 'my_model'. The content of B is '0×1 empty handle' and S.Name gives 'DefaultBlockDiagram'. It seems it does not recognize the opened model. Could you help me somehow?
Best regards, Bruno Peixoto
0 Comments
Answers (1)
Rajanya
on 30 Jan 2025
I recommend to double check the name of the MATLAB function block before executing the 'find' function using:
blockPath = find_system('my_model')
Sometimes, in versions earlier than R2020a, pressing 'Enter' after typing the name of a block actually adds a newline character to the name of the block, or there might also be spaces after the name for which the 'find' function might fail to find the block.
A safer way to do the same thing would be to use 'get_param' with block handles. For example, consider a demo model 'model2' containing the following:
%blockPath = 4×1 cell array
%{'model2' }
%{'model2/Constant' }
%{'model2/Display' }
%{'model2/myBlockName'}
We can get the handle to the desired block and use 'find', instead of using it on 'sfroot'.
blockHandle = get_param(blockPath{4}, 'Handle'); %get blockPath using find_system
B = find(get_param(blockHandle, 'Object'), '-isa', 'Stateflow.EMChart');
This results in the expected 1x1 'EMChart' object to be stored in B.
Hope this would help. Thanks!
0 Comments
See Also
Categories
Find more on Programmatic Model Editing in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!