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)

где D 3s является третьей производной 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')

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

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

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

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')

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

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

за исключением того, что описание сплайна получило этот второй путь, не будет использовать пропуск в x(2) и x(n-1).

Как простой двумерный пример, постройте сплайн bicubic interpolant к мексиканской функции Шляпы:

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])

Поскольку 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}).')

Отметьте использование транспонирования матрицы значений, полученных из 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
Для просмотра документации необходимо авторизоваться на сайте