exponenta event banner

cscvn

«Естественная» или периодическая интерполяция кубической сплайн

Синтаксис

Описание

пример

curve = cscvn(points) возвращает параметрическую вариационную, или естественную, кубическую сплайн (в ppform), проходящую через заданные точки последовательности (: j), j = 1: end. Значение параметра t (j) для j-й точки следует [1] центростремительной схеме Юджина Ли как накопленный квадратный корень длины хорды:

i<jpoints(:,i+1)точки (:,i)2

Если первая и последняя точки совпадают и других повторяющихся точек нет), то функция создает периодическую кубическую сплайн. Однако двойные точки приводят к поворотам.

Примеры

свернуть все

В этом примере показано, как создать и построить несколько различных интерполяционных кубических сплайн с помощью cscvn функция.

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

points=[0 1 1 0 -1 -1 0 0; 0 0 1 2 1 0 -1 -2]; 
fnplt(cscvn(points)); hold on, 
plot(points(1,:),points(2,:),'o'), hold off

Figure contains an axes. The axes contains 2 objects of type line.

Этот код строит круговую кривую через четыре вершины стандартного алмаза (из-за применяемых периодических граничных условий):

 fnplt(cscvn( [1 0 -1    0 1;0 1 0   -1 0] ))

Figure contains an axes. The axes contains an object of type line.

Этот код показывает угол в двойной точке, а также в конечной точке кривой:

 fnplt(cscvn( [1 0 -1 -1 0 1;0 1 0 0 -1 0] ))

Figure contains an axes. The axes contains an object of type line.

Наконец, этот код генерирует замкнутую кривую с одной двойной точкой, что приводит к повороту. Посвятите это своим любимым таковым.

c=fnplt(cscvn([0 .82 .92 0 0 -.92 -.82 0; .66 .9 0 ...
-.83 -.83 0 .9 .66])); fill(c(1,:),c(2,:),'r'), axis equal

Figure contains an axes. The axes contains an object of type patch.

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

свернуть все

Последовательность точек, в которых параметрический «естественный» кубический сплайн интерполируется, задается как скаляр, вектор или матрица.

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

свернуть все

Сплайн в ppform, возвращается как структура с этими полями.

Форма сплайна, возвращенная как pp. pp указывает, что сплайн задан в кусочный полином форме.

Узловые положения сплайна, возвращенные как вектор или как массив ячеек векторов для многомерных данных. Векторы содержат строго увеличивающиеся элементы, которые представляют начало и конец каждого из интервалов, над которыми заданы полиномиальные части.

Коэффициенты полиномов для каждой части, возвращенные как матрица или как массив для многомерных данных.

Количество полиномиальных частей, описывающих сплайн, возвращаемое в виде скаляра или в виде вектора из числа частей в каждой переменной для многомерных данных.

Порядок полиномиальной функции, описывающей каждую полиномиальную часть сплайна, возвращаемый как скаляр или как вектор, содержащий порядок в каждой переменной для многомерных данных.

Размерность целевой функции, возвращенной как скаляр.

Алгоритмы

Функция определяет последовательность пропусков t как

t = cumsum([0;((diff(points.').^2)*ones(d,1)).^(1/4)]).';

и использует csape (с периодическими или вариационными граничными условиями), чтобы создать сглаженные части между двойными точками (если они имеются).

Ссылки

[1] E. T. Y. Lee. «Выбор узлов в параметрической кривой интерполяции». Computer-Aided Design 21 (1989), 363-370.

Введенный в R2006b