griddata

Интерполируйте 2D или 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'самый близкий, '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);

xY, и 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) в 2 500 случайных точках между -1 и 1. Векторы xY, и 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. Интерполяция на этой сетке 2D точек запроса (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.

Входные параметры

свернуть все

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

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

Демонстрационные значения в виде вектора. Демонстрационные значения в v соответствуйте точкам выборки в xY, и z.

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

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

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

  • Задайте массивы, если вы хотите передать сетку точек запроса. Использование ndgrid или meshgrid создать массивы.

  • Задайте векторы, если вы хотите передать набор рассеянных точек.

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

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

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

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

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

C2

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

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

свернуть все

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

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

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

  • Если xqyq , (и 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 использует Триангуляцию Делоне данных, так может быть чувствительно к масштабированию проблем в xY, и z. Когда это происходит, можно использовать normalize перемасштабировать данные и улучшить результаты. Смотрите Нормируют Данные с Отличающимися Величинами для получения дополнительной информации.

Смотрите также

| | | | |

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