cscvn

“Естественная” или периодическая интерполирующая кубическая сплайновая кривая

Синтаксис

Описание

пример

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

i<jpoints(:,i+1)'points' (:,i)2

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

Примеры

свернуть все

В этом примере показано, как создать и построить несколько различных интерполяций cublic сплайновые кривые с помощью 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] Э. Т. И. Ли. “Выбирая узлы в интерполяции параметрической кривой”. Автоматизированное проектирование 21 (1989), 363–370.

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

| |

Представленный в R2006b