Ускорение кода с фиксированной запятой и преобразование кода MATLAB с плавающей запятой в код MATLAB с фиксированной запятой
fiaccel -options fcn
fiaccel -float2fixed fcn
fiaccel - переводит файл MATLAB ®options fcnfcn.m в функцию MEX, которая ускоряет код с фиксированной точкой. Использовать fiaccel, код должен соответствовать одному из следующих требований:
Функция верхнего уровня не имеет входов или выходов, и код использует fi
Функция верхнего уровня имеет выход или непостоянный вход, и, по меньшей мере, один выход или вход является fi.
Функция верхнего уровня имеет по крайней мере один вход или выход, содержащий встроенный целочисленный класс (int8, uint8, int16, uint16, int32, uint32, int64, или uint64), и код использует fi.
Примечание
Если файл верхнего уровня находится по пути, содержащему символы Юникода, генерация кода может оказаться не в состоянии найти файл.
fiaccel -float2fixed преобразует функцию MATLAB с плавающей запятой, fcnfcn к коду MATLAB с фиксированной точкой.
|
Функция MATLAB, из которой генерируется функция MEX. |
|
Выбор параметров компилятора.
|
Создайте тестовый файл и вычислите скользящее среднее. Затем используйте fiaccel для ускорения кода и сравнения.
function avg = test_moving_average(x)
%#codegen
if nargin < 1,
x = fi(rand(100,1),1,16,15);
end
z = fi(zeros(10,1),1,16,15);
avg = x;
for k = 1:length(x)
[avg(k),z] = moving_average(x(k),z);
end
function [avg,z] = moving_average(x,z)
%#codegen
if nargin < 2,
z = fi(zeros(10,1),1,16,15);
end
z(2:end) = z(1:end-1); % Update buffer
z(1) = x; % Add new value
avg = mean(z); % Compute moving average
% Use fiaccel to create a MEX function and
% accelerate the code
x = fi(rand(100,1),1,16,15);
fiaccel test_moving_average -args {x} -report
% Compare the non-accelerated and accelerated code.
x = fi(rand(100,1),1,16,15);
% Non-compiled version
tic,avg = test_moving_average(x);toc
% Compiled version
tic,avg = test_moving_average_mex(x);toc
Создать coder.FixptConfig объект, fixptcfg, с настройками по умолчанию.
fixptcfg = coder.config('fixpt');Задайте имя испытательного стенда. В этом примере имя функции тестового стенда: dti_test.
fixptcfg.TestBenchName = 'dti_test';Преобразование функции MATLAB с плавающей запятой в код MATLAB с фиксированной запятой. В этом примере именем функции MATLAB является dti.
fiaccel -float2fixed fixptcfg dti
coder.ArrayType | coder.config | coder.Constant | coder.EnumType | coder.FiType | coder.FixPtConfig | coder.mexconfig | coder.mexconfig | coder.newtype | coder.PrimitiveType | coder.resize | coder.StructType | coder.Type | coder.typeof