Этот пример показывает, как ускорить выполнение алгоритма MATLAB, который использует классы MATLAB. Классы создают эффект реверберации, то есть, "эхо", которое вы слышите в большой пустой комнате.
Существует много способов реализовать эффект реверберации с различными характеристиками. С точки зрения качества звука это не усовершенствованный эффект, но показывает возможности использования классов MATLAB с MATLAB Coder.
Этот эффект реверберации реализован на основе следующей блок-схемы:
Схема показывает только первую строку задержки. Вообразите еще семь строк задержки, повторяемых в схеме, но каждая строка задержки имеет отдельную задержку и сопоставленный блок усиления обратной связи. Отражение Домовладельца (т.е. функция hhreflect
) по существу смешивает/переставляет сигналы, не изменяя энергию общего сигнала. Поэтому мы по существу копируем входящий сигнал и питаем его назад маленькими смещениями времени. Результатом является эффект реверберации.
reverb_test.m
: Основной файл, тестирующий эффект реверберации
do_reverb.m
: Функциональная абстракция класса Реверберации
Reverb.m
: реализация Эффекта, реализованная как класс MATLAB
Delay.m
: Задержите эффект для Reverb.m
, реализованного как класс MATLAB
hhreflect.m
: отражение Домовладельца для Reverb.m
get_prime.m
: Функция, чтобы вычислить простые числа (для Reverb.m
)
speech_dft.mat
: Протестируйте файл примера
codegen do_reverb
Это обрабатывает файл примера (speech_dft.mat
), применяет эффект реверберации и выводит результат к аудиовыходу компьютера.
reverb_test;
Running time = 18 milliseconds
Отключите проверки целостности (например, из проверок принадлежности к диапазону на матрицы), чтобы получить более быструю, но потенциально небезопасную MEX-функцию.
cfg = coder.config; cfg.IntegrityChecks = false; codegen -config cfg do_reverb
reverb_test;
Running time = 6 milliseconds