Соедините сплайн в 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
взят к be 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
разрешают быть an m-размерным
массивом, но sizec
сбрасывается
sizec = [1, sizec]; r = 1;
Сплайном является sizec(1:r)
- оцененный. Это означает, что вывод сплайна является массивом с размерностями r
, например, если sizec(1:2) = [2, 3]
затем вывод сплайна 2 3 матрица.
Сплайном является sizec(1:r)
- оцененный, i
th запись the m-векторного
k
вычисляется как length(knots{i})
- sizec(r+i)
, i=1:m
, и i
th запись массива ячеек основных интервалов установлен в [knots{i}(1), knots{i}(end)]
.
spmak(knots,coefs,sizec)
позволяет вам предоставить намеченный размер массива coefs
. Предположение, что coefs
правильно измерен, это вызывает беспокойство только в редком случае, что coefs
имеет одну или несколько запаздывающих одноэлементных размерностей. For, 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)
не работало бы.
Смотрите пример “Введение к B-форме” для других примеров.
Будет ошибка, возвращаются, если предложенной последовательности узла не удается не уменьшиться, или если массив коэффициентов пуст, или если нет большего количества узлов, чем существуют коэффициенты. Если сплайн должен быть многомерным, то эта последняя диагностика может произойти из-за запаздывающих одноэлементных размерностей в coefs
.