Add basic MATLAB<->simulink interaction example
This commit is contained in:
parent
044bb4e6a1
commit
c9da63730b
|
|
@ -0,0 +1,70 @@
|
|||
clear
|
||||
|
||||
% open a simulink system schema1.slx in a new simulink window
|
||||
open_system('schema1');
|
||||
|
||||
% gcs = get current system
|
||||
% gcs returns the currently open system
|
||||
assert(isequal(gcs, 'schema1'));
|
||||
|
||||
% gcb = get current block
|
||||
% if a block is clicked inside the schema, gcb returns its value
|
||||
gcb;
|
||||
|
||||
% close the open simulink window
|
||||
close_system('schema1');
|
||||
|
||||
% load_system loads the simulink system without loading the
|
||||
% interactive simulation interface
|
||||
% this is faster
|
||||
system_name = 'schema1';
|
||||
load_system(system_name);
|
||||
|
||||
% simulation is run using the sim function
|
||||
tic;
|
||||
sim = sim(system_name);
|
||||
elapsed = toc; % elapsed simulation time in seconds
|
||||
|
||||
% bdroot gives the root node of the current system (gcs)
|
||||
assert(isequal(bdroot, 'schema1'));
|
||||
|
||||
% get_param returns the parameter value associated to a block
|
||||
% a block can be identified by using its path in the simulink scheme
|
||||
assert(get_param('schema1/my_gain', 'Gain') == '1'); % <-- the property is a string
|
||||
|
||||
% to obtain all parameters
|
||||
param_struct = get_param('schema1/my_gain', 'ObjectParameters');
|
||||
assert(length(fieldnames(param_struct)) == 150);
|
||||
assert(isequal(param_struct.Name.Type, 'string'));
|
||||
|
||||
% ----
|
||||
system2 = 'schema2';
|
||||
load_system(system2);
|
||||
|
||||
% the description of a schema can be obtained using find_system
|
||||
all_paths = find_system; % returns paths to all open systems
|
||||
|
||||
assert(iscell(all_paths));
|
||||
assert(length(all_paths) == 14);
|
||||
|
||||
sys1_paths = find_system(system_name); % find paths relative to schema1
|
||||
assert(isequal(sys1_paths, ...
|
||||
{'schema1'; 'schema1/Constant'; 'schema1/Display'; 'schema1/my_gain'}));
|
||||
|
||||
% constraint search parameters
|
||||
my_gain = find_system(system_name, 'Name', 'my_gain');
|
||||
assert(isequal(get_param(my_gain{1}, 'Gain'), '1'));
|
||||
|
||||
% find all blocks of a specific type
|
||||
all_constants = find_system({system_name, system2}, 'BlockType', 'Constant');
|
||||
assert(length(all_constants) == 2);
|
||||
|
||||
% set_param sets the value of a block parameter
|
||||
set_param('schema1/my_gain', 'Gain', '10');
|
||||
assert(isequal(get_param('schema1/my_gain', 'Gain'), '10'));
|
||||
|
||||
set_param('schema1/my_gain', 'Gain', '1');
|
||||
|
||||
% save system
|
||||
save_system(system_name);
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Loading…
Reference in New Issue