csapi

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

Синтаксис

pp=csapi(x,y)
values = csapi(x,y,xx)

Описание

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

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

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

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

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

Примеры

Смотрите пример “Интерполяция Сплайна” для различных примеров.

До погрешностей округления и принятие, что 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])

Отметьте реверсирование x и y в вызове meshgrid, необходимого, потому что MATLAB нравится думать о записи z(i,j) как значение в (x(j), y(i)), в то время как этот тулбокс следует стандарту Теории Приближения размышления о z(i,j) как значение в (x(i), y(j)). Подобная осторожность должна быть проявлена, когда значения такого двумерного сплайна должны быть построены при помощи функции mesh MATLAB, как показан здесь (отметьте использование транспонирования матрицы значений, полученных из fnval).

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

Алгоритмы

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

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

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

| |

Для просмотра документации необходимо авторизоваться на сайте