Вычислите поверхности усиления в определенных проектных точках
Создайте поверхность усиления с одной переменной планирования и вычислите коэффициент усиления в списке значений переменной планирования.
Когда вы создаете поверхность усиления с помощью 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
Задаются проектные точки, в которых настраиваются коэффициенты усиления. Эти точки обычно являются значениями переменных планирования, при которых вы отобрали или линеаризировали объект. Однако можно хотеть реализовать поверхность усиления как интерполяционную таблицу с точками останова, отличающимися от заданных точек проекта. В этом примере вы создаете поверхность усиления с набором проекта точек, а затем вычисляете поверхность с помощью другого набора значений переменных планирования.
Создайте скалярную усилительную поверхность, которая является билинейной функцией двух независимых переменных, и В.
[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]);
Оцените коэффициент усиления при выбранных значениях и В.
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. Каждая запись в этой матрице является независимо настраиваемой поверхностью усиления, которая является билинейной функцией двух переменных планирования. Другими словами, поверхность усиления задается:
где каждый из коэффициентов сам является матрицей 2 на 2.
Обычно вы настраиваете коэффициенты этих поверхностей усиления как часть системы управления. В данном примере вместо настройки вручную установите коэффициенты ненулевые значения.
K0 = 10*rand(2); K1 = 10*rand(2); K2 = 10*rand(2); K3 = 10*rand(2);
The tunableSurface
объект хранит коэффициенты, оцененные в массиве, путем объединения их в массив 2 на 8 (см. tunableSurface
страница с описанием). Поэтому объедините эти значения для изменения коэффициентов 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');
The 'gridlast'
упорядочивает GV массива
таким образом, размерности сетки значений усиления 7 на 10 являются последними. Размерности самого массива усилений 2 на 2 являются первыми.
size(GV)
ans = 1×4
2 2 7 10
GS
- Поверхность усиленияtunableSurface
объектПоверхность усиления для вычисления, заданная как a tunableSurface
объект. GS
может иметь любое количество переменных планирования и может быть скалярным или массивным.
X
- ТочкиТочки, в которых можно вычислить поверхность усиления, заданные как массив. Точка является комбинацией значений переменных планирования. X
имеет размерности N -by - M, где M - количество переменных планирования в GS
и N является числом точек, с которой можно оценить GS
. Таким образом, X
является списком комбинаций «scheduling-variable-value», при которых можно вычислить коэффициент усиления. Например, предположим GS
имеет две переменные планирования, a
и b
и вы хотите оценить GS
в 10 (a
, b
) пары. В этом случае X
массив 10 на 2, в котором перечислен массив (a
, b
). Точки в X
не нужно совпадать с проектом точками в GS.SamplingGrid
.
X1,...,XM
- Значения переменных планированияПеременные планирования, при которых можно вычислить поверхность усиления, заданные как M массивы, где M - количество переменных планирования в GS
. Для примера, если GS
имеет две переменные планирования, a
и b
, затем X1
и X2
являются векторами a
и b
значений, соответственно. Поверхность усиления оценивается по сетке ndgrid(X1,X2)
. Значения в этой сетке не должны совпадать с проектом точками в GS.SamplingGrid
.
gridflag
- Размещение выходного массива'gridfirst'
(по умолчанию) | 'gridlast'
Размещения выхода массива, заданные как 'gridfirst'
или 'gridlast'
.
'gridfirst'
— GV
имеет размер [N1,...,NM,Ny,Nu]
с размерностями сетки и последними размерностями усиления. Это размещение является естественным форматом для скалярного усиления, где Ny = Nu = 1
.
'gridlast'
— GV
имеет размер [Ny,Nu,N1,...,NM]
сначала с размерностями усиления. Этот формат более читаем для матричных коэффициентов усиления.
GV
- Значения усиленияЗначения усиления, возвращенные как массив. 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].
getData
| setData
| tunableSurface
| viewSurf
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.