interp3

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

Описание

пример

Vq = interp3(X,Y,Z,V,Xq,Yq,Zq) возвращает интерполированные значения функции трех переменных в определенных точках запроса с помощью линейной интерполяции. Результаты всегда проходят через исходную выборку функции. XY, и Z содержите координаты точек выборки. V содержит соответствующие значения функции в каждой точке выборки. Xqyq , и 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'самый близкий, 'cubic', 'makima', или 'spline'. Методом по умолчанию является 'linear'.

пример

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

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

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

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

Примеры

свернуть все

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

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

flow функция возвращает сетку в массивах, XYZ. Сетка покрывает область, 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

Создайте сетку запроса с разрядкой 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 функция возвращает сетку в массивах, XYZ. Сетка покрывает область, 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

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

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

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

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

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

Оцените V в трех точках вне области xY, и 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 потому что они вне области xY, и z.

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

свернуть все

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

Примечание

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

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

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

Демонстрационные значения, заданные как действительный или комплексный массив. Требования размера для V зависьте от размера XY, и Z:

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

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

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

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

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

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

  • Если Xqyq , и Zq скаляры, затем они - координаты точки единого запроса в R 3.

  • Если Xqyq , и Zq векторы различных ориентаций, затем Xqyq , и Zq обработаны как векторы сетки в R 3.

  • Если Xqyq , и Zq векторы, одного размера и ориентация, затем Xqyq , и Zq обработаны как рассеянные точки в R 3.

  • Если Xqyq , и Zq массивы, одного размера, затем они представляют любого полная сетка точек запроса (в meshgrid формат) или рассеянные точки в R 3.

Примечание

В будущем релизе, 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 в одной плоскости R 3. Существует 72 интерполированных значения красного цвета и 9 демонстрационных значений черного цвета цвета.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Пример 5

Пример: 5+1i

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

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

свернуть все

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

СинтаксисыОсобые условияРазмер VqПример
interp3(X,Y,Z,V,Xq,Yq,Zq)
interp3(V,Xq,Yq,Zq)
и изменения этих синтаксисов, которые включают method или extrapval
Xqyq , и Zq скаляры.Скалярsize(Vq) = [1 1] когда вы передаете Xqyq , и Zq как скаляры.
То же самое как вышеXqyq , и Zq векторы, одного размера и ориентация.Вектор того же размера и ориентации как Xqyq , и ZqЕсли size(Xq) = [100 1],
и size(Yq) = [100 1],
и size(Zq) = [100 1],
затем size(Vq) = [100 1].
То же самое как вышеXqyq , и 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].
То же самое как вышеXqyq , и Zq массивы, одного размера.Массив одного размера с Xqyq , и 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, полная сетка состоит из трех массивов, элементы которых представляют сетку точек, которые задают область в R 3. Первый массив содержит x - координаты, второй массив содержит y - координаты, и третий массив содержит z - координаты. Значения в каждом массиве варьируются по одному измерению и являются постоянными по другим измерениям.

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

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

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

Например, следующий код создает векторы сетки для области, 1 ≤ x ≤ 3, 4 ≤ y ≤ 5, и 6 ≤ z ≤ 8:

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

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

Для interp3, рассеянные точки состоят из трех массивов или векторов, Xqyq , и Zq, это задает набор точек, рассеянных в R 3. 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