exponenta event banner

interp2

Интерполяция для 2-D данных с сеткой в формате сетки

Описание

пример

Vq = interp2(X,Y,V,Xq,Yq) возвращает интерполированные значения функции двух переменных в определенных точках запроса с помощью линейной интерполяции. Результаты всегда проходят через исходную выборку функции. X и Y содержат координаты точек выборки. V содержит соответствующие значения функций в каждой точке выборки. Xq и Yq содержат координаты точек запроса.

Vq = interp2(V,Xq,Yq) предполагает сетку образцов точек по умолчанию. Точки сетки по умолчанию охватывают прямоугольную область, X=1:n и Y=1:m, где [m,n] = size(V). Используйте этот синтаксис, когда требуется сохранить память и не беспокоитесь об абсолютных расстояниях между точками.

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

пример

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

пример

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

пример

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

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

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

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

Примеры

свернуть все

Грубая выборка peaks функция.

[X,Y] = meshgrid(-3:3);
V = peaks(X,Y);

Постройте график грубого отбора проб.

figure
surf(X,Y,V)
title('Original Sampling');

Figure contains an axes. The axes with title Original Sampling contains an object of type surface.

Создайте сетку запроса с интервалом 0,25.

[Xq,Yq] = meshgrid(-3:0.25:3);

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

Vq = interp2(X,Y,V,Xq,Yq);

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

figure
surf(Xq,Yq,Vq);
title('Linear Interpolation Using Finer Grid');

Figure contains an axes. The axes with title Linear Interpolation Using Finer Grid contains an object of type surface.

Грубая выборка функции пиков.

[X,Y] = meshgrid(-3:3);
V = peaks(7);

Постройте график грубого отбора проб.

figure
surf(X,Y,V)
title('Original Sampling');

Figure contains an axes. The axes with title Original Sampling contains an object of type surface.

Создайте сетку запроса с интервалом 0,25.

[Xq,Yq] = meshgrid(-3:0.25:3);

Интерполяция в точках запроса и указание кубической интерполяции.

Vq = interp2(X,Y,V,Xq,Yq,'cubic');

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

figure
surf(Xq,Yq,Vq);
title('Cubic Interpolation Over Finer Grid');

Figure contains an axes. The axes with title Cubic Interpolation Over Finer Grid contains an object of type surface.

Загрузите некоторые данные изображения в рабочую область.

load flujet.mat
colormap gray

Изолируйте небольшую область изображения и приведите ее к одинарной точности.

V = single(X(200:300,1:25));

Отображение области изображения.

imagesc(V);
axis off
title('Original Image')

Figure contains an axes. The axes with title Original Image contains an object of type image.

Вставка интерполированных значений путем многократного деления интервалов между точками уточненной сетки пять раз в каждом измерении.

Vq = interp2(V,5);

Просмотрите результат.

imagesc(Vq);
axis off
title('Linear Interpolation')

Figure contains an axes. The axes with title Linear Interpolation contains an object of type image.

Грубая выборка функции в диапазоне, [-2, 2] в обоих измерениях.

[X,Y] = meshgrid(-2:0.75:2);
R = sqrt(X.^2 + Y.^2)+ eps;
V = sin(R)./(R);

Постройте график грубого отбора проб.

figure
surf(X,Y,V)
xlim([-4 4])
ylim([-4 4])
title('Original Sampling')

Figure contains an axes. The axes with title Original Sampling contains an object of type surface.

Создание сетки запросов, которая выходит за пределы области X и Y.

[Xq,Yq] = meshgrid(-3:0.2:3);

Выполнить кубическую интерполяцию в области X и Yи назначьте нулевым все запросы, выходящие за пределы системы.

Vq = interp2(X,Y,V,Xq,Yq,'cubic',0);

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

figure
surf(Xq,Yq,Vq)
title('Cubic Interpolation with Vq=0 Outside Domain of X and Y');

Figure contains an axes. The axes with title Cubic Interpolation with Vq=0 Outside Domain of X and Y contains an object of type surface.

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

свернуть все

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

  • Если X и Y являются матрицами, то они содержат координаты полной сетки (в формате meshgrid). Используйте meshgrid для создания X и Y матрицы вместе. Обе матрицы должны иметь одинаковый размер.

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

Пример: [X,Y] = meshgrid(1:30,-10:10)

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

Значения выборки, заданные как вещественная или комплексная матрица. Требования к размеру для V зависит от размера X и Y:

  • Если X и Y - матрицы, представляющие полную сетку (в meshgrid формат), то V должен быть того же размера, что и X и Y.

  • Если X и Y являются векторами сетки, то V должен быть матрицей, содержащей length(Y) строки и length(X) столбцы.

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

Пример: rand(10,10)

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

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

  • Если Xq и Yq являются скалярами, то они являются координатами одной точки запроса.

  • Если Xq и Yq являются векторами различной ориентации, то Xq и Yq рассматриваются как векторы сетки.

  • Если Xq и Yq являются векторами одинакового размера и ориентации, то Xq и Yq обрабатываются как рассеянные точки в 2-D пространстве.

  • Если Xq и Yq являются матрицами, то они представляют либо полную сетку точек запроса (в meshgrid формат) или разбросанные точки.

  • Если Xq и Yq N-D массивы, затем они представляют рассеянные точки в 2-D пространстве.

Пример: [Xq,Yq] = meshgrid((1:0.1:10),(-5:0.1:0))

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Пример: 5

Пример: 5+1i

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

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

свернуть все

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

СинтаксисыОсобые условияРазмер VqПример
interp2(X,Y,V,Xq,Yq)
interp2(V,Xq,Yq)
и варианты этих синтаксисов, которые включают method или extrapval
Xq, Yq скалярыСкалярsize(Vq) = [1 1] когда вы проходите Xq и Yq как скаляры.
То же, что и вышеXq, Yq - векторы одинакового размера и ориентацииВектор того же размера и ориентации, что и Xq и YqЕсли size(Xq) = [100 1]
и size(Yq) = [100 1],
тогда size(Vq) = [100 1].
То же, что и вышеXq, Yq - векторы смешанной ориентацииМатрица, в которой количество строк равно length(Yq), и количество столбцов равно length(Xq)Если size(Xq) = [1 100]
и size(Yq) = [50 1],
тогда size(Vq) = [50 100].
То же, что и вышеXq, Yq - матрицы или массивы одинакового размераМатрица или массив того же размера, что и Xq и YqЕсли size(Xq) = [50 25]
и size(Yq) = [50 25],
тогда size(Vq) = [50 25].
interp2(V,k)
и варианты этого синтаксиса, которые включают method или extrapval
Ничего

Матрица, в которой число строк:
2^k * (size(V,1)-1)+1,

и количество столбцов:
2^k * (size(V,2)-1)+1

Если size(V) = [10 20]
и k = 2,
тогда size(Vq) = [37 77].

Подробнее

свернуть все

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

Набор значений, которые всегда увеличиваются или уменьшаются без сторнирования. Например, последовательность, 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), так что это совсем не монотонно.

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

Для interp2, полная сетка представляет собой пару матриц, элементы которых представляют сетку точек над прямоугольной областью. Одна матрица содержит координаты x, а другая - координаты y. Значения в x-матрице строго монотонны и увеличиваются вдоль строк. Значения вдоль столбцов постоянны. Значения в y-матрице строго монотонны и увеличиваются вдоль столбцов. Значения вдоль строк постоянны. Используйте meshgrid для создания полной сетки, которую можно передать interp2.

Например, следующий код создает полную сетку для области, -1 ≤ x ≤ 3 и 1 ≤ y ≤ 4:

[X,Y] = meshgrid(-1:3,(1:4))
X =

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

Y =

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

Векторы сетки являются более компактным форматом для представления сетки, чем полная сетка. Связь между двумя форматами и матрицей значений выборки V является

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

Для interp2, векторы сетки состоят из пары векторов, которые определяют координаты x и y в сетке. Вектор строки определяет координаты x, а вектор столбца - координаты y.

Например, следующий код создает векторы сетки, задающие область, -1 ≤ x ≤ 3 и 1 ≤ y ≤ 4:

x = -1:3;
y = (1:4)';

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

Для interp2рассеянные точки состоят из пары массивов, которые определяют совокупность точек, разбросанных в 2-D пространстве. Один массив содержит координаты x, а другой - координаты y.

Например, следующий код определяет точки, (2,7), (5,3), (4,1) и (10,9):

x = [2 5; 4 10];
y = [7 3; 1 9];

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

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