Интерполяция для 1D, 2D, 3-D, и данных с координатной сеткой N-D в ndgrid формате
возвращает интерполированные значения функции переменных 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);
Создайте векторы сетки, x1x2 , и x3. Эти векторы задают точки, сопоставленные со значениями в V.
x1 = 1:100; x2 = (1:50)'; x3 = 1:30;
Задайте демонстрационные значения, чтобы быть 100 50 30 массивами случайных чисел, V. Используйте gallery функция, чтобы создать массив.
V = gallery('uniformdata',100,50,30,0);Оцените V в трех точках вне области x1x2 , и 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 потому что они вне области x1x2 , и 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 — Фактор улучшения (значение по умолчанию) | действительный, неотрицательный, целочисленный скалярФактор улучшения, заданный как действительное, неотрицательное, целочисленный скаляр. Это значение задает число раз, чтобы неоднократно разделить интервалы усовершенствованной сетки в каждой размерности. Это приводит к 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,...,XnY должен:
Имейте тот же тип (дважды или один).
Будьте конечными векторами или массивами N-D с увеличением и неповторением элементов в соответствующих размерностях.
Выровняйтесь с осями декартовой системы координат когда X1,X2,...,Xn массивы N-D (как будто они были произведены ndgrid).
Имейте размерности, сопоставимые с V.
X1,X2,...,Xn должны быть векторы или массивы того же типа (дважды или один). Если X1,X2,...,Xn массивы, затем у них должен быть тот же размер. Если они - векторы с различными длинами, то у одного из них должна быть различная ориентация.
method должен быть 'linear' or'nearest'.
Экстраполяция для входа из контура не поддержана.
Для получения дополнительной информации смотрите функции MATLAB Запуска на графическом процессоре (Parallel Computing Toolbox).
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.