Hi!

Я работаю над автоматизированными преобразованиями Модели Simulink (создание моделей из Matlab Scipt), и мне нужно:

(a) добавить блок в simulink из скрипта Matlab — СДЕЛАНО,

(b) подключите его к нужному порту — ГОТОВО,

© поставить этот блок рядом с подключенным портом — НУЖНА ПОМОЩЬ.

Я обнаружил, что функция set_param может изменить положение, но мне нужно знать точные координаты:

set_param([‘sampleModel’ ‘/’ ‘От’],’Позиция’,[0 50 0 50])

Мне нужно установить ближайшее возможное расположение блока к подключенному порту. Это что-то вроде:

set_param([‘sampleModel’ ‘/’ ‘От’],’Позиция’,’Ближайший’). В «Позиции» есть какой-то вариант, что не нужно ставить точные координаты, а только «Ближайшие»?

Как я могу этого добиться?

ПРИМЕЧАНИЕ. 

Matlabsolutions.com предоставляет последнюю Помощь по домашним заданиям MatLab, Помощь по заданию MatLab для студентов, инженеров и исследователей в различных отраслях, таких как ECE, EEE, CSE, Mechanical, Civil со 100% выходом. Код Matlab для BE, B.Tech , ME, M.Tech, к.т.н. Ученые со 100% конфиденциальностью гарантированы. Получите проекты MATLAB с исходным кодом для обучения и исследований.

Ответ эксперта

Джон Мичелл ответил. 2021–10–20 09:58:53

Для этого вам необходимо извлечь положение портов (как входящих, так и исходящих) каждой подсистемы.

вы можете сделать, как показано ниже

Modelname = 'dummy';
new_system(Modelname);
open_system(Modelname);
add_block('built-in/Subsystem',[Modelname '/Subsystem'],'Position',[200 200 300 500]);
add_block('simulink/Sinks/Out1',[Modelname '/Subsystem/out1']);
add_block('simulink/Sources/In1',[Modelname '/Subsystem/in1']);
%% from here your point C begins
%get porthandles
PH = get_param([Modelname '/Subsystem'],'PortHandles');
%get position of inport and outport ports of subsystem
ipportpos = get(PH.Inport,'Position');

СМОТРИТЕ ПОЛНЫЙ ОТВЕТ НАЖМИТЕ НА ССЫЛКУ