griddata

Интерполируйте 2D или 3-D данные, имеющий разброс

Синтаксис

vq = griddata(x,y,v,xq,yq)
vq = griddata(x,y,z,v,xq,yq,zq)
vq = griddata(___,method)

Описание

пример

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

Примечание

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

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

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

Выберите функцию 4-D в 2 500 случайных точках между -1 и 1. The векторы 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], и установите. При интерполяции на этой сетке 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')

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

свернуть все

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

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

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

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

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

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

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

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

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

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

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

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

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

C2

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

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

свернуть все

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

  • Для 2D интерполяции, где 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 для точек запроса вне выпуклой оболочки демонстрационных данных. Метод 'v4' выполняет то же вычисление для всех точек независимо от местоположения.

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

| | | | |

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

Была ли эта тема полезной?