interp3

Интерполяция для 3-D данных с сеткой в формате meshgrid

Описание

пример

Vq = interp3(X,Y,Z,V,Xq,Yq,Zq) возвращает интерполированные значения функции из трех переменных в конкретных точках запроса с помощью линейной интерполяции. Результаты всегда проходят через исходную выборку функции. X, Y, и Z содержать координаты точек выборки. V содержит соответствующие значения функций в каждой точке выборки. Xq, Yq, и Zq содержать координаты точек запроса.

Vq = interp3(V,Xq,Yq,Zq) принимает сетку точек выборки по умолчанию. Сетчатые точки по умолчанию покрывают область, X=1:n, Y=1:m, Z=1:p, где [m,n,p] = size(V). Используйте этот синтаксис, когда вы хотите сохранить память и не обеспокоены абсолютными расстояниями между точками.

Vq = interp3(V) возвращает интерполированные значения на уточненной сетке, формируемой путем деления интервала между выборочными значениями один раз в каждой размерности.

Vq = interp3(V,k) возвращает интерполированные значения на уточненной сетке, формируемой многократным сокращением интервалов вдвое k времени в каждой размерности. Это приводит к 2^k-1 интерполированные точки между выборочными значениями.

пример

Vq = interp3(___,method) задает альтернативный метод интерполяции: 'linear', 'nearest', 'cubic', 'makima', или 'spline'. Метод по умолчанию 'linear'.

пример

Vq = interp3(___,method,extrapval) также задает extrapvalскалярное значение, которое назначается всем запросам, которые находятся вне области точек выборки.

Если вы опускаете extrapval аргумент для запросов вне области точек выборки, затем основанный на method аргумент interp3 возвращает одно из следующих значений:

  • Экстраполированные значения для 'spline' и 'makima' методы

  • NaN значения для других методов интерполяции

Примеры

свернуть все

Загрузите точки и значения функции потока, выбранные в 10 точках в каждой размерности.

[X,Y,Z,V] = flow(10);

The flow функция возвращает сетку в массивах, X, Y, Z. Сетка охватывает область, 0.1X10, -3Y3, -3Z3, и интервал является ΔX=0.5, ΔY=0.7, и ΔZ=0.7.

Теперь постройте срезы по объему выборки в: X=6, X=9, Y=2, и Z=0.

figure
slice(X,Y,Z,V,[6 9],2,0);
shading flat

Figure contains an axes. The axes contains 4 objects of type surface.

Создайте сетку запросов с интервалом 0,25.

[Xq,Yq,Zq] = meshgrid(.1:.25:10,-3:.25:3,-3:.25:3);

Интерполируйте в точках в сетке запроса и постройте график результатов с помощью тех же плоскостей разбиения.

Vq = interp3(X,Y,Z,V,Xq,Yq,Zq);
figure
slice(Xq,Yq,Zq,Vq,[6 9],2,0);
shading flat

Figure contains an axes. The axes contains 4 objects of type surface.

Загрузите точки и значения функции потока, выбранные в 10 точках в каждой размерности.

[X,Y,Z,V] = flow(10);

The flow функция возвращает сетку в массивах, X, Y, Z. Сетка охватывает область, 0.1X10, -3Y3, -3Z3, и интервал является ΔX=0.5, ΔY=0.7, и ΔZ=0.7.

Постройте срезы по объему выборки в: X=6, X=9, Y=2, и Z =0.

figure
slice(X,Y,Z,V,[6 9],2,0);
shading flat

Figure contains an axes. The axes contains 4 objects of type surface.

Создайте сетку запросов с интервалом 0,25.

[Xq,Yq,Zq] = meshgrid(.1:.25:10,-3:.25:3,-3:.25:3);

Интерполяция в точках в сетке запросов с помощью 'cubic' метод интерполяции. Затем постройте график результатов.

Vq = interp3(X,Y,Z,V,Xq,Yq,Zq,'cubic');
figure
slice(Xq,Yq,Zq,Vq,[6 9],2,0);
shading flat

Figure contains an axes. The axes contains 4 objects of type surface.

Создайте векторы сетки, x, y, и z. Эти векторы определяют точки, связанные со значениями в V.

x = 1:100;
y = (1:50)';
z = 1:30;

Определите значения выборки, чтобы быть массивом случайных чисел 50 на 100 на 30, V. Используйте rand функция для создания массива.

rng('default')
V = rand(50,100,30);

Оценка V в трех точках вне области x, y, и z. Задайте extrapval = -1.

xq = [0 0 0];
yq = [0 0 51];
zq = [0 101 102];
vq = interp3(x,y,z,V,xq,yq,zq,'linear',-1)
vq = 1×3

    -1    -1    -1

Все три точки вычисляются как -1 потому что они находятся вне области x, y, и z.

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

свернуть все

Дискретизируйте точки сетки, заданные как действительные массивы или векторы. Образец точек сетки должен быть уникальным.

  • Если X, Y, и Z являются массивами, затем они содержат координаты полной сетки (в формате meshgrid). Используйте meshgrid функция для создания X, Y, и Z массивы вместе. Размер этих массивов должен совпадать.

  • Если X, Y, и Z являются векторами, затем они обрабатываются как векторы сетки. Значения в этих векторах должны быть строго монотонными, либо увеличивающимися, либо уменьшающимися.

Пример: [X,Y,Z] = meshgrid(1:30,-10:10,1:5)

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

Выборочные значения, заданные как действительный или комплексный массив. Требования к размеру для V зависят от размера X, Y, и Z:

  • Если X, Y, и Z являются массивами, представляющими полную сетку (в meshgrid формат), затем размер V соответствует размеру X, Y, или Z .

  • Если X, Y, и Z являются векторами сетки, затем size(V) = [length(Y) length(X) length(Z)].

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

Пример: rand(10,10,10)

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

Точки запроса, заданные как действительные скаляры, векторы или массивы.

  • Если Xq, Yq, и Zq являются скалярами, тогда они являются координатами одной точки запроса в R3.

  • Если Xq, Yq, и Zq являются векторами различной ориентации, тогда Xq, Yq, и Zq рассматриваются как векторы сетки в R3.

  • Если Xq, Yq, и Zq являются векторами одного размера и ориентации, затем Xq, Yq, и Zq рассматриваются как рассеянные точки в R3.

  • Если Xq, Yq, и Zq являются массивами одинакового размера, затем они представляют собой либо полную сетку точек запроса (в meshgrid формат) или рассеянные точки в R3.

Пример: [Xq,Yq,Zq] = meshgrid((1:0.1:10),(-5:0.1:0),3:5)

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

Коэффициент уточнения, заданный как действительный, неотрицательный, целочисленный скаляр. Это значение задает количество раз, чтобы неоднократно делить интервалы уточненной сетки в каждой размерности. Это приводит к 2^k-1 интерполированные точки между выборочными значениями.

Если k является 0, затем Vq то же, что и V.

interp3(V,1) то же, что и interp3(V).

Следующий рисунок изображает k=2 в одной плоскости R3. Существует 72 интерполированные значения в красном цвете и 9 значений в чёрной выборке.

Пример: interp3(V,2)

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

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

МетодОписаниеНепрерывностьКомментарии
'linear'Интерполированное значение в точке запроса основано на линейной интерполяции значений в соседних точках сетки в каждой соответствующей размерности. Это метод интерполяции по умолчанию.C0
  • Требуется по крайней мере две точки сетки в каждой размерности

  • Требуется больше памяти, чем 'nearest'

'nearest'Интерполированное значение в точке запроса является значением в ближайшей точке сетки расчета. Прерывистый
  • Требуется две точки сетки в каждой размерности

  • Самые быстрые расчеты со скромными требованиями к памяти

'cubic'Интерполированное значение в точке запроса основано на кубической интерполяции значений в соседних точках сетки в каждой соответствующей размерности. Интерполяция основана на кубической свертке.C1
  • Сетка должна иметь равномерные интервалы в каждой размерности, но интервалы не должны быть одинаковыми для всех размерностей

  • Требуется по крайней мере четыре точки в каждой размерности

  • Требуется больше памяти и времени расчетов, чем 'linear'

'makima'Модифицированная кубическая эрмитовая интерполяция Акимы. Интерполированное значение в точке запроса основано на кусочно-линейной функции полиномов со степенью не более трех, оцененных с использованием значений соседних точек сетки в каждой соответствующей размерности. Формула Акимы изменена, чтобы избежать перерегулирования.C1
  • Требуется не менее 2 точек в каждой размерности

  • Производит меньше волн, чем 'spline'

  • Время расчета обычно меньше 'spline', но требования к памяти схожи

'spline'Интерполированное значение в точке запроса основано на кубической интерполяции значений в соседних точках сетки в каждой соответствующей размерности. Интерполяция основана на кубическом сплайне с использованием граничных условий и условий отсутствия узла.C2
  • Требуется четыре точки в каждой размерности

  • Требуется больше памяти и времени расчетов, чем 'cubic'

Значение функции вне области X, Y, и Z, заданный как действительный или комплексный скаляр. interp3 возвращает это постоянное значение для всех точек за пределами области X, Y, и Z.

Пример: 5

Пример: 5+1i

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

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

свернуть все

Интерполированные значения, возвращенные как действительный или комплексный скаляр, вектор или массив. Размер и форма Vq зависит от используемого синтаксиса и, в некоторых случаях, от размера и значения входных параметров.

СинтаксисыОсобые условияРазмер VqПример
interp3(X,Y,Z,V,Xq,Yq,Zq)
interp3(V,Xq,Yq,Zq)
и изменения этих синтаксисов, которые включают method или extrapval
Xq, Yq, и Zq являются скалярами.Скалярsize(Vq) = [1 1] когда вы проходите Xq, Yq, и Zq как скаляры.
То же, что и вышеXq, Yq, и Zq являются векторами одного размера и ориентации.Вектор того же размера и ориентации, что и Xq, Yq, и ZqЕсли size(Xq) = [100 1],
и size(Yq) = [100 1],
и size(Zq) = [100 1],
затем size(Vq) = [100 1].
То же, что и вышеXq, Yq, и Zq являются векторами смешанной ориентации.size(Vq) = [length(Y) length(X) length(Z)]Если size(Xq) = [1 100],
и size(Yq) = [50 1],
и size(Zq) = [1 5],
затем size(Vq) = [50 100 5].
То же, что и вышеXq, Yq, и Zq - массивы одинакового размера.Массив того же размера, что и Xq, Yq, и ZqЕсли size(Xq) = [50 25],
и size(Yq) = [50 25],
и size(Zq) = [50 25],
затем size(Vq) = [50 25].
interp3(V,k)
и изменения этого синтаксиса, которые включают method или extrapval
Ничего

Массив, в котором длина ith размерность является
2^k * (size(V,i)-1)+1

Если size(V) = [10 12 5],
и k = 3,
затем size(Vq) = [73 89 33].

Подробнее о

свернуть все

Строго монотонный

A множества значений, которые всегда увеличиваются или уменьшаются, без обращений. Для примера, последовательности, a = [2 4 6 8] является строго монотонным и увеличивается. Последовательность, b = [2 4 4 6 8] не является строго монотонным, потому что нет никакого изменения в значении между b(2) и b(3). Последовательность, c = [2 4 6 8 6] содержит сторнирование между c(4) и c(5), так что это вовсе не монотонно.

Полная сетка (в формате meshgrid)

Для interp3полная сетка состоит из трех массивов, элементы которых представляют собой сетку точек, которые определяют область в R3. Первый массив содержит x -cordinates, второй массив содержит y -cordinates, а третий массив содержит z -cordinates. Значения в каждом массиве варьируются вдоль одной размерности и являются постоянными вдоль других размерностей.

Значения в x-массиве строго монотонны, увеличиваются и варьируются по второму измерению. Значения в y-массиве строго монотонны, увеличиваются и варьируются по первой размерности. Значения в z-массиве строго монотонны, увеличиваются и варьируются по третьей размерности. Используйте meshgrid функция для создания полной сетки, в которую можно перейти interp3.

Векторы сетки

Для interp3векторы сетки состоят из трех векторов смешанной ориентации, которые определяют точки на сетке в R3.

Например, следующий код создает векторы сетки для области, 1 ≤ <reservedrangesplaceholder2> ≤ 3, 4 ≤ <reservedrangesplaceholder1> ≤ 5 и 6 ≤ <reservedrangesplaceholder0> ≤ 8:

x = 1:3;
y = (4:5)';
z = 6:8;

Рассеянные точки

Для interp3рассеянные точки состоят из трех массивов или векторов, Xq, Yq, и Zq, которые определяют набор точек, рассеянных в R3. i-й массив содержит координаты в i-м размерности.

Например, следующий код определяет точки (1, 19, 10), (6, 40, 1), (15, 33, 22) и (0, 61, 13).

Xq = [1 6; 15 0];
Yq = [19 40; 33 61];
Zq = [10 1; 22 13];

Расширенные возможности

.

См. также

| | |

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