exponenta event banner

find_system

Поиск систем, блоков, линий, портов и аннотаций

Variants параметр будет удален. Использовать MatchFilter вместо этого. Дополнительные сведения см. в разделе Вопросы совместимости.

Описание

пример

Objects = find_system возвращает загруженные системы и их блоки, включая подсистемы.

пример

Objects = find_system(System) возвращает указанную систему и ее блоки.

пример

Objects = find_system(Name,Value) возвращает загруженные системы и объекты в тех системах, которые удовлетворяют критериям, указанным одним или несколькими Name,Value аргументы пары. Этот синтаксис можно использовать для задания ограничений поиска и поиска определенных значений параметров. Укажите ограничения поиска перед парами параметров и значений.

пример

Objects = find_system(System,Name,Value) возвращает объекты в указанной системе, удовлетворяющие указанным критериям.

Примеры

свернуть все

Возвращает имена всех загруженных систем и их блоков.

load_system('vdp')
find_system
ans = 15x1 cell
    {'vdp'                     }
    {'vdp/Constant'            }
    {'vdp/More Info'           }
    {'vdp/More Info/Model Info'}
    {'vdp/Mu'                  }
    {'vdp/Mux'                 }
    {'vdp/Product'             }
    {'vdp/Scope'               }
    {'vdp/Square'              }
    {'vdp/Sum'                 }
    {'vdp/Sum1'                }
    {'vdp/x1'                  }
    {'vdp/x2'                  }
    {'vdp/Out1'                }
    {'vdp/Out2'                }

Возвращает загруженные системы и библиотеки, в том числе vdp.

Вернуть vdp система и ее блоки.

load_system({'vdp','ex_sldemo_clutch'})
find_system('vdp')
ans = 15x1 cell
    {'vdp'                     }
    {'vdp/Constant'            }
    {'vdp/More Info'           }
    {'vdp/More Info/Model Info'}
    {'vdp/Mu'                  }
    {'vdp/Mux'                 }
    {'vdp/Product'             }
    {'vdp/Scope'               }
    {'vdp/Square'              }
    {'vdp/Sum'                 }
    {'vdp/Sum1'                }
    {'vdp/x1'                  }
    {'vdp/x2'                  }
    {'vdp/Out1'                }
    {'vdp/Out2'                }

Возвращает имена загруженных моделей, подсистем и библиотек. Имя подсистемы возвращается только в том случае, если подсистема может быть загружена независимо.

load_system('vdp');
find_system('type','block_diagram')
ans = 1x1 cell array
    {'vdp'}

Возвращает имена всех блоков Goto, являющихся дочерними элементами подсистемы Unlocked в ex_sldemo_clutch система.

load_system('ex_sldemo_clutch');
find_system('ex_sldemo_clutch/Unlocked','SearchDepth',1,'BlockType','Goto')
ans = 2x1 cell
    {'ex_sldemo_clutch/Unlocked/Goto' }
    {'ex_sldemo_clutch/Unlocked/Goto1'}

Copyright 2020 The MathWorks, Inc.

Поиск в vdp и возвращает имена всех блоков усиления, для которых установлено значение усиления 1.

load_system('vdp');
find_system('vdp','BlockType','Gain','Gain','1')
ans = 1x1 cell array
    {'vdp/Mu'}

Получение дескрипторов всех линий и аннотаций в vdp система. С 'FindAll'функция возвращает дескрипторы независимо от способа указания системы для поиска.

load_system('vdp');
L = find_system('vdp','FindAll','on','type','line')
L = 19×1

   34.0044
   33.0044
   32.0044
   31.0044
   30.0044
   29.0044
   28.0044
   27.0044
   26.0044
   25.0044
      ⋮

A = find_system('vdp','FindAll','on','type','annotation')
A = 2×1

   36.0044
   35.0044

Поиск любых параметров диалогового окна блока со значением 0 в vdp и ex_sldemo_clutch системы.

load_system({'vdp','f14'})
find_system({'vdp','f14'},'BlockDialogParams','0')
ans =

  32×1 cell array

    {'vdp/More Info'                                              }
    {'vdp/More Info/Model Info'                                   }
    {'vdp/Scope'                                                  }
    {'vdp/x2'                                                     }
    {'vdp/Out1'                                                   }
    {'vdp/Out1'                                                   }
    {'vdp/Out2'                                                   }
    {'vdp/Out2'                                                   }
    {'f14/Aircraft↵Dynamics↵Model'                              }
    {'f14/Aircraft↵Dynamics↵Model/Vertical Velocity↵w (ft//sec)'}
    {'f14/Aircraft↵Dynamics↵Model/Vertical Velocity↵w (ft//sec)'}
    {'f14/Aircraft↵Dynamics↵Model/Pitch Rate↵q (rad//sec)'      }
    {'f14/Aircraft↵Dynamics↵Model/Pitch Rate↵q (rad//sec)'      }
				.
				.
				.

Поиск всех блоков на верхнем уровне загруженных систем со значением параметра диалогового окна блоков, начинающегося с 3.

load_system({'ex_sldemo_clutch','vdp'});
find_system('SearchDepth','1','regexp','on','BlockDialogParams','^3')
ans = 4x1 cell
    {'vdp/Scope'         }
    {'vdp/Scope'         }
    {'vdp/Square'        }
    {'ex_sldemo_clutch/w'}

При поиске с помощью регулярных выражений можно указать часть вектора символов, которую требуется сопоставить, чтобы вернуть все объекты, содержащие этот вектор символов. Найдите все блоки ввода и вывода в ex_sldemo_clutch модель.

load_system('ex_sldemo_clutch');
find_system('ex_sldemo_clutch','regexp','on','blocktype','port')
ans = 39x1 cell
    {'ex_sldemo_clutch/Friction...'                               }
    {'ex_sldemo_clutch/Friction...'                               }
    {'ex_sldemo_clutch/Friction...'                               }
    {'ex_sldemo_clutch/Friction Mode Logic/Tin'                   }
    {'ex_sldemo_clutch/Friction Mode Logic/Tfmaxs'                }
    {'ex_sldemo_clutch/Friction Mode Logic/Break Apart...'        }
    {'ex_sldemo_clutch/Friction Mode Logic/Break Apart...'        }
    {'ex_sldemo_clutch/Friction Mode Logic/Break Apart...'        }
    {'ex_sldemo_clutch/Friction Mode Logic/Lockup...'             }
    {'ex_sldemo_clutch/Friction Mode Logic/Lockup...'             }
    {'ex_sldemo_clutch/Friction Mode Logic/Lockup...'             }
    {'ex_sldemo_clutch/Friction Mode Logic/Lockup...'             }
    {'ex_sldemo_clutch/Friction Mode Logic/Lockup...'             }
    {'ex_sldemo_clutch/Friction Mode Logic/Lockup...'             }
    {'ex_sldemo_clutch/Friction Mode Logic/Lockup...'             }
    {'ex_sldemo_clutch/Friction Mode Logic/Lockup...'             }
    {'ex_sldemo_clutch/Friction Mode Logic/Lockup FSM/lock'       }
    {'ex_sldemo_clutch/Friction Mode Logic/Lockup FSM/unlock'     }
    {'ex_sldemo_clutch/Friction Mode Logic/Lockup FSM/locked'     }
    {'ex_sldemo_clutch/Friction Mode Logic/Requisite Friction/Tin'}
    {'ex_sldemo_clutch/Friction Mode Logic/Requisite Friction/Tf' }
    {'ex_sldemo_clutch/Friction Mode Logic/locked'                }
    {'ex_sldemo_clutch/Friction Mode Logic/lock'                  }
    {'ex_sldemo_clutch/Friction Mode Logic/unlock'                }
    {'ex_sldemo_clutch/Friction Mode Logic/Tf'                    }
    {'ex_sldemo_clutch/Locked/Tin'                                }
    {'ex_sldemo_clutch/Locked/w'                                  }
    {'ex_sldemo_clutch/Unlocked/Tfmaxk'                           }
    {'ex_sldemo_clutch/Unlocked/Tin'                              }
    {'ex_sldemo_clutch/Unlocked/we'                               }
      ⋮

В этом примере: myModel содержит одну подсистему, которая является ссылкой на библиотеку. После последнего открытия модели в соответствующую подсистему библиотеки был добавлен блок усиления.

Откройте модель. Использовать find_system с 'FollowLinks' установить в значение 'off'. Команда не следует по библиотечным ссылкам в подсистему и возвращает только подсистему верхнего уровня.

open_system('myModel')
find_system(bdroot,'LookUnderMasks','on','FollowLinks', 'off')
ans = 

    'myModel'
    'myModel/Subsystem'

Использовать find_system с 'FollowLinks' установить в значение 'on'. find_system обновляет связи библиотеки и возвращает блок в подсистеме.

find_system(bdroot,'LookUnderMasks','on','FollowLinks','on')
Updating Link: myModel/Subsystem/Gain
Updating Link: myModel/Subsystem/Gain

ans = 

    'myModel'
    'myModel/Subsystem'
    'myModel/Subsystem/Gain'

Предоставление системы find_system в качестве ручки. Поиск параметров диалогового окна блока со значением 0. При выполнении нескольких вызовов в get_param для того же блока использование дескриптора блока более эффективно, чем указание полного пути блока в качестве символьного вектора.

load_system('vdp');
sys = get_param('vdp','Handle');
find_system(sys,'BlockDialogParams','0')
ans = 8×1

    3.0046
    4.0046
    8.0046
   13.0046
   14.0046
   14.0046
   15.0046
   15.0046

Входные аргументы

свернуть все

Система для поиска, заданная как полное имя системного пути, массив ячеек имен системных путей, дескриптор или вектор дескрипторов.

Пример: 'MyModel/Subsystem1'

Пример: {'vdp','ex_sldemo_clutch'}

Аргументы пары «имя-значение»

Укажите дополнительные пары, разделенные запятыми Name,Value аргументы. Name является именем аргумента и Value - соответствующее значение. Name должен отображаться внутри кавычек. Можно указать несколько аргументов пары имен и значений в любом порядке как Name1,Value1,...,NameN,ValueN.

Пример: 'SearchDepth','0','LookUnderMasks','none','BlockType','Goto' выполняет поиск блоков Goto в загруженных системах, исключая маскированные подсистемы.

При использовании find_system функция, Name,Value аргументы пары могут включать ограничения поиска и пары имен и значений параметров. Ограничения поиска можно задавать в любом порядке, но они должны предшествовать парам имен и значений параметров.

Список параметров блока см. в разделе Параметры блока.

Опция поиска параметров диалогового окна блока для указанного значения, указанного как разделенная запятыми пара, состоящая из 'BlockDialogParams' и вектор символов или строковый скаляр. Эта пара должна следовать другим парам ограничений поиска.

Параметр, учитывающий регистр при совпадении, указанный как разделенная запятыми пара, состоящая из 'CaseSensitive' и 'on' для поиска с учетом регистра или 'off'.

Параметр для включения в поиск линий, портов и аннотаций в системах, указанный как разделенная запятыми пара, состоящая из 'FindAll' и 'on' или 'off'.Если для этой опции установлено значение 'on', find_system возвращает вектор дескрипторов независимо от способа указания System аргумент.

Опция, чтобы вернуть только первый результат, а затем остановить поиск, указанный как пара, разделенная запятыми, состоящая из 'FirstResultOnly' и 'on' или 'off'.

Опция для просмотра подсистемы, на которую имеется ссылка, в модели и списка дочерних блоков, указанных как разделенная запятыми пара, состоящая из 'LookInsideSubsystemReference' и 'on' или 'off'.

Параметр для следования по ссылкам на блоки библиотеки, указанные как разделенная запятыми пара, состоящая из 'FollowLinks' и 'on' или 'off'. Если система для поиска не указана, find_system включает загруженные библиотеки в результаты, независимо от того, 'FollowLinks' кому 'on' или 'off'. Вы можете использовать 'FollowLinks' с 'LookUnderMasks' для обновления ссылок на библиотеки в подсистемах. См. раздел Обновление ссылок на библиотеки в подсистеме.

Параметр для включения в поиск блоков с комментариями, указанных как пара, разделенная запятыми, состоящая из 'IncludeCommented' и 'on' или 'off'.

Опция для загрузки любых частично загруженных моделей, указанных как пара, разделенная запятыми 'LoadFullyIfNeeded' и 'on' для загрузки моделей или 'off' для отключения загрузки. Эта опция используется, например, для предотвращения предупреждений о загрузке.

Параметры поиска в масках, указанные как разделенная запятыми пара, состоящая из 'LookUnderMasks' и один из следующих вариантов:

  • 'graphical' - Поиск включает маскированные подсистемы, не имеющие рабочих областей и диалоговых окон.

  • 'none' - Поиск пропускает маскированные подсистемы.

  • 'functional' - Поиск включает маскированные подсистемы, не имеющие диалоговых окон.

  • 'all' - Поиск включает все маскированные подсистемы.

  • 'on' - Поиск включает все маскированные подсистемы.

  • 'off' - Поиск пропускает маскированную подсистему.

Параметр для обработки выражений поиска как регулярных выражений, указанных как пара, разделенная запятыми, состоящая из 'RegExp' и 'on' для обработки выражений поиска как регулярных выражений или 'off'. Дополнительные сведения о регулярных выражениях MATLAB ® см. в разделе Регулярные выражения.

Параметр, ограничивающий глубину поиска указанным уровнем, указанным как разделенная запятыми пара, состоящая из 'SearchDepth' и вектор положительных целых символов или строковый скаляр. Например, укажите '0' только для поиска загруженных систем, '1' для блоков и подсистем системы верхнего уровня, '2' для системы верхнего уровня и ее дочерних систем и т.д. По умолчанию выполняется поиск на всех уровнях.

Опции для поиска вариантов, указанные как разделенная запятыми пара, состоящая из 'Variants' и один из следующих вариантов:

  • 'ActiveVariants' - Поиск только активного варианта в подсистеме вариантов.

  • 'AllVariants' - поиск всех вариантов в подсистеме вариантов.

  • 'ActivePlusCodeVariants' - поиск всех вариантов в подсистеме вариантов, которые активны в моделировании и являются частью созданного кода.

Примечание

Это ограничение поиска применяется только к блокам Variant Subsystem, для которых установлен режим управления Variant expression или label. Используйте find_system функции с помощью MatchFilter для работы со всеми типами блоков исполнения.

Функциональный дескриптор для сопоставления элементов в поиске, таких как блоки, система, линии, порты и аннотации. Использовать MatchFilter чтобы определить, следует ли включать или пропускать элементы при поиске.

Именованная функция должна быть определена в файле программы MATLAB. Функция принимает за вход ручку элемента и возвращает два выхода.

 function [match, prune] = func(element)
 
  • Вход element является дескриптором обрабатываемого блока.

  • Первый выход, match, является логическим значением. Если false, поиск пропускает элемент.

  • Второй выход, prune, является необязательным логическим значением, которое применяется только тогда, когда element является подсистемой. Значение по умолчанию: false. Если это значение равно true, вся подсистема опущена из поиска.

Пример: Использование MatchFilter для поиска всех блоков, не являющихся блоками ввода и вывода, в модели с помощью собственной определенной функции фильтра, nonInOutBlocks:

function match = nonInOutBlocks(handle)
match = true;
if strcmp(get_param(handle, 'Type'), 'block')
  blockType = get_param(handle, 'BlockType');
  if strcmp(blockType, 'Inport') || ...
        strcmp(blockType,  'Outport')
      match = false;
  end
end
end
load_system('vdp');
blks = find_system('vdp', 'MatchFilter', @nonInOutBlocks)

Варианты: Simulink предоставляет Simulink.match.activeVariants и Simulink.match.codeCompileVariants сопоставить функции фильтра для блоков вариантов, которые можно использовать для поиска активных вариантов или блоков вариантов компиляции кода. Для этого скомпилируйте модель и примените соответствующие MatchFilter опции:

  • Simulink.match.activeVariants - соответствует блокам, активным в моделировании после компиляции модели;

  • Simulink.match.codeCompileVariants - Соответствует блокам, которые являются частью созданного кода после компиляции модели

Пример: Использование Simulink.match.activeVariants для поиска активных вариантов в модели:

addpath(fullfile(matlabroot,'examples','simulink_variants','main'));
model='sldemo_variant_subsystems';
load_system(model);
assignin('base','VSS_MODE',2);
set_param(model, 'SimulationCommand', 'update');
activeBlks = find_system(model, 'MatchFilter', @Simulink.match.activeVariants);

Пример: Использование Simulink.match.codeCompileVariants для поиска вариантов, являющихся частью сгенерированного кода C:

addpath(fullfile(matlabroot,'examples','simulink_variants','main'));
load_system('sldemo_variant_subsystems');
assignin('base','VSS_MODE',2);
sldemo_variant_subsystems([], [], [], 'compileForRTW');
activeBlks= find_system('sldemo_variant_subsystems', 'MatchFilter', @Simulink.match.codeCompileVariants);
sldemo_variant_subsystems([], [], [], 'term');

Выходные аргументы

свернуть все

Найдены соответствующие объекты, возвращенные как:

  • Массив ячеек с именами путей, если указано System как имя пути или массив ячеек имен путей, или если система не указана

  • Вектор маркеров перемещения, если указан System в качестве дескриптора или вектора дескрипторов

Вопросы совместимости

развернуть все

Предупреждает, начиная с R2021a

В R2021a изменилось поведение

Представлен до R2006a