ppmak

Соедините сплайн в ppform

Синтаксис

ppmak(breaks,coefs)
ppmak
ppmak(breaks,coefs,d)
ppmak(breaks,coefs,sizec)

Описание

Команда ppmak(...) соединяет сплайн в ppform от минимальной информации с остальными выведенными из той информации. fnbrk обеспечивает любые из частей завершенного описания. Таким образом фактическая структура данных, используемая для устройства хранения данных ppform, легко изменяется без любого эффекта на различные команды fn..., которые используют это построение. Однако обычный пользователь вряд ли будет использовать ppmak явным образом, полагаясь вместо этого на различные команды конструкции сплайна в тулбоксе, чтобы создать конкретные сплайны.

ppmak(breaks,coefs) возвращает ppform сплайна, заданного информацией о пропуске в breaks и информацией о коэффициенте в coefs. То, как та информация интерпретирована, зависит от того, является ли функция одномерной или многомерной, как обозначено breaks, являющимся последовательностью или массивом ячеек.

Если breaks является последовательностью, он должен не уменьшаться с ее первой записью, отличающейся от ее последнего. Затем функция принята, чтобы быть одномерной, и различные части ее ppform определяются можно следующим образом:

  1. Номер l полиномиальных частей вычисляется как length(breaks)-1 и основной интервал, является, соответственно, интервалом [breaks(1) .. breaks(l+1)].

  2. Размерность d цели функции взята, чтобы быть количеством строк в coefs. Другими словами, каждый столбец coefs взят, чтобы быть одним коэффициентом. Более явным образом coefs(:,i*k+j) принят, чтобы содержать j th коэффициент части полинома (i+1)-Стрит (с первым коэффициентом самое высокое и k th коэффициент самый низкий, или постоянный, коэффициент). Таким образом, с kl количество столбцов coefs, порядок k кусочного полинома вычисляется как fix(kl/l).

После этого записи coefs переупорядочиваются командой

 coefs = reshape(permute(reshape(coefs,[d,k,l]),[1 3 2]),[d*l,k])

в порядке соответствовать внутренней интерпретации массива коэффициентов в ppform для одномерного сплайна. Это только применяется, когда вы используете синтаксис ppmak(breaks,coefs), где breaks является последовательностью (вектор - строка), не, когда это - массив ячеек. Перестановка не сделана, когда вы используете формы с тремя аргументами ppmak. Для форм с тремя аргументами только изменение сделано, не переставление.

Если breaks является массивом ячеек длины m, то функция принята, чтобы быть m - варьируемая величина (продукт тензора), и различные части его ppform определяются от входа можно следующим образом:

  1. m - вектор l имеет length(breaks{i})-1 как its ith запись и, соответственно, m - массив ячеек его основных интервалов имеет интервал [breaks{i}(1) .. breaks{i}(end)] как its ith запись.

  2. Размерность d цели функции и m - векторный k (координатно-мудрый полином) порядки его частей получена непосредственно из размера coefs, можно следующим образом.

    1. Если coefs является m - размерный массив, то функция взята, чтобы быть со скалярным знаком, т.е. d равняется 1 и m - векторный k вычисляется как size(coefs)./l. После этого coefs изменен командой   coefs = reshape(coefs,[1,size(coefs)]).

    2. Если coefs (r+m) - размерный массив, с sizec = size(c) говорят, то d установлен в sizec(1:r), и the vector k вычисляется как sizec(r+(1:m))./l. После этого coefs изменен командой   coefs = reshape(coefs,[prod(d),sizec(r+(1:m))]).

Затем coefs интерпретирован как эквивалентный массив размера [d,l(1),k(1),l(2),k(2),...,l(m),k(m)] с its (:,i(1),r(1),i(2),r(2),...,i(m),r(m))th записью коэффициент

μ=1m(x(μ)пропуски |μ](i(μ)))(k(μ)r(μ))

в локальном полиномиальном представлении функции на (hyper) прямоугольнике со сторонами

[пропуски|μ](i(μ)) .. пропуски|μ](i(μ)+1)],     μ=1:m

Это - на самом деле, внутренняя интерпретация массива коэффициентов в ppform многомерного сплайна.

ppmak подсказки вы для breaks и coefs.

ppmak(breaks,coefs,d) с d положительное целое число, также соединяет ppform сплайна от предоставленной информации, но ожидает, что функция будет одномерной. В этом случае coefs взят, чтобы иметь размер [d*l,k] с l, полученным как length(breaks)-1, и это определяет порядок, k, сплайна. С этим coefs(i*d+j,:) взят, чтобы быть j th компоненты вектора коэффициентов для части полинома (i+1)-Стрит.

ppmak(breaks,coefs,sizec) с sizec вектор - строка из положительных целых чисел, также соединяет ppform сплайна от предоставленной информации, но интерпретирует coefs, чтобы иметь размер sizec (и возвращает ошибку, когда prod(size(coefs)) отличается от prod(sizec)). Эта опция важна только в редком случае, что входной параметр coefs является массивом с одной или несколькими запаздывающими одноэлементными размерностями. For, MATLAB® подавляет запаздывание одноэлементных размерностей, следовательно, без этой явной спецификации намеченного размера coefs, ppmak интерпретировал бы coefs неправильно.

Примеры

Два сплайна

p1 = ppmak([1 3 4],[1 2 5 6;3 4 7 8]);
p2 = ppmak([1 3 4],[1 2;3 4;5 6;7 8],2);

имейте точно ту же ppform (2 оцененные вектора порядка 2). Но вторая команда обеспечивает коэффициенты в расположении, используемом внутренне.

ppmak([0:2],[1:6]) создает функцию кусочного полинома с основным интервалом [0.. 2] и состоящий из двух частей порядка 3, с единственным внутренним пропуском 1. Получившаяся функция является скаляром, т.е. размерностью, d ее цели равняется 1. Функция, оказывается, непрерывна в том пропуске, поскольку первой частью является x | → x 2 + 2x + 3, в то время как второй частью является x | → 4 (x – 1) 2 + 5 (x –1) + 6.

Когда функция является одномерной и размерность, d явным образом не задан, затем это взято, чтобы быть номером строки coefs. Номер столбца должен быть целочисленным кратным номер l частей, заданных breaks. Например, оператор ppmak([0:2],[1:3;4:6]) приводит к ошибке, начиная с последовательности пропуска [0:2] указывает на две полиномиальных части, следовательно четное число столбцов ожидается в матрице коэффициентов. Измененный оператор ppmak([0:1],[1:3;4:6]) задает параболическую кривую x | → (1,4) x 2 + (2,5) x + (3,6). В частности, размерность d ее цели равняется 2. По-другому измененный оператор ppmak([0:2],[1:4;5:8]) также задает плоскую кривую (т.е. d является 2), но этот кусочен линейный; его первой полиномиальной частью является x | → (1,5) x + (2,6).

Явная спецификация размерности d ведет, в одномерном случае, к различной интерпретации записей coefs. Теперь номер столбца указывает на полиномиальный порядок частей, и номер строки должен равняться временам d количество частей. Таким образом оператор ppmak([0:2],[1:4;5:8],2) по ошибке, в то время как оператор ppmak([0:2],[1:4;5:8],1) задает скаляр, кусочный кубический, чьей первой частью является x | → x 3 + 2x2 + 3x + 4.

Если вы хотели составить постоянный полином с основным интервалом [0.. 1] скажите, чье значение является матричным глазом (2), затем необходимо было бы использовать полный дополнительный третий аргумент, т.е. использовать команду

pp = ppmak(0:1,eye(2),[2,2,1,1]);

Наконец, если вы хотите создать оцененный двумерный полином 2 векторов на прямоугольнике [–1.. 1] x [0.. 1], линейный в первом переменном и постоянном во втором, сказать

   coefs = zeros(2,2,1); coefs(:,:,1) = [1 0; 0 1];

затем прямое

   pp = ppmak({[-1 1],[0 1]},coefs);

перестанет работать, производя скалярную функцию порядка 2 в каждой переменной, как будет

   pp = ppmak({[-1 1],[0 1]},coefs,size(coefs));

в то время как следующая команда успешно выполнится:

   pp = ppmak({[-1 1],[0 1]},coefs,[2 2 1]);

Смотрите пример “Введение к ppform” для других примеров.

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

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