Сгенерируйте скомпилированную функцию кода С включая логгирование инструментирования
buildInstrumentedMex переводит MATLAB® файл fcn -options к MEX-функции и включает инструментирование для логгирования минимальных и максимальных значений всех именованных и промежуточных переменных. Опционально, можно включить инструментирование для log2 гистограмм всех названных, промежуточное звено и значения выражения. Общий синтаксис и опции fcnMbuildInstrumentedMex и fiaccel то же самое, кроме buildIntstrumentedMex не имеет никакого fi ограничения объектов и поддержки '-coder' опция.
buildInstrumentedMex переводит функции MATLAB fcn_1... fcn_n -options -coder через fcn_1 к MEX-функции и включает инструментирование для логгирования минимальных и максимальных значений всех именованных и промежуточных переменных. Генерация MEX-функции для нескольких функций точки входа требует fcn_n'-coder' опция.
Вы не можете оснастить функции MATLAB, которым предоставляют программное обеспечение. Если вашей функцией верхнего уровня является такая функция MATLAB, ничто не регистрируется. Вы также не можете оснастить скрипты.
Результаты инструментирования накапливаются каждый раз, когда оснащенная MEX-функция называется. Использование clearInstrumentationResults очистить предыдущие результаты в журнале.
Некоторые шаблоны кодирования передают существенное количество данных, но только используют небольшую часть тех данных. В таких случаях можно видеть ухудшенную эффективность при использовании buildInstrumentedMex. В следующем шаблоне, subfun только использование один элемент входного массива, A. Для нормального выполнения, количество времени, чтобы выполнить subfun однажды остается постоянным независимо от размера A. Функциональный topfun вызовы subfun
N времена, и таким образом общее время, чтобы выполнить topfun пропорционально N. Когда оснащено, однако, время, чтобы выполнить subfun однажды становится пропорциональным N^2. Это изменение происходит, потому что минимальные и максимальные данные вычисляются по целому массиву. Когда A является большим, вычисления могут привести к значительному ухудшению эффективности. Поэтому, когда это возможно, необходимо передать только данные, в которых на самом деле нужна функция.
function A = topfun(A)
N = numel(A);
for i=1:N
A(i) = subfun(A,i);
end
end
function b = subfun(A,i)
b = 0.5 * A(i);
end
function A = topfun(A)
N = numel(A);
for i=1:N
A(i) = subfun(A(i));
end
end
function b = subfun(a)
b = 0.5 * a;
end
fiaccel | clearInstrumentationResults | showInstrumentationResults | NumericTypeScope | codegen (MATLAB Coder) | mex