linear_interpn

Многомерная интерполяция.

Синтаксис:

Yp = linear_interpn(x, val, xp, outmode);

Аргументы:

Имя Тип данных Описание
x matrix Сетка аргументов, заданная матрицей [[значения аргументов по размерности 1],... [значения аргументов по размерности N]]
val array Массив значений для заданной многомерной сетки. Если N=3 и размерности x[1], x[2] и x[3] равны соответственно nx, ny, nz, то номер элемента (начиная с 0) массива val, соответствующего координатам (i,j,k) будет равен i+nx(j+ny·k)
xp matrix Входные интерполируемые координаты. Задаются матрицей, размерностью n на N, где n – количество интерполируемых точек, N – размерность интерполяции. Координата i-й точки представляется как xp[i][0] …. xp[i][N]
outmode integer Метод экстраполяции при выходе за сетку: 0 – линейная экстраполяция, 1- константа вне диапазона, 2 – ноль вне диапазона

Описание:

linear_interpn – реализует линейную интерполяцию многомерной функции val, зависящей от массива аргументов x в точках с координатами xp.

Результат:

Имя Тип данных Описание
Yp array

Функция возвращает массив интерполированных значений, размерностью равной количеству входных точек n (количеству строк входной матрицы xp)

Пример:

x = [[0, 1, 2, 9],  //Аргументы по размерности i
  [0, 5, 8],        //Аргументы по размерности j
  [0, 3]];          //Аргументы по размерности k

//массив значений функции:
val = 
//        j = 0                   j = 1                      j = 2
//|i=0    1    2    3     |i= 0    1    2     3      |i= 0     1    2     3 
[  0,   0.1, 1.1, 1.2,     3.5, 3.3, 6.1,  6.2,       7.1,  7.2, 9.1,  9.2,   //k=0
   8.1, 8.3, 5.6, 5.9,     3.7, 3.9, 18.1, 18.3,      15.6, 5.9, 13.7, 13.9]; //k=1

xp = [[1, 5, 3],[3, 2, 1]]; //массив входных точек
Yp = linear_interpn(x,val,xp,1);

В результате выполнения данного скрипта переменная Yp получит значение [3.9, 5.6]. Элементы массива Yp равны значению функции в точках с координатами [1, 5, 3] и [3, 2, 1]. Координаты первой точки являются табличными. Определение номера точки в трехмерном массиве значений функции происходит по формуле i+nx(j+ny·k), начиная с 0, где i, j, k – номера, под которыми стоят координаты в своих векторах, а nx, ny, nz – количество элементов в векторах, образующих x. В данном случае [i, j, k] = [1,1,1] так как 1, 5 и 3 являются элементами с номерами 1 в векторах, образующих x; а [nx, ny, nz] = [4, 3, 2]. Таким образом i+nx(j+ny·k) = 1+4(1+3·1) = 17, то есть элемент, соответствующий табличным координатам [1,5,3] находится в массиве значений функции на 17-ом месте и равняется 3.9. Вручную определить значение, соответствующее точке с табличными координатами можно, представив массив условной координатной сеткой в соответствии с номерами искомых координат в векторе аргумента соответствующей размерности, начиная с 0. В приведенном примере вектор аргументов по размерности k состоит из двух элементов, что соответствует группировке массива на две строки. Вектор размерности по j состоит из трех элементов, что соответствует разбиению массива на 3 столбца. И вектор размерности i состоящий из 4 элементов будет соответствовать разбитию каждого столбца на 4 подэлемента. В этом случае координаты 1;5;3, для которых [i, j, k] = [1,1,1], соответствуют элементу 3.9, стоящему на пересечении соответствующих координат. Для значений координат не являющихся табличными выполняется линейная интерполяция по соседним точкам.

Дополнительные материалы

Нет.