Сгенерируйте скомпилированную функцию кода С, включая каротажное инструментирование
buildInstrumentedMex преобразует MATLAB® файловой fcn -options к MEX-функции и включает инструментирование для логгирования минимальных и максимальных значений всех именованных и промежуточных переменных. Опционально можно включить инструментирование для log2 гистограмм всех именованных, промежуточных и экспрессионных значений. Общий синтаксис и опции fcn.mbuildInstrumentedMex и 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
clearInstrumentationResults | fiaccel | mex | NumericTypeScope | showInstrumentationResults | codegen (MATLAB CODER)