В этом примере показано, как использовать блок C Function для вызова устаревших функций C, которые реализуют поиск n-мерной таблицы.
В этом примере унаследованные функции C определены в lookup Table.h и реализованы в direct Lookup Table ND. c. Определения типов, используемые в этом примере, можно найти в your_types.h.
В модели заголовочный файл и исходный файл заданы в Model Configuration Parameters > Simulation Target. Теперь функцию C можно вызвать в блоке C Function. Прототип функции, вызываемой в этом примере, является:
FLT directLookupTableND(const FLT *tableND, const UINT32 nbDims, const UINT32 *tableDims, const UINT32 *tableIdx)
где FLT
является определением типа для типа с плавающей точкой и UINT32
является определением типа беззнакового 32-битного целого числа.
Этот пример задает две функции макроса, которые используют функцию directLookupTableND
, которые вызываются с использованием блоков C Function. Это:
DirectLookupTable3D
- 3D интерполяционную таблицу
DirectLookupTable4D
- 4D интерполяционную таблицу
Обе эти функции берут следующие входные параметры:
const FLT *tableND
- Таблица
const UINT32 *tableDims
- Размер таблицы
const UINT32 *tableIdx
- Индекс таблицы
где tableND
и tableDims
сопоставлены с параметрами блоков C Function и tableIdx
- вход в блок. Значение, возвращенное унаследованной функцией C, является выходом блока.
model = 'slexCFunctionLookupTable'; open_system(model); evalc('sim(model)'); slcc('clearCustomCodeModules');