ドキュメンテーション

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

sosfilt

2 次セクション型 (双 2 次) IIR デジタル フィルター

構文

y = sosfilt(sos,x)
y = sosfilt(sos,x,dim)

説明

y = sosfilt(sos,x) では、2 次セクション型デジタル フィルター sos がベクトル x に適用されます。出力 y は、x と同じ長さになります。

    メモ:   sosfilt へのいずれかの入力が単精度の場合、フィルター処理は単精度演算で実装されます。出力 y は単精度です。

sos は、2 次セクション型デジタル フィルター H(z) を表します。

H(z)=k=1LHk(z)=k=1Lb0k+b1kz1+b2kz21+a1kz1+a2kz2

これは、行に各 2 次セクション型フィルターの係数を含んだ L 行 6 列の行列です。

sos=[b01b11b211a11a21b02b12b221a12a22b0Lb1Lb2L1a1La2L]

x が行列の場合、sosfiltx の各列にフィルターを独立に適用します。出力 y は同じサイズの行列で、x の各列に対応してフィルター処理を行ったデータを含みます。

x が多次元配列の場合、sosfilt では最初の大きさが 1 でない次元がフィルター処理されます。出力 yx と同じサイズの多次元配列で、x の各行と列に対応するフィルター処理されたデータを含みます。

2 次セクション型行列 sos、入力信号 x またはその両方ともを倍精度または単精度にできます。少なくとも 1 つの入力が単精度の場合、フィルター処理は単精度演算で行われます。

y = sosfilt(sos,x,dim) は、次元 dim に沿って動作します。

すべて折りたたむ

chirp.mat を読み込みます。ファイルに含まれている信号 y のパワーの大部分は、Fs/4 (ナイキスト周波数の半分) を超えています。サンプルレートは 8192 Hz です。

load chirp

t = (0:length(y)-1)/Fs;

7 次のバタワース ハイパス フィルターを、Fs/4 より低い信号成分を減衰させるように設計します。0.48π ラジアン/サンプルの正規化されたカットオフ周波数を使用します。フィルター係数を 2 次セクション型で表します。

[zhi,phi,khi] = butter(7,0.48,'high');
soshi = zp2sos(zhi,phi,khi);

freqz(soshi)

信号をフィルター処理します。元の信号とハイパス フィルター処理された信号を表示します。両方のプロットに同じ y 軸のスケールを使用します。

outhi = sosfilt(soshi,y);

subplot(2,1,1)
plot(t,y)
title('Original Signal')
ys = ylim;

subplot(2,1,2)
plot(t,outhi)
title('Highpass-Filtered Signal')
xlabel('Time (s)')
ylim(ys)

同じ仕様でローパス フィルターを設計します。信号をフィルター処理し、結果を元の信号と比較します。両方のプロットに同じ y 軸のスケールを使用します。結果はほとんどがノイズです。

[zlo,plo,klo] = butter(7,0.48);
soslo = zp2sos(zlo,plo,klo);

outlo = sosfilt(soslo,y);

subplot(2,1,1)
plot(t,y)
title('Original Signal')
ys = ylim;

subplot(2,1,2)
plot(t,outlo)
title('Lowpass-Filtered Signal')
xlabel('Time (s)')
ylim(ys)

参考文献

[1] Orfanidis, S.J., Introduction to Signal Processing, Prentice-Hall, Englewood Cliffs, NJ, 1996.

R2006a より前に導入

この情報は役に立ちましたか?