Сгенерируйте код С с фиксированной точкой

Примечание

Чтобы сгенерировать код с фиксированной точкой из MATLAB® у вас должны быть как продукт Fixed-Point Designer™, так и продукт MATLAB Coder™. У вас также должен быть компилятор C.

Этот пример показывает, как сгенерировать код для простой функции, которая умножает и накапливает два входных значения. Это тип кода, который можно встраивать во внешнее оборудование. Функция является

function acc = mult_acc(x,a,acc)
acc = accumpos(acc,x*a); 

Этот код определяет входы испытательного стенда, настраивает необходимые свойства генерации кода и генерирует код. Входы испытательного стенда заданы как номера с фиксированной точкой. The x вход является случайным числом, a равен 0,9, и аккумулятор, acc, инициализируется в 0. coder.HardwareImplementation объект задает свойства внешнего оборудования, которые влияют на сгенерированный код. Примеры задают 40-битный аккумулятор. coder.CodeConfig объект имеет свойства, которые непосредственно влияют на генерацию кода. codegen команда принимает функцию, объект строения как входные параметры и генерирует встраиваемый код С

x = fi(rand,true,16,15);
a = fi(0.9,true,16,15);
acc = fi(0,true,40,30);


%% 
hi = coder.HardwareImplementation;
hi. ProdHWDeviceType = 'Generic->Custom'
hi. TargetHWDeviceType = 'Generic->Custom'
hi.TargetBitPerLong = 40;
hi.ProdBitPerLong   = 40;

hc = coder.config('lib');
hc.HardwareImplementation = hi;
hc.GenerateReport         = true;

codegen mult_acc -config hc -args {x,a,acc}

Сгенерированный код C:

/* Include Files */
#include "mult_acc.h"

/* Function Definitions */

/*
 * Arguments    : short x
 *                short a
 *                long *acc
 * Return Type  : void
 */
void mult_acc(short x, short a, long *acc)
{
  *acc += x * a;
}

Примечание

Список функций, поддерживаемых для генерации кода, см. в разделах Функции и Объекты, Поддерживаемые для Генерации кода C/C + +.