信号のノイズ除去を行うコードの生成
この例では、MATLAB®Coder™ を使用して実行可能コードを生成する方法を示します。Wavelet Toolbox™ は、離散ウェーブレット変換 (DWT)、最大重複離散ウェーブレット変換 (MODWT)、ウェーブレット パケット変換 (WPT)、最大重複ウェーブレット パケット変換 (MODWPT)、およびノイズ除去ワークフローをサポートする関数のコード生成をサポートします。この例には MATLAB Coder のライセンスが必要です。
wdenoise
を使用して信号のノイズ除去を行う関数を定義します。また、生成されたコードを実行するときに、信号のノイズ除去のレベルも指定します。
MATLAB コマンド プロンプトから、ファイル
sigdenoise.m
を作成します。現在の作業フォルダーへの書き込み権限がない場合は、現在のフォルダーを書き込み可能なフォルダーに変更してください。edit sigdenoise
この
sigdenoise
の関数コードをsigdenoise.m
ファイルにコピーします。この関数がコードを生成することを示すために、ファイルには%#codegen
を含めなければなりません。function xdenoise = sigdenoise(x,level) %#codegen wname = 'sym4'; xdenoise = wdenoise(x,level,'Wavelet',wname,... 'DenoisingMethod','SURE',... 'ThresholdRule','soft',... 'NoiseEstimate','LevelIndependent'); end
ファイルを保存します。
MATLAB コマンド ラインで、関数
codegen
を使用して、関数sigdenoise
を MEX ファイルにコンパイルします。-o
オプションを使用して、実行可能ファイルの名前を指定できます。-o
オプションを使用しない場合、生成される MEX ファイルの名前は元の MATLAB ファイルに_mex
を追加したものになります。コンパイル レポートを生成するには-report
オプションを指定します。このレポートは、元の MATLAB コードと、コード生成時に作成された関連ファイルを示します。-args
オプションは、生成コードの実行に必須とする入力のデータ型を指定します。この場合、可変サイズの行ベクトルとスカラー入力を必須とします。codegen sigdenoise.m -config:mex -args {coder.typeof(1,[1 inf]),0}
MATLAB コマンド ラインで、ノイズを含むドップラー データに対して生成コードを実行し、レベル 3 までノイズを除去します。元の信号とノイズ除去後の信号を比較します。
load noisdopp xden = sigdenoise_mex(noisdopp,3); plot([noisdopp',xden']) legend('Original','Denoised')
コード生成でサポートされている Wavelet Toolbox の関数の一覧および関連する制限については、Code Generation Support, Usage Notes, and Limitationsを参照してください。コード生成の詳細については、MATLAB Coder 入門 (MATLAB Coder)を参照してください。