exponenta event banner

interp3

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

Описание

пример

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

flow функция возвращает сетку в массивах, X, Y, Z. Сетка покрывает область, 0.1≤X≤10, - 3≤Y≤3, - 3≤Z≤3, а шаг равен Δ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);

flow функция возвращает сетку в массивах, X, Y, Z. Сетка покрывает область, 0.1≤X≤10, - 3≤Y≤3, - 3≤Z≤3, а шаг равен Δ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'Модифицированная Akima кубическая эрмитовая интерполяция. Интерполированное значение в точке запроса основано на кусочной функции многочленов со степенью не более трех, вычисленной с использованием значений соседних точек сетки в каждом соответствующем измерении. Формула Акимы модифицируется, чтобы избежать переполнения.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
Ничего

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

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

Подробнее

свернуть все

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

Набор значений, которые всегда увеличиваются или уменьшаются без сторнирования. Например, последовательность, 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), так что это совсем не монотонно.

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

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

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

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

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

Например, следующий код создает векторы сетки для области, 1 ≤ x ≤ 3, 4 ≤ y ≤ 5 и 6 ≤ z ≤ 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