evalSurf

Оцените поверхности усиления в определенных точках проекта

Синтаксис

GV = evalSurf(GS,X)
GV = evalSurf(GS,X1,...,XM)
GV = evalSurf(___,gridflag)

Описание

пример

GV = evalSurf(GS,X) оценивает поверхность усиления в списке точек, заданных в массиве X. Точка является комбинацией значений переменных планирования. Таким образом X является N-by-M массив, где N является числом точек, в котором можно оценить усиление, и M является количеством планирования переменных в GS.

пример

GV = evalSurf(GS,X1,...,XM) оценивает поверхность усиления по прямоугольной сетке, сгенерированной векторами X1,...,XM. Каждый вектор содержит значения для одной переменной планирования GS.

пример

GV = evalSurf(___,gridflag) задает размещение GV.

Примеры

свернуть все

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

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

Создайте скалярное усиление, которое отличается как квадратичная функция одной переменной планирования, t. Предположим, что вы линеаризовали свой объект каждые пять секунд от t = 0 к t = 40.

t = 0:5:40;
domain = struct('t',t);
shapefcn = @(x) [x,x^2];
GS = tunableSurface('GS',1,domain,shapefcn);

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

GS = setData(GS,[12.1,4.2,2]);

Оцените поверхность усиления в различном наборе временных стоимостей.

tvals = [0,4,11,18,25,32,39,42];   % eight values
GV = evalSurf(GS,tvals)
GV = 8×1

    9.9000
   10.0200
   10.6150
   11.7000
   13.2750
   15.3400
   17.8950
   19.1400

GV 8 1 массив. Можно использовать tvals и GV, чтобы реализовать переменное усиление как интерполяционную таблицу.

Оцените поверхность усиления с двумя переменными планирования по сетке значений тех переменных.

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

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

[alpha,V] = ndgrid(0:1.5:15,300:30:600);
domain = struct('alpha',alpha,'V',V);
shapefcn = @(x,y) [x,y,x*y];
GS = tunableSurface('GS',1,domain,shapefcn);

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

GS = setData(GS,[100,28,40,10]);

Оцените усиление в выбранных значениях α и V.

alpha_vec = [7:1:13];  % N1 = 7 points
V_vec = [400:25:625];  % N2 = 10 points
GV = evalSurf(GS,alpha_vec,V_vec);

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

Точки останова также не должны быть расположены с равными интервалами. evalSurf оценивает поверхность усиления по сетке, сформированной ndgrid(alpha_vec,V_vec). Исследуйте размерности полученного массива.

size(GV)
ans = 1×2

     7    10

По умолчанию размерности сетки N1-by-N2 являются первыми в массиве, сопровождаемом размерностями усиления. GS является усилением со скалярным знаком, таким образом, размерности GV [7,10,1,1], или эквивалентно [7,10].

Значение в каждом месте GV является усилением, оцененным в соответствующей паре (alpha_vec,V_vec) в сетке. Например, GV(2,3) является усилением, оцененным в (alpha_vec(2),V_vec(3)) или (8,450).

Оцените поверхность усиления со знаком массива с двумя переменными планирования по сетке значений тех переменных.

Создайте усиление с векторным знаком, которое имеет две переменные планирования.

[alpha,V] = ndgrid(0:1.5:15,300:30:600);
domain = struct('alpha',alpha,'V',V);
shapefcn = @(x,y) [x,y,x*y];
GS = tunableSurface('GS',ones(2,2),domain,shapefcn);

Установка начального постоянного коэффициента к ones(2,2) заставляет tunableSurface генерировать матрицу усиления 2 на 2. Каждая запись в той матрице является независимо настраиваемой поверхностью усиления, которая является билинейной функцией двух переменных планирования. Другими словами, поверхностью усиления дают:

GS=K0+K1α+K2V+K3αV,

где каждый из коэффициентов K0,,K3 самостоятельно матрица 2 на 2.

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

K0 = 10*rand(2);
K1 = 10*rand(2);
K2 = 10*rand(2);
K3 = 10*rand(2);

Коэффициенты объектно-ориентированной памяти tunableSurface со знаком массива путем конкатенации их в 2 8 массив (см. страницу с описанием tunableSurface). Поэтому конкатенируйте эти значения K0,,K3 изменить коэффициенты GS.

GS = setData(GS,[K0 K1 K2 K3]);

Теперь оцените поверхность усиления в выбранных значениях переменных планирования.

alpha_vec = [7:1:13];  % N1 = 7 points
V_vec = [400:25:625];  % N2 = 10 points
GV = evalSurf(GS,alpha_vec,V_vec,'gridlast');

'gridlast' заказывает массиву GV, таким образом, что размерности сетки значений усиления, 7 10, являются последними. Размерности самого массива усиления, 2 на 2, являются первыми.

size(GV)
ans = 1×4

     2     2     7    10

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

свернуть все

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

Точки, в которых можно оценить поверхность усиления, заданную как массив. Точка является комбинацией значений переменных планирования. X имеет размерности N-by-M, где M является количеством планирования переменных в GS, и N является числом точек, в котором можно оценить GS. Таким образом X является списком комбинаций значения переменных планирования, в которых можно оценить усиление. Например, предположите, что GS имеет две переменные планирования, a и b, и вы хотите оценить GS в 10 (a, b) пары. В этом случае X 10 2 массив, который перечисляет (a, b). Точки в X не должны совпадать с точками проекта в GS.SamplingGrid.

Значения переменных планирования, в которых можно оценить поверхность усиления, заданную как массивы M, где M является количеством планирования переменных в GS. Например, если GS имеет две переменные планирования, a и b, то X1 и X2 являются векторами a и значений b, соответственно. Поверхность усиления оценена по сетке ndgrid(X1,X2). Значения в той сетке не должны совпадать с точками проекта в GS.SamplingGrid.

Размещение выходного массива, заданного или как 'gridfirst' или как 'gridlast'.

  • 'gridfirst'GV имеет размер [N1,...,NM,Ny,Nu] с размерностями сетки сначала и размерностями усиления в последний раз. Это размещение является естественным форматом для скалярного усиления, где Ny = Nu = 1.

  • 'gridlast'GV имеет размер [Ny,Nu,N1,...,NM] с размерностями усиления сначала. Этот формат более читаем для усилений с матричным знаком.

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

свернуть все

Получите значения, возвращенные как массив. GV содержит усиление, оцененное в точках (значения переменных планирования), заданные X или X1,...,XM. Размер GV зависит от количества планирования переменных в GS, размерностях ввода-вывода усиления, заданного GS и значением gridflag.

Если вы вычисляете усиление в списке точек N, заданных в массиве X, то размером GV является [N,Ny,Nu]. Здесь, [Ny,Nu] является размерностями ввода-вывода усиления. Например, предположите, что GS является скалярной поверхностью усиления с двумя переменными планирования, a и b, и X 10 2 массив, содержащий 10 пар (a,b). Затем GV является вектор-столбцом десяти значений.

Если вы вычисляете усиление по сетке, заданной векторами X1,...,XM, то размерности GV зависят от значения gridflag.

  • gridflag = 'gridfirst' (значение по умолчанию) — Размером GV является [N1,...,NM,Ny,Nu]. Каждый Ni является длиной Xi, количеством значений i-th планирование переменной. Например, предположите, что GS является скалярной поверхностью усиления с двумя переменными планирования, a и b, и X1 и X2 являются векторами 4 значений a и 5 значений b, соответственно. Затем размер GV [4,5,1,1] или эквивалентно, [4,5]. Или, если GS является с тремя выводами, 2D входом усиление с векторным знаком, то размер GV [4,5,3,2].

  • gridflag = 'gridlast' — Размером GV является [Ny,Nu,N1,...,NM]. Например, предположите, что GS является скалярной поверхностью усиления с двумя переменными планирования, a и b, и X1 и X2 являются векторами 4 значений a и 5 значений b, соответственно. Затем размер GV [1,1,4,5]. Или, если GS является с тремя выводами, 2D входом усиление с векторным знаком, то размер GV [3,2,4,5].

Советы

  • Используйте evalSurf, чтобы превратить настроенные поверхности усиления в интерполяционные таблицы. Установите X1,...,XM на желаемые табличные точки останова и используйте GV в качестве табличных данных. Табличные точки останова не должны совпадать с точками проекта, используемыми для настройки GS.

Смотрите также

| | |

Введенный в R2015b

Для просмотра документации необходимо авторизоваться на сайте