interp2

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

Описание

пример

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.

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

[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'Модифицированная кубическая эрмитовая интерполяция Акимы. Интерполированное значение в точке запроса основано на кусочно-линейной функции полиномов со степенью не более трех, оцененных с использованием значений соседних точек сетки в каждой соответствующей размерности. Формула Акимы изменена, чтобы избежать перерегулирования.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 множества значений, которые всегда увеличиваются или уменьшаются, без обращений. Для примера, последовательности, 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), так что это вовсе не монотонно.

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

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

Например, следующий код создает полную сетку для области,-1 ≤ <reservedrangesplaceholder1> ≤ 3 и 1 ≤ <reservedrangesplaceholder0> ≤ 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 -cordinates, а вектор-столбец задает y -cordinates.

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

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

Рассеянные точки

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

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

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

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

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