主要内容

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

フィルターによって生じる遅延と歪みの補正

信号をフィルター処理すると遅延が生じます。つまり入力に対し,出力信号では時間のシフトが行われます。

シフトが一定の場合は,信号を時間シフトすることで遅延を補正できます。

フィルターでは,一部の周波数成分が不均一に遅延することがあります。この現象は位相歪みと呼ばれています。この影響は,関数filtfiltを使用してゼロ位相フィルター処理を実行することで補正できます。

1秒間に500 Hzでサンプルされた心電図の読み取りを例に取ります。ランダムノイズを追加します。再現可能な結果が必要な場合は,乱数発生器をリセットします。

Fs = 500;N = 500;rng默认的xn = ecg(N)+0.1*randn([1 N]);tn = (0: n - 1) / Fs;

75赫兹より高い周波数を阻止するフィルターを使用して,ノイズの一部を除去します。designfiltを使用して,次数70の冷杉フィルターを設計します。

Nfir = 70;置= 75;firf = designfilt (“lowpassfir”“FilterOrder”Nfir,...“CutoffFrequency”置,“SampleRate”Fs);

信号をフィルター処理し,プロットします。結果は元の信号より滑らかですが,遅れます。

xf =过滤器(firf xn);情节(tn, xn、tn、xf)标题“心电图”包含“时间(s)”传奇(“原始”“冷杉过滤”网格)

grpdelayを使用して,フィルターによって発生する遅延がフィルター次数の半分に等しいことを確認します。

grpdelay (firf N Fs)

延迟=意味着(grpdelay (firf))
延迟= 35

データを整列させます。信号の最初の延迟サンプルを削除することでフィルター処理された信号をシフトします。元の信号および時間ベクトルの最後の延迟サンプルを削除します。

tt = tn (1: end-delay);sn = xn (1: end-delay);科幻小说= xf;科幻小说(1:延迟)= [];

信号をプロットし,それらが整列していることを確認します。

情节(tt、锡、tt、科幻)标题“心电图”包含(“时间(s)”)传说(原始信号的“过滤信号转移”网格)

7次IIRフィルターを使用して計算を繰り返します。

Niir = 7;iir = designfilt (“lowpassiir”“FilterOrder”Niir,...“HalfPowerFrequency”置,“SampleRate”Fs);

信号をフィルター処理します。フィルター処理された信号は元の信号よりノイズが少ないですが,元の信号に対して時間が遅延します。また,フィルターの非線形位相により歪みが生じます。

xfilter =过滤器(iir、xn);情节(tn、xn tn, xfilter)标题“心电图”包含“时间(s)”传奇(“原始”“过滤”)轴([0.25 0.55 -1 1.5])网格

フィルターによって生じた群遅延を見ると,遅延が周波数に依存していることがわかります。

grpdelay (iir, N, Fs)

filtfiltを使用して信号をフィルター処理します。遅延と歪みは事実上削除されています。信号の位相情報をそのまま残すことが不可欠な場合はfiltfiltを使用します。

xfiltfilt = filtfilt (iir、xn);情节(tn, xn)情节(tn, xfilter)情节(tn, xfiltfilt)标题“心电图”包含“时间(s)”传奇(“原始”“过滤”“filtfilt”)轴([0.25 0.55 -1 1.5])网格