linear_interpn
Многомерная интерполяция.
Синтаксис
Yp = linear_interpn(x, val, xp, outmode);
Аргументы
| Имя | Тип данных | Описание |
|---|---|---|
| x | array2 |
Сетка аргументов, заданная матрицей [[значения аргументов по размерности 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 | array2 |
Входные интерполируемые координаты. Задаются матрицей, размерностью 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, стоящему на пересечении соответствующих координат. Для значений
координат не являющихся табличными выполняется линейная интерполяция по соседним точкам.
Дополнительные материалы
Нет.