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