одномерная интерполяция в режиме 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 |
|