Текущая модель системы Simulink или подсистема в MATLAB

У меня есть файл .m, в котором я выполняю некоторые действия с моделью Simulink, и я хотел бы проверить, является ли используемая в настоящее время модель всей моделью или подсистемой. Есть ли специальный синтаксис или функция для проверки этого? Мне нужно иметь возможность выполнять действия по-разному в зависимости от системы Simulink.


person lola    schedule 12.09.2012    source источник
comment
Я отредактировал ваш вопрос, чтобы было понятнее, что он касается модели Simulink, и добавил тег simulink.   -  person nrz    schedule 12.09.2012


Ответы (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
comment
где я могу указать название текущей системы, чтобы узнать, является ли она моделью или подсистемой - person lola; 12.09.2012
comment
Замените вызов функции gcs именем вашей системы. - person Edric; 12.09.2012