Scilab Home page | Wiki | Bug tracker | Forge | Mailing list archives | ATOMS | File exchange
Please login or create an account
Change language to: English - Français - Português - 日本語 -
Справка Scilab >> Interpolation > interp1

interp1

одномерная интерполяция в режиме nearest, linear или spline

Синтаксис

yp = interp1(y, xp)
yp = interp1(x, y, xp)
yp = interp1(.., xp, method)
yp = interp1(.., xp, method, extrapolation)

Аргументы

x
вектор по меньшей мере из двух вещественных чисел: ось абсцисс известных узлов интерполяции, без повторов. По умолчанию
  • если y является вектором: x=1:length(y).
  • если y является матрицей или гиперматрицей: x=1:size(y,1).

y
вектор, матрица или гиперматрица вещественных или комплексных чисел: значения в узлах интерполяции в соответствующих значениях оси абсцисс x.
  • если y является вектором, то x и y должны быть одной длины.
  • если y является матрицей или гиперматрицей, то мы должны иметь length(x)==size(y,1). Каждый столбец y тогда интерполирован в зависимости от тех же значений оси абсцисс x, для указанного xp.

xp
скаляр, вектор, матрица или гиперматрица десятичных чисел: ось абсцисс точек, чьи значения yp должны быть вычислены в соответствии с данными узлов интерполяции.

yp
вектор, матрица или гиперматрица чисел: интерполированные значения y в указанном xp.
  • если y является вектором: yp имеет размер xp.

  • если y является матрицей или гиперматрицей:
    • если xp является скаляром или вектором: size(yp) равен [length(xp) size(y)(2:$)]
    • если xp является матрицей или гиперматрицей: size(yp) равен [size(xp) size(y)(2:$)]

method
строковое значение, определяющее метод интерполяции. Возможными значениями и обработкой являются:

"linear": линейная интерполяция между последовательными узлами, используется по умолчанию.
"spline": интерполяция кубическими сплайнами
"nearest":

для каждого значения xp(j) yp(j) принимает значение y(i), соответствующее x(i), ближайшего соседа xp(j)

extrapolation
строковое значение или число, определяющее элементы 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");

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

  • interp — cubic spline evaluation function
  • splin — cubic spline interpolation
  • linear_interpn — n dimensional linear interpolation

История

ВерсияОписание
6.1.1
  • Для комплексных значений y, imag(y) более не игнорируется: real(y) и imag(y) части интерполируются раздельно.
  • Экстраполяция "periodic" добавлена для линейной и сплайновой интерполяций.
  • Экстраполяция "edgevalue" добавлена для всех интерполяций ближайшего соседа, линейной и сплайновой.
  • Экстраполяция "linear" добавлена для сплайновой интерполяции.
  • Когда xp является гиперматрицей и size(xp,1)==1, size(yp) теперь всегда [size(xp) size(y)(2,$) вместо [size(xp,2:$), size(y)(2,$).
Scilab Enterprises
Copyright (c) 2011-2017 (Scilab Enterprises)
Copyright (c) 1989-2012 (INRIA)
Copyright (c) 1989-2007 (ENPC)
with contributors
Last updated:
Mon Jan 03 14:39:53 CET 2022