Возвращаемое значение на основе интерполяции набора точек данных
tablelookup(x1d, x2d, x3d, x4d, fd, x1, x2, x3, x4,
interpolation = linear|smooth, extrapolation = linear|nearest|error)
Используйте tablelookup функция в equations разделите, чтобы вычислить выходное значение путем интерполяции входного значения запроса против набора точек данных. Эта функциональность похожа на тот из Simulink® и блоки Интерполяционной таблицы Simscape™. Это позволяет вам включать табличное моделирование непосредственно в ваш пользовательский блок без потребности соединения внешнего блока Lookup Table к вашей модели.
tablelookup функционируйте поддержки одномерные, двумерные, 3D, и четырехмерные интерполяционные таблицы. Полный синтаксис:
tablelookup(x1d, x2d, x3d, x4d, fd, x1, x2, x3, x4,
interpolation = linear|smooth, extrapolation = linear|nearest|error)
|
|
Набор данных входных значений вдоль первого направления в виде одномерного массива. Значения должны быть строго монотонными, или увеличение или уменьшение. Это - обязательный аргумент. |
|
| Набор данных входных значений вдоль второго направления в виде одномерного массива. Значения должны быть строго монотонными, или увеличение или уменьшение. Этот аргумент используется только для двумерного, 3D, и четырехмерного поиска по таблице. |
|
| Набор данных входных значений вдоль третьего направления в виде одномерного массива. Значения должны быть строго монотонными, или увеличение или уменьшение. Этот аргумент используется только для 3D и четырехмерного поиска по таблице. |
|
| Набор данных входных значений вдоль четвертого направления в виде одномерного массива. Значения должны быть строго монотонными, или увеличение или уменьшение. Этот аргумент используется только для четырехмерного поиска по таблице. |
|
|
Набор данных выходных значений для поиска по таблице. Это - обязательный аргумент. Для одномерного поиска по таблице, Для двумерного поиска по таблице, Для 3D поиска по таблице, Для четырехмерного поиска по таблице, |
|
| Входное значение запроса вдоль первого направления в виде скаляра или как одномерный массив. Его модули должны быть соразмерными с модулями |
|
| Входное значение запроса вдоль второго направления в виде скаляра или как одномерный массив одного размера с |
|
| Входное значение запроса вдоль третьего направления в виде скаляра или как одномерный массив одного размера с |
|
| Входное значение запроса вдоль четвертого направления в виде скаляра или как одномерный массив одного размера с |
|
|
Дополнительный аргумент, который задает метод приближения для вычисления выходного значения, когда входное значение в диапазоне, указанном в интерполяционной таблице. Значением по умолчанию является |
|
|
Дополнительный аргумент, который задает метод приближения для вычисления выходного значения, когда входное значение находится вне диапазона, указанного в интерполяционной таблице. Значением по умолчанию является |
interpolation значения аргументов:
linear — Для одномерного поиска по таблице, использует линейную функцию. Для двумерного и 3D поиска по таблице, использует расширение линейного алгоритма для многомерной интерполяции, путем выполнения линейной интерполяции в первом направлении, затем во втором направлении, и затем в третьем направлении. Используйте этот метод, чтобы получить лучшую эффективность.
smooth — Использует модифицированный алгоритм Акима. Для получения дополнительной информации смотрите makima. Используйте этот метод, чтобы произвести непрерывную кривую или поверхность с непрерывными производными первого порядка.
extrapolation значения аргументов:
linear— Расширяет от ребра области интерполяции линейно. Наклон линейной экстраполяции равен наклону интерполированной кривой или поверхности в ребре области интерполяции. Используйте этот метод, чтобы произвести кривую или поверхность с непрерывным значением и непрерывными производными первого порядка на границе между областью интерполяции и областью экстраполяции.
nearest — Расширяет от ребра области интерполяции как константа. Значение самой близкой экстраполяции равно значению интерполированной кривой или поверхности в ребре области интерполяции. Используйте этот метод, чтобы произвести кривую или поверхность с непрерывным значением на границе между областью интерполяции и областью экстраполяции, которая не выше самой высокой или ниже самой низкой точки в области данных.
error — Генерирует ошибку, когда входное значение находится вне диапазона, указанного в интерполяционной таблице.
Функция возвращает выходное значение в модулях, заданных для fd, путем поиска или оценки табличных значений на основе входных значений:
Когда входные параметры x1x2 , x3, и x4... | tablelookup функция... |
|---|---|
Совпадайте со значениями в наборах входных данных, x1d, x2d, x3d, и x4d | Выводит соответствующее табличное значение, fd |
| Не совпадайте со значениями в наборах входных данных, но в области значений | Интерполирует соответствующие табличные значения, с помощью метода, заданного как interpolation значение аргумента |
| Не совпадайте со значениями в наборах входных данных, и вне области значений | Экстраполирует выходное значение, с помощью метода, заданного как extrapolation значение аргумента |
Если входные значения запроса x1x2 , x3, и x4 :
Скаляр, затем функция возвращает скаляр.
Одномерные массивы, затем функция возвращает одномерный массив, одного размера.
Следующие правила применяются к наборам данных x1d, x2d, x3d, x4d, и fd:
Для одномерного поиска по таблице, x1d и fd должны быть одномерные массивы, одного размера.
Для двумерного поиска по таблице, x1d и x2d должны быть одномерные массивы и fd должна быть матрица, с размером, совпадающим с размерностями, заданными наборами входных данных. Например, если x1d 1 m массив и x2d 1 n массив, затем fd должен быть m- n матрица.
Для 3D поиска по таблице, x1d, x2d, и x3d должны быть одномерные массивы и fd должен быть 3D массив, с размером, совпадающим с размерностями, заданными наборами входных данных. Например, если x1d 1 m массив, x2d 1 n массив и x3d 1 p массив, затем fd должен быть m- n- p массив.
Для четырехмерного поиска по таблице, x1d, x2d, x3d, и x4d должны быть одномерные массивы и fd должен быть четырехмерный массив, с размером, совпадающим с размерностями, заданными наборами входных данных. Например, если x1d 1 m массив, x2d 1 n массив, x3d 1 p массив и x4d 1 q массив, затем fd должен быть m- n- p- q массив.
x1d, x2d, x3d, и x4d значения должны быть строго монотонными, или увеличение или уменьшение.
Для сплайн-интерполяции каждый набор данных входных значений должен содержать по крайней мере три значения. Для линейной интерполяции два значения достаточны.
Библиотека Foundation включает встроенные перечисления, interpolation.m и extrapolation.m:
classdef interpolation < int32
enumeration
linear (1)
smooth (2)
end
methods(Static)
function map = displayText()
map = containers.Map;
map('linear') = 'Linear';
map('smooth') = 'Smooth';
end
end
endclassdef extrapolation < int32
enumeration
linear (1)
nearest (2)
error (3)
end
methods(Static)
function map = displayText()
map = containers.Map;
map('linear') = 'Linear';
map('nearest') = 'Nearest';
map('error') = 'Error';
end
end
endЭти перечисления расположены в директории matlabroot\toolbox\physmod\simscape\library\m\+simscape\+enum.
Можно использовать эти перечисления, чтобы объявить параметры компонента, и затем использовать эти параметры в качестве tablelookup аргументы функции. Для получения дополнительной информации смотрите Заданный Пользователями пример Методов Интерполяции и Экстраполяции и Используя Перечисление в Аргументах функции.
Этот пример реализует одномерную интерполяционную таблицу с линейной интерполяцией и экстраполяцией.
component tlu_1d_linear inputs u = 0; end outputs y = 0; end parameters (Size=variable) xd = [1 2 3 4]; yd = [1 2 3 4]; end equations y == tablelookup(xd, yd, u); end end
xd и yd объявляются как параметры переменного размера. Это позволяет пользователям блока обеспечить свои собственные наборы данных, когда компонент преобразован в пользовательский блок. Для получения дополнительной информации смотрите Используя Интерполяционные таблицы в уравнениях.
xd значения должны быть строго монотонными, или увеличение или уменьшение. yd должен иметь тот же размер как xd.
Этот пример реализует двумерную интерполяционную таблицу с определенными методами интерполяции и экстраполяции.
component tlu_2d inputs u1 = 0; u2 = 0; end outputs f = 0; end parameters (Size=variable) x1d = [1 2 3 4]; x2d = [1 2 3]; fd = [1 2 3; 3 4 5; 5 6 7; 7 8 9]; end equations f == tablelookup(x1d, x2d, fd, u1, u2, interpolation=smooth, extrapolation=nearest); end end
x1d, x2d, и fd объявляются как параметры переменного размера. x1d и x2d векторные значения должны быть строго монотонными, или увеличение или уменьшение. Для сплайн-интерполяции каждый вектор должен иметь по крайней мере три значения. Размер fd матрица должна совпадать с размерностями x1d и x2d векторы.
Интерполяция использует модифицированный алгоритм Акима, makima. Экстраполяция использует самое близкое значение fd для u1 из области значений и u2 значения.
Этот пример похож на предыдущий, но это дает контроль за работой пользователей блока по методам интерполяции и экстраполяции.
import simscape.enum.* component tlu_2d_enum inputs u1 = 0; u2 = 0; end outputs f = 0; end parameters (Size=variable) x1d = [1 2 3 4]; x2d = [1 2 3]; fd = [1 2 3; 3 4 5; 5 6 7; 7 8 9]; end parameters interp = interpolation.linear; % Interpolation method extrap = extrapolation.linear; % Extrapolation method end equations f == tablelookup(x1d, x2d, fd, u1, u2, interpolation=interp, extrapolation=extrap); end end
Компонент импортирует встроенные перечисления, и затем использует их, чтобы объявить два дополнительных параметра: interp (Interpolation method) и extrap ExtrapolationMethod . tablelookup функционируйте использует эти параметры в качестве аргументов, чтобы задать методы интерполяции и экстраполяции. Для получения дополнительной информации смотрите Используя Перечисление в Аргументах функции.
Блок, сгенерированный от этого компонента, будет иметь Interpolation method и параметры Extrapolation method, обоих со значением по умолчанию Linear. Пользователь блока может выбрать любые другие опции интерполяции и экстраполяции.
Этот пример реализует одномерную интерполяционную таблицу с модулями, чтобы сопоставить температуру с давлением, с линейной интерполяцией и экстраполяцией.
component TtoP
inputs
u = {0, 'K'}; % temperature
end
outputs
y = {0, 'Pa'}; % pressure
end
parameters (Size=variable)
xd = {[100 200 300 400] 'K'};
yd = {[1e5 2e5 3e5 4e5] 'Pa'};
end
equations
y == tablelookup(xd, yd, u);
end
end
xd и yd объявляются как параметры переменного размера с модулями. Это позволяет пользователям блока обеспечить свои собственные наборы данных, когда компонент преобразован в пользовательский блок, и также выбрать соразмерные модули из выпадающих списков в диалоговом окне пользовательского блока. Для получения дополнительной информации смотрите Используя Интерполяционные таблицы в уравнениях.
xd значения должны быть строго монотонными, или увеличение или уменьшение. yd должен иметь тот же размер как xd.
equations | makima | PS Lookup Table (1D) | PS Lookup Table (2D) | PS Lookup Table (3D) | PS Lookup Table (4D)