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 взят к 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- векторы (e.g., 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.

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