exponenta event banner

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 удовлетворяет граничным условиям не-узла, а именно, jumpx (2) D 3s = 0 = jumpx (заканчиваются 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, чтобы совпасть, а также предпоследнее и последняя полиномиальная часть.

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

| |