Возвращаемое значение на основе интерполяции набора точек данных
tablelookup(x1d, x2d, x3d, x4d, fd, x1, x2, x3, x4,
interpolation = linear|smooth, extrapolation = linear|nearest|error)
Используйте tablelookup
функция в equations
раздел для вычисления значения выхода путем интерполяции значения входа запроса с набором точек данных. Эта функциональность аналогична функциональности Simulink® и Simscape™ блоки Интерполяционной таблицы. Это позволяет вам включать табличное моделирование непосредственно в свой пользовательский блок, без необходимости подключения внешнего блока Интерполяционной таблицы к вашей модели.
The tablelookup
функция поддерживает одномерные, двумерные, трехмерные и четырехмерные интерполяционные таблицы. Полный синтаксис:
tablelookup(x1d, x2d, x3d, x4d, fd, x1, x2, x3, x4,
interpolation = linear|smooth, extrapolation = linear|nearest|error)
|
Набор данных входа значений по первому направлению, заданный как одномерный массив. Значения должны быть строго монотонными, увеличивающимися или уменьшающимися. Это обязательный аргумент. |
|
Набор данных входа значений во втором направлении, заданный как одномерный массив. Значения должны быть строго монотонными, увеличивающимися или уменьшающимися. Этот аргумент используется только для двумерного и трехмерного поиска в таблице. |
|
Набор данных входа значений по третьему направлению, заданный как одномерный массив. Значения должны быть строго монотонными, увеличивающимися или уменьшающимися. Этот аргумент используется только для трехмерного поиска в таблице. |
|
Набор данных входа значений четвертого направления, заданный как одномерный массив. Значения должны быть строго монотонными, увеличивающимися или уменьшающимися. Этот аргумент используется только для трехмерного поиска в таблице. |
|
Набор данных выхода значений для поиска таблицы. Это обязательный аргумент. Для одномерного поиска таблицы, Для двумерного поиска таблицы, Для трехмерного поиска таблицы, Для четырехмерного поиска таблицы, |
| Входное значение запроса по первому направлению, заданное как скаляр или как одномерный массив. Его модули должны быть соразмерны модулям |
| Входное значение запроса во втором направлении, заданное как скаляр или как одномерный массив того же размера, что и |
| Входное значение запроса вдоль третьего направления, заданное как скаляр или как одномерный массив того же размера, что и |
| Входное значение запроса в четвертом направлении, заданное как скаляр или как одномерный массив того же размера, что и |
|
Необязательный аргумент, который задает метод приближения для вычисления значения выхода, когда значение входа находится внутри области значений, заданной в интерполяционной таблице. Значение по умолчанию является |
|
Необязательный аргумент, который задает метод приближения для вычисления значения выхода, когда значение входа находится вне области значений, заданной в интерполяционной таблице. Значение по умолчанию является |
The interpolation
значения аргументов:
linear
- Для одномерного поиска таблицы использует линейную функцию. Для двумерного и трехмерного поиска в таблице использует расширение линейного алгоритма для многомерной интерполяции, путем выполнения линейной интерполяции в первом направлении, затем во втором направлении, а затем в третьем направлении. Используйте этот метод, чтобы получить лучшую эффективность.
smooth
- Использует измененный алгоритм Akima. Для получения дополнительной информации см. makima
. Используйте этот метод для создания непрерывной кривой или поверхности с непрерывными производными первого порядка.
The extrapolation
значения аргументов:
linear
- Простирается от ребра области интерполяции линейно. Наклон линейной экстраполяции равен наклону интерполированной кривой или поверхности на краю области интерполяции. Используйте этот метод для создания кривой или поверхности с непрерывным значением и непрерывными производными первого порядка на контуре между областью интерполяции и областью экстраполяции.
nearest
- Простирается от ребра области интерполяции как константа. Значение ближайшей экстраполяции равно значению интерполированной кривой или поверхности на краю области интерполяции. Используйте этот метод, чтобы создать кривую или поверхность с непрерывным значением на контуре между областью интерполяции и областью экстраполяции, которая не идет выше высшей точки в данных или ниже самой нижней точки в данных.
error
- Генерирует ошибку, когда входное значение находится вне диапазона, заданного в интерполяционной таблице.
Функция возвращает выходу значение в модулях, заданной для fd
, путем просмотра или оценки значений таблицы на основе входа значений:
Когда вводит x1 , x2 , x3 , и x4 ... | The tablelookup функция... |
---|---|
Совпадайте со значениями в наборах входных данных, x1d , x2d , x3d , и x4d | Выводит соответствующее значение таблицы fd |
Не совпадайте со значениями во входных наборах данных, но находятся в области значений | Интерполирует соответствующие значения таблицы, используя метод, заданный как interpolation значение аргумента |
Не совпадайте со значениями во входных наборах данных и находятся вне области значений | Экстраполирует значение выхода, используя метод, заданный как extrapolation значение аргумента |
Если входные значения запроса x1
, x2
, x3
, и x4
являются:
Скаляр, тогда функция возвращает скаляр.
Одномерные массивы, затем функция возвращает одномерный массив того же размера.
Следующие правила применяются к наборам данных x1d
, x2d
, x3d
, x4d
, и fd
:
Для одномерного поиска таблицы, x1d
и fd
должны быть одномерными массивами того же размера.
Для двумерного поиска таблицы, x1d
и x2d
должны быть одномерными массивами и fd
должна быть матрицей, размер которой совпадает с размерностями, заданными наборами входных данных. Для примера, если x1d
является 1-байт- m
массив, и x2d
является 1-байт- n
массив, затем fd
должен быть m
-by- n
матрица.
Для трехмерного поиска таблицы, x1d
, x2d
, и x3d
должны быть одномерными массивами и fd
должен быть трехмерным массивом с размером, соответствующим размерностям, заданным наборами входных данных. Для примера, если x1d
является 1-байт- m
массив, x2d
является 1-байт- n
массив, и x3d
является 1-байт- p
массив, затем fd
должен быть m
-by- n
-by- p
массив.
Для четырехмерного поиска таблицы, x1d
, x2d
, x3d
, и x4d
должны быть одномерными массивами и fd
должен быть четырехмерным массивом с размером, соответствующим размерностям, заданным наборами входных данных. Для примера, если x1d
является 1-байт- m
массив, x2d
является 1-байт- n
массив, x3d
является 1-байт- p
массив, и x4d
является 1-байт- q
массив, затем fd
должен быть m
-by- n
-by- p
-by- q
массив.
The 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 end
classdef 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
объявлены как параметры переменного размера. Это позволяет пользователям блоков предоставлять свои собственные наборы данных при преобразовании компонента в пользовательский блок. Для получения дополнительной информации см. Использование интерполяционных таблиц в уравнениях.
The 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
объявлены как параметры переменного размера. The x1d
и x2d
векторные значения должны быть строго монотонными, увеличивающимися или уменьшающимися. Для сплайна-интерполяции каждый вектор должен иметь как минимум три значения. Размер fd
матрица должна совпадать с размерностями x1d
и x2d
векторы.
Интерполяция использует модифицированный алгоритм Akima, 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
(<reservedrangesplaceholder1>). The 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
объявлены как параметры переменного размера с модулями. Это позволяет пользователям блоков предоставлять свои собственные наборы данных при преобразовании компонента в пользовательский блок, а также выбирать соразмерные модули из выпадающих списков в диалоговом окне пользовательских блоков. Для получения дополнительной информации см. Использование интерполяционных таблиц в уравнениях.
The xd
значения должны быть строго монотонными, увеличиваться или уменьшаться. yd
должен иметь тот же размер, что и xd
.
equations
| makima
| PS Lookup Table (1D) | PS Lookup Table (2D) | PS Lookup Table (3D) | PS Lookup Table (4D)