Можно использовать tablelookup
функция в equations
раздел файла Simscape™ для интерполяции входных значений на основе набора точек данных в одномерной, двумерной или трехмерной таблице. Эта функциональность аналогична функциональности Simulink® и блоки Интерполяционная Таблица. Это позволяет вам включать табличное моделирование непосредственно в свой пользовательский блок, без необходимости подключения внешнего блока Интерполяционной таблицы к вашей модели.
В следующем примере реализуется сопоставление температуры и давления с помощью одномерной интерполяционной таблицы.
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
:
Эти два массива должны иметь одинаковый размер.
Для сплайна-интерполяции каждый массив должен содержать как минимум три значения. Для линейной интерполяции достаточно двух значений.
The xd
значения должны быть строго монотонными, увеличиваться или уменьшаться.
Компонент TtoP использует линейную интерполяцию для значений в таблицу области значений, но выводит ближайшее значение yd
для входных значений вне области допустимого. Следующий рисунок показывает блок-схему, где пользовательский блок TtoP используется с линейным входным сигналом, изменяющимся от 0 до 1000, и полученным выходом.
Смотрите tablelookup
страница с описанием для синтаксических спецификаций и других примеров.