wcgain

Усиление худшего случая неопределенной системы

Синтаксис

[wcg,wcu] = wcgain(usys)
[wcg,wcu] = wcgain(usys,w)
[wcg,wcu] = wcgain(___,opts)
[wcg,wcu,info] = wcgain(___)

Описание

пример

[wcg,wcu] = wcgain(usys) вычисляет усиление пика худшего случая неопределенной системы usys. Peak gain относится к максимальному усилению по частоте (H норма). Для мультивхода, мультивывод (MIMO) системы, усиление относится к самому большому сингулярному значению матрицы частотной характеристики. (См. sigma для получения дополнительной информации о сингулярных значениях.) Структура wcg содержит верхние и нижние границы на усилении худшего случая и критической частоте, в которой достигает максимума нижняя граница. (См. Усиление Худшего Случая.) Структура wcu содержит значения неопределенных элементов usys, которые вызывают усиление пика худшего случая.

пример

[wcg,wcu] = wcgain(usys,w) ограничивает вычисление худшего случая частотами, заданными w.

  • Если w является массивом ячеек формы {wmin,wmax}, то wcgain возвращает усиление худшего случая в интервале между wmin и wmax.

  • Если w является вектором частот, то wcgain вычисляет усиление худшего случая на заданных частотах только и возвращает худшее из тех усилений.

пример

[wcg,wcu] = wcgain(___,opts) задает дополнительные опции для вычисления. Используйте wcOptions, чтобы создать opts. Можно использовать этот синтаксис с любой из предыдущих комбинаций входных аргументов.

пример

[wcg,wcu,info] = wcgain(___) возвращает структуру с дополнительной информацией об усилениях худшего случая и возмущениях, которые генерируют их. Смотрите info для получения дополнительной информации об этой структуре. Можно использовать этот синтаксис с любой из предыдущих комбинаций входных аргументов.

Примеры

свернуть все

Рассмотрите систему управления, объект которой является номинально интегратором с некоторой аддитивной динамической неуверенностью. Создайте модель объекта.

delta = ultidyn('delta',[1 1],'bound',0.4); 
G = tf(1,[1 0]) + delta;

Создайте контроллер PD для модели. Предположим, что вы хотите исследовать производительность подавления помех худшего случая. Создайте функцию чувствительности с обратной связью, чтобы исследовать усиление худшего случая воздействия во входе объекта.

C = pid(2,0,-0.04,0.02);
S = feedback(1,G*C);

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

bodemag(S)

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

[wcg,wcu] = wcgain(S);
wcg
wcg = struct with fields:
           LowerBound: 5.1036
           UpperBound: 5.1140
    CriticalFrequency: 10.7241

Поля LowerBound и UpperBound wcg показывают, что усиление пика худшего случая - приблизительно 5,1. Это усиление происходит в критической частоте приблизительно 10,6 рад/с.

Вывод wcu является структурой, которая содержит возмущение к delta, который вызывает усиление худшего случая. Подтвердите результат путем замены этим значением в функцию чувствительности.

Swc = usubs(S,wcu);
getPeakGain(Swc)
ans = 5.1037

Поскольку система имеет динамическую неуверенность delta с усилением, не превышающим 0.4, значение худшего случая delta должно быть системой с пиковым усилением 0,4. Подтвердите этот результат.

getPeakGain(wcu.delta)
ans = 0.4000

Рассмотрите модель системы управления, содержащей неопределенные элементы.

k = ureal('k',10,'Percent',40);
delta = ultidyn('delta',[1 1]); 
G = tf(18,[1 1.8 k]) * (1 + 0.5*delta);
C = pid(2.3,3,0.38,0.001);
CL = feedback(G*C,1);

По умолчанию wcgain возвращает только усиление пика худшего случая по всем частотам. Чтобы получить значения усиления худшего случая на нескольких частотах, используйте опцию 'VaryFrequency' wcOptions. Например, вычислите максимально возможное усиление системы в точках частоты между 0,1 и 10 рад/с.

opts = wcOptions('VaryFrequency','on');
[wcg1,wcu1,info1] = wcgain(CL,{0.1,10},opts);
info1
info1 = struct with fields:
                 Model: 1
             Frequency: [19x1 double]
                Bounds: [19x2 double]
     WorstPerturbation: [19x1 struct]
           Sensitivity: [1x1 struct]
    BadUncertainValues: [19x1 struct]
            ArrayIndex: 1

wcgain возвращает вектор частот в info вывод в поле Frequencies. info.Bounds содержит верхние и нижние границы на усилении худшего случая на каждой частоте. Используйте эти значения, чтобы построить зависимость частоты усиления худшего случая.

semilogx(info1.Frequency,info1.Bounds)
title('Worst-Case Gain vs. Frequency')
ylabel('Gain')
xlabel('Frequency')
legend('Lower bound','Upper bound','Location','northwest')

Кривая показывает конверт высокого усиления для всех систем в областях значений неуверенности CL. Можно также использовать wcsigma, чтобы построить этот конверт наряду с выборками системы.

Когда вы используете опцию 'VaryFrequency', wcgain выбирает точки частоты автоматически. Частоты это, выборы, как гарантируют, будут включать частоту, на которой усиление худшего случая является самым высоким (в заданной области значений). Отобразите возвращенные значения частоты, чтобы подтвердить, что они включают критическую частоту.

info1.Frequency
ans = 19×1

    0.1000
    0.1061
    0.1425
    0.1914
    0.2572
    0.3455
    0.4642
    0.6236
    0.8377
    1.1253
      ⋮

wcg1.CriticalFrequency
ans = 6.0753

Также вместо того, чтобы использовать 'VaryFrequency', можно задать особые частоты, на которых можно вычислить усиления худшего случая. info.Bounds содержит усиления худшего случая на всех заданных частотах.

w = logspace(-1,1,24); 
[wcg2,wcu2,info2] = wcgain(CL,w);
semilogx(w,info2.Bounds)
title('Worst-Case Gain vs. Frequency')
ylabel('Gain')
xlabel('Frequency')
legend('Lower bound','Upper bound','Location','northwest')

Когда вы обеспечите сетку частоты таким образом, результаты, как гарантируют, не будут включать полное усиление худшего случая, которое может упасть между заданными точками частоты. Чтобы видеть это, исследуйте wcg1 и wcg2, которые содержат границы для двух подходов.

wcg1
wcg1 = struct with fields:
           LowerBound: 2.0848
           UpperBound: 2.0893
    CriticalFrequency: 6.0753

wcg2
wcg2 = struct with fields:
           LowerBound: 2.0349
           UpperBound: 2.0371
    CriticalFrequency: 6.7002

wcg1, вычисленное использование VaryFrequency, находит более высокое пиковое усиление, чем заданная сетка частоты.

Рассмотрите обратную связь с объектом первого порядка и контроллером PI. Временная константа объекта сомнительна, и счета обратной связи на несмоделированную динамическую неуверенность. Вычислите усиление худшего случая функции чувствительности Si во входных параметрах объекта. Используйте опцию 'Sensitivity' wcOptions, чтобы вычислить, насколько чувствительный это усиление худшего случая к каждому неопределенному элементу.

% Create uncertain system and controller
delta = ultidyn('delta',[1 1]);
tau = ureal('tau',5,'range',[4 6]);
P = tf(1,[tau 1])*(1+0.25*delta);
C = pid(4,4);

opt = wcOptions('Sensitivity','on');
Si = inv(1 + C*P);
[wcg,~,info] = wcgain(Si,opt);

Поле Sensitivity info, структура вывода включает данные, которые отражаются, насколько максимальное усиление входной чувствительности функционирует изменения с каждым неопределенным элементом.

info.Sensitivity
ans = struct with fields:
    delta: 44
      tau: 9

Этот результат говорит вам это, если область значений неуверенности дельты увеличивается на 10%, пиковые входные увеличения чувствительности приблизительно на 4,4%. Точно так же 10%-е увеличение области значений неуверенности tau вызывает приблизительно увеличение на 0,9% пиковой входной чувствительности.

Определение определенных опций для вычисления структурированного сингулярного значения, которое лежит в основе вычисления худшего усиления, может привести к лучшим результатам в некоторых случаях. Например, рассмотрите демонстрационный объект и контроллер.

load(fullfile(matlabroot,'examples','robust','wcgExampleData.mat'))

Эта команда загружает gPlant, объект MIMO с 10 выходными параметрами, 8 входными параметрами и 11 неопределенными элементами. Это также загружает Kmu, модели контроллеров пространства состояний. Сформируйте систему с обратной связью с этими моделями и исследуйте усиление худшего случая.

CL = lft(gPlant,Kmu);
[wcg,wcu] = wcgain(CL);
wcg
wcg = struct with fields:
           LowerBound: 10.7476
           UpperBound: 11.2134
    CriticalFrequency: 6.5645

Существуют значительные различия между нижними и верхними границами на усилении худшего случая. Чтобы получить лучшую оценку фактического усиления худшего случая, увеличьте число перезапусков, которые wcgain использует для вычисления возмущения худшего случая и сопоставленной нижней границы. Выполнение так может привести к более трудной нижней границе. Эта опция не влияет на вычисление верхней границы.

opt = wcOptions('MussvOptions','m3');
[wcg,wcu] = wcgain(CL,opt);
wcg
wcg = struct with fields:
           LowerBound: 10.8170
           UpperBound: 11.2134
    CriticalFrequency: 6.6699

Различие между нижней границей и верхней границей на усилении худшего случая намного меньше. Критическая частота отличается также.

Входные параметры

свернуть все

Динамическая система с неуверенностью, заданной как uss, ufrd, genss или модель genfrd, которая содержит неопределенные элементы. Для моделей genss или genfrd wcgain использует текущее значение любых настраиваемых блоков и сворачивает их в известную (весьма определенную) часть модели.

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

Частоты, на которых можно вычислить усиления худшего случая, заданные как массив ячеек {wmin,wmax} или как вектор значений частоты.

  • Если w является массивом ячеек формы {wmin,wmax}, то функция возвращает усиление худшего случая в интервале между wmin и wmax.

  • Если w является вектором частот, то функция вычисляет усиление худшего случая на каждой заданной частоте.

Задайте частоты в модулях rad/TimeUnit, где TimeUnit является свойством TimeUnit модели.

Опции для вычисления худшего случая, заданного как объект, вы создаете с wcOptions. Доступные параметры включают настройки, которые позволяют вам:

  • Извлеките зависимые частотой усиления худшего случая (см. Усиление Худшего Случая).

  • Исследуйте чувствительность усиления худшего случая к каждому неопределенному элементу.

  • Улучшите результаты вычисления усиления худшего случая путем установки определенных опций для базового вычисления mussv. Для примера смотрите, Улучшают Возмущение Худшего Случая.

Для получения дополнительной информации обо всех доступных параметрах, смотрите wcOptions.

Пример: wcOptions('Sensitivity','on','MussvOptions','m3')

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

свернуть все

Усиление пика худшего случая и критическая частота, возвращенная как структура, содержащая следующие поля:

Поле Описание

LowerBound

Нижняя граница на фактическом усилении пика худшего случая модели, возвращенной как скалярное значение. Это значение является пиковым усилением, соответствующим возмущению худшего случая wcu. Точное усиление пика худшего случая, как гарантируют, будет не меньшим, чем LowerBound.

UpperBound

Верхняя граница на фактическом усилении пика худшего случая модели, возвращенной как скалярное значение. Точное усиление пика худшего случая, как гарантируют, будет не больше, чем UpperBound. Когда вы задаете сетку частоты как векторный w, гарантия только применяется на заданных частотах.

CriticalFrequency

Частота, на которой усиление пика худшего случая происходит в rad/TimeUnit, где TimeUnit является свойством TimeUnit usys.

Худшее возмущение случая неопределенных элементов, возвращенных как структура, поля которой являются именами неопределенных элементов usys. Каждое поле содержит фактическое значение соответствующего неопределенного элемента usys, когда усиление пика худшего случая происходит. Например, если usys включает неопределенный матричный M и неопределенную динамику SISO delta, то wcu.M является числовой матрицей, и wcu.delta является моделью в пространстве состояний SISO.

Используйте usubs(usys,wcu), чтобы заменить этими значениями неопределенные элементы в usys, получить динамическую систему, которая имеет усиление пика худшего случая.

Дополнительная информация о значениях худшего случая, возвращенных как структура со следующими полями:

Поле Описание

Model

Индекс модели, которая имеет самое большое усиление пика худшего случая, когда usys является массивом моделей.

Frequency

Частота указывает, в котором wcgain возвращает усиление худшего случая, возвращенное как вектор.

  • Если опцией 'VaryFrequency' wcOptions является 'off', то info.Frequency является критической частотой, частотой, на которой происходит усиление пика худшего случая. Если самая большая нижняя граница и самая маленькая верхняя граница на усилении худшего случая происходят на различных частотах, то info.Frequency является вектором, содержащим эти две частоты.

  • Если опцией 'VaryFrequency' wcOptions является 'on', то info.Frequency содержит частоты, выбранные wcgain. Эти частоты, как гарантируют, будут включать частоту, на которой происходит усиление пика худшего случая.

  • Если вы задаете вектор частот w, в котором можно вычислить усиления худшего случая, то info.Frequency = w. Когда вы зададите вектор частоты, эти частоты, как гарантируют, не будут включать частоту, на которой происходит усиление пика худшего случая.

Опция 'VaryFrequency' значима только для моделей uss и genss. wcgain игнорирует опцию для моделей ufrd и genfrd.

Bounds

Нижние и верхние границы на фактическом усилении худшего случая модели, возвращенной как массив. info.Bounds(:,1) содержит нижнюю границу на каждой соответствующей частоте в info.Frequency, и info.Bounds(:,2) содержит соответствующие верхние границы.

WorstPerturbation

Возмущения, которые вызывают усиление худшего случая в каждой точке частоты в info.Frequency, возвратились как массив структур. Поля info.WorstPerturbation являются именами неопределенных элементов в usys, и каждое поле содержит значение худшего случая соответствующего элемента на каждой частоте. Например, если usys включает неопределенный параметр p и неопределенную динамику SISO delta, то info.WorstPerturbation.p является набором числовых значений, и info.WorstPerturbation.delta является набором моделей в пространстве состояний SISO.

Sensitivity

Чувствительность худшего случая получает к каждому неопределенному элементу, возвращенному как структура, когда опцией 'Sensitivity' wcOptions является 'on'. Поля info.Sensitivity являются именами неопределенных элементов в usys. Каждое поле содержит процент, который измеряется, насколько неуверенность в соответствующем элементе влияет на усиление худшего случая. Например, если info.Sensitivity.p равняется 50, то данное дробное изменение в области значений неуверенности p вызывает вдвое меньше дробного изменения в усилении худшего случая.

Если опция 'Sensitivity' wcOptions выключена (настройка по умолчанию), то info.Sensitivity является NaN.

BadUncertainValues

То же самое как WorstPerturbation. Включенный для совместимости с R2016a и ранее.

ArrayIndex

То же самое как Model. Включенный для совместимости с R2016a и ранее.

Больше о

свернуть все

Усиление худшего случая

По умолчанию wcgain возвращает пиковое усиление (или пиковое сингулярное значение, для систем MIMO) достижимый в области значений неуверенности, по всем частотам (или частотам, заданным w). Можно получить пиковое усиление как функцию частоты с помощью опции VaryFrequency wcOptions.

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

Темно-синяя кривая является номинальным ответом системы. Голубые кривые показывают различные выбранные ответы системы. wcg вывод wcgain содержит границы на усилении худшего случая по всем частотам, приблизительно 5 дБ на рисунке. Частота, на которой происходит это усиление, является критической частотой, также возвращенной в wcg.

Если вы устанавливаете опцию VaryFrequency wcOptions к 'on', то wcgain также вычисляет максимальное усиление в каждой точке частоты, показанной красной кривой. wcgain возвращает эти значения в info.Bounds. Смотрите Усиление Худшего Случая на Частотах в Области значений для примера. Можно также использовать wcsigma, чтобы визуализировать усиление худшего случая как функцию частоты.

Алгоритмы

Вычисление усиления худшего случая на особой частоте эквивалентно вычислению структурированного сингулярного значения, μ, для некоторой соответствующей блочной структуры (μ - анализ).

Для моделей uss и genss wcgain(usys) и wcgain(usys,{wmin,wmax}) используют алгоритм, который находит усиление худшего случая через частоту. Этот алгоритм не полагается на частоту gridding и не оказан негативное влияние резким peaks структурированного сингулярного значения μ. Смотрите Получение Надежных Оценок Полей Робастности для получения дополнительной информации.

Для моделей ufrd и genfrd wcgain вычисляет μ нижние и верхние границы в каждой точке частоты. Это вычисление не предлагает гарантии между точками частоты и может быть неточным, если неуверенность дает начало резким резонансам. Синтаксис wcgain(uss,w), где w является вектором точек частоты, совпадает с wcgain(ufrd(uss,w)) и также полагается на частоту gridding, чтобы вычислить усиление худшего случая.

В целом алгоритм для моделей в пространстве состояний быстрее и более безопасен, чем подход частоты-gridding. В некоторых случаях, однако, алгоритм пространства состояний требует многих вычислений μ. В тех случаях задавая сетку частоты, когда векторный w может быть быстрее, при условии, что усиление худшего случая отличается гладко с частотой. Такое сглаженное изменение типично для систем с динамической неуверенностью.

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