Интерполяция для 2D данных с координатной сеткой в meshgrid формате
возвращает интерполированные значения функции двух переменных в определенных точках запроса с помощью линейной интерполяции. Результаты всегда проходят через исходную выборку функции. Vq
= interp2(X,Y
,V
,Xq,Yq
)X
и Y
содержите координаты точек выборки. V
содержит соответствующие значения функции в каждой точке выборки. Xq
и Yq
содержите координаты точек запроса.
также задает 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');
Создайте сетку запроса с разрядкой 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');
Грубо произведите функцию peaks.
[X,Y] = meshgrid(-3:3); V = peaks(7);
Постройте крупную выборку.
figure
surf(X,Y,V)
title('Original Sampling');
Создайте сетку запроса с разрядкой 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');
Загрузите некоторые данные изображения в рабочую область.
load flujet.mat colormap gray
Изолируйте небольшую область изображения и бросьте его к с одинарной точностью.
V = single(X(200:300,1:25));
Отобразите область изображений.
imagesc(V); axis off title('Original Image')
Вставьте интерполированные значения путем повторного деления интервалов между точками усовершенствованной сетки пять раз в каждой размерности.
Vq = interp2(V,5);
Отобразите результат.
imagesc(Vq); axis off title('Linear Interpolation')
Грубо произведите функцию в области значений, [-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')
Создайте сетку запроса, которая расширяет вне области 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');
X,Y
— Демонстрационные узлы решеткиДемонстрационные узлы решетки, заданные как действительные матрицы или векторы. Демонстрационные узлы решетки должны быть уникальными.
Если X
и Y
матрицы, затем они содержат координаты полной сетки (в meshgrid формате). Используйте meshgrid
функция, чтобы создать X
и Y
матрицы вместе. Обе матрицы должны быть одного размера.
Если X
и Y
векторы, затем они обработаны как сетка векторы. Значения в обоих векторах должны быть строго монотонными и увеличиться.
В будущем релизе, interp2
не примет смешанные комбинации векторов строки и столбца для выборки и запросит сетки. Вместо этого необходимо создать полную сетку с помощью meshgrid
. В качестве альтернативы, если у вас есть большой набор данных, можно использовать griddedInterpolant
вместо interp2
.
Пример: [X,Y] = meshgrid(1:30,-10:10)
Типы данных: single
| double
V
— Демонстрационные значенияДемонстрационные значения, заданные как действительная или комплексная матрица. Требования размера для 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
векторы, одного размера и ориентация, затем Xq
и Yq
обработаны как рассеянные точки на 2D пробеле.
Если Xq
и Yq
матрицы, затем они представляют любого полная сетка точек запроса (в meshgrid
формат) или рассеянные точки.
Если Xq
и Yq
массивы N-D, затем они представляют рассеянные точки на 2D пробеле.
В будущем релизе, interp2
не примет смешанные комбинации векторов строки и столбца для выборки и запросит сетки. Вместо этого необходимо создать полную сетку с помощью meshgrid
. В качестве альтернативы, если у вас есть большой набор данных, можно использовать griddedInterpolant
вместо interp2
.
Пример: [Xq,Yq] = meshgrid((1:0.1:10),(-5:0.1:0))
Типы данных: single
| double
k
— Фактор улучшения
(значение по умолчанию) | действительный, неотрицательный, целочисленный скалярФактор улучшения, заданный как действительное, неотрицательное, целочисленный скаляр. Это значение задает число раз, чтобы неоднократно разделить интервалы усовершенствованной сетки в каждой размерности. Это приводит к 2^k-1
интерполированные точки между демонстрационными значениями.
Если k
0
, затем Vq
совпадает с V
.
interp2(V,1)
совпадает с interp2(V)
.
Следующий рисунок показывает размещение интерполированных значений (в красном) среди девяти демонстрационных значений (в черном цвете) для k=2
.
Пример: interp2(V,2)
Типы данных: single
| double
method
метод интерполяции'linear'
(значение по умолчанию) | 'nearest'
| 'cubic'
| 'spline'
| 'makima'
Метод интерполяции, заданный как одна из опций в этой таблице.
Метод | Описание | Непрерывность | Комментарии |
---|---|---|---|
'linear' | Интерполированное значение в точке запроса основано на линейной интерполяции значений в соседних узлах решетки в каждой соответствующей размерности. Это - метод интерполяции по умолчанию. | C0 |
|
'nearest' | Интерполированное значение в точке запроса является значением в самом близком демонстрационном узле решетки. | Прерывистый |
|
'cubic' | Интерполированное значение в точке запроса основано на кубичной интерполяции значений в соседних узлах решетки в каждой соответствующей размерности. Интерполяция основана на кубической свертке. | C1 |
|
'makima' | Модифицированный Акима кубическая интерполяция Эрмита. Интерполированное значение в точке запроса основано на кусочно-линейной функции полиномов со степенью самое большее три оцененных использования значений соседних узлов решетки в каждой соответствующей размерности. Формула Акима изменяется, чтобы избежать перерегулирований. | C1 |
|
'spline' | Интерполированное значение в точке запроса основано на кубичной интерполяции значений в соседних узлах решетки в каждой соответствующей размерности. Интерполяция основана на кубическом сплайне с помощью граничных условий не-узла. | C2 |
|
extrapval
— Значение функции вне области X
и Y
Значение функции вне области X
и Y
, заданный как действительный или комплексный скаляр. interp2
возвращает это постоянное значение для всех точек вне области X
и Y
.
Пример 5
Пример: 5+1i
Типы данных: single
| double
Поддержка комплексного числа: Да
Vq
— Интерполированные значенияИнтерполированные значения, возвращенные как действительный или комплексный скаляр, вектор или матрица. Размер и форма 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 | 'none' | Матрица, в которой количество строк: | Если 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
, рассеянные точки состоят из пары массивов, которые задают набор точек, рассеянных на 2D пробеле. Один массив содержит x - координаты и другой содержат y - координаты.
Например, следующий код задает точки, (2,7), (5,3), (4,1), и (10,9):
x = [2 5; 4 10]; y = [7 3; 1 9];
Указания и ограничения по применению:
Xq
и Yq
должен быть одного размера. Используйте meshgrid
оценивать на сетке.
Для лучших результатов обеспечьте X
и Y
как векторы.
Генерация кода не поддерживает 'makima'
метод интерполяции.
Для 'cubic'
метод интерполяции, если сетка не имеет универсального интервала, ошибка, заканчивается. В этом случае используйте 'spline'
метод интерполяции.
Для лучших результатов, когда вы используете 'spline'
метод интерполяции:
Используйте meshgrid
создать входные параметры Xq
и Yq
.
Используйте небольшое количество точек интерполяции относительно размерностей V
. Интерполяция по большому набору рассеянных точек может быть неэффективной.
Указания и ограничения по применению:
V
должен быть двойной или один 2D массив. V
может быть действительным или комплексным. V
не может быть вектор.
X
и Y
должен:
Имейте тот же тип (дважды или один).
Будьте конечными векторами или 2D массивами с увеличением и неповторением элементов в соответствующих размерностях.
Выровняйтесь с осями декартовой системы координат когда X
и Y
невекторные 2D массивы (как будто они были произведены meshgrid
).
Имейте размерности, сопоставимые с V
.
Xq
и Yq
должны быть векторы или массивы того же типа (дважды или один). Если Xq
и Yq
массивы, затем у них должен быть тот же размер. Если они - векторы с различными длинами, то у них должны быть различные ориентации.
method
должен быть 'linear'
самый близкий
, или 'cubic'
.
Экстраполяция для входа из контура не поддержана.
Для получения дополнительной информации смотрите функции MATLAB Запуска на графическом процессоре (Parallel Computing Toolbox).
griddata
| griddedInterpolant
| interp1
| interp3
| interpn
| meshgrid
| scatteredInterpolant
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.