Вызов функций интерполяционной таблицы предыдущих версий с помощью блока C Function

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