wcgain

Наихудший коэффициент усиления неопределенной системы

Описание

пример

[wcg,wcu] = wcgain(usys) вычисляет наихудший пиковый коэффициент усиления неопределенной системы usys. Peak gain относится к максимальной частоте усиления (H ∞ norm). Для систем с несколькими входами и мультивыходами (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)

Figure contains an axes. The axes contains 21 objects of type line. This object represents S.

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

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

The 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')

Figure contains an axes. The axes with title Worst-Case Gain vs. Frequency contains 2 objects of type line. These objects represent Lower bound, Upper bound.

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

Кроме того, вместо использования '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')

Figure contains an axes. The axes with title Worst-Case Gain vs. Frequency contains 2 objects of type line. These objects represent Lower bound, Upper bound.

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

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

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);

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

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

Этот результат говорит вам, что, если область значений неопределенности дельты увеличивается на 10%, пиковая входная чувствительность увеличивается примерно на 4,4%. Точно так же увеличение на 10% области значений неопределенности тау вызывает увеличение пиковой входной чувствительности примерно на 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 является вектором частот, тогда функция вычисляет коэффициент усиления в худшем случае на каждой заданной частоте.

Задайте частоты в единицах рада TimeUnit, где TimeUnit является TimeUnit свойство модели.

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

  • Извлечение частотно-зависимых коэффициентов усиления в худшем случае (см. «Усиление в худшем случае»).

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

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

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

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

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

свернуть все

Наихудший пиковый коэффициент усиления и критическая частота, возвращенные как структура, содержащая следующие поля:

ОбластьОписание

LowerBound

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

UpperBound

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

CriticalFrequency

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

The '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.

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

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

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

Алгоритмы

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

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

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

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

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