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. Можно также использовать wcsigmaplot построить этот конверт наряду с выборками системы.

Когда вы используете '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.0746

В качестве альтернативы вместо того, чтобы использовать '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.0897
    CriticalFrequency: 6.0746

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

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

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

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

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

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

load('wcgExampleData.mat')

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

CL = lft(gPlant,Kmu);
[wcg,wcu] = wcgain(CL);
wcg
wcg = struct with fields:
           LowerBound: 10.8742
           UpperBound: 11.2135
    CriticalFrequency: 6.6794

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

opt = wcOptions('MussvOptions','m3');
[wcg,wcu] = wcgain(CL,opt);
wcg
wcg = struct with fields:
           LowerBound: 10.8742
           UpperBound: 11.2135
    CriticalFrequency: 6.6794

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

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

свернуть все

Динамическая система с неопределенностью в виде 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 isnan.

BadUncertainValues

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

ArrayIndex

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

Больше о

свернуть все

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

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

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

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

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

Алгоритмы

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

Для 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