У меня есть файл .m, в котором я выполняю некоторые действия с моделью Simulink, и я хотел бы проверить, является ли используемая в настоящее время модель всей моделью или подсистемой. Есть ли специальный синтаксис или функция для проверки этого? Мне нужно иметь возможность выполнять действия по-разному в зависимости от системы Simulink.
Текущая модель системы Simulink или подсистема в MATLAB
Ответы (4)
Вы всегда можете использовать bdroot, чтобы получить имя системы верхнего уровня и используйте сравнение строк, чтобы увидеть, есть ли у вас подсистема или нет:
sysname = 'f14/Actuator Model';
istoplevel = strcmp(bdroot(sysname), sysname);
person
Kavka
schedule
13.09.2012
Можете ли вы попробовать это после открытия вашей модели или заменить gcs
именем системы [убедитесь, что загрузили его перед использованием либо с load_system
, либо с open_system
]:
h=find_system(gcs,'FindAll',1,'SearchDepth',1,'BlockType','SubSystem');
if isempty(h)
disp('Has Subsystems');
else
disp('No Subsystems');
end
h=find_system(gcs,'FindAll',1,'SearchDepth',1,'BlockType','ModelReference');
if isempty(h)
disp('Has Models');
else
disp('No Models');
end
person
Community
schedule
16.09.2012
проще было бы, скажем, название вашей модели vdp, тогда:
bdIsLoaded('vdp')
person
Di0
schedule
08.12.2014
person
schedule
где я могу указать название текущей системы, чтобы узнать, является ли она моделью или подсистемой
- person lola; 12.09.2012
Замените вызов функции
gcs
именем вашей системы.
- person Edric; 12.09.2012
simulink
. - person nrz   schedule 12.09.2012