2017-02-01 3 views
1

Я хотел бы знать, как найти все MATLAB function блоков в модели Simulink. В модели, в которой я знаю, что есть много MATLAB function блоков, я попробовал следующую команду:Как найти все функциональные блоки MATLAB в модели Simulink

find_system(myModel,'LookUnderMasks','on','FollowLinks','on','BlockType','MATLAB Function') 

Однако, эта команда возвращает массив пустой ячейки. Если я попробую что-то вроде этого:

find_system(myModel,'LookUnderMasks','on','FollowLinks','on','BlockType','Gain') 

, я получаю много результатов. Является ли функция «MATLAB» фактическим блочным типом или есть другой термин для использования?

ответ

1

Вы можете использовать следующий код, чтобы найти функциональные блоки MATLAB.

S = sfroot(); 

% Get block handles 
B = find(sfroot, '-isa','Stateflow.EMChart'); 

Это будет искать все открытые модели и возвращает список объектов типа Stateflow.EMChart. Вы можете посмотреть свойство Path для этих объектов, чтобы уменьшить список до требуемой модели.

+0

Я пробовал свой код, и я получаю объект Stateflow.EMChart, который равен 80x1. У меня нет Stateflow, и я не уверен, как получить доступ или просмотреть эти 80 элементов. Кроме того, зачем использовать Stateflow для поиска в блочном стиле функции MATLAB? –

+1

Функциональный блок MATLAB является специальным блоком и построен поверх других технологий, поэтому вы видите это. Вы можете индексировать в массив 80x1, как любой массив MATLAB. Попробуйте отобразить B (1), и вы сможете увидеть его свойства. – Navan

1

Вам нужно будет определить глубину поиска используйте ниже:

h=find_system(myModel,'SearchDepth',N, 'regexp', 'on', 'FollowLinks','on','Findall','on','LookUnderMasks','all', 'BlockType','Gain'); 

Укажите N, тем выше N глубже в блоки поиска будет.

Дайте мне знать, если это не поможет.

+0

Функция MATLAB не является допустимым аргументом. – Rami

+0

Итак, что должно быть аргументом для функциональных блоков MATLAB? –

Смежные вопросы