exponenta event banner

evalSurf

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

Описание

пример

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

пример

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

пример

GV = evalSurf(___,gridflag) задает макет GV.

Примеры

свернуть все

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

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

Создайте скалярное усиление, которое изменяется как квадратичная функция одной переменной планирования, т. Предположим, что вы линеаризовали растение каждые пять секунд от 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-за-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-й переменной планирования. Например, предположим GS - скалярная поверхность усиления с двумя переменными планирования, a и b, и X1 и X2 являются векторами 4 a значения и 5 b значения, соответственно. Затем, размер GV представляет собой [4,5,1,1] или эквивалентно, [4,5]. Или, если GS представляет собой коэффициент усиления с тремя выходами и двумя входными векторными значениями, а затем размер 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 представляет собой коэффициент усиления с тремя выходами и двумя входными векторными значениями, а затем размер GV составляет [3,2,4,5].

Совет

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

См. также

| | |

Представлен в R2015b