Возвращаемое значение на основе интерполяции набора точек данных
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 поиска по таблице. |
|
Набор данных выходных значений для поиска по таблице. Это - обязательный аргумент. Для одномерного поиска по таблице, Для двумерного поиска по таблице, Для 3D поиска по таблице, Для четырехмерного поиска по таблице, |
| Входное значение запроса вдоль первого направления в виде скаляра или как одномерный массив. Его модули должны быть соразмерными с модулями |
| Входное значение запроса вдоль второго направления в виде скаляра или как одномерный массив одного размера с |
| Входное значение запроса вдоль третьего направления в виде скаляра или как одномерный массив одного размера с |
| Входное значение запроса вдоль четвертого направления в виде скаляра или как одномерный массив одного размера с |
|
Дополнительный аргумент, который задает метод приближения для вычисления выходного значения, когда входное значение в диапазоне, указанном в интерполяционной таблице. Значением по умолчанию является |
|
Дополнительный аргумент, который задает метод приближения для вычисления выходного значения, когда входное значение находится вне диапазона, указанного в интерполяционной таблице. Значением по умолчанию является |
interpolation
значения аргументов:
linear
— Для одномерного поиска по таблице, использует линейную функцию. Для двумерного и 3D поиска по таблице, использует расширение линейного алгоритма для многомерной интерполяции, путем выполнения линейной интерполяции в первом направлении, затем во втором направлении, и затем в третьем направлении. Используйте этот метод, чтобы получить лучшую эффективность.
smooth
— Использует модифицированный алгоритм Акима. Для получения дополнительной информации смотрите makima
. Используйте этот метод, чтобы произвести непрерывную кривую или поверхность с непрерывными производными первого порядка.
extrapolation
значения аргументов:
linear
— Расширяет от ребра области интерполяции линейно. Наклон линейной экстраполяции равен наклону интерполированной кривой или поверхности в ребре области интерполяции. Используйте этот метод, чтобы произвести кривую или поверхность с непрерывным значением и непрерывными производными первого порядка на границе между областью интерполяции и областью экстраполяции.
nearest
— Расширяет от ребра области интерполяции как константа. Значение самой близкой экстраполяции равно значению интерполированной кривой или поверхности в ребре области интерполяции. Используйте этот метод, чтобы произвести кривую или поверхность с непрерывным значением на границе между областью интерполяции и областью экстраполяции, которая не выше самой высокой или ниже самой низкой точки в области данных.
error
— Генерирует ошибку, когда входное значение находится вне диапазона, указанного в интерполяционной таблице.
Функция возвращает выходное значение в модулях, заданных для fd
, путем поиска или оценки табличных значений на основе входных значений:
Когда входные параметры x1 x2 , x3 , и x4 ... | 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
- 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 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
объявляются как параметры переменного размера. Это позволяет пользователям блока обеспечить свои собственные наборы данных, когда компонент преобразован в пользовательский блок. Для получения дополнительной информации смотрите Используя Интерполяционные таблицы в уравнениях.
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)