interp3

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

Синтаксис

Vq = interp3(X,Y,Z,V,Xq,Yq,Zq)
Vq = interp3(V,Xq,Yq,Zq)
Vq = interp3(V)
Vq = interp3(V,k)
Vq = interp3(___,method)
Vq = interp3(___,method,extrapval)

Описание

пример

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. Сетка покрывает область, и интервал, и.

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

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

Создайте сетку запроса с разрядкой 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

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

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

Функция flow возвращает сетку в массивах, X, Y, Z. Сетка покрывает область, и интервал, и.

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

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

Создайте сетку запроса с разрядкой 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

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

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

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

V = gallery('uniformdata',50,100,30,0);

Оцените 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.

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

свернуть все

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

Примечание

В будущем релизе interp3 не примет смешанные комбинации векторов строки и столбца для выборки и запросит сетки. Вместо этого необходимо создать полную сетку с помощью meshgrid. Также, если у вас есть большой набор данных, можно использовать griddedInterpolant вместо interp3.

Пример: [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.

Примечание

В будущем релизе interp3 не примет смешанные комбинации векторов строки и столбца для выборки и запросит сетки. Вместо этого необходимо создать полную сетку с помощью meshgrid. Также, если у вас есть большой набор данных, можно использовать griddedInterpolant вместо interp3.

Пример: [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'

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

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

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

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

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

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

  • Производит меньше волнистостей, чем '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
'none'

Массив, в котором длина i th размерность
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), таким образом, это не является монотонным вообще.

Полная Сетка (в meshgrid Формате)

Для 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. ith массив содержит координаты в ith размерности.

Например, следующий код задает точки, (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

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