Интерполяция для 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(___,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
.
X, y, z
Демонстрационные узлы решеткиДемонстрационные узлы решетки, заданные как действительные массивы или векторы. Демонстрационные узлы решетки должны быть уникальными.
Если X
, Y
и Z
являются массивами, то они содержат координаты полной сетки (в meshgrid формате). Используйте функцию meshgrid
, чтобы создать X
, Y
и массивы Z
вместе. Эти массивы должны быть одного размера.
Если X
, Y
и Z
являются векторами, то они обработаны как сетка векторы. Значения в этих векторах должны быть строго монотонными и увеличиться.
В будущем релизе interp3
не примет смешанные комбинации векторов строки и столбца для выборки и запросит сетки. Вместо этого необходимо создать полную сетку с помощью meshgrid
. Также, если у вас есть большой набор данных, можно использовать griddedInterpolant
вместо interp3
.
Пример: [X,Y,Z] = meshgrid(1:30,-10:10,1:5)
Типы данных: single | double
V
Демонстрационные значенияДемонстрационные значения, заданные как действительный или комплексный массив. Требования размера для 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
Точки запросаТочки запроса, заданные как действительные скаляры, векторы или массивы.
Если Xq
, Yq
и Zq
являются скалярами, то они - координаты точки единого запроса в R 3.
Если Xq
, Yq
и Zq
являются векторами различных ориентаций, то Xq
, Yq
и Zq
обработаны как векторы сетки в R 3.
Если Xq
, Yq
и Zq
являются векторами, одного размера и ориентация, то Xq
, Yq
и Zq
обработаны как рассеянные точки в R 3.
Если Xq
, Yq
и Zq
являются массивами, одного размера, то они представляют любого полная сетка точек запроса (в формате meshgrid
) или рассеянные точки в R 3.
В будущем релизе interp3
не примет смешанные комбинации векторов строки и столбца для выборки и запросит сетки. Вместо этого необходимо создать полную сетку с помощью meshgrid
. Также, если у вас есть большой набор данных, можно использовать griddedInterpolant
вместо interp3
.
Пример: [Xq,Yq,Zq] = meshgrid((1:0.1:10),(-5:0.1:0),3:5)
Типы данных: single | double
k
Фактор улучшения1
(значение по умолчанию) | действительный, неотрицательный, целочисленный скалярФактор улучшения, заданный как действительное, неотрицательное, целочисленный скаляр. Это значение задает число раз, чтобы неоднократно разделить интервалы усовершенствованной сетки в каждой размерности. Это приводит к интерполированным точкам 2^k-1
между демонстрационными значениями.
Если k
является 0
, то Vq
совпадает с V
.
interp3(V,1)
совпадает с interp3(V)
.
Следующий рисунок изображает k=2
в одной плоскости R 3. Существует 72 интерполированных значения красного цвета и 9 демонстрационных значений черного цвета цвета.
Пример: interp3(V,2)
Типы данных: single | double
method
— Метод интерполяции'linear'
(значение по умолчанию) | 'nearest'
| 'cubic'
| 'spline'
| 'makima'
Метод интерполяции, заданный как одна из опций в этой таблице.
Метод | Описание | Непрерывность | Комментарии |
---|---|---|---|
'linear' | Интерполированное значение в точке запроса основано на линейной интерполяции значений в соседних узлах решетки в каждой соответствующей размерности. Это - метод интерполяции по умолчанию. | C0 |
|
'nearest' | Интерполированное значение в точке запроса является значением в самом близком демонстрационном узле решетки. | Прерывистый |
|
'cubic' | Интерполированное значение в точке запроса основано на кубичной интерполяции значений в соседних узлах решетки в каждой соответствующей размерности. Интерполяция основана на кубической свертке. | C1 |
|
'makima' | Измененный Акима кубическая интерполяция Эрмита. Интерполированное значение в точке запроса основано на кусочной функции полиномов со степенью самое большее три оцененных использования значений соседних узлов решетки в каждой соответствующей размерности. Формула Акима изменяется, чтобы избежать перерегулирований. | C1 |
|
'spline' | Интерполированное значение в точке запроса основано на кубичной интерполяции значений в соседних узлах решетки в каждой соответствующей размерности. Интерполяция основана на кубическом сплайне с помощью граничных условий не-узла. | C2 |
|
extrapval
Значение функции вне области X
, Y
и Z
Значение функции вне области X
, Y
и Z
, заданного как действительный или комплексный скаляр. interp3
возвращает это постоянное значение для всех точек вне области X
, Y
и Z
.
Пример 5
Пример: 5+1i
Типы данных: single | double
Поддержка комплексного числа: Да
Vq
Интерполированные значенияИнтерполированные значения, возвращенные как действительный или комплексный скаляр, вектор или массив. Размер и форма 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' | Массив, в котором длина | Если 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
полная сетка состоит из трех массивов, элементы которых представляют сетку точек, которые задают область в 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
рассеянные точки состоят из трех массивов или векторов, Xq
, Yq
и 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];
Указания и ограничения по применению:
Xq
, Yq
и Zq
должны быть одного размера. Используйте meshgrid
, чтобы оценить на сетке.
Для лучших результатов обеспечьте X
, Y
и Z
как векторы.
Генерация кода не поддерживает метод интерполяции 'makima'
.
Для метода интерполяции 'cubic'
, если сетка не имеет универсального интервала, заканчивается ошибка. В этом случае используйте метод интерполяции 'spline'
.
Для лучших результатов, когда вы используете метод интерполяции 'spline'
:
Используйте meshgrid
, чтобы создать входные параметры Xq
, Yq
и Zq
.
Используйте небольшое количество точек интерполяции относительно размерностей V
. Интерполяция по большому набору рассеянных точек может быть неэффективной.
Указания и ограничения по применению:
V
должен быть двойным или одним трехмерным массивом. V
может быть действительным или комплексным.
X
, Y
и Z
должны:
Имейте тот же тип (дважды или один).
Будьте конечными векторами или трехмерными массивами с увеличением и неповторением элементов в соответствующих размерностях.
Выровняйтесь с осями декартовой системы координат, когда X
, Y
и Z
являются трехмерными массивами (как будто они были произведены meshgrid
).
Имейте размерности, сопоставимые с V
.
Xq
, Yq
и Zq
должны быть векторами или массивами того же типа (дважды или один). Если Xq
, Yq
и Zq
являются массивами, то у них должен быть тот же размер. Если они - векторы с различными длинами, то у одного из них должна быть различная ориентация.
method
должен быть 'linear'
or'nearest'
.
Экстраполяция для входа из контура не поддержана.
Для получения дополнительной информации смотрите функции MATLAB Выполнения на графическом процессоре (Parallel Computing Toolbox).
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.