Main Content

信号のノイズ除去を行うコードの生成

この例では、MATLAB®Coder™ を使用して実行可能コードを生成する方法を示します。Wavelet Toolbox™ は、離散ウェーブレット変換 (DWT)、最大重複離散ウェーブレット変換 (MODWT)、ウェーブレット パケット変換 (WPT)、最大重複ウェーブレット パケット変換 (MODWPT)、およびノイズ除去ワークフローをサポートする関数のコード生成をサポートします。この例には MATLAB Coder のライセンスが必要です。

wdenoise を使用して信号のノイズ除去を行う関数を定義します。また、生成されたコードを実行するときに、信号のノイズ除去のレベルも指定します。

  1. MATLAB コマンド プロンプトから、ファイル sigdenoise.m を作成します。

    edit sigdenoise
    現在の作業フォルダーへの書き込み権限がない場合は、現在のフォルダーを書き込み可能なフォルダーに変更してください。

  2. この 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
    

  3. ファイルを保存します。

  4. MATLAB コマンド ラインで、関数 codegen を使用して、関数 sigdenoise を MEX ファイルにコンパイルします。-o オプションを使用して、実行可能ファイルの名前を指定できます。-o オプションを使用しない場合、生成される MEX ファイルの名前は元の MATLAB ファイルに _mex を追加したものになります。コンパイル レポートを生成するには -report オプションを指定します。このレポートは、元の MATLAB コードと、コード生成時に作成された関連ファイルを示します。-args オプションは、生成コードの実行に必須とする入力のデータ型を指定します。この場合、可変サイズの行ベクトルとスカラー入力を必須とします。

    codegen sigdenoise.m -config:mex -args {coder.typeof(1,[1 inf]),0}

  5. 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)を参照してください。

参考

関連するトピック