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