tunableSurface

Создайте настраиваемую поверхность усиления для табличного управления

Описание

tunableSurface позволяет вам параметрировать и настроить gain schedules, которые являются усилениями, которые варьируются в зависимости от одной или нескольких переменных планирования.

Для настройки целей удобно параметрировать переменное усиление как сглаженный gain surface формы:

K(n(σ))=γ[K0+K1F1(n(σ))++KMFM(n(σ))],

где

  • σ является вектором из планирования переменных.

  • n (σ) является функцией нормализации (см. Normalization свойство выходного аргумента K).

  • γ является масштабным коэффициентом (см. Normalization свойство выходного аргумента K).

  • F 1..., FM является выбранными пользователями основными функциями.

  • K 0..., KM является коэффициентами, которые будут настроены

Можно использовать термины в типовом полиномиальном расширении как основные функции. Или, когда ожидаемая форма K (σ) известна, можно использовать более определенные функции. Можно затем использовать systune настроить коэффициенты K 0..., KM согласно вашим конструктивным требованиям, в области значений значений переменных планирования.

пример

K = tunableSurface(name,K0init,domain,shapefcn) создает настраиваемую поверхность усиления:

K(n(σ))=γ[K0+K1F1(n(σ))++KMFM(n(σ))].

Настраиваемый поверхностный K хранит основные функции, заданные shapefcn и дискретный набор значений σ (design points) данный domain. Настраиваемая поверхность усиления имеет настраиваемые коэффициенты K 0..., KM. Значение усиления инициализируется к постоянному усилению K0init. Можно объединить K с другими статическими или динамическими элементами, чтобы создать модель с обратной связью вашей запланированной на усиление системы управления. Или, используйте K параметрировать интерполяционную таблицу в slTuner взаимодействуйте через интерфейс к модели Simulink®. Затем используйте systune настроить K 0..., KM так, чтобы система с обратной связью соответствовала вашим конструктивным требованиям в выбранных точках проекта.

K = tunableSurface(name,K0init,domain) создает плоскую поверхность с постоянным, настраиваемым усилением. Этот синтаксис эквивалентен tunableGain(name,K0init).

Примеры

свернуть все

Создайте скалярное усиление K, который варьируется как квадратичная функция t:

K(t)=K0+K1n(t)+K2(n(t))2.

Эта поверхность усиления может представлять усиление, которое меняется в зависимости от времени. Коэффициенты K0, K1, и K2 настраиваемые параметры этого изменяющегося во времени усиления. В данном примере предположите, что t варьируется от 0 до 40. В этом случае функция нормализации n(t)=(t-20)/20.

Чтобы представлять настраиваемую поверхность усиления K (t) в MATLAB®, сначала выберите вектор из t значений, которые являются точками проекта вашей системы. Например, если ваши точки проекта являются снимками состояния изменяющейся во времени системы каждые 5 секунд со времен t = 0 к t = 40, используйте следующую сетку выборки:

t = 0:5:40;
domain = struct('t',t);

Задайте квадратичную функцию для переменного усиления.

shapefcn = @(x) [x,x^2];

shapefcn указатель на анонимную вектор-функцию. Каждая запись в векторе дает термин в полиномиальном расширении, которое описывает переменное усиление. tunableSurface неявно принимает постоянную функцию f0(t)=1, таким образом, это не должно быть включено в shapefcn.

Создайте настраиваемую поверхность усиления K (t).

K = tunableSurface('K',1,domain,shapefcn)
K = 
  Tunable surface "K" of scalar gains with:
    * Scheduling variables: t
    * Basis functions: t,t^2
    * Design points: 1x9 grid of t values
    * Normalization: default (from design points)

Отображение обобщает характеристики поверхности усиления, включая точки проекта и основные функции. Исследуйте свойства K.

get(K)
    BasisFunctions: @(x)[x,x^2]
      Coefficients: [1x3 realp]
      SamplingGrid: [1x1 struct]
     Normalization: [1x1 struct]
              Name: 'K'

Coefficients свойство настраиваемой поверхности является массивом настраиваемых коэффициентов, [K0,K1,K2], сохраненный как realp со знаком массива блок.

Можно теперь использовать настраиваемую поверхность в модели системы управления. Для настраивания MATLAB соедините K с другими элементами системы управления так же, как вы использовали бы Блок Системы управления, чтобы создать настраиваемую модель системы управления. Для настраивания Simulink® используйте setBlockParam сделать K параметризация настраиваемого блока в slTuner интерфейс. Когда вы настраиваете модель или slTuner интерфейс с помощью systune, получившаяся модель или интерфейс содержат настроенные значения для коэффициентов K0, K1, и K2.

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

Ktuned = setData(K,[12.1,4.2,2]);
viewSurf(Ktuned)

Figure contains an axes. The axes with title Gain K(t) contains an object of type line.

viewSurf отображает усиление в зависимости от переменной планирования, для области значений значений переменных планирования, заданных domain и сохраненный в SamplingGrid свойство поверхности усиления.

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

Предположим, что первая переменная α является углом падения, который лежит в диапазоне от 0 до 15 градусов, и вторая переменная V является скоростью, которая лежит в диапазоне от 300 до 600 м/с. По умолчанию нормированные переменные:

x=α-7.57.5,y=V-450150.

Поверхность усиления моделируется как:

K(α,V)=K0+K1x+K2y+K3xy,

где K0,...,K3 настраиваемые параметры.

Создайте сетку точек проекта, (α, V), которые линейно расположены с интервалами в α и V. Эти точки проекта являются значениями переменных планирования, используемыми для настройки поверхностных усилением коэффициентов. Они должны соответствовать значениям параметров, в которых вы произвели объект.

[alpha,V] = ndgrid(0:3:15,300:50:600);

Эти массивы, alpha и V, представляйте независимое изменение двух переменных планирования, каждого через его полный спектр. Поместите их в структуру, чтобы задать точки проекта для настраиваемой поверхности.

domain = struct('alpha',alpha,'V',V);

Создайте основные функции, которые описывают билинейное расширение.

shapefcn = @(x,y) [x,y,x*y];  % or use polyBasis('canonical',1,2)

В массиве, возвращенном shapefcn, основные функции:

F1(x,y)=xF2(x,y)=yF3(x,y)=xy.

Создайте настраиваемую поверхность усиления.

K = tunableSurface('K',1,domain,shapefcn);

Можно использовать настраиваемую поверхность в качестве параметризации для блока интерполяционной таблицы или блока MATLAB function в модели Simulink. Или, используйте команды соединения моделей, чтобы включить его как настраиваемый элемент в системе управления, смоделированной в MATLAB. После того, как вы настроите коэффициенты, можно исследовать получившуюся поверхность усиления использование viewSurf команда. В данном примере вместо настройки, вручную устанавливает коэффициенты на ненулевые значения и просматривают получившееся усиление.

Ktuned = setData(K,[100,28,40,10]);
viewSurf(Ktuned)

Figure contains an axes. The axes with title Gain K(alpha,V) contains an object of type surface.

viewSurf отображает поверхность усиления в зависимости от переменных планирования, для областей значений значений, заданных domain и сохраненный в SamplingGrid свойство поверхности усиления.

Создайте поверхность усиления, использующую точки проекта, которые не формируют обычную сетку в операционной области. Поверхность усиления варьируется как билинейная функция нормированных переменных планирования αN и βN:

K(αN,βN)=K0+K1αN+K2βN+K3αNβN.

Предположим, что значения интереса переменных планирования следующие (α,β) пары.

(α,β)={(-0.9,0.05)(-1.5,0.6)(-1.5,0.95)(-2.5,0.5)(-3.2,0.7)(-3.9,0.3).

Задайте (α,β) демонстрационные значения как векторы.

alpha = [-0.9;-1.5;-1.5;-2.5;-3.2;-3.9];
beta = [0.05;0.6;0.95;0.5;0.7;0.3];
domain = struct('alpha',alpha,'beta',beta);

Вместо обычной сетки (α,β) значения, здесь система производится в нерегулярно расположенных с интервалами точках на (α,β)- пробел.

plot(alpha,beta,'o')

Figure contains an axes. The axes contains an object of type line.

Задайте основные функции.

shapefcn = @(x,y) [x,y,x*y];

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

K = tunableSurface('K',1,domain,shapefcn)
K = 
  Tunable surface "K" of scalar gains with:
    * Scheduling variables: alpha,beta
    * Basis functions: alpha,beta,alpha*beta
    * Design points: 6x1 grid of (alpha,beta) values
    * Normalization: default (from design points)

Область является списком шесть (α,β) пары. Нормализация, по умолчанию, сдвиги α и β так, чтобы центр области значений каждой переменной был нулем и масштабировал их так, чтобы они лежали в диапазоне от-1 до 1.

K.Normalization
ans = struct with fields:
      InputOffset: [-2.4000 0.5000]
     InputScaling: [1.5000 0.4500]
    OutputScaling: 1

Создайте настраиваемую поверхность усиления, которая берет две переменные планирования и возвращает 3х3 матрицу усиления. Каждая запись в матрице усиления является независимой функцией двух переменных планирования.

Создайте сетку точек проекта (alpha,V).

[alpha,V] = ndgrid(0:3:15,300:50:600);
domain = struct('alpha',alpha,'V',V);

Создайте основную функцию, которая описывает, как поверхность меняется в зависимости от переменных планирования. Используйте базис, который описывает билинейное расширение в alpha и V.

shapefcn = polyBasis('canonical',1,2);

Чтобы создать настраиваемую поверхность, задайте начальное значение поверхности усиления с матричным знаком. Это наборы значений, значение усиления появляется, когда нормированные переменные планирования равны нулю. tunableSurface измеряет поверхность усиления от начального значения, которое вы задаете. Таким образом, чтобы создать 3х3 матрицу усиления, используйте 3х3 начальное значение.

K0init = diag([0.05 0.05 -0.05]);
K0 = tunableSurface('K',K0init,domain,shapefcn)
K0 = 
  Tunable surface "K" of 3x3 gain matrices with:
    * Scheduling variables: alpha,V
    * Basis functions: @(x1,x2)utFcnBasisOuterProduct(FDATA_,x1,x2)
    * Design points: 6x7 grid of (alpha,V) values
    * Normalization: default (from design points)

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

свернуть все

Метка Identifying для настраиваемого усиления появляется в виде вектора символов. tunableSurface использование это имя для realp блокируйтесь, который представляет настраиваемые коэффициенты поверхности. Поэтому можно использовать это имя, чтобы относиться к настраиваемым коэффициентам усиления в a genss модель системы управления или slTuner интерфейс.

Начальное значение постоянного термина в настраиваемом усилении появляется в виде скаляра или массива. Размерности K0init определите размерности ввода-вывода поверхности усиления. Например, если поверхность усиления представляет 2D вход, 2D выходное усиление, можно установить K0init = ones(2). Остающиеся коэффициенты K1,K2,... всегда имейте тот же размер как K0. Настраиваемые коэффициенты автоматически расширяются так, чтобы усиления в каждом канале ввода-вывода были настроены независимо.

Например, для 2D входа, 2D выходной поверхности, существует набор коэффициентов расширения для каждой записи в матрице усиления.

Каждой записью Kij в настраиваемой матрице усиления K (n (σ)) дают:

Kij(n(σ))=Kij0+Kij1F1(n(σ))++KijMFM(n(σ)).

Спроектируйте точки, в которых поверхность усиления настраивается в виде структуры. Структура имеет поля, содержащие значения переменных планирования, в которых вы производите объект для запланированной на усиление настройки. Например, предположите, что вы хотите настроить усиление, которое варьируется в зависимости от двух переменных планирования, α и V. Вы линеаризуете объект в сетке α и значений V с α = [0.5,0.10,0.15] и V = [700,800,900,1000]

. Задайте точки проекта можно следующим образом:

[alpha,V] = ndgrid([0.5,0.10,0.15],[700,800,900,1000]);
domain = struct('alpha',alpha,'V',V);

Точки проекта не должны лежать на прямоугольной или расположенной с равными интервалами сетке (см. Поверхность Усиления По Необычной Сетке). Однако для лучших точек проекта использования результатов, которые покрывают полный спектр условий работы. Начиная с настройки только рассматривает эти вопросы проекта, валидность настроенного расписания усиления сомнительна в условиях работы, далеких от точек проекта.

Основные функции раньше моделировали поверхность усиления в терминах переменных планирования в виде указателя на функцию. Функция, сопоставленная с указателем, принимает нормированные значения переменных планирования как входные параметры и возвращает вектор из значений основной функции. Основные функции всегда работают с нормированной областью значений [–1,1]. tunableSurface неявно нормирует переменные планирования к этому интервалу.

Например, считайте значения переменных планирования α = [0.5,0.10,0.15] и V = [700,800,900,1000]. Следующее выражение создает основные функции для поверхности усиления, которая билинейна в этих переменных:

shapefcn = @(x,y) [x y x*y];

shapefcn анонимная функция двух переменных. Основные функции описывают параметрированное усиление G(α,V)=G0+G1αN+G2VN+G3αNVN где αN и VN являются нормированными переменными планирования (см. Normalization свойство K).

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

  • polyBasis — Расширение степенного ряда и Чебышевское расширение.

  • fourierBasis — Периодическое последовательное расширение Фурье. Основные функции, сгенерированные fourierBasis периодический таким образом, что поверхность усиления K, заданный теми функциями, удовлетворяет K (–1) = K (1). Когда вы создаете использование поверхности усиления tunableSurface, программное обеспечение нормирует переменный диапазон планирования, который вы задаете с domain к интервалу [–1,1]. Поэтому, если вы используете периодические основные функции, затем произведенная область значений соответствующей переменной планирования должна быть точно одним периодом. Это ограничение гарантирует что периодичность соответствий основной функции та из переменной планирования. Например, если периодически переменная планирования варьирования является углом, который лежит в диапазоне от 0 до 2π, затем соответствующие значения в domain должен также лежать в диапазоне от 0 до 2π.

  • ndBasis — Создайте многомерные расширения из более низко-размерных расширений. Эта функция полезна, когда это необходимо, чтобы использовать различные основные функции для различных переменных планирования.

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

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

свернуть все

Настраиваемая поверхность усиления, возвращенная как a tunableSurface объект. Этот объект имеет следующие свойства, которые хранят коэффициенты, основные функции и другую информацию о поверхности усиления:

  • BasisFunctions — Основные функции в виде указателя на функцию. Когда вы создаете поверхность усиления, shapefcn входной параметр устанавливает начальное значение этого свойства.

  • Coefficients — Настраиваемые коэффициенты усиления появляются в виде со знаком массива realp настраиваемый параметр. Размерности K0init и количество основных функций в shapefcn определите размерности K.Coefficients.

    Для скалярных усилений, K.Coefficients имеет размерности [1,M+1], где M количество основных функций. Записи в K.Coefficients соответствуйте настраиваемым коэффициентам K 0..., KM.

    Для усилений со знаком массива каждый коэффициент расширяется до размерности K0init. Эти расширенные коэффициенты конкатенированы горизонтально в K.Coefficients. Поэтому, например, для 2D входа, 2D выход получает поверхность, K.Coefficients имеет размерности [2,2(M+1)].

    Каждой записью Kij в настраиваемой матрице усиления K (n (σ)) дают:

    Kij(n(σ))=Kij0+Kij1F1(n(σ))++KijMFM(n(σ)).

  • SamplingGrid — Сетка проекта указывает в виде структуры данных. Когда вы создаете поверхность усиления, domain входной параметр устанавливает начальное значение этого свойства.

  • Normalization — Смещение нормализации и масштабирующийся в виде структуры с полями:

    • InputOffset — Вектор из смещений для каждой переменной планирования.

    • InputScaling — Вектор из масштабных коэффициентов для каждой переменной планирования.

    • OutputScaling — Масштабный коэффициент для полного усиления.

    В общем случае tunableSurface параметризация принимает форму:

    K(σ)=OutputScaling[K0+K1F1(n(σ))++KmFm(n(σ))],

    где n (σ) является нормированной переменной планирования, данной:

    n(σ)=σInputOffsetInputScaling.

    tunableSurface нормирует переменные планирования, чтобы сжать их числовую область значений и улучшить числовую устойчивость процесса оптимизации. По умолчанию, OutputScaling = 1, и tunableSurface вычисляет значения для InputOffset и InputScaling та карта SamplingGrid область каждой переменной планирования к [–1,1]. Таким образом, n = 0 в центре области значений точки проекта.

    Можно изменить нормализацию по умолчанию путем корректировки значений этих полей. Например:

    • Если у вас есть известное значение усиления для конкретной точки проекта, можно установить Normalization.InputOffset так, чтобы n = 0 в той точке проекта. Можно затем установить K0init к известному значению усиления.

    • Если вы хотите ограничить переменную планирования неотрицательными значениями, установите Normalization.InputOffset к минимальному значению той переменной в вашей сетке проекта. Это ограничение полезно, например, когда ваша основная функция включает σ.

  • Name — Имя усиления появляется в виде вектора символов. Когда вы создаете поверхность усиления, name входной параметр устанавливает начальное значение этого свойства.

Советы

  • Чтобы настроить усиление появляются в системе управления, смоделированной в MATLAB®: Соедините поверхность усиления с массивом моделей объекта управления, соответствующих точкам проекта в domain. Например, предположите G такой массив и K представляет переменное время интегрирования. Следующая команда создает модель с обратной связью, которую можно настроить с systune команда.

    C0 = tf(K,[1 0]);
    T0 = feedback(C0*G,1);
  • Чтобы настроить усиление появляются в системе управления, смоделированной в Simulink: Используйте поверхность усиления, чтобы параметрировать интерполяционную таблицу, матричную интерполяцию или блок MATLAB function в модели Simulink. Например, предположите ST0 slTuner взаимодействуйте через интерфейс к модели Simulink и GainTable имя настроенного блока в интерфейсе. Следующие наборы команд параметризация GainTable на настраиваемую поверхность усиления.

    ST0 = setBlockParam(ST0,'GainTable',K);

    Смотрите Параметрируют Расписания Усиления для получения дополнительной информации.

  • Когда вы используете writeBlockValue (Simulink Control Design), чтобы записать настроенное усиление обратно появляется к модели Simulink, использованию программного обеспечения codegen сгенерировать код MATLAB для поверхности усиления. Можно использовать codegen самостоятельно исследовать этот код.

Введенный в R2015b