Ускорите код с фиксированной точкой и преобразуйте код 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