Можно использовать tablelookup
функция в equations
раздел файла Simscape™, чтобы интерполировать входные значения на основе набора точек данных в одномерной, двумерной, или 3D таблице. Эта функциональность похожа на тот из Simulink® и блоков Интерполяционной таблицы Simscape. Это позволяет вам включать табличное моделирование непосредственно в ваш пользовательский блок без потребности соединения внешнего блока Lookup Table к вашей модели.
Следующие реализации в качестве примера, сопоставляющие температуру с давлением с помощью одномерной интерполяционной таблицы.
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, interpolation=linear, extrapolation=nearest); end end
xd
и yd
объявляются как параметры переменного размера с модулями. Это позволяет пользователям блока обеспечить свои собственные наборы данных, когда компонент преобразован в пользовательский блок, и также выбрать соразмерные модули из выпадающих списков в диалоговом окне пользовательского блока. Следующий рисунок показывает диалоговое окно пользовательского блока, сгенерированного от этого компонента.
Примечание
В настоящее время вы не можете использовать параметры переменного размера в equations
разделите за пределами tablelookup
функция.
Постараться не повторять те же объявления параметра переменного размера в каждом компоненте, который должен использовать их в его tablelookup
функция, можно объявить параметры области переменного размера и распространить их к компонентам в целях интерполяции. Для получения дополнительной информации смотрите Распространение Доменных Параметров.
Следующие правила применяются к одномерным массивам xd
и yd
:
Эти два массива должны быть одного размера.
Для сплайн-интерполяции каждый массив должен содержать по крайней мере три значения. Для линейной интерполяции два значения достаточны.
xd
значения должны быть строго монотонными, или увеличение или уменьшение.
Компонент TtoP использует линейную интерполяцию для значений в табличной области значений, но выводит самое близкое значение yd
для входных значений из области значений. Следующий рисунок показывает блок-схему, где пользовательский блок TtoP используется с линейным входным сигналом, изменяющимся от 0 до 1 000, и получившийся выход.
Смотрите tablelookup
страница с описанием для специфических особенностей синтаксиса и большего количества примеров.