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 = tunableSurface(name,K0init,domain)

Описание

пример

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)

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

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

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

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

Создайте сетку точек проекта, которые линейно расположены с интервалами в и 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, основные функции:

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

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

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

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

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

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

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, который представляет настраиваемые коэффициенты поверхности. Поэтому можно использовать это имя, чтобы относиться к настраиваемым коэффициентам усиления в модели 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 является анонимной функцией (MATLAB) двух переменных. Основные функции описывают параметризованное усиление 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 — Создайте многомерные расширения из более низко-размерных расширений. Эта функция полезна когда это необходимо, чтобы использовать различные основные функции для различных переменных планирования.

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

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

свернуть все

Настраиваемая поверхность усиления, возвращенная как объект 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 устанавливает начальное значение этого свойства.

Советы

  • Чтобы настроить усиление появляются в системе управления, смоделированной в 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, программное обеспечение использует codegen, чтобы сгенерировать код MATLAB для поверхности усиления. Можно использовать codegen сами, чтобы исследовать этот код.

Введенный в R2015b