Получите диагностическую информацию для линеаризации блока
Когда вы линеаризуете модель Simulink®, можно создать LinearizationAdvisor объект, который содержит диагностическую информацию об отдельной линеаризации блока. Можно диагностировать результаты линеаризации путем рассмотрения этой диагностической информации. Чтобы получить доступ к диагностической информации, используйте getBlockInfo функция.
Модель Load Simulink.
mdl = 'scdpendulum';
load_system(mdl)Линеаризуйте модель и получите LinearizationAdvisor объект.
io = getlinio(mdl);
opt = linearizeOptions('StoreAdvisor',true);
[linsys,~,info] = linearize(mdl,io,opt);
advisor = info.Advisor;Найдите блоки, которые потенциально проблематичны для линеаризации.
blocks = advise(advisor);
Получите диагностику для этих блоков.
diags = getBlockInfo(blocks)
diags = Linearization Diagnostics for the Blocks: Block Info: ----------- Index BlockPath Is On Path Contributes To Linearization Linearization Method 1. scdpendulum/pendulum/Saturation Yes No Exact 2. scdpendulum/angle_wrap/Trigonometric Function1 Yes No Perturbation 3. scdpendulum/pendulum/Trigonometric Function Yes No Perturbation
Модель Load Simulink.
mdl = 'scdpendulum';
load_system(mdl)Линеаризуйте модель и получите LinearizationAdvisor объект.
io = getlinio(mdl);
opt = linearizeOptions('StoreAdvisor',true);
[linsys,~,info] = linearize(mdl,io,opt);
advisor = info.Advisor;Получите диагностическую информацию для блока насыщения.
satDiag = getBlockInfo(advisor,'scdpendulum/pendulum/Saturation')satDiag =
Linearization Diagnostics for scdpendulum/pendulum/Saturation with properties:
IsOnPath: 'Yes'
ContributesToLinearization: 'No'
LinearizationMethod: 'Exact'
Linearization: [1x1 ss]
OperatingPoint: [1x1 linearize.advisor.BlockOperatingPoint]
Можно также получить диагностическую информацию для нескольких блоков целиком. Получите диагностику для блоков sin в модели.
sinBlocks = {'scdpendulum/pendulum/Trigonometric Function';
'scdpendulum/angle_wrap/Trigonometric Function1'};
sinDiag = getBlockInfo(advisor,sinBlocks)sinDiag = Linearization Diagnostics for the Blocks: Block Info: ----------- Index BlockPath Is On Path Contributes To Linearization Linearization Method 1. scdpendulum/angle_wrap/Trigonometric Function1 Yes No Perturbation 2. scdpendulum/pendulum/Trigonometric Function Yes No Perturbation
Модель Load Simulink.
mdl = 'scdpendulum';
load_system(mdl)Линеаризуйте модель и получите LinearizationAdvisor объект.
io = getlinio(mdl);
opt = linearizeOptions('StoreAdvisor',true);
[linsys,~,info] = linearize(mdl,io,opt);
advisor = info.Advisor;Получите диагностическую информацию для первого элемента advisor.BlockDiagnostics.
diag = getBlockInfo(advisor,1)
diag =
Linearization Diagnostics for scdpendulum/pendulum/Saturation with properties:
IsOnPath: 'Yes'
ContributesToLinearization: 'No'
LinearizationMethod: 'Exact'
Linearization: [1x1 ss]
OperatingPoint: [1x1 linearize.advisor.BlockOperatingPoint]
Можно также получить диагностику для нескольких блоков. Например, получите диагностику для вторых и третьих блоков, перечисленных в advisor.
diags = getBlockInfo(advisor,[2 3])
diags = Linearization Diagnostics for the Blocks: Block Info: ----------- Index BlockPath Is On Path Contributes To Linearization Linearization Method 1. scdpendulum/pendulum/Integrator, Second-Order Yes No Exact 2. scdpendulum/angle_wrap/Trigonometric Function1 Yes No Perturbation
Модель Load Simulink.
mdl = 'scdpendulum';
load_system(mdl)Линеаризуйте модель и получите LinearizationAdvisor объект.
io = getlinio(mdl);
opt = linearizeOptions('StoreAdvisor',true);
[linsys,~,info] = linearize(mdl,io,opt);
advisor = info.Advisor;Получите пути к блоку линеаризовавших блоков.
paths = getBlockPaths(advisor);
Создайте логический массив, указывающий, какие блоки находятся в angle_wrap подсистема.
index = contains(paths,'angle_wrap');Получите диагностическую информацию для этих блоков.
diags = getBlockInfo(advisor,index)
diags = Linearization Diagnostics for the Blocks: Block Info: ----------- Index BlockPath Is On Path Contributes To Linearization Linearization Method 1. scdpendulum/angle_wrap/Trigonometric Function1 Yes No Perturbation 2. scdpendulum/angle_wrap/Trigonometric Function2 Yes No Perturbation 3. scdpendulum/angle_wrap/Trigonometric Function Yes No Perturbation
advisor — Диагностическая информация для линеаризации блокаLinearizationAdvisor возразите | массив LinearizationAdvisor объектыДиагностическая информация для линеаризации блока, заданной как LinearizationAdvisor возразите или массив LinearizationAdvisor объекты.
block — Блокируйте путиБлокируйте пути в модели Simulink, заданной как одно из следующего:
Вектор символов — Получает диагностическую информацию для одного блока.
Массив ячеек из символьных векторов Получите диагностическую информацию для нескольких блоков.
index — Блокируйте индексыБлокируйте индексы, заданные как одно из следующего:
Положительное целое число — Получает диагностическую информацию для указанного элемента Advisor.BlockDiagnostics
Массив положительных целых чисел — Получает диагностическую информацию для нескольких элементов Advisor.BlockDiagnostics.
Булев массив — Для каждого элемента index это - true, возвратите диагностику для соответствующего элемента Advisor.BlockDiagnostics.
blockInfo — Диагностическая информация для линеаризации блокаBlockDiagnostic возразите | вектор BlockDiagnostic объекты | массив ячеекДиагностическая информация для линеаризации блока обозначается index, возвращенный как BlockDiagnostic объект или вектор BlockDiagnostic объекты, если advisor один LinearizationAdvisor объект.
Если advisor массив LinearizationAdvisor объекты, затем blockInfo массив ячеек с теми же размерностями как advisor в котором каждый элемент является вектором BlockDiagnostic объекты.
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.