Интерполяция для 3-D данных с сеткой в формате meshgrid
возвращает интерполированные значения функции из трех переменных в конкретных точках запроса с помощью линейной интерполяции. Результаты всегда проходят через исходную выборку функции. 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);
The 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);
The 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
. Используйте 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
- Образец точек сеткиДискретизируйте точки сетки, заданные как действительные массивы или векторы. Образец точек сетки должен быть уникальным.
Если X
, Y
, и Z
являются массивами, затем они содержат координаты полной сетки (в формате meshgrid). Используйте meshgrid
функция для создания X
, Y
, и Z
массивы вместе. Размер этих массивов должен совпадать.
Если X
, Y
, и Z
являются векторами, затем они обрабатываются как векторы сетки. Значения в этих векторах должны быть строго монотонными, либо увеличивающимися, либо уменьшающимися.
Пример: [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
являются скалярами, тогда они являются координатами одной точки запроса в 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
k
- Коэффициент уточнения1
(по умолчанию) | вещественный, неотрицательный, целочисленный скалярКоэффициент уточнения, заданный как действительный, неотрицательный, целочисленный скаляр. Это значение задает количество раз, чтобы неоднократно делить интервалы уточненной сетки в каждой размерности. Это приводит к 2^k-1
интерполированные точки между выборочными значениями.
Если k
является 0
, затем Vq
то же, что и V
.
interp3(V,1)
то же, что и interp3(V)
.
Следующий рисунок изображает k=2
в одной плоскости R3. Существует 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 | Ничего | Массив, в котором длина | Если 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)
, так что это вовсе не монотонно.
Для 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];
Указания и ограничения по применению:
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
должны быть векторами или массивами того же типа (double или single). Если Xq
, Yq
, и Zq
являются массивами, тогда они должны иметь тот же размер. Если они являются векторами с различными длинами, то один из них должен иметь другую ориентацию.
method
должен быть 'linear'
или 'nearest'
.
Экстраполяция для входных входов вне границы не поддерживается.
Для получения дополнительной информации смотрите Запуск функций MATLAB на графическом процессоре (Parallel Computing Toolbox).
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.