Используя интерполяционные таблицы в уравнениях

Можно использовать функцию 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 для специфических особенностей синтаксиса и большего количества примеров.

Похожие темы