В этом примере показано, как ускорить выполнение алгоритма 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
Code generation successful.
Это обрабатывает файл примера (speech_dft.mat
), применяет эффект реверберации и выводит результат к аудиовыходу компьютера.
reverb_test;
Running time = 17 milliseconds
Отключите проверки целостности (e.g. из проверок принадлежности к диапазону на матрицы), чтобы получить более быструю, но потенциально небезопасную MEX-функцию.
cfg = coder.config; cfg.IntegrityChecks = false; codegen -config cfg do_reverb
Code generation successful.
reverb_test;
Running time = 6 milliseconds