dsp.FourthOrderSectionFilter
説明
dsp.FourthOrderSectionFilter
オブジェクトは 4 次セクション フィルターのカスケードを実装します。
作成
構文
説明
は、4 次フィルター セクションのカスケードを実装する fos
= dsp.FourthOrderSectionFilterFourthOrderSectionFilter
オブジェクト fos
を返します。
は、fos
= dsp.FourthOrderSectionFilter(num
,den
)Numerator
プロパティが num
に設定され、Denominator
プロパティが den
に設定された FourthOrderSectionFilter
オブジェクトを返します。
は、指定した各プロパティ名が指定の値に設定された fos
= dsp.FourthOrderSectionFilter(Name,Value
)FourthOrderSectionFilter
オブジェクトを返します。追加の名前と値のペアの引数を任意の順番で指定できます。
例: fos = dsp.FourthOrderSectionFilter('Numerator',num,'Denominator',den)
プロパティ
num
— フィルターの分子係数
[1 0.1 0.2 0.3 0.4
] (既定値) | 行ベクトル | 行列
フィルターの分子係数。L 行 5 列の行列として指定します。ここで、L はフィルター セクションの数です。オブジェクトがロックされている場合はこのプロパティのサイズを変更することはできません。ただし、値の変更は可能です。
調整可能: Yes
データ型: single
| double
複素数のサポート: あり
den
— フィルターの分母係数
[1 0.1 0.2 0.3 0.4
] (既定値) | 行ベクトル | 行列
フィルターの分母係数。L 行 5 列の行列または L 行 4 列の行列として指定します。ここで、L はフィルター セクションの数です。最初の分母係数は常に 1
と見なされます。分母のサイズが L 行 4 列の場合、サイズが L 行 5 列 になるように (1 つ以上の) 1 が追加されます。分母のサイズが L 行 5 列の場合、最初の列の値は無視され、1 が追加されます。オブジェクトがロックされている場合はこのプロパティのサイズを変更することはできません。ただし、値の変更は可能です。
調整可能: Yes
データ型: single
| double
複素数のサポート: あり
使用法
入力引数
x
— 入力信号
ベクトル | 行列
ベクトルまたは行列として指定される入力信号。
入力は可変サイズ信号にすることができます。つまり、オブジェクトがロックされた後でも各チャネルのフレーム サイズ (行数) を変えることができます。ただし、チャネル数 (列数) を変えることはできません。
データ型: single
| double
複素数のサポート: あり
出力引数
y
— フィルター処理された出力
ベクトル | 行列
フィルター処理された出力。ベクトルまたは行列として返されます。出力は入力信号と同じサイズ、データ型および実数/複素数となります。
データ型: single
| double
複素数のサポート: あり
オブジェクト関数
dsp.FourthOrderSectionFilter
に固有
fvtool | DSP フィルターの周波数応答の可視化 |
freqz | 離散時間フィルター System object の周波数応答 |
impz | 離散時間フィルター System object のインパルス応答 |
info | Information about filter System object |
coeffs | フィルター System object 係数を構造に返します。 |
cost | Estimate cost of implementing filter System object |
grpdelay | 離散時間フィルター System object の群遅延応答 |
outputDelay | Determine output delay of single-rate or multirate filter |
例
4 次セクション (FOS) フィルターを使用したノイズを含む信号のフィルター処理
dsp.FourthOrderSectionFilter
オブジェクトを使用して、ノイズを含む正弦波信号をフィルター処理します。スペクトル アナライザーを使用して元の信号とフィルター処理された信号を可視化します。
入力信号
入力信号は、周波数が 100 Hz と 350 Hz の 2 つの正弦波の和です。標準偏差 1e-4 でゼロ平均のホワイト ガウス ノイズを正弦波の和に付加します。サンプル レートは 1000 Hz です。
frameSize = 1024; fs = 1000; Sine1 = dsp.SineWave(5,100,'SamplesPerFrame',1024,'SampleRate',fs); Sine2 = dsp.SineWave(2,350,pi/2,'SamplesPerFrame',1024,... 'SampleRate',fs); x = Sine1()+Sine2()+1e-4.*randn(Sine1.SamplesPerFrame,1);
4 次セクション (FOS) フィルター係数
FOS フィルターの分子と分母の係数は、Audio Toolbox に含まれる designParamEq
を使用することで得られます。
%N = [2,4]; %gain = [5,10]; %centerFreq = [0.025,0.75]; %bandwidth = [0.025,0.35]; %mode = 'fos'; %[num,den] = designParamEQ(N,gain,centerFreq,bandwidth,mode,'Orientation','row'); num = [1.0223 -1.9368 0.9205 0 0 1.5171 2.3980 1.4317 0.6416 0.2752]; den = [-1.9368 0.9428 0 0 2.0136 1.9224 1.0260 0.3016];
フィルターとスペクトル アナライザー の初期化
num
係数と den
係数を使用して FOS IIR フィルターを作成します。スペクトル アナライザーを作成して元の正弦波信号とフィルター処理された信号を可視化します。
fos = dsp.FourthOrderSectionFilter('Numerator',num,... 'Denominator',den); scope = spectrumAnalyzer(... 'SampleRate',fs,... 'PlotAsTwoSidedSpectrum',false,... 'FrequencyScale','linear',... 'Method','welch',... 'Title','Original and Filtered Signals',... 'ShowLegend',true,... 'ChannelNames',{'Original Signal','Filtered Signal'});
入力信号をフィルター処理し、元のスペクトルとフィルター処理されたスペクトルを可視化します。
for i = 1:10000 y = fos(x); scope([x,y]); end release(scope);
ローパス 4 次セクション (FOS) フィルター
関数 fdesign
を使用してローパス 4 次セクション (FOS) フィルターを設計します。このフィルターを使用し、3 kHz と 12 kHz の 2 つのトーンをもつノイズを含む正弦波信号をフィルター処理します。
'df2tsos'
構造体で楕円法を使用して 5 次フィルターを再設計します。周波数領域で L-無限大ノルム スケーリングを使用します。通過帯域周波数が 0.15 ラジアン/サンプル、阻止帯域周波数が 0.25 ラジアン/サンプルになるように指定します。許容通過帯域リップルを 1 dB に、阻止帯域の減衰量を 60 dB に指定します。
Fp = 0.15; Fst = 0.25; Ap = 1; Ast = 60;
フィルター係数は fdopts.sosscaling
オブジェクトを使用してスケーリングされます。スケーリング オブジェクトは分子の制約がないように定義されています。また、ScaleValueConstraint
を 'unit'
に設定することにより、スケーリングを 1 のスケーリングに指定します。
fdo = fdopts.sosscaling; fdo.NumeratorConstraint='none'; fdo.ScaleValueConstraint='unit'; f = fdesign.lowpass('Fp,Fst,Ap,Ast',Fp,Fst,Ap,Ast); hFilter = design(f,'ellip','SystemObject',true,... 'FilterStructure','df2tsos','SOSScaleNorm','Linf',... 'SOSScaleOpts',fdo)
hFilter = dsp.SOSFilter with properties: Structure: 'Direct form II transposed' CoefficientSource: 'Property' Numerator: [3x3 double] Denominator: [3x3 double] HasScaleValues: true ScaleValues: [1 1 1 1.0000] Use get to show all properties
fvtool
を使用して、設計したフィルターのローパス周波数応答を可視化します。
fvtool(hFilter)
関数 iirlp2bp
を使用してローパス フィルターをバンドパス フィルターに変換します。
[num,den] = iirlp2bp(hFilter.Numerator,hFilter.Denominator,Fp,[0.25,0.75])
num = 3×5
0.2456 0 -0.2456 0 0
0.4175 -0.0000 -0.4206 -0.0000 0.4175
0.4281 -0.0000 -0.6433 -0.0000 0.4281
den = 3×5
1.0000 -0.0000 0.5088 0 0
1.0000 -0.0000 0.0060 -0.0000 0.8657
1.0000 -0.0000 0.5160 -0.0000 0.5283
これらの分子と分母の係数を使用して 4 次セクション フィルターを作成します。
fos = dsp.FourthOrderSectionFilter(num,den)
fos = FourthOrderSectionFilter with properties: Numerator: [3x5 double] Denominator: [3x5 double]
fvtool
を使用して、4 次セクション フィルターの周波数応答を可視化します。
fvtool(fos);
4 次セクション フィルターでノイズを含む入力信号をフィルター処理します。スペクトル アナライザーを使用して、元の信号のスペクトルとフィルター処理された信号のスペクトルを可視化します。
入力は、周波数がそれぞれ 3 kHz と 12 kHz の 2 つの正弦波の和です。入力サンプル レートは 44.1 kHz で、フレーム サイズは 1024 サンプルに設定されます。
fs = 44100; FrameLength = 1024; SINE1 = dsp.SineWave('SamplesPerFrame',FrameLength,'SampleRate',fs,'Frequency',3000); SINE2 = dsp.SineWave('SamplesPerFrame',FrameLength,'SampleRate',fs,'Frequency',12000);
スペクトル アナライザーを初期化して信号のスペクトルを可視化します。
scope = spectrumAnalyzer(... 'SampleRate',fs,... 'PlotAsTwoSidedSpectrum',false,... 'Title','Original and Filtered Signals',... 'ShowLegend',true,... 'YLimits',[-180 50],... 'ChannelNames',{'Original Signal','Filtered Signal'}); for index = 1:1000 x = SINE1() + SINE2()+ 0.001*randn(FrameLength,1); y = fos(x); scope([x,y]); end
バージョン履歴
R2019a で導入
MATLAB コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)