Интерполяция для 2-D данных с сеткой в формате 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
являются векторами, затем они рассматриваются как векторы сетки. Значения в обоих векторах должны быть строго монотонными, либо увеличивающимися, либо уменьшающимися.
Пример: [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
рассматриваются как рассеянные точки в 2-D пространстве.
Если Xq
и Yq
являются матрицами, затем они представляют либо полную сетку точек запроса (в meshgrid
формат) или рассеянные точки.
Если Xq
и Yq
являются N-D массивами, тогда они представляют рассеянные точки в 2-D пространстве.
Пример: [Xq,Yq] = meshgrid((1:0.1:10),(-5:0.1:0))
Типы данных: single
| double
k
- Коэффициент уточнения1
(по умолчанию) | вещественный, неотрицательный, целочисленный скалярКоэффициент уточнения, заданный как действительный, неотрицательный, целочисленный скаляр. Это значение задает количество раз, чтобы неоднократно делить интервалы уточненной сетки в каждой размерности. Это приводит к 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 | Ничего | Матрица, в которой количество строк: | Если 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)
, так что это вовсе не монотонно.
Для 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];
Указания и ограничения по применению:
Xq
и Yq
должен быть одинаковым размером. Использовать meshgrid
для вычисления на сетке.
Для достижения наилучших результатов предоставьте X
и Y
как векторы. Значения в этих векторах должны быть строго монотонными и увеличиваться.
Генерация кода не поддерживает 'makima'
метод интерполяции.
Для 'cubic'
метод интерполяции, если сетка не имеет равномерного интервала, возникает ошибка. В этом случае используйте 'spline'
метод интерполяции.
Для наилучших результатов при использовании 'spline'
метод интерполяции:
Использовать meshgrid
для создания входов Xq
и Yq
.
Используйте небольшое количество точек интерполяции относительно размерностей V
. Интерполяция по большому набору рассеянных точек может быть неэффективной.
Указания и ограничения по применению:
Xq
и Yq
должен быть одинаковым размером. Использовать meshgrid
для вычисления на сетке.
Для достижения наилучших результатов предоставьте X
и Y
как векторы. Значения в этих векторах должны быть строго монотонными и увеличиваться.
Генерация кода не поддерживает 'makima'
метод интерполяции.
Для 'cubic'
метод интерполяции, если сетка не имеет равномерного интервала, возникает ошибка. В этом случае используйте 'spline'
метод интерполяции.
Для наилучших результатов при использовании 'spline'
метод интерполяции:
Использовать meshgrid
для создания входов Xq
и Yq
.
Используйте небольшое количество точек интерполяции относительно размерностей V
. Интерполяция по большому набору рассеянных точек может быть неэффективной.
Указания и ограничения по применению:
V
должен быть массивом double или single 2-D. V
может быть реальным или комплексным. V
не может быть вектором.
X
и Y
должны:
Иметь тот же тип (двойной или одинарный).
Быть конечными векторами или 2-D массивами с увеличивающимися и непоследовательными элементами в соответствующих размерностях.
Выравнивание по Декартовым осям при X
и Y
являются векторными 2-D массивами (как если бы они были созданы meshgrid
).
Иметь размерности, сопоставимые с V
.
Xq
и Yq
должны быть векторами или массивами того же типа (double или single). Если Xq
и Yq
являются массивами, тогда они должны иметь тот же размер. Если они являются векторами с различными длинами, то они должны иметь различные ориентации.
method
должен быть 'linear'
, 'nearest'
, или 'cubic'
.
Экстраполяция для входных входов вне границы не поддерживается.
Для получения дополнительной информации смотрите Запуск функций MATLAB на графическом процессоре (Parallel Computing Toolbox).
griddata
| griddedInterpolant
| interp1
| interp3
| interpn
| meshgrid
| scatteredInterpolant
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.