одномерная интерполяция в режиме nearest, linear или spline
yp = interp1(y, xp) yp = interp1(x, y, xp) yp = interp1(.., xp, method) yp = interp1(.., xp, method, extrapolation)
y является вектором: x=1:length(y).y является матрицей или гиперматрицей:
x=1:size(y,1).x.
y является вектором, то x
и y должны быть одной длины.y является матрицей или гиперматрицей, то мы
должны иметь length(x)==size(y,1). Каждый столбец
y тогда интерполирован в зависимости от тех же
значений оси абсцисс x, для указанного
xp.yp должны быть
вычислены в соответствии с данными узлов интерполяции.
y в указанном xp.
y является вектором:
yp имеет размер xp.
y является матрицей или гиперматрицей:
xp является скаляром или вектором:
size(yp) равен
[length(xp) size(y)(2:$)]xp является матрицей или
гиперматрицей: size(yp) равен
[size(xp) size(y)(2:$)]| "linear": | линейная интерполяция между последовательными узлами, используется по умолчанию. |
| "spline": | интерполяция кубическими сплайнами |
| "nearest": | для каждого значения |
yp(j)
для значений xp(j) за пределами интервала
[x(1)=min(x),x($)=max(x)]. Мы полагаем здесь и далее,
что x и y уже соответственно
отсортированы.
| "extrap": | interp1(x,y,xp, method, "extrap") эквивалентен
interp1(x,y,xp, method, method). |
| "linear": | Может использоваться с методами интерполяции
"spline" (и, очевидно,
"linear"). |
| "periodic": | Этот тип экстраполяции может использоваться с методами
интерполяции "linear" или
"spline". Тогда: если y
является вектором, то требуется, чтобы
y(1)==y($); в противном случае требуется,
чтобы y(1,:)==y($,:). |
| "edgevalue": | Тогда yp(i)=y(1) для каждого
xp(i)<x(1), и
yp(i)=y($) для каждого
xp(i)>x($). |
| padding: | padding является десятичным или
комплексным числом, используемым для установки
yp(i)=padding для каждого
xp(i) ∉ [min(x),max(x)]. Например:
yi=interp1(x,y,xp,method, 0). |
| (none): | По умолчанию экстраполяция выполняется сплайнами, когда
сплайны используются для интерполяции и дополнением
значениями %nan, если интерполяция
линейна или по "ближайшему" узлу. |
Указывая (x,y,xp), данная функция вычисляет элементы
yp, соответствующие xp с помощью интерполяции
между известными данными, указанными в узлах (x,y).
x предварительно отсортирован в порядке возрастания, а значения
y либо по столбцам тогда сортируются соответственно.
Интерполяция комплексных значений:
Если y является комплексным, то его вещественная и мнимая
части интерполируются отдельно, и потом суммируются для формирования
комплексного yp.
interp1(x,y,xp,"nearest"):
Для любого xp в середине интервала
[x(i),x(i+1)] верхняя граница x(i+1)
рассматривается как ближайшее значение x, и присваивается
yp=y(i+1).
linear_interpn(..),
с соответствующей опцией интерполяции "edgevalue"→"C0",
"linear"→"natural", "periodic"→"periodic".interp1(..,xp,"spline") или
interp1(..,xp,"spline","spline") или
interp1(..,xp,"spline","extrap")
используют условия граней не_узел.
Экстраполяция выполняется с помощью обоих сплайновых полиномов,
вычисленных на гранях (x,y).
interp1(..,xp,"spline","edgevalue")
использует условия граней не_узел, а затем вызывает
interp(..,"C0"), чтобы выполнить фактическую
интерполяцию и экстраполяцию.
interp1(..,xp,"spline","periodic")
вызывает оба splin(..), а затем interp(..)
с их опцией "periodic".
interp1(..,xp,"spline","linear")
вызывает splin(..,"natural") для условий линейных граней, а затем
передаётся в interp(..,"linear").
x = linspace(0, 10, 11)'; y = sin(x); xx = linspace(0,10,1000)'; yy2 = interp1(x, y, xx, 'linear'); yy1 = interp1(x, y, xx, 'nearest'); yy3 = interp1(x, y, xx, 'spline'); clf h = plot(xx, [yy1 yy2 yy3], x, y, '.') h(1).mark_size = 8; title "Interpolation of a poorly sampled sin() function" fontsize 3 legend(['nearest','linear','spline','nodes'], "in_lower_left"); | ![]() | ![]() |

| Version | Description |
| 6.1.1 |
|