Интерполяция для 1D, 2D, 3-D, и данных с координатной сеткой N-D в ndgrid формате
Vq = interpn(X1,X2,...,Xn,V,Xq1,Xq2,...,Xqn)
Vq = interpn(V,Xq1,Xq2,...,Xqn)
Vq = interpn(V)
Vq = interpn(V,k)
Vq = interpn(___,method)
Vq = interpn(___,method,extrapval)
возвращает интерполированные значения функции переменных n в определенных точках запроса с помощью линейной интерполяции. Результаты всегда проходят через исходную выборку функции. Vq
= interpn(X1,X2,...,Xn
,V
,Xq1,Xq2,...,Xqn
)X1,X2,...,Xn
содержит координаты точек выборки. V
содержит соответствующие значения функции в каждой точке выборки. Xq1,Xq2,...,Xqn
содержит координаты точек запроса.
принимает сетку по умолчанию точек выборки. Сетка по умолчанию состоит из точек, 1,2,3... ni в каждой размерности. Значение ni является длиной ith размерности в Vq
= interpn(V
,Xq1,Xq2,...,Xqn
)V
. Используйте этот синтаксис когда это необходимо, чтобы сохранить память, и не касаются абсолютных расстояний между точками.
также задает Vq
= interpn(___,method
,extrapval
)extrapval
, скалярное значение, которое присвоено всем запросам, которые лежат вне области точек выборки.
Если вы не используете аргумент extrapval
для запросов вне области точек выборки, то на основе аргумента method
interpn
возвращает одно из следующего:
Экстраполируемые значения для 'spline'
и методов 'makima'
Значения NaN
для других методов интерполяции
Задайте точки выборки и значения.
x = [1 2 3 4 5]; v = [12 16 31 10 6];
Задайте точки запроса, xq
, и интерполируйте.
xq = (1:0.1:5);
vq = interpn(x,v,xq,'cubic');
Постройте результат.
figure plot(x,v,'o',xq,vq,'-'); legend('Samples','Cubic Interpolation');
Создайте набор узлов решетки и соответствующих демонстрационных значений.
[X1,X2] = ndgrid((-5:1:5)); R = sqrt(X1.^2 + X2.^2)+ eps; V = sin(R)./(R);
Интерполируйте по более прекрасной сетке с помощью ntimes=1
.
Vq = interpn(V,'cubic');
mesh(Vq);
Создайте векторы сетки, x1
, x2
и x3
. Эти векторы задают точки, сопоставленные со значениями в V
.
x1 = 1:100; x2 = (1:50)'; x3 = 1:30;
Задайте демонстрационные значения, чтобы быть 100 50 30 массивами случайных чисел, V
. Используйте функцию gallery
, чтобы создать массив.
V = gallery('uniformdata',100,50,30,0);
Оцените V
в трех точках вне области x1
, x2
и x3
. Задайте extrapval = -1
.
xq1 = [0 0 0];
xq2 = [0 0 51];
xq3 = [0 101 102];
vq = interpn(x1,x2,x3,V,xq1,xq2,xq3,'linear',-1)
vq = 1×3
-1 -1 -1
Все три точки оценивают к -1
, потому что они вне области x1
, x2
и x3
.
Задайте анонимную функцию, которая представляет.
f = @(x,y,z,t) t.*exp(-x.^2 - y.^2 - z.^2);
Создайте сетку точек в. Затем передайте точки через функцию, чтобы создать демонстрационную стоимость,
V
.
[x,y,z,t] = ndgrid(-1:0.2:1,-1:0.2:1,-1:0.2:1,0:2:10); V = f(x,y,z,t);
Теперь, создайте сетку запроса.
[xq,yq,zq,tq] = ...
ndgrid(-1:0.05:1,-1:0.08:1,-1:0.05:1,0:0.5:10);
Интерполируйте V
в точках запроса.
Vq = interpn(x,y,z,t,V,xq,yq,zq,tq);
Создайте фильм, чтобы показать результаты.
figure('renderer','zbuffer'); nframes = size(tq, 4); for j = 1:nframes slice(yq(:,:,:,j),xq(:,:,:,j),zq(:,:,:,j),... Vq(:,:,:,j),0,0,0); caxis([0 10]); M(j) = getframe; end movie(M);
X1, X2, Xn
Демонстрационные узлы решеткиДемонстрационные узлы решетки, заданные как действительные массивы или векторы. Демонстрационные узлы решетки должны быть уникальными.
Если X1,X2,...,Xn
является массивами, то они содержат координаты полной сетки (в ndgrid формате). Используйте функцию ndgrid
, чтобы создать массивы X1,X2,...,Xn
вместе. Эти массивы должны быть одного размера.
Если X1,X2,...,Xn
является векторами, то они обработаны как векторы сетки. Значения в этих векторах должны быть строго монотонными и увеличиться.
В будущем релизе interpn
не примет смешанные комбинации векторов строки и столбца для выборки и запросит сетки. Вместо этого необходимо создать полную сетку с помощью ndgrid
. Также, если у вас есть большой набор данных, можно использовать griddedInterpolant
вместо interpn
.
Пример: [X1,X2,X3,X4] = ndgrid(1:30,-10:10,1:5,10:13)
Типы данных: single | double
V
Демонстрационные значенияДемонстрационные значения, заданные как действительный или комплексный массив. Требования размера для V
зависят от размера X1,X2,...,Xn
:
Если X1,X2,...,Xn
является массивами, представляющими полную сетку (в формате ndgrid
), то размер V
совпадает с размером любого массива, X1,X2,...,Xn
.
Если X1,X2,...,Xn
является векторами сетки, то V
является массивом, i
которого th размерность является той же длиной как вектор сетки Xi
, где i= 1,2,...n
.
Если V
содержит комплексные числа, то interpn
интерполирует действительные и мнимые части отдельно.
Пример: rand(10,5,3,2)
Типы данных: single | double
Поддержка комплексного числа: Да
Xq1,Xq2,...,Xqn
— Точки запросаТочки запроса, заданные как действительные скаляры, векторы или массивы.
Если Xq1,Xq2,...,Xqn
является скалярами, то они - координаты точки единого запроса в R n.
Если Xq1,Xq2,...,Xqn
является векторами различных ориентаций, то Xq1,Xq2,...,Xqn
обработан как векторы сетки в R n.
Если Xq1,Xq2,...,Xqn
является векторами, одного размера и ориентация, то Xq1,Xq2,...,Xqn
обработан как рассеянные точки в R n.
Если Xq1,Xq2,...,Xqn
является массивами, одного размера, то они представляют любого полная сетка точек запроса (в формате ndgrid
) или рассеянные точки в R n.
В будущем релизе interpn
не примет смешанные комбинации векторов строки и столбца для выборки и запросит сетки. Вместо этого необходимо создать полную сетку с помощью ndgrid
. Также, если у вас есть большой набор данных, можно использовать griddedInterpolant
вместо interpn
.
Пример: [X1,X2,X3,X4] = ndgrid(1:10,1:5,7:9,10:11)
Типы данных: single | double
k
Фактор улучшения1
(значение по умолчанию) | действительный, неотрицательный, целочисленный скалярФактор улучшения, заданный как действительное, неотрицательное, целочисленный скаляр. Это значение задает число раз, чтобы неоднократно разделить интервалы усовершенствованной сетки в каждой размерности. Это приводит к интерполированным точкам 2^k-1
между демонстрационными значениями.
Если k
является 0
, то Vq
совпадает с V
.
interpn(V,1)
совпадает с interpn(V)
.
Следующий рисунок изображает k=2
в R 2. Существует 72 интерполированных значения красного цвета и 9 демонстрационных значений черного цвета цвета.
Пример: interpn(V,2)
Типы данных: single | double
method
— Метод интерполяции'linear'
(значение по умолчанию) | 'nearest'
| 'pchip'
| 'cubic'
| 'spline'
| 'makima'
Метод интерполяции, заданный как одна из опций в этой таблице.
Метод | Описание | Непрерывность | Комментарии |
---|---|---|---|
'linear' | Интерполированное значение в точке запроса основано на линейной интерполяции значений в соседних узлах решетки в каждой соответствующей размерности. Это - метод интерполяции по умолчанию. | C0 |
|
'nearest' | Интерполированное значение в точке запроса является значением в самом близком демонстрационном узле решетки. | Прерывистый |
|
'pchip' | Сохраняющая форму кусочная кубичная интерполяция (только для 1D). Интерполированное значение в точке запроса основано на сохраняющей форму кусочной кубичной интерполяции значений в соседних узлах решетки. | C1 |
|
'cubic' | Интерполированное значение в точке запроса основано на кубичной интерполяции значений в соседних узлах решетки в каждой соответствующей размерности. Интерполяция основана на кубической свертке. | C1 |
|
'makima' | Измененный Акима кубическая интерполяция Эрмита. Интерполированное значение в точке запроса основано на кусочной функции полиномов со степенью самое большее три оцененных использования значений соседних узлов решетки в каждой соответствующей размерности. Формула Акима изменяется, чтобы избежать перерегулирований. | C1 |
|
'spline' | Интерполированное значение в точке запроса основано на кубичной интерполяции значений в соседних узлах решетки в каждой соответствующей размерности. Интерполяция основана на кубическом сплайне с помощью граничных условий не-узла. | C2 |
|
extrapval
Значение функции вне области X1,X2,...,Xn
Значение функции вне области X1,X2,...,Xn
, заданного как действительный или комплексный скаляр. interpn
возвращает это постоянное значение для всех точек вне области X1,X2,...,Xn
.
Пример 5
Пример: 5+1i
Типы данных: single | double
Поддержка комплексного числа: Да
Vq
Интерполированные значенияИнтерполированные значения, возвращенные как действительный или комплексный скаляр, вектор или массив. Размер и форма Vq
зависят от синтаксиса, который вы используете и, в некоторых случаях, размер и значение входных параметров.
Синтаксисы | Особые условия | Размер Vq | Пример |
---|---|---|---|
interpn(X1,...,Xn,V,Xq1,...,Xqn) interpn(V,Xq1,...,Xqn) и изменения этих синтаксисов, которые включают method или extrapval | Xq1,...,Xqn является скалярами | Скаляр | size(Vq) = [1 1] , когда вы передаете Xq1,...,Xqn как скаляры. |
То же самое как выше | Xq1,...,Xqn является векторами, одного размера и ориентация | Вектор того же размера и ориентации как Xq1,...,Xqn | В 3-D, если size(Xq1) = [100 1] ,и size(Xq2) = [100 1] , и size(Xq3) = [100 1] , затем size(Vq) = [100 1] . |
То же самое как выше | Xq1,...,Xqn является векторами смешанной ориентации | size(Vq) = [length(Xq1),...,length(Xqn)] | В 3-D, если size(Xq1) = [1 100] ,и size(Xq2) = [50 1] , и size(Xq3) = [1 5] ,затем size(Vq) = [100 50 5] . |
То же самое как выше | Xq1,...,Xqn является массивами, одного размера | Массив, одного размера как Xq1,...,Xqn | В 3-D, если size(Xq1) = [50 25] ,и size(Xq2) = [50 25] , и size(Xq3) = [50 25] , затем size(Vq) = [50 25] . |
interpn(V,k) и изменения этого синтаксиса, которые включают method или extrapval | 'none' | Массив, в котором длина | В 3-D, если 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)
, таким образом, это не является монотонным вообще.
Для interpn
полная сетка состоит из массивов n, X1,X2,...,Xn
, элементы которого представляют сетку точек в R n. ith массив, Xi
, содержит строго монотонные, увеличивающие значения, которые отличаются наиболее быстро по ith измерению.
Используйте функцию ndgrid
, чтобы создать полную сетку, которую можно передать interpn
. Например, следующий код создает полную сетку в R 2 для области, 1 ≤ X1 ≤ 3, 1 ≤ X2 ≤ 4.
[X1,X2] = ndgrid(-1:3,(1:4))
X1 = -1 -1 -1 -1 0 0 0 0 1 1 1 1 2 2 2 2 3 3 3 3 X2 = 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4
Для interpn
векторы сетки состоят из векторов n смешанной ориентации, которые задают точки сетки в R n.
Например, следующий код создает векторы сетки в R 3 для области, 1 ≤ x1 ≤ 3, 4 ≤ x2 ≤ 5, и 6 ≤x3 ≤ 8:
x1 = 1:3; x2 = (4:5)'; x3 = 6:8;
Для interpn
рассеянные точки состоят из массивов n или векторов, Xq1,Xq2,...,Xqn
, которые задают набор точек, рассеянных в R n. i
th массив, Xi
, содержит координаты в i
th размерность.
Например, следующий код задает точки, (1, 19, 10), (6, 40, 1), (15, 33, 22), и (0, 61, 13) в R 3.
Xq1 = [1 6; 15 0]; Xq2 = [19 40; 33 61]; Xq3 = [10 1; 22 13];
Указания и ограничения по применению:
Для лучших результатов обеспечьте X1,X2,...,Xn
как векторы.
Генерация кода не поддерживает метод интерполяции 'makima'
.
Генерация кода не поддерживает 'cubic'
или методы интерполяции 'spline'
для 2D и более высокой интерполяции.
Метод интерполяции должен быть постоянным вектором символов.
Указания и ограничения по применению:
Максимум пяти размерностей поддерживается.
V
должен быть двойным или одним массивом N-D. V
может быть действительным или комплексным.
X1,X2,...,Xn
, Y
должен:
Имейте тот же тип (дважды или один).
Будьте конечными векторами или массивами N-D с увеличением и неповторением элементов в соответствующих размерностях.
Выровняйтесь с осями декартовой системы координат, когда X1,X2,...,Xn
является массивами N-D (как будто они были произведены ndgrid
).
Имейте размерности, сопоставимые с V
.
X1,X2,...,Xn
должен быть векторами или массивами того же типа (дважды или один). Если X1,X2,...,Xn
является массивами, то у них должен быть тот же размер. Если они - векторы с различными длинами, то у одного из них должна быть различная ориентация.
method
должен быть 'linear'
or'nearest'
.
Экстраполяция для входа из контура не поддержана.
Для получения дополнительной информации смотрите функции MATLAB Выполнения на графическом процессоре (Parallel Computing Toolbox).
Вы щелкнули по ссылке, которая соответствует команде MATLAB:
Выполните эту команду, введя её в командном окне MATLAB.
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.