exponenta event banner

spmak

Объединение сплайна в B-форму

Синтаксис

spmak(knots,coefs)
spmak(knots,coefs,sizec)
spmak
sp = spmak(knots,coeffs)

Описание

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

spmak(knots,coefs) возвращает B-форму сплайна, указанного информацией узла в knots и информацию о коэффициентах в coefs.

Действия, предпринятые spmak зависит от того, является ли функция одномерной или многомерной, как указано knots является последовательностью или массивом ячеек. Для описания позвольте sizec быть size(coefs).

Если knots является последовательностью (требуется, чтобы она не уменьшалась), затем сплайн принимается одномерным, и его порядок k считается length(knots)-sizec(end). Это означает, что каждый столбец coefs(:,j) из coefs принимается как коэффициент B-сплайна сплайна, следовательно, сплайн принимается как sizec(1:end-1)-значение. Основной интервал B-формы составляет [knots(1) .. knots(end)].

Множественность узлов поддерживается ≤ k. Это означает, что коэффициент coefs(:,j) просто игнорируется в случае, если соответствующий B-сплайн имеет только один отдельный узел, т.е. в случае knots(j) равняется knots(j+k).

Если knots - массив ячеек, длиной m, то сплайн принимается как m-вариат, и coefs должен быть (r+m) -мерный массив, - за исключением случая, когда сплайн должен быть скалярным, в этом случае, в отличие от одномерного случая ,coefs разрешено быть m-мерный массив, но sizec сбрасывается

sizec = [1, sizec]; r = 1;

Сплайн: sizec(1:r)-значение. Это означает, что вывод сплайна представляет собой массив с r размеры, например, если sizec(1:2) = [2, 3] затем вывод сплайна является матрицей 2 на 3.

Сплайн: sizec(1:r)- значение, i-й ввод m- вектор k вычисляется как length(knots{i}) - sizec(r+i), i=1:m, и iДля каждой записи массива ячеек базовых интервалов установлено значение [knots{i}(1), knots{i}(end)].

spmak(knots,coefs,sizec) позволяет указать предполагаемый размер массива coefs. Предполагая, что coefs имеет правильный размер, это вызывает обеспокоенность только в том редком случае, когда coefs имеет один или несколько конечных одиночных размеров. Для MATLAB ® подавляет конечные одиночные размеры, следовательно, без этой явной спецификации предполагаемого размера coefs, spmak будет интерпретировать coefs неправильно.

spmak запрашивает knots и coefs.

sp = spmak(knots,coeffs) возвращает сплайн sp.

Примеры

spmak(1:6,0:2) строит сплайновую функцию с базовым интервалом [1 .6], с 6 узлами и коэффициентами 3, отсюда порядка 6 - 3 = 3.

spmak(t,1) обеспечивает B-сплайн B (· | t) в B-форме.

Коэффициенты могут быть d-векторы (например, 2-векторы или 3-векторы), в этом случае результирующим сплайном является кривая или поверхность (в R2 или R3).

Если цель состоит в построении 2-векторного двумерного многочлена на прямоугольнике [-1.. 1] × [0.. 1], линейного в первой переменной и постоянного во второй, скажем

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

затем простой

sp = spmak({[-1 -1 1 1],[0 1]},coefs);

приведет к появлению сообщения об ошибке 'There should be no more knots than coefficients', поскольку конечный одиночный размер coefs не будет восприниматься spmak, при надлежащем использовании этого третьего аргумента, как в

sp = spmak({[-1 -1 1 1],[0 1]},coefs,[2 2 1]);

будет иметь успех. Замена здесь [2 2 1] около size(coefs) не сработает.

Другие примеры см. в примере «Intro to B-form».

Диагностика

Будет возвращена ошибка, если предложенная последовательность узлов не будет повторяться, или если массив коэффициентов пуст, или если узлов не больше, чем коэффициентов. Если сплайн должен быть многомерным, то последняя диагностика может быть связана с задними одномерными размерами в coefs.

См. также