exponenta event banner

griddata

Интерполяция 2-D или 3-D разрозненных данных

Описание

пример

vq = griddata(x,y,v,xq,yq) соответствует поверхности формы v = f (x, y) рассеянным данным в векторах(x,y,v). griddata функция интерполирует поверхность в точках запроса, указанных (xq,yq) и возвращает интерполированные значения, vq. Поверхность всегда проходит через точки данных, определенные x и y.

пример

vq = griddata(x,y,z,v,xq,yq,zq) соответствует гиперповерхности вида v = f (x, y, z).

vq = griddata(___,method) задает метод интерполяции, используемый для вычисления vq с использованием любого из входных аргументов в предыдущих синтаксисах. method может быть 'linear', 'nearest', 'natural', 'cubic', или 'v4'. Метод по умолчанию: 'linear'.

[Xq,Yq,vq] = griddata(x,y,v,xq,yq) и [Xq,Yq,vq] = griddata(x,y,v,xq,yq,method) дополнительно возврат Xq и Yq, которые содержат координаты сетки для точек запроса.

Примеры

свернуть все

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

Выборка функции в 200 случайных точках между -2.5 и 2.5.

rng('default')
xy = -2.5 + 5*rand([200 2]);
x = xy(:,1);
y = xy(:,2);
v = x.*exp(-x.^2-y.^2);

x, y, и v - векторы, содержащие рассеянные (неоднородные) точки выборки и данные.

Определите обычную сетку и интерполируйте разбросанные данные по сетке.

[xq,yq] = meshgrid(-2:.2:2, -2:.2:2);
vq = griddata(x,y,v,xq,yq);

Постройте график привязанных к сетке данных в виде сетки, а разбросанные данные - в виде точек.

mesh(xq,yq,vq)
hold on
plot3(x,y,v,'o')
xlim([-2.7 2.7])
ylim([-2.7 2.7])

Figure contains an axes. The axes contains 2 objects of type surface, line.

Интерполяция среза 3-D функции 4-D, которая дискретизируется в случайно рассеянных точках.

Выборка 4-D функции v (x, y, z) в 2500 случайных точек между-1 и 1. Векторы x, y, и z содержат неоднородные точки выборки.

x = 2*rand(2500,1) - 1; 
y = 2*rand(2500,1) - 1; 
z = 2*rand(2500,1) - 1;
v = x.^2 + y.^3 - z.^4;

Определите обычную сетку с точками xy в диапазоне [-1, 1] и задайте z = 0. Интерполяция в этой сетке 2-D точек запроса(xq,yq,0) создает 3-D интерполированный срез (xq,yq,0,vq) набора данных 4-D (x,y,z,v).

d = -1:0.05:1;
[xq,yq,zq] = meshgrid(d,d,0);

Интерполяция разрозненных данных на сетке. Постройте график результатов.

vq = griddata(x,y,z,v,xq,yq,zq);
plot3(x,y,v,'ro')
hold on
surf(xq,yq,vq)

Figure contains an axes. The axes contains 2 objects of type line, surface.

Сравнение результатов нескольких различных алгоритмов интерполяции, предлагаемых griddata.

Создайте набор данных выборки из 50 точек с разбросом. Количество точек искусственно мало для выделения различий между методами интерполяции.

x = -3 + 6*rand(50,1);
y = -3 + 6*rand(50,1);
v = sin(x).^4 .* cos(y);

Создание сетки точек запроса.

[xq,yq] = meshgrid(-3:0.1:3);

Интерполяция данных образца с помощью 'nearest', 'linear', 'natural', и 'cubic' методы. Постройте график результатов для сравнения.

z1 = griddata(x,y,v,xq,yq,'nearest');
plot3(x,y,v,'mo')
hold on
mesh(xq,yq,z1)
title('Nearest Neighbor')
legend('Sample Points','Interpolated Surface','Location','NorthWest')

Figure contains an axes. The axes with title Nearest Neighbor contains 2 objects of type line, surface. These objects represent Sample Points, Interpolated Surface.

z2 = griddata(x,y,v,xq,yq,'linear');
figure
plot3(x,y,v,'mo')
hold on
mesh(xq,yq,z2)
title('Linear')
legend('Sample Points','Interpolated Surface','Location','NorthWest')

Figure contains an axes. The axes with title Linear contains 2 objects of type line, surface. These objects represent Sample Points, Interpolated Surface.

z3 = griddata(x,y,v,xq,yq,'natural');
figure
plot3(x,y,v,'mo')
hold on
mesh(xq,yq,z3)
title('Natural Neighbor')
legend('Sample Points','Interpolated Surface','Location','NorthWest')

Figure contains an axes. The axes with title Natural Neighbor contains 2 objects of type line, surface. These objects represent Sample Points, Interpolated Surface.

z4 = griddata(x,y,v,xq,yq,'cubic');
figure
plot3(x,y,v,'mo')
hold on
mesh(xq,yq,z4)
title('Cubic')
legend('Sample Points','Interpolated Surface','Location','NorthWest')

Figure contains an axes. The axes with title Cubic contains 2 objects of type line, surface. These objects represent Sample Points, Interpolated Surface.

Постройте график точного решения.

figure
plot3(x,y,v,'mo')
hold on
mesh(xq,yq,sin(xq).^4 .* cos(yq))
title('Exact Solution')
legend('Sample Points','Exact Surface','Location','NorthWest')

Figure contains an axes. The axes with title Exact Solution contains 2 objects of type line, surface. These objects represent Sample Points, Exact Surface.

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

свернуть все

Координаты точек выборки, указанные как векторы. Соответствующие элементы в x, y, и z укажите координаты xyz точек, где значения образца v известны. Точки выборки должны быть уникальными.

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

Значения выборки, заданные как вектор. Значения образца в v соответствуют точкам выборки в x, y, и z.

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

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

Точки запроса, указанные как векторы или массивы. Соответствующие элементы в векторах или массивах задают координаты xyz точек запроса. Точки запроса - это местоположения, в которых griddata выполняет интерполяцию.

  • Если требуется передать сетку точек запроса, укажите массивы. Использовать ndgrid или meshgrid для построения массивов.

  • Если требуется передать коллекцию рассеянных точек, задайте векторы.

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

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

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

МетодОписаниеНепрерывность
'linear'Линейная интерполяция на основе триангуляции (по умолчанию), поддерживающая интерполяцию 2-D и 3-D.C0
'nearest'Интерполяция ближайшего соседа на основе триангуляции, поддерживающая интерполяцию 2-D и 3-D.Прерывистый
'natural'Интерполяция природных соседей на основе триангуляции, поддерживающая интерполяцию 2-D и 3-D. Этот метод является эффективным компромиссом между линейным и кубическим.C1, за исключением точек выборки
'cubic'Кубическая интерполяция на основе триангуляции, поддерживающая только интерполяцию 2-D.C2
'v4'

Биармоническая сплайн-интерполяция (MATLAB ® 4griddata способ) поддерживает только интерполяцию 2-D. В отличие от других методов, эта интерполяция не основана на триангуляции.

C2

Типы данных: char

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

свернуть все

Интерполированные значения, возвращаемые в виде вектора или массива. Размер vq зависит от размера входных данных точки запроса xq, yq, и zq:

  • Для интерполяции 2-D, где xq и yq укажите mоколо-n сетка точек запроса, vq является mоколо-n массив.

  • Для интерполяции 3-D, где xq, yq, и zq укажите mоколо-nоколо-p сетка точек запроса, vq является mоколо-nоколо-p массив.

  • Если xq, yq, (и zq для 3-D интерполяции) - векторы, задающие точки рассеяния, vq - вектор одинаковой длины.

Для всех методов интерполяции, отличных от 'v4', выходные данные vq содержит NaN значения для точек запроса за пределами выпуклого корпуса данных выборки. 'v4' метод выполняет один и тот же расчет для всех точек независимо от местоположения.

Координаты сетки для точек запроса, возвращаемые в виде векторов или матриц. Форма Xq и Yq зависит от способа указания xq и yq:

  • При указании xq как вектор строки и yq в виде вектора-столбца, затем griddata использует эти векторы сетки для формирования полной сетки с [Xq,Yq] = meshgrid(xq,yq). В этом случае Xq и Yq выходные данные возвращаются в виде матриц, которые содержат полные координаты сетки для точек запроса.

  • Если xq и yq оба вектора строк или оба вектора столбцов, то Xq = xq и Yq = yq.

Совет

  • Интерполяция разрозненных данных с помощью griddata использует триангуляцию данных Delaunay, поэтому может быть чувствительным к проблемам масштабирования в x, y, и z. Когда это происходит, можно использовать normalize для масштабирования данных и улучшения результатов. Дополнительные сведения см. в разделе Нормализация данных с различными величинами.

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