exponenta event banner

interpn

Интерполяция для 1-D, 2-D, 3-D и N-D-сетчатых данных в формате ndgrid

Описание

пример

Vq = interpn(X1,X2,...,Xn,V,Xq1,Xq2,...,Xqn) возвращает интерполированные значения функции n переменных в определенных точках запроса с помощью линейной интерполяции. Результаты всегда проходят через исходную выборку функции. X1,X2,...,Xn содержат координаты точек выборки. V содержит соответствующие значения функций в каждой точке выборки. Xq1,Xq2,...,Xqn содержат координаты точек запроса.

Vq = interpn(V,Xq1,Xq2,...,Xqn) предполагает сетку образцов точек по умолчанию. Сетка по умолчанию состоит из точек, 1,2,3,... ni в каждом измерении. Значение ni - длина i-го размера вV. Используйте этот синтаксис, когда требуется сохранить память и не беспокоитесь об абсолютных расстояниях между точками.

Vq = interpn(V) возвращает интерполированные значения на уточненной сетке, образованной делением интервала между значениями выборки один раз в каждом измерении.

пример

Vq = interpn(V,k) возвращает интерполированные значения на уточненной сетке, образованной многократным уменьшением интервалов вдвое k раз в каждом измерении. Это приводит к 2^k-1 интерполированные точки между значениями выборки.

пример

Vq = interpn(___,method) задает альтернативный метод интерполяции: 'linear', 'nearest', 'pchip','cubic', 'makima', или 'spline'. Метод по умолчанию: 'linear'.

пример

Vq = interpn(___,method,extrapval) также указывает extrapvalскалярное значение, назначаемое всем запросам, находящимся вне области точек выборки.

Если опустить extrapval аргумент для запросов за пределами области выборочных точек, затем на основе method аргумент interpn возвращает одно из следующих значений:

  • Экстраполированные значения для 'spline' и 'makima' методы

  • NaN значения для других методов интерполяции

Примеры

свернуть все

Определите точки и значения образца.

x = [1 2 3 4 5];
v = [12 16 31 10 6];

Определите точки запроса, xqи интерполировать.

xq = (1:0.1:5);
vq = interpn(x,v,xq,'cubic');

Постройте график результата.

figure
plot(x,v,'o',xq,vq,'-');
legend('Samples','Cubic Interpolation');

Figure contains an axes. The axes contains 2 objects of type line. These objects represent Samples, Cubic Interpolation.

Создайте набор точек сетки и соответствующих значений образцов.

[X1,X2] = ndgrid((-5:1:5));
R = sqrt(X1.^2 + X2.^2)+ eps;
V = sin(R)./(R);

Интерполяция по более тонкой сетке с помощью ntimes=1.

Vq = interpn(V,'cubic');
mesh(Vq);

Figure contains an axes. The axes contains an object of type surface.

Создайте векторы сетки, x1, x2, и x3. Эти векторы определяют точки, связанные со значениями в V.

x1 = 1:100;
x2 = (1:50)';
x3 = 1:30;

Определите значения выборки в виде массива случайных чисел «100 на 50 на 30», V. Используйте gallery для создания массива.

rng('default')
V = rand(100,50,30);

Оценить V в трех точках за пределами области x1, x2, и x3. Определить extrapval = -1.

xq1 = [0 0 0];
xq2 = [0 0 51];
xq3 = [0 101 102];
vq = interpn(x1,x2,x3,V,xq1,xq2,xq3,'linear',-1)
vq = 1×3

    -1    -1    -1

Все три точки оцениваются как -1 потому что они находятся вне области x1, x2, и x3.

Определите анонимную функцию, представляющую.$f = te^{-x^{2}-y^{2}-z^{2}}$

f = @(x,y,z,t) t.*exp(-x.^2 - y.^2 - z.^2);

Создайте сетку точек в. $R^4$Затем передайте точки через функцию, чтобы создать значения выборки, V.

[x,y,z,t] = ndgrid(-1:0.2:1,-1:0.2:1,-1:0.2:1,0:2:10);
V = f(x,y,z,t);

Теперь создайте сетку запросов.

[xq,yq,zq,tq] = ...
ndgrid(-1:0.05:1,-1:0.08:1,-1:0.05:1,0:0.5:10);

Интерполировать V в точках запроса.

Vq = interpn(x,y,z,t,V,xq,yq,zq,tq);

Создание фильма для отображения результатов.

figure('renderer','zbuffer');
nframes = size(tq, 4);
for j = 1:nframes
   slice(yq(:,:,:,j),xq(:,:,:,j),zq(:,:,:,j),...
         Vq(:,:,:,j),0,0,0);
   caxis([0 10]);
   M(j) = getframe;
end
movie(M);

Входные аргументы

свернуть все

Выборочные точки сетки, указанные как вещественные массивы или векторы. Выборочные точки сетки должны быть уникальными.

  • Если X1,X2,...,Xn являются массивами, то они содержат координаты полной сетки (в формате ndgrid). Используйте ndgrid для создания X1,X2,...,Xn массивы вместе. Эти массивы должны иметь одинаковый размер.

  • Если X1,X2,...,Xn являются векторами, затем они рассматриваются как векторы сетки. Значения в этих векторах должны быть строго монотонными, либо увеличивающимися, либо уменьшающимися.

Пример: [X1,X2,X3,X4] = ndgrid(1:30,-10:10,1:5,10:13)

Типы данных: single | double

Образцы значений, заданные как вещественный или комплексный массив. Требования к размеру для V зависит от размера X1,X2,...,Xn:

  • Если X1,X2,...,Xn представляют собой массивы, представляющие полную сетку (в ndgrid формат), то размер V соответствует размеру любого массива, X1,X2,...,Xn.

  • Если X1,X2,...,Xn являются векторами сетки, то V является массивом, iРазмер th имеет ту же длину, что и вектор сетки Xi, где i= 1,2,...n.

Если V содержит комплексные числа, затем interpn интерполирует действительную и мнимую части по отдельности.

Пример: rand(10,5,3,2)

Типы данных: single | double
Поддержка комплексного номера: Да

Точки запроса, заданные как вещественные скаляры, векторы или массивы.

  • Если Xq1,Xq2,...,Xqn являются скалярами, то они являются координатами одной точки запроса в Rn.

  • Если Xq1,Xq2,...,Xqn являются векторами различной ориентации, то Xq1,Xq2,...,Xqn обрабатываются как векторы сетки в Rn.

  • Если Xq1,Xq2,...,Xqn являются векторами одинакового размера и ориентации, то Xq1,Xq2,...,Xqn обрабатываются как рассеянные точки в Rn.

  • Если Xq1,Xq2,...,Xqn массивы одного размера, то они представляют либо полную сетку точек запроса (в ndgrid формат) или рассеянные точки в Rn.

Пример: [X1,X2,X3,X4] = ndgrid(1:10,1:5,7:9,10:11)

Типы данных: single | double

Коэффициент уточнения, заданный как действительный, неотрицательный, целочисленный скаляр. Это значение определяет количество повторных разделений интервалов уточненной сетки в каждом измерении. Это приводит к 2^k-1 интерполированные точки между значениями выборки.

Если k является 0, то Vq является таким же, как V.

interpn(V,1) является таким же, как interpn(V).

На следующем рисунке изображена k=2 в R2. Имеется 72 интерполированных значения в красном цвете и 9 выборочных значений в черном цвете.

Пример: interpn(V,2)

Типы данных: single | double

Метод интерполяции, указанный в качестве одного из параметров в этой таблице.

МетодОписаниеНепрерывностьКомментарии
'linear'Интерполированное значение в точке запроса основано на линейной интерполяции значений в соседних точках сетки в каждом соответствующем измерении. Это метод интерполяции по умолчанию.C0
  • Требуется не менее двух точек сетки в каждом измерении

  • Требуется больше памяти, чем 'nearest'

'nearest'Интерполированное значение в точке запроса - это значение в ближайшей выборочной точке сетки. Прерывистый
  • Требуется две точки сетки в каждом измерении.

  • Быстрое вычисление с умеренными требованиями к памяти

'pchip'Фасонно-сохраняющая кусочно-кубическая интерполяция (только для 1-D). Интерполированное значение в точке запроса основано на сохраняющей форму кусочно-кубической интерполяции значений в соседних точках сетки.C1
  • Требуется не менее четырех точек

  • Требуется больше памяти и времени вычислений, чем 'linear'

'cubic'Интерполированное значение в точке запроса основано на кубической интерполяции значений в соседних точках сетки в каждом соответствующем измерении. Интерполяция основана на кубическом свертке.C1
  • Сетка должна иметь одинаковый интервал в каждом измерении, но этот интервал не обязательно должен быть одинаковым для всех размеров

  • Требуется не менее четырех точек в каждом измерении

  • Требуется больше памяти и времени вычислений, чем 'linear'

'makima'Модифицированная Akima кубическая эрмитовая интерполяция. Интерполированное значение в точке запроса основано на кусочной функции многочленов со степенью не более трех, вычисленной с использованием значений соседних точек сетки в каждом соответствующем измерении. Формула Акимы модифицируется, чтобы избежать переполнения.C1
  • Требуется не менее 2 точек в каждом измерении

  • Производит меньше волнистостей, чем 'spline'

  • Время вычисления обычно меньше 'spline', но требования к памяти аналогичны

'spline'Интерполированное значение в точке запроса основано на кубической интерполяции значений в соседних точках сетки в каждом соответствующем измерении. Интерполяция основана на кубическом сплайне, использующем условия конца без узла.C2
  • Требуется четыре точки в каждом измерении

  • Требуется больше памяти и времени вычислений, чем 'cubic'

Значение функции вне области X1,X2,...,Xn, задается как вещественный или сложный скаляр. interpn возвращает это постоянное значение для всех точек за пределами области X1,X2,...,Xn.

Пример: 5

Пример: 5+1i

Типы данных: single | double
Поддержка комплексного номера: Да

Выходные аргументы

свернуть все

Интерполированные значения, возвращаемые как вещественный или комплексный скаляр, вектор или массив. Размер и форма Vq зависит от используемого синтаксиса и, в некоторых случаях, от размера и значения входных аргументов.

СинтаксисыОсобые условияРазмер VqПример
interpn(X1,...,Xn,V,Xq1,...,Xqn)
interpn(V,Xq1,...,Xqn)
и варианты этих синтаксисов, которые включают method или extrapval
Xq1,...,Xqn скалярыСкалярsize(Vq) = [1 1] когда вы проходите Xq1,...,Xqn как скаляры.
То же, что и вышеXq1,...,Xqn - векторы одинакового размера и ориентацииВектор того же размера и ориентации, что и Xq1,...,XqnВ 3-D, если
size(Xq1) = [100 1],
и size(Xq2) = [100 1],
и size(Xq3) = [100 1],
тогда size(Vq) = [100 1].
То же, что и вышеXq1,...,Xqn - векторы смешанной ориентацииsize(Vq) = [length(Xq1),...,length(Xqn)]В 3-D, если
size(Xq1) = [1 100],
и size(Xq2) = [50 1],
и size(Xq3) = [1 5],
тогда size(Vq) = [100 50 5].
То же, что и вышеXq1,...,Xqn массивы одинакового размераМассив того же размера, что и Xq1,...,XqnВ 3-D, если
size(Xq1) = [50 25],
и size(Xq2) = [50 25],
и size(Xq3) = [50 25],
тогда size(Vq) = [50 25].
interpn(V,k)
и варианты этого синтаксиса, которые включают method или extrapval
Ничего

Массив, в котором длина i«-е измерение»
2^k * (size(V,i)-1)+1,

В 3-D, если
size(V) = [10 12 5],
и k = 3,
тогда size(Vq) = [73 89 33].

Подробнее

свернуть все

Строго монотонный

Набор значений, которые всегда увеличиваются или уменьшаются без сторнирования. Например, последовательность, a = [2 4 6 8] строго монотонный и нарастающий. Последовательность, b = [2 4 4 6 8] не является строго монотонным, потому что нет изменения в значении между b(2) и b(3). Последовательность, c = [2 4 6 8 6] содержит сторнирование между c(4) и c(5), так что это совсем не монотонно.

Полная сетка (в формате ndgrid)

Для interpn, полная сетка состоит из n массивов, X1,X2,...,Xn, элементы которого представляют сетку точек в Rn. i-й массив, Xi, содержит строго монотонные, возрастающие значения, которые наиболее быстро изменяются вдоль i-го измерения.

Используйте ndgrid для создания полной сетки, которую можно передать interpn. Например, следующий кодекс создает полную сетку в R2 для региона, 1 ≤ X1 ≤ 3, 1 ≤ X2 ≤ 4.

[X1,X2] = ndgrid(-1:3,(1:4))
X1 =

    -1    -1    -1    -1
     0     0     0     0
     1     1     1     1
     2     2     2     2
     3     3     3     3


X2 =

     1     2     3     4
     1     2     3     4
     1     2     3     4
     1     2     3     4
     1     2     3     4

Векторы сетки

Для interpn, векторы сетки состоят из n векторов смешанной ориентации, которые определяют точки сетки в Rn.

Например, следующий код создает векторы сетки в R3 для области, 1 ≤ x1 ≤ 3, 4 ≤ x2 ≤ 5 и 6 ≤x3≤ 8:

x1 = 1:3;
x2 = (4:5)';
x3 = 6:8;

Разбросанные точки

Для interpn, точки рассеяния состоят из n массивов или векторов, Xq1,Xq2,...,Xqn, которые определяют коллекцию точек, разбросанных в Rn. iв-й массив, Xi, содержит координаты в i-е измерение.

Например, следующий код определяет точки (1, 19, 10), (6, 40, 1), (15, 33, 22) и (0, 61, 13) в R3.

Xq1 = [1 6; 15 0];
Xq2 = [19 40; 33 61];
Xq3 = [10 1; 22 13];

Расширенные возможности

.

См. также

| | |

Представлен до R2006a