Примечание
Для создания кода с фиксированной точкой из MATLAB ® необходимо иметь продукт Fixed-Point Designer™ и продукт MATLAB Coder™. Также необходимо иметь компилятор Си.
В этом примере показано, как создать код для простой функции, которая умножает и накапливает два входных значения. Это тип кода, который можно встроить во внешнее оборудование. Функция:
function acc = mult_acc(x,a,acc)
acc = accumpos(acc,x*a);
Этот код определяет входные данные тестового стенда, устанавливает требуемые свойства генерации кода и генерирует код. Входы стенда задаются в виде чисел с фиксированной точкой. x вход - случайное число, a равно 0,9, и аккумулятор, acc, инициализируется как 0. coder.HardwareImplementation объект задает свойства внешнего оборудования, влияющие на сгенерированный код. В примерах указывается 40-разрядный накопитель. coder.CodeConfig имеет свойства, непосредственно влияющие на создание кода. codegen команда принимает функцию, объект конфигурации в качестве входных аргументов и генерирует встраиваемый C-код.
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 + +.