MATLAB クラスを使用した残響のための高速化された MEX コードの生成
この例では、MATLAB クラスを使用する MATLAB® アルゴリズムの実行を高速化する方法を説明します。これらのクラスは、反響効果、つまり広い空き部屋で聞こえるような "エコー" を生み出します。
簡単な反響効果の実装
異なる特性をもつ反響効果を実装するには、さまざまな方法があります。オーディオ音質の観点からすると、これは高度な効果ではありませんが、MATLAB Coder™ で MATLAB クラスを使用する機能を説明します。
この反響効果は、次のブロック線に基づいて実装されています。
図には、最初の遅延線のみが表示されています。別の 7 本の遅延線がブロック線図の中で繰り返され、各遅延線には、個別の遅延と関連するフィードバック ゲイン ブロックが含まれると想定します。ハウスホルダー反射 (すなわち関数 hhreflect
) は、基本的に総信号のエネルギーを変化させずに信号を混合/置換しています。したがって、基本的には入力信号を複製し、わずかな時間の変位でそれをフィードバックしています。その結果が反響効果になります。
使用するファイル
reverb_test.m
:反響効果をテストするためのメイン ファイルdo_reverb.m
:Reverb クラスの関数抽象化Reverb.m
:MATLAB クラスとして実装された効果の実装Delay.m
:MATLAB クラスとして実装されたReverb.m
の遅延の効果hhreflect.m
:Reverb.m
のハウスホルダー反射get_prime.m
:素数を計算する関数 (Reverb.m
用)speech_dft.mat
:テスト サンプル ファイル
MEX 関数の生成
codegen do_reverb
Code generation successful.
MEX 関数の実行
これは、サンプル ファイル (speech_dft.mat
) を処理し、反響効果を適用し、コンピューターのオーディオ出力に結果を出力します。
reverb_test;
Running time = 10 milliseconds
MEX 関数のより高速な生成
整合性チェック (行列の範囲外チェックなど) を無効にして処理を高速化しますが、MEX 関数の安全性が低下する可能性があります。
cfg = coder.config; cfg.IntegrityChecks = false; codegen -config cfg do_reverb
Code generation successful.
MEX 関数の再実行
reverb_test;
Running time = 5 milliseconds