В этом примере показано, как ускорить выполнение алгоритма MATLAB, использующего классы MATLAB. Классы создают эффект реверберации, то есть «эхо», которое вы слышите в большой пустой комнате.
Существует множество способов реализации эффекта реверберации с различными признаками. По качеству звука это не является продвинутым эффектом, но показывает возможности использования классов MATLAB с Coder™ MATLAB.
Этот эффект реверберации реализуется на основе следующей блок-схемы:

На диаграмме показана только первая линия задержки. Представьте, что еще семь линий задержки повторяются на диаграмме, но каждая линия задержки имеет индивидуальный блок задержки и связанного с ним усиления обратной связи. Отражение Домохозяина (т. е. hhreflect функция) по существу является смешиванием/перестановкой сигналов без изменения энергии полного сигнала. Поэтому мы по существу дублируем входящий сигнал и возвращаем его обратно с небольшими временными смещениями. Результатом является эффект реверберации.
reverb_test.m: Проверка эффекта реверберации в основном файле
do_reverb.mАбстракция функций класса Reverb
Reverb.mРеализация эффекта в виде класса MATLAB
Delay.mЭффект задержки для Reverb.m реализован как класс MATLAB
hhreflect.m: Отражение домохозяина для Reverb.m
get_prime.m: Функция для вычисления простых чисел (для Reverb.m)
speech_dft.mat: Тестировать файл образца
codegen do_reverbCode generation successful.
При этом обрабатывается образец файла (speech_dft.mat), применяет эффект реверберации и выводит результат на аудиовыход компьютера.
reverb_test;
Running time = 16 milliseconds
Деактивируйте проверки целостности (например, проверки вне границ для матриц), чтобы получить более быструю, но потенциально небезопасную функцию MEX.
cfg = coder.config; cfg.IntegrityChecks = false; codegen -config cfg do_reverb
Code generation successful.
reverb_test;
Running time = 8 milliseconds