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'.

Примечание

Qhull-специфичные опции больше не поддерживаются. Удалите options аргумент от всех экземпляров в вашем коде, которые передают его griddata.

В будущем релизе, griddata не примет входных векторов смешанной ориентации. Кроме того, следующие синтаксисы будут удалены:

[Xq,Yq,Vq] = griddata(x,y,v,xq,yq)
[Xq,Yq,Vq] = griddata(x,y,v,xq,yq, method)
Чтобы задать сетку точек запроса, создайте полную сетку с ndgrid или meshgrid прежде, чем вызвать griddata.

Примеры

свернуть все

Интерполируйте случайным образом данные, имеющий разброс по регулярной координатной сетке точек запроса.

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

xy = -2.5 + 5*gallery('uniformdata',[200 2],0);
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])

Интерполируйте 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)

Сравните результаты нескольких различных алгоритмов интерполяции, предлагаемых 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')

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')

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')

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
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')

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

свернуть все

Координаты точки выборки, заданные как векторы. Соответствующие элементы в 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' метод выполняет то же вычисление для всех точек независимо от местоположения.

Советы

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

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

| | | | |

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