Main Content

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

フィルター設計

ライブ エディターでのデジタル フィルターの設計

説明

[フィルター設計] を使用すると、デジタル フィルターを対話的に設計することができます。このタスクは、MATLAB® コードの生成と実行を自動的に行い、digitalFilter オブジェクトを使用するフィルターを設計します。

最初に、フィルター応答タイプを選択します。このタスクでは、フィルター応答のタイプに応じて、以下のようなフィルター パラメーターの指定が制御されます。

  • フィルター次数

  • 周波数制約

  • 振幅の制約

  • 設計法

表示オプションをリストから選択すると、生成されたフィルター応答と追加のフィルター情報を可視化できます。フィルターの制約、設計法、設計法パラメーターの詳しい説明については、designfilt のドキュメンテーションを参照してください。

ライブ エディターのタスクの詳細については、ライブ スクリプトへの対話型タスクの追加を参照してください。

Design Filter task in Live Editor

タスクを開く

[フィルター設計] タスクを MATLAB エディターのライブ スクリプトに追加するには、以下のようにします。

  • [ライブ エディター] タブで [フィルター設計] を選択します。

  • スクリプト内の任意のコード ブロックで、designfiltfilterlowpass など、該当するキーワードを入力します。提示されるコマンド補完の候補から [フィルター設計] を選択します。

すべて展開する

この例では、ライブ エディターで "フィルター設計" タスクを使用してデジタル フィルターのコードを生成する方法を説明します。このタスクを使用して、デジタル フィルターの対話的な設計、フィルター応答の表示、コードの生成を行うことができます。

信号の作成または読み込み

ライブ エディターで、ノイズを含んだ心電図 (ECG) 信号を MATLAB® ワークスペースに読み込みます。データをプロットします。

load noisyecg
plot(noisyECG_withTrend)

Figure contains an axes object. The axes object contains an object of type line.

ノイズを含んだ ECG 信号が表示されます。信号に影響を与えるノイズの発生源はいくつかあり、たとえば、動きのアーティファクト、高周波数ノイズ、電源干渉などがあります。対話的にフィルターを設計してノイズを信号から除去します。[ライブ エディター] タブで [タスク] リストを展開し、Design Filter を選択してタスクを開きます。

カイザー ウィンドウの使用によるローパス FIR フィルターの設計

高周波数ノイズを除去するには、最初に [ローパス FIR] フィルターを選択し、[次数]10 を指定します。周波数、振幅、アルゴリズムのパラメーターに使用可能なオプションは、選択したフィルター応答タイプとフィルター次数によって異なります。

ローパス フィルターは、入力信号から、指定したしきい値を超える望ましくない周波数成分を除去します。[周波数パラメーターの指定] セクションで、[周波数制約] リストから Cutoff (6dB) frequency を選択します。サンプル レートがわかっている場合は、[周波数単位] リストから Hz を選択できます。[サンプル レート] オプションが表示されたら、ワークスペース内の変数からサンプル レートを選択できます。この例ではサンプル レートは不明であるため、正規化されたカットオフ周波数、0.3 ラジアン/サンプルを指定します。

FIR ローパス フィルターの場合は、[振幅パラメーターの指定] セクションで、通過帯域リップル量と阻止帯域の減衰量を制御する制約を指定できます。[振幅の制約] リストから Passband ripple and stopband attenuation を選択します。振幅の制約とフィルター次数は、フィルターの遷移幅にも影響する場合があります。

このタスクでは、指定された周波数と振幅のパラメーターに基づき、既定で FIR contrained least-squares 設計アルゴリズムが選択されます。設計オプションは既定の設定のままにします。

[フィルター応答の表示] セクションで Magnitude & phaseGroup delay を選択して、設計したフィルター応答を可視化します。振幅プロットでは、阻止帯域の減衰量のレベルが 60 dB であることが確認できます。群遅延プロットは、5 サンプルの遅延と、フィルターが線形位相であることを示しています。

[フィルター応答の表示] セクションの下にある矢印をクリックして、設計したフィルターの生成コードを表示します。コマンド ライン上でコードのコピーや貼り付けを行うことで、フィルター設計仕様を手動で編集できます。

ノイズを含んだ ECG 信号に設計したフィルターを適用します。フィルターによって生じた遅延を考慮して結果をプロットします。

load designedFilter
filteredECG = filter(designedFilter,noisyECG_withTrend);
delay = grpdelay(designedFilter);
mdelay = mean(delay);
filteredECG(1:mdelay) = [];

plot(noisyECG_withTrend(1:end-mdelay))
hold on
plot(filteredECG)
legend(["Original","Filtered"])
hold off

Figure contains an axes object. The axes object contains 2 objects of type line. These objects represent Original, Filtered.

等リップル バンドストップ FIR フィルターの設計

心電図モニターのような医療機器は、電磁干渉の影響を受ける場合があります。電源は、一般的に 50 Hz または 60 Hz の周波数で動作します。この例では、MIT-BIH Arrhythmia Database [1]から取得された ECG 信号に 60 Hz の正弦波をノイズとして追加しています。サンプル レートは 360 Hz です。このノイズを除去するために、[フィルター設計] タスクを開き、最小次数バンドストップ FIR フィルターを設計します。既定のフィルター名を bandstop60Hz に変更します。

[周波数単位]Hz を指定します。サンプル レートを指定するには、値を入力するか、リストからサンプル レート変数を選択します。サンプル レート変数をリストに表示するには、その変数をワークスペースに保存する必要があります。変数 fs を作成し、それが 360 Hz に等しくなるように設定します。その後で [サンプル レート] リストから fs を選択します。通過帯域と阻止帯域の周波数値を指定し、周波数を、60 Hz を中心とする 10 Hz ノッチ フィルターの 55 Hz から 65 Hz の範囲で減衰させます。

fs = 360;

[通過帯域リップル 2 (dB)]0.5 に設定し、[阻止帯域の減衰量 (dB)]80 に増やします。

このタスクは、既定で等リップル設計法を使用します。フィルターの振幅応答と位相応答を表示します。

[フィルター応答の表示] セクションから Filter information を選択して、設計したフィルターの詳細をさらに表示することもできます。

ecg60Hz をワークスペースに読み込みます。MAT ファイルには、ノイズが追加されている元の ECG 信号 (ecg60) と、フィルター処理された信号 (ecgFilt) が含まれます。両方の信号をプロットしてフィルター結果を可視化します。

load ecg60Hz
t = 0:1/fs:(length(ecg60)-1)/fs;
plot(t,[ecg60 ecgFilt])
legend(["Original";"Filtered"])

Figure contains an axes object. The axes object contains 2 objects of type line. These objects represent Original, Filtered.

パラメーター

フィルター応答タイプとして、以下のいずれかを選択します。

  • ローパス FIR

  • ローパス IIR

  • ハイパス FIR

  • ハイパス IIR

  • バンドパス FIR

  • バンドパス IIR

  • バンドストップ FIR

  • バンドストップ IIR

  • ヒルベルト変換器 FIR

  • 微分器 FIR

最小次数フィルターを設計するか、フィルター次数を指定します。一部の応答では最小次数設計を使用できないことがあり、その場合はフィルター次数の値を指定する必要があります。

設計したフィルターが希望の動作を示す周波数を指定します。使用可能なオプションは、フィルター応答タイプとフィルター次数によって異なります。

メモ

[周波数単位] には、Normalized (0 to 1) (既定) または Hz を指定できます。周波数単位をヘルツで指定する場合は、サンプル レートを指定する必要があります。

特定の周波数範囲におけるフィルター振幅応答の動作を選択します。使用可能なオプションは、フィルター応答タイプ、フィルター次数、周波数制約によって異なります。

フィルターの設計に使用されるアルゴリズムを指定します。使用可能なオプションは、フィルター応答タイプ、フィルター次数、周波数と振幅の制約によって異なります。一部の設計法では、追加で使用できるオプションが [設計オプション] セクションにあります。

メモ

設計の一部のケースでは、モデル次数に制限があります。選択した設計法に偶数または奇数の制限があり、指定した次数が有効でない場合は、次数が 1 減らされます。

ヒント

  • 自動実行オプションは、タスク ウィンドウの右上隅にある丸印をクリックすることで切り替えられます。自動実行が有効な場合は、変更が加えられると、タスクを含む現在のセクションが自動的に実行されます。

参照

[1] Moody, G.B., and R.G. Mark. "The Impact of the MIT-BIH Arrhythmia Database". IEEE Eng in Med and Biol 20(3):45-50 (May-June 2001): 45-50.

バージョン履歴

R2021b で導入