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, а данных , имеющих разбросов как точек.

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® 4 griddata метод), поддерживающий только 2-D интерполяцию. В отличие от других методов, эта интерполяция не основана на триангуляции.

C2

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

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

свернуть все

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

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

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

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

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

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

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

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

Совет

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

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