В этом примере показано, как использовать блок 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');
