Возвращаемое значение на основе интерполяции набора точек данных
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
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 объявлены как параметры переменного размера. Это позволяет пользователям блоков предоставлять свои собственные наборы данных при преобразовании компонента в пользовательский блок. Для получения дополнительной информации см. Использование интерполяционных таблиц в уравнениях.
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)