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