Ускорьте фиксированную точку и преобразуйте код 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.
Если ваш файл верхнего уровня находится на пути, который содержит символы Unicode, генерация кода не может смочь найти файл.
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.Constant | coder.EnumType | coder.FiType | coder.FixptConfig | coder.MexConfig | coder.PrimitiveType | coder.StructType | coder.Type | coder.config | coder.mexconfig | coder.newtype | coder.resize | coder.typeof