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

Примечание

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

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

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

Этот код задает входные параметры испытательного стенда, настраивает необходимые свойства генерации кода и генерирует код. Входные параметры испытательного стенда заданы как числа фиксированной точки. Вход 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

/*
 * mult_acc.c
 *
 * Code generation for function 'mult_acc'
*/

/* Include files */
#include "rt_nonfinite.h"
#include "mult_acc.h"

/* Function Definitions */
void mult_acc(short x, short a, long *acc)
{
  *acc += x * a;
}

/* End of code generation (mult_acc.c) */

Примечание

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