griddatan

Интерполяция N-D данного , имеющего разброса

Описание

пример

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

пример

vq = griddatan(x,v,xq,method) задает метод интерполяции, используемый для вычисления vq. Опции 'linear' или 'nearest'.

vq = griddatan(x,v,xq,method,options) задает массив ячеек из векторов символов, options, для использования в Qhull via delaunayn.

Примеры

свернуть все

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

Создайте рассеянный набор точек выборки.

rng('default')
X = 2*rand([5000 3])-1;
Y = sum(X.^2,2);

Создайте сетки x, y и z для использования в качестве 3-D набора точек запроса и интерполируйте данные , имеющие разбросы в этих точках.

d = -0.8:0.05:0.8;
[y0,x0,z0] = ndgrid(d,d,d);
XI = [x0(:) y0(:) z0(:)];
YI = griddatan(X,Y,XI);

Поскольку трудно визуализировать 4-D наборов данных, используйте изоповерхность на 0,8, чтобы визуализировать результат интерполяции.

YI = reshape(YI, size(x0));
p = patch(isosurface(x0,y0,z0,YI,0.8));
isonormals(x0,y0,z0,YI,p)
p.FaceColor = 'blue';
p.EdgeColor = 'none';
view(3)
axis equal
camlight
lighting phong

Figure contains an axes. The axes contains an object of type patch.

Используйте интерполяцию по ближайшему соседу на 3-D наборе данных.

Создайте выборку 3-D набора данных. Матрица X содержит xyz местоположения наблюдаемых данных и v содержит (случайным образом сгенерированные) наблюдаемые данные. Этот тип набора данных мог бы представлять, для примера, уровень кислорода в океанской воде в этих местах.

X = [rand(100,1) rand(100,1) rand(100,1)];
v = rand(100,1);

Используйте интерполяцию по ближайшему соседу, чтобы аппроксимировать значение базовой функции в некоторых точках запроса.

[xx,yy,zz] = meshgrid(0.2:0.025:0.8);
xq = [xx(:) yy(:) zz(:)];
vq = griddatan(X,v,xq,'nearest');

Постройте срезы результатов в верхней части местоположений точек выборки.

vq = reshape(vq,size(xx));
plot3(X(:,1),X(:,2),X(:,3),'r*')
hold on
slice(xx,yy,zz,vq,[0.2 0.4 0.6 0.8],0.5,0.5)

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

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

свернуть все

Точка выборки, заданный как матрица. Задайте x как m-by- n матрица для представления m точки в n-мерное пространство. Точки выборки должны быть уникальными.

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

Выборка значений, заданная как вектор. Задайте v как вектор длины m, с одним значением для каждой точки выборки (строки), заданным в x.

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

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

Точки запроса, заданные как матрица. Задайте xq как p-by- n матрица для представления p точки в n-мерное пространство. xq обычно создается из однородной сетки, произведенной ndgrid.

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

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

ОпцияОписаниеНепрерывность
'linear' (по умолчанию)Линейная интерполяция на основе триангуляции.C0
'nearest'Интерполяция по ближайшему соседу.Прерывистый

Если method является [], затем griddatan использует значение по умолчанию 'linear' способ.

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

Специфичные для Qhull опции, заданные как массив ячеек. Список поддерживаемых опций см. в Qhull Quick Reference.

Если options является [], затем griddatan использует опции по умолчанию:

  • {'Qt' 'Qbb' 'Qc'} для 2-D и 3-D интерполяций.

  • {'Qt' 'Qbb' 'Qc' 'Qx'} для интерполяций в размерностях 4 +.

Если options является {''}, затем griddatan не использует никаких опций, даже значений по умолчанию.

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

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

свернуть все

Интерполированные значения, возвращенные как вектор длины p. Интерполированные значения в vq соответствуют точкам запроса (строкам) в xq.

Совет

  • Использовать нецелесообразно griddatan для интерполяции в размерностях, превышающих примерно 6-D, потому что память, требуемая базовой триангуляцией, растет экспоненциально с количеством размерностей.

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

См. также

| |

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