Получите диагностическую информацию для линеаризации блока
Когда вы линеаризуете модель 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. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.