csapi

Интерполяция кубическим сплайном

Описание

пример

Примечание

Для более простого, но менее гибкого метода, чтобы интерполировать кубические сплайны, попробуйте приложение Curve Fitting или fit функционируйте и займитесь Сглаживанием Сплайнов.

pp = csapi(x,y) возвращает ppform кубического сплайна s с последовательностью узла x это принимает значения y(:,j) в x(j) для j=1:length(x). Значения y(:,j) могут быть скаляры, векторы, матрицы и массивы ND. Функциональные средние значения точки данных с тем же сайтом данных и затем сортируют их по своим сайтам. С x получившиеся отсортированные сайты данных, сплайн s удовлетворяет граничным условиям и условиям отсутствия узла, такой как

jumpx(2)Ds3=0=jumpx(end1)D3(s)

где D3s является третьей производной s.

Если x массив ячеек последовательностей x1..., xm из длин n1..., nm, затем y массив размера [n1,...,nm] (или размера [d,n1,...,nm] если interpolant является d- оцененный). В этом случае, pp ppform m- кубический сплайн interpolant s к таким данным. В частности,

s(x(i1),,x(im))=y(:,i1,,im)

с i1=1:nl и im=1:nm.

Чтобы выполнить операции на этом интерполирующем кубическом сплайне, такие как оценка, дифференцирование, графический вывод, использует структуру стр. Для получения дополнительной информации смотрите fnval, fnder, fnplt функции.

пример

values = csapi(x,y,xx) возвращает значения сплайна сглаживания, оцененного в точках xx. Этот синтаксис совпадает с fnval(csapi(x,y),xx).

Этой командой является по существу MATLAB® функция spline, который, в свою очередь, является упрощенной версией стандартной программы Фортрана CUBSPL в PGS, за исключением того, что csapi (и теперь также spline) принимает данные с векторным знаком и может обработать данные с координатной сеткой.

Примеры

свернуть все

В этом примере показано, как использовать csapi команда от Curve Fitting Toolbox™, чтобы создать кубический сплайн interpolants.

Interpolant к двум точкам

Команда

values = csapi(x,y,xx)

возвращает значения в xx из кубического сплайна interpolant к определенным данным (x,y), с помощью граничного условия не-узла. Этот interpolant является кусочной кубической функцией с последовательностью пропуска x, чьи кубические части объединяются, чтобы сформировать функцию с двумя непрерывными производными. Граничное условие "не-узла" означает, что в первом и последнем внутреннем пропуске даже третья производная непрерывна (до ошибки округления).

Определение только двух точек данных приводит к прямой линии interpolant.

x = [0 1];
y = [2 0];
xx = linspace(0,6,121);
plot(xx,csapi(x,y,xx),'k-',x,y,'ro')
title('Interpolant to Two Points')

Figure contains an axes object. The axes object with title Interpolant to Two Points contains 2 objects of type line.

Interpolant к трем точкам

Если вы задаете три точки данных, функциональные выходные параметры парабола.

x = [2 3 5];
y = [1 0 4];
plot(xx,csapi(x,y,xx),'k-',x,y,'ro')
title('Interpolant to Three Points')

Figure contains an axes object. The axes object with title Interpolant to Three Points contains 2 objects of type line.

Interpolant к пяти точкам

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

x = [1 1.5 2 4.1 5];
y = [1 -1 1 -1 1];
plot(xx,csapi(x,y,xx),'k-',x,y,'ro')
title('Cubic Spline Interpolant to Five Points')

Figure contains an axes object. The axes object with title Cubic Spline Interpolant to Five Points contains 2 objects of type line.

До погрешностей округления и принятие того x вектор по крайней мере с четырьмя записями, оператором pp = csapi(x,y) помещает тот же сплайн в pp как следующий оператор, за исключением того, что описание сплайна получило этот второй путь, не использует пропуски в x(2) и x(n-1):

pp = fn2fm(spapi(augknt(x([1 3:(end-2) end]),4),x,y),"pp");

Как простой двумерный пример, постройте сплайн bicubic interpolant к вейвлету Ricker.

x =.0001 + (-4:.2:4); 
y = -3:.2:3;
[yy,xx] = meshgrid(y,x);
r = pi*sqrt(xx.^2+yy.^2); 
z = sin(r)./r;
bcs = csapi({x,y},z); 
fnplt(bcs) 
axis([-5 5 -5 5 -.5 1])

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

Поскольку MATLAB® считает запись z(i,j) как значение в (x(j), y(i)), код инвертирует x и y в вызове meshgrid. Curve Fitting Toolbox® вместо этого следует стандарту Теории Приближения тогда как z(i,j) значение в (x(i), y(j)).

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

xf = linspace(x(1),x(end),41); 
yf = linspace(y(1),y(end),41);
mesh(xf,yf,fnval(bcs,{xf,yf}).')

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

Отметьте использование транспонирования матрицы значений, полученных из fnval.

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

свернуть все

Сайты данных значений данных y быть подходящим в виде вектора или как массив ячеек для многомерных данных. Сплайн f создается с узлами на каждом сайте данных x таким образом, что f (x(j)) = y(:,j) для всех значений j.

Для многомерных, данных с координатной сеткой можно задать x как массив ячеек, который задает сайт данных в каждой переменной размерности: f (x1(i),x2(j),...xn(k)) = y(:,i,j,...,k).

Типы данных: single | double

Значения данных, чтобы соответствовать во время создания сплайна в виде вектора, матрицы или массива. Значения данных y(:,j) могут быть скаляры, матрицы или n - размерные массивы. Значения данных, данные на том же сайте данных x усреднены.

Типы данных: single | double

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

Типы данных: single | double

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

свернуть все

Шлицуйте в ppform, возвращенной как структура с этими полями. Для получения дополнительной информации о ppform смотрите ppform.

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

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

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

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

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

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

Оцененный сплайн, возвращенный как вектор или как матрица или массив для многомерных данных. Сплайн оценен в данных точках оценки xx.

Алгоритмы

csapi реализация стандартной программы Фортрана CUBSPL из PGS.

Алгоритм создает и решает соответствующую трехдиагональную линейную систему с помощью возможности разреженной матрицы MATLAB.

Алгоритм также использует граничное условие не-узла, обеспечивая первую и вторую полиномиальную часть interpolant, чтобы совпасть, а также предпоследнее и последняя полиномиальная часть.

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

| |

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