ndBasis

Базисные функции для настраиваемой поверхности усиления

Описание

Вы используете расширения базисных функций, чтобы параметризовать поверхности усиления для настройки контроллеров, запланированных по усилению, с tunableSurface команда. Сложность таких расширений быстро растет, когда у вас есть несколько переменных планирования. Использовать ndBasis для создания N-мерных расширений из низкомерных расширений. ndBasis аналогично ndgrid таким образом он пространственно повторяет расширения по каждой размерности.

пример

shapefcn = ndBasis(F1,F2) формирует внешний (тензорный) продукт двух расширений базиса функций. Каждое расширение функции базиса является функцией, которая возвращает вектор членов расширения, такой как возвращено polyBasis. Если F1(x1)=[F1,1(x1),F1,2(x1),,F1,i(x1)] и F2(x2)=[F2,1(x2),F2,2(x2),,F2,i(x2)], затем shapefcn - вектор членов вида:

Fij=F1,i(x1)F2,j(x2).

Термины перечислены в столбцовой ориентации, причем i изменяются сначала, затем j.

shapefcn = ndBasis(F1,F2,...,FN) формирует векторное произведение трех или более расширений базиса функций. Условия в векторе, возвращенные shapefcn имеют форму:

Fi1iN=F1,ii(x1)F2,i2(x2)FN,iN(xN).

Эти условия перечислены в порядке сортировки N-мерного массива с i 1, изменяющимися сначала, затем i 2 и так далее. Каждый Fj может сам быть многомерным базисным расширением функции.

Примеры

свернуть все

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

Задайте одномерный набор базисных функций.

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

Эквивалентно, можно использовать polyBasis для создания F.

F = polyBasis('canonical',2);

Сгенерируйте двумерное расширение из F.

F2D = ndBasis(F,F);

F2D является функцией двух переменных. Функция возвращает вектор, содержащий вычисленные базисные функции этих двух переменных:

F2D(x,y)=[x,x2,y,yx,yx2,y2,xy2,x2y2].

Чтобы подтвердить это, оцените F2D для x = 0,2, y = -0,3.

F2D(0.2,-0.3)
ans = 1×8

    0.2000    0.0400   -0.3000   -0.0600   -0.0120    0.0900    0.0180    0.0036

Расширение, которое вы комбинируете с ndBasis не нужно иметь тот же порядок. Например, объедините F с расширением первого порядка в одной переменной.

G = @(y)[y];
F2D2 = ndBasis(F,G);

Массив, возвращенный F2D2 аналогично тому, что возвращается F2D, без членов, которые квадратичны во второй переменной.

F2D2(x,y)=[x,x2,y,yx,yx2].

Оценка F2D2 для x = 0.2, y = -0.3, чтобы подтвердить порядок членов.

F2D2(0.2,-0.3)
ans = 1×5

    0.2000    0.0400   -0.3000   -0.0600   -0.0120

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

Сначала сгенерируйте одномерные расширения. Назовите переменные для улучшения читаемости.

F1 = polyBasis('canonical',2,'x');
F2 = fourierBasis(1,1,'y');

Для простоты в этом примере берётся только первая гармоника периодического изменения. Эти расширения имеют базисные функции, заданные:

F1(x)=[x,x2],F2(y)=[cos(πy),sin(πy)].

Создайте двумерное расширение функции базиса. Обратите внимание, что ndBasis сохраняет имена переменных, назначенных одномерным расширениям.

F = ndBasis(F1,F2)
F = function_handle with value:
    @(x,y)utFcnBasisOuterProduct(FDATA_,x,y)

Массив, возвращенный F включает все мультипликативные комбинации базисных функций:

F(x,y)=[x,x2,cos(πy),cos(πy)x,cos(πy)x2,sin(πy),xsin(πy),x2sin(πy)].

Чтобы подтвердить это, оцените F для x = 0,2, y = -0,3.

F(0.2,-0.3)
ans = 1×8

    0.2000    0.0400    0.5878    0.1176    0.0235   -0.8090   -0.1618   -0.0324

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

свернуть все

Расширение функции базиса, заданное как указатель на функцию. Функция должна вернуть вектор базисных функций одной или нескольких переменных планирования. Можно явно задать эти базисные функции или использовать polyBasis или fourierBasis.

Пример: F = @(x)[x,x^2,x^3]

Пример: F = polyBasis(3,2)

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

свернуть все

Расширение функции базиса, заданное как указатель на функцию. shapefcn принимает за входные параметры общее количество переменных в F1,F2,...,FN. Он возвращает вектор функций этих переменных, заданный на интервале [-1,1] для каждой входной переменной. Когда вы используете shapefcn чтобы создать поверхность усиления, tunableSurface автоматически генерирует настраиваемые коэффициенты для каждого члена в векторе.

Совет

  • The ndBasis операция ассоциативна:

    ndBasis(F1,ndBasis(F2,F3)) = ndBasis(ndBasis(F1,F2),F3) = ndBasis(F1,F2,F3)
Введенный в R2015b