Интерполяция многомерной поверхности
![]() |
![]() |
| Векторизован
| |
| в палитре | на схеме |
Описание
Блок предназначен для интерполяции многомерной поверхности, представленной в виде таблично заданной функции нескольких аргументов. Набор точек поверхности задается несколькими массивами значений аргументов (сетка узлов интерполяции) и многомерным массивом значений функции.
- Через свойства блока
- Через JSON-файл
Задание многомерной поверхности через свойства
При задании многомерной поверхности через свойства блока значения аргументов (сетка узлов интерполяции) задаются в виде матрицы. Количество строк матрицы должно быть равно количеству независимых аргументов интерполяции (размерности интерполируемой поверхности). Каждая строка матрицы должна содержать массив значений одного аргумента в порядке их возрастания. Количество элементов в строках матрицы может различаться.
Многомерный массив значений функции задается в виде одномерного массива. Размер одномерного массива должен быть равен произведению количеств значений каждого независимого аргумента. Например, если 1-й аргумент имеет N1 точек, 2-й аргумент имеет N2 точек и т.д., N-й аргумент имеет Nn точек, то массив значений функции должен иметь размер:
Элемент многомерного массива с индексами [i1, i2, … , in] при нумерации элементов массива начиная с единицы будет располагаться в одномерном массиве под номером:
Задание многомерной поверхности через JSON-файл
При задании многомерной поверхности через JSON-файл в свойствах блока задается имя JSON-файла, в котором сохранены значения аргументов и функции. Значения аргументов должны быть сохранены в виде массивов в тегах dim_1, dim_2, dim_3 и т.д. Значения аргумента в массиве должны располагаться в порядке возрастания. Размерность интерполируемой поверхности определяется максимальным индексом в данных тегах. Не допускается пропусков в индексах тегов аргументов, например, тег dim_5 не будет прочитан, если не будет найден тег dim_4. Файл должен содержать не менее трех массивов значений аргументов, соответственно, количество измерений многомерной поверхности должно быть не менее трех. Для интерполяции двумерной поверхности следует использовать блок Интерполяция двумерной поверхности.
Значения функций должны быть сохранены в виде двумерных срезов (подматриц) многомерного массива. Срезы осуществляются по первым двум аргументам. Количество строк каждой подматрицы должно быть равно количеству значений первого аргумента. Количество столбцов каждой подматрицы должно быть равно количеству значений второго аргумента. Количество срезов (подматриц) должно быть равно произведению значений аргументов за исключением первых двух:
Каждый срез должен быть сохранен в виде матрицы в теге data с индексом соответствующего среза. Индекс среза формируется как последовательность индексов аргументов начиная с третьего, разделенных символом нижнего подчеркивания "_".
{
dim_1: [1, 2],
dim_2: [1, 2, 3],
dim_3: [1, 2, 3, 4],
data_1: [
[111, 121, 131],
[211, 221, 231]],
data_2: [
[112, 122, 132],
[212, 222, 232]],
data_3: [
[113, 123, 133],
[213, 223, 233]],
data_4: [
[114, 124, 134],
[214, 224, 234]],
}В данном случае в интерполяционной сетке первый аргумент с тегом dim_1
имеет 2 значения, второй аргумент – 3 значения, третий – 4 значения. Соответственно, каждая
подматрица должна иметь 2 строки и 3 столбца. Подматрицы должны быть сохранены в тегах
data_1 – data_4, каждая из них будет соответствовать значениям третьего
аргумента. Для наглядности значения функции отражают индексы [i1,
i2, i3] соответствующего элемента в многомерном
массиве. {
dim_1: [1, 2, 3],
dim_2: [1, 2, 3, 4],
dim_3: [1, 2, 3],
dim_4: [1, 2],
data_1_1: [
[1111, 1211, 1311, 1411],
[2111, 2211, 2311, 2411],
[3111, 3211, 3311, 3411]],
data_1_2: [
[1112, 1212, 1312, 1412],
[2112, 2212, 2312, 2412],
[3112, 3212, 3312, 3412]],
data_2_1: [
[1121, 1221, 1321, 1421],
[2121, 2221, 2321, 2421],
[3121, 3221, 3321, 3421]],
data_2_2: [
[1122, 1222, 1322, 1422],
[2122, 2222, 2322, 2422],
[3122, 3222, 3322, 3422]],
data_3_1: [
[1131, 1231, 1331, 1431],
[2131, 2231, 2331, 2431],
[3131, 3231, 3331, 3431]],
data_3_2: [
[1132, 1232, 1332, 1432],
[2132, 2232, 2332, 2432],
[3132, 3232, 3332, 3432]]
} В данном случае в интерполяционной сетке первый аргумент с тегом
dim_1 имеет 3 значения, второй аргумент – 4 значения, третий – 3 значения,
четвертый – 2 значения. Соответственно, каждая подматрица должна иметь 3 строки и 4 столбца
в соответствии с размерами первых двух аргументов. Подматрицы должны быть сохранены в тегах
data_1_1 – data_3_2, каждая из них будет соответствовать паре значений
третьего и четвертого аргументов. Например, подматрица в теге data_2_1 будет
соответствовать срезу многомерного массива при 2-м значении третьего аргумента и 1-м
значении четвертого аргумента. Для наглядности значения функции отражают индексы
[i1, i2, i3, i4]
соответствующего элемента в многомерном массиве.Методы интерполяции и экстраполяции
- Ступенчатая. Результат интерполяции зависит от значения свойства "Метод
выбора точки":
- Ближайшая. Результат интерполяции равен значению функции в ближайшем узле интерполяции
- Ближайшая левая. Результат интерполяции равен значению функции в узле с ближайшими меньшими (включительно) значениями аргументов
- Ближайшая правая. Результат интерполяции равен значению функции в узле с ближайшими большими (включительно) значениями аргументов
- Линейная. Для определения результата интерполяции через узлы интерполяции проводится кусочно-линейная функция. В интерполяционной сетке допускается наличие точек с одинаковыми значениями аргументов и различными значениями функции, чтобы задать в функции разрывы типа "скачок". Из двух точек с одинаковым значением аргумента первая будет задавать левый предел функции, вторая – правый
- Ноль вне диапазона. Результат интерполяции вне диапазона равен 0
- Константа вне диапазона. Результат интерполяции вне диапазона равен значению функции на границе диапазона
- Экстраполировать границы. Результат интерполяции вне диапазона определяется путем продления интерполирующей функции за границы заданной таблицы
- Периодическая функция вне диапазона. Интерполирующая функция представляется в виде функции, периодической по всем аргументам, для которой табличным образом задан один период. Результат интерполяции вне диапазона определяется путем интерполяции последующих периодов функции соответствующим методом интерполяции
Задание аргументов интерполяции
- При задании аргументов через один общий порт на входной порт args в общем случае необходимо подавать массив значений аргументов (координат точки в многомерном пространстве), размер которого должен равняться количеству независимых аргументов интерполяции. Для определения результатов интерполяции в нескольких точках на входной порт args необходимо подавать матрицу значений аргументов, в которой количество строк будет равно количеству точек для интерполяции. Каждая точка для интерполяции задается строкой матрицы (массивом значений аргументов)
- При задании аргументов через несколько отдельных портов на входные порты arg_1, arg_2 и т.д. в общем случае необходимо подавать скалярные значения аргументов интерполяции. Для определения результатов интерполяции в нескольких точках на входные порты arg_1, arg_2 и т.д. необходимо подавать массивы значений аргументов в соответствующих точках интерполяции. При задании таблицы через свойства блока количество портов определяется автоматически по количеству строк матрицы аргументов. При задании таблицы через JSON-файл количество портов определяется свойством "Количество независимых аргументов в файле"
Вне зависимости от способа задания значений аргументов интерполяции на выходной порт val будет передан массив результатов интерполяции в заданных точках.
Входные порты
| Имя | Описание | Тип линии связи |
|---|---|---|
| args | Матрица значений аргументов, для которых необходимо вычислить результаты интерполяции. Количество столбцов матрицы должно быть равно количеству аргументов интерполяции (количеству измерений интерполируемой поверхности). Каждая строка матрицы задает аргументы интерполяции для одной точки. Порт доступен при выборе способа задания значений аргументов "Через один общий порт" | Математическая |
| arg_i | Массив значений i-го аргумента, для которых необходимо вычислить результаты интерполяции. Размеры массивов значений разных аргументов должны быть одинаковыми. Порт доступен при выборе способа задания значений аргументов "Через отдельные порты" | Математическая |
Выходные порты
| Имя | Описание | Тип линии связи |
|---|---|---|
| val | Массив результатов интерполяции в точках с заданными значениями аргументов | Математическая |
Свойства
| Название | Имя | Описание | По умолчанию | Тип данных |
|---|---|---|---|---|
| Способ задания таблицы | InputType |
Указывает способ задания точек табличной функции. Возможные значения:
|
Через свойства блока | Перечисление |
| Способ задания значений аргументов | ArgPortsType |
Указывает способ задания значений аргументов интерполяции. Возможные значения:
|
Через отдельные порты | Перечисление |
| Количество независимых аргументов в файле | ArgPortsCount | Количество независимых аргументов в JSON-файле, по которому определяется количество входных портов блока. Свойство доступно только при выборе способа задания таблицы "Через JSON-файл" и способа задания значений аргументов "Через отдельные порты" | 2 | Целое |
| Метод интерполяции | InterpolType |
Указывает метод интерполяции. Возможные значения:
|
Линейная | Перечисление |
| Метод выбора точки | StepInterpolType | Указывает метод выбора ближайшей точки для ступенчатой интерполяции. Возможные значения:
|
Ближайшая | Перечисление |
| Метод экстраполяции | ExtrapolType |
Указывает метод экстраполяции. Возможные значения:
|
Константа вне диапазона | Перечисление |
| Матрица значений аргументов | ArgsMatr | Массив значений таблично заданной функции. Свойство доступно только при выборе способа задания таблицы "Через свойства блока" | [[1 , 2 , 3];[1 , 2]] | Матрица |
| Массив значений функции | ValsArr | Массив значений таблично заданной функции. Свойство доступно только при выборе способа задания таблицы "Через свойства блока" | [1 , 2 , 3 , 11 , 12 , 13] | Массив |
| Имя файла | FileName | Имя JSON-файла с таблично заданной функцией. Свойство доступно только при выборе способа задания таблицы "Через JSON-файл" | File.json | Имя файла |
Параметры
Блок не имеет параметров.

