MATLAB Coder


最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

MATLAB クラスを使用したリバーブ

この例では、MATLAB クラスを使用する MATLAB アルゴリズムの実行を高速化する方法を説明します。これらのクラスは、反響効果、つまり広い空き部屋で聞こえるような "エコー" を生み出します。

必要条件

この例には必要条件はありません。

新規フォルダーの作成と関連ファイルのコピー

以下のコードは、現在の作業フォルダー (pwd) 内にフォルダーを作成します。この新規フォルダーには、この例に関連するファイルのみが含められます。現在のフォルダーに影響を与えたくない (またはこのフォルダーにファイルを生成できない) 場合は、作業フォルダーを変更する必要があります。

コマンドの実行: 新規フォルダーの作成と関連ファイルのコピー

coderdemo_setup('coderdemo_reverb');

簡単な反響効果の実装。異なる特性をもつ反響効果を実装するには、さまざまな方法があります。オーディオ音質の観点からすると、これは高度な効果ではありませんが、MATLAB Coder で MATLAB クラスを使用する機能を説明します。

この反響効果は、次のブロック線に基づいて実装されています。

図には、最初の遅延線のみが表示されています。別の 7 本の遅延線がブロック線図の中で繰り返され、各遅延線には、個別の遅延と関連するフィードバック ゲイン ブロックが含まれると想定します。ハウスホルダー反射 (すなわち関数 hhreflect) は、基本的に総信号のエネルギーを変化させずに信号を混合/置換しています。したがって、基本的には入力信号を複製し、わずかな時間の変位でそれをフィードバックしています。その結果が反響効果になります。

使用するファイル

MEX 関数の生成

codegen do_reverb

MEX 関数の実行

これは、サンプル ファイル (speech_dft.mat) を処理し、反響効果を適用し、コンピューターのオーディオ出力に結果を出力します。

reverb_test;
Running time = 19 milliseconds

MEX 関数のより高速な生成

整合性チェック (行列の範囲外チェックなど) を無効にして処理を高速化しますが、MEX 関数の安全性が低下する可能性があります。

cfg = coder.config;
cfg.IntegrityChecks = false;
codegen -config cfg do_reverb

MEX 関数の再実行

reverb_test;
Running time = 23 milliseconds

クリーンアップ

ファイルを削除して元のフォルダーに戻ります。

コマンドの実行: クリーンアップ

cleanup