fdesign.bandstop
バンドストップ フィルター設計仕様オブジェクト
構文
説明
関数 fdesign.bandstop
は、通過帯域周波数、阻止帯域周波数、通過帯域リップル、フィルター次数などのフィルターの仕様が含まれている bandstop
フィルター設計仕様オブジェクトを返します。その後、関数 design
を使用して、フィルター設計仕様オブジェクトからフィルターを設計します。
制御オプションの詳細については、フィルターの設計手順を参照してください。完全なワークフローについては、Fdesign でのフィルターの設計 — プロセスの概要を参照してください。
は、次の既定の値をもつバンドストップ フィルター設計仕様オブジェクトを構築します。 bandstopSpecs
= fdesign.bandstop
最初の通過帯域周波数を 0.35 に設定。
最初の阻止帯域周波数を 0.45 に設定。
2 番目の阻止帯域周波数を 0.55 に設定。
2 番目の通過帯域周波数を 0.65 に設定。
最初の通過帯域リップル 1 dB。
阻止帯域の減衰量を 60 dB に設定。
2 番目の通過帯域リップルを 1 dB に設定。
は、特定のフィルター次数、通過帯域周波数、阻止帯域周波数、およびその他の仕様オプションをもつ、バンドストップ フィルター設計仕様オブジェクトを構築します。指定するオプションを式 bandstopSpecs
= fdesign.bandstop(spec
,value1,...,valueN
)spec
で表します。式の後で、各オプションの値を指定します。spec
引数の後に値を指定しない場合、関数は既定値を仮定します。
では、フィルターを適用する信号のサンプル レートを Hz で指定します。bandstopSpecs
= fdesign.bandstop(___,Fs
)Fs
は、指定する他の数値の後でスカラーとして指定しなければなりません。この場合は、仕様内のすべての周波数も Hz です。
設計仕様 fdesign.bandstop('Fp1,Fst1,Fst2,Fp2,Ap1,Ast,Ap2',.4,.5,.6,.7,1,80,.5)
は同じフィルターを fdesign.bandstop('Fp1,Fst1,Fst2,Fp2,Ap1,Ast,Ap2',1600,2000,2400,2800,1,80,0.5,8000)
として設計します。
では、振幅仕様の単位を指定します。bandstopSpecs
= fdesign.bandstop(___,magunits
)magunits
は、'linear'
、'dB'
、'squared'
のいずれかにすることができます。この引数を省略すると、'dB'
であると仮定されます。振幅仕様は指定に関係なく常に dB 単位に変換されて格納されます。Fs
が指定された場合、magunits
は入力引数リストの Fs
に従わなければなりません。
例
[12.8 22.4] kHz の阻止帯域をもち、次数が 60 の制約付き帯域 FIR 等リップル フィルターを設計します。両方の通過帯域リップルの値は 1 dB に制限されます。サンプル レートは 64 kHz です。
関数 fdesign.bandstop
を使用し、次の設計パラメーターを指定して、bandstop
フィルター設計仕様オブジェクトを作成します。
bandstopSpecs = fdesign.bandstop('N,Fp1,Fst1,Fst2,Fp2,C',60,9.6e3,12.8e3,22.4e3,25.6e3,64000);
2 つの通過帯域を 1 dB の通過帯域リップルで制限します。
bandstopSpecs.Passband1Constrained = true; bandstopSpecs.Apass1 = 1; bandstopSpecs.Passband2Constrained = true; bandstopSpecs.Apass2 = 1;
関数 design
を使用してバンドストップ フィルターを設計します。生成されるフィルターは、dsp.Filter
System object™ です。このフィルターをストリーミング データに適用する方法の詳細については、dsp.FIRFilter
を参照してください。
bandstopFilt = design(bandstopSpecs,'Systemobject',true)
bandstopFilt = dsp.FIRFilter with properties: Structure: 'Direct form' NumeratorSource: 'Property' Numerator: [-3.6116e-04 -0.0027 -3.1395e-04 -0.0033 0.0030 0.0030 -8.4856e-04 0.0017 -0.0084 -0.0016 0.0074 1.6989e-04 0.0108 -0.0089 -0.0162 0.0076 -0.0040 0.0238 0.0119 -0.0354 1.7761e-05 -0.0221 0.0187 0.0724 -0.0411 … ] (1×61 double) InitialConditions: 0 Show all properties
設計したフィルターの周波数応答を可視化します。
filterAnalyzer(bandstopFilt)
measure
を使用して、フィルターの周波数応答特性を測定します。
measure(bandstopFilt)
ans = Sample Rate : 64 kHz First Passband Edge : 9.6 kHz First 3-dB Point : 10.5255 kHz First 6-dB Point : 10.9058 kHz First Stopband Edge : 12.8 kHz Second Stopband Edge : 22.4 kHz Second 6-dB Point : 24.2866 kHz Second 3-dB Point : 24.6685 kHz Second Passband Edge : 25.6 kHz First Passband Ripple : 0.11754 dB Stopband Atten. : 69.3934 dB Second Passband Ripple : 0.11761 dB First Transition Width : 3.2 kHz Second Transition Width : 3.2 kHz
最小次数の楕円バンドストップ フィルターを設計します。フィルターの設計手順は、次のようになります。
関数
fdesign
を使用して、フィルター設計仕様を指定します。関数
designmethods
に用意されている設計法を選択します。選択できる設計オプションを調べるため、関数
designoptions
を使用します。関数
design
を使用してフィルターを設計します。
fdesign.bandstop
をデフォルト ステートで構築し、関数に設計仕様を入力します。
bandstopSpecs = fdesign.bandstop(.3,.4,.6,.7,.5,60,1)
bandstopSpecs = bandstop with properties: Response: 'Bandstop' Specification: 'Fp1,Fst1,Fst2,Fp2,Ap1,Ast,Ap2' Description: {7×1 cell} NormalizedFrequency: 1 Fpass1: 0.3000 Fstop1: 0.4000 Fstop2: 0.6000 Fpass2: 0.7000 Apass1: 0.5000 Astop: 60 Apass2: 1
関数 designmethods
を使用して、使用可能な設計法を調べます。楕円フィルターを設計するには、ellip
を選択します。
designmethods(bandstopSpecs,Systemobject=true)
Design Methods that support System objects for class fdesign.bandstop (Fp1,Fst1,Fst2,Fp2,Ap1,Ast,Ap2): butter cheby1 cheby2 ellip equiripple kaiserwin
フィルターを設計するときに、追加の設計オプションを指定できます。関数 designoptions
を使用して、オプションの一覧を表示します。この関数は、フィルターで使用する既定の設計オプションも表示します。
designoptions(bandstopSpecs,'ellip')
ans = struct with fields:
FilterStructure: {'df1sos' 'df2sos' 'df1tsos' 'df2tsos' 'cascadeallpass' 'cascadewdfallpass'}
SOSScaleNorm: 'ustring'
SOSScaleOpts: 'fdopts.sosscaling'
MatchExactly: {'passband' 'stopband' 'both'}
SystemObject: 'bool'
DefaultFilterStructure: 'df2sos'
DefaultMatchExactly: 'both'
DefaultSOSScaleNorm: ''
DefaultSOSScaleOpts: [1×1 fdopts.sosscaling]
DefaultSystemObject: 0
関数 design
を使用してフィルターを設計します。'ellip'
と、変数 'bandstopSpecs'
で与えられる仕様を入力引数として渡します。
bsFilter = design(bandstopSpecs,'ellip',Systemobject=true)
bsFilter = dsp.SOSFilter with properties: Structure: 'Direct form II' CoefficientSource: 'Property' Numerator: [5×3 double] Denominator: [5×3 double] HasScaleValues: true ScaleValues: [0.5324 0.5324 0.6221 0.6221 0.8855 1] Show all properties
設計したフィルターの周波数応答を可視化します。
filterAnalyzer(bsFilter)
バンドストップ フィルターを作成し、3π/8 ~ 5π/8 ラジアン/サンプルの離散周波数帯域を排除します。48 kHz のサンプリング周波数では、これらの値は [9 15] kHz の周波数範囲に変換されます。3 つの離散時間正弦波の重ね合わせから構成される離散時間信号に対してフィルターを適用します。
最初にバンドストップ フィルター設計仕様オブジェクトを作成し、次いでオブジェクトを入力として関数 design
に渡すことで、フィルターを設計します。
バンドストップ フィルターの設計
fdesign.bandstop
を使用してバンドストップ フィルター設計仕様オブジェクトを作成します。
bandstopSpecs = fdesign.bandstop(1/4,3/8,5/8,6/8,1,60,1)
bandstopSpecs = bandstop with properties: Response: 'Bandstop' Specification: 'Fp1,Fst1,Fst2,Fp2,Ap1,Ast,Ap2' Description: {7×1 cell} NormalizedFrequency: 1 Fpass1: 0.2500 Fstop1: 0.3750 Fstop2: 0.6250 Fpass2: 0.7500 Apass1: 1 Astop: 60 Apass2: 1
このオブジェクトの使用可能な設計法を示します。
designmethods(bandstopSpecs)
Design Methods for class fdesign.bandstop (Fp1,Fst1,Fst2,Fp2,Ap1,Ast,Ap2): butter cheby1 cheby2 ellip equiripple kaiserwin
等リップル フィルターを設計するには、'equiripple'
を選択します。
bsFilter = design(bandstopSpecs,'equiripple',Systemobject=true)
bsFilter = dsp.FIRFilter with properties: Structure: 'Direct form' NumeratorSource: 'Property' Numerator: [0.0054 -1.9744e-15 0.0202 -3.1206e-15 0.0064 -4.0688e-15 -0.0306 -3.6307e-15 0.0093 -3.3427e-15 0.0553 -2.7846e-15 -0.0624 -2.8386e-15 -0.0791 -2.9286e-15 0.3014 -2.7365e-15 0.5890 -2.7365e-15 0.3014 -2.9286e-15 … ] (1×37 double) InitialConditions: 0 Show all properties
設計したフィルターの周波数応答を可視化します。
freqz(bsFilter,[],48000)
正弦波信号の作成
1 kHz、12 kHz、および 16 kHz の周波数をもつ 3 つの正弦波の和である信号を作成します。スペクトル アナライザーを初期化し、元の信号とフィルター処理された信号を表示します。
Sine1 = dsp.SineWave(Frequency=1e3,SampleRate=44.1e3,SamplesPerFrame=4000); Sine2 = dsp.SineWave(Frequency=12e3,SampleRate=44.1e3,SamplesPerFrame=4000); Sine3 = dsp.SineWave(Frequency=16e3,SampleRate=44.1e3,SamplesPerFrame=4000); SpecAna = spectrumAnalyzer(PlotAsTwoSidedSpectrum=false, ... SampleRate=Sine1.SampleRate, ... ShowLegend=true, ... YLimits=[-240,45]); SpecAna.ChannelNames = {'Original noisy signal','Filtered signal'};
正弦波信号のフィルター処理
設計したバンドストップ フィルターを使用して正弦波信号をフィルター処理します。元の信号とフィルター処理された信号をスペクトル アナライザーで表示します。1 kHz のトーンは影響を受けません。12 kHz のトーンはフィルターで除外されて減衰し、16 kHz のトーンはフィルターの遷移帯域に現れるため、少し減衰します。
for i = 1 : 10000 x = Sine1()+Sine2()+Sine3(); y = bsFilter(x); SpecAna(x,y); end release(SpecAna)
入力引数
仕様の式。次のいずれかの文字ベクトルを指定します。
'Fp1,Fst1,Fst2,Fp2,Ap1,Ast,Ap2'
(既定の設定)'N,F3dB1,F3dB2'
'N,F3dB1,F3dB2,Ap'
*'N,F3dB1,F3dB2,Ap,Ast'
*'N,F3dB1,F3dB2,Ast'
*'N,F3dB1,F3dB2,BWp'
*'N,F3dB1,F3dB2,BWst'
*'N,Fc1,Fc2'
'N,Fc1,Fc2,Ap1,Ast,Ap2'
'N,Fp1,Fp2,Ap'
'N,Fp1,Fp2,Ap,Ast'
'N,Fp1,Fst1,Fst2,Fp2'
'N,Fp1,Fst1,Fst2,Fp2,C'
*'N,Fp1,Fst1,Fst2,Fp2,Ap'
*'N,Fst1,Fst2,Ast'
'Nb,Na,Fp1,Fst1,Fst2,Fp2'
*
次の表で、式で使用できる各オプションを説明します。
仕様のオプション | 説明 |
---|---|
Ap | 通過帯域で許容されるリップル量。dB 単位で Apass として指定します。 |
Ap1 | 最初の通過帯域で許容されるリップル量。dB 単位で Apass1 として指定します。 |
Ap2 | 2 番目の通過帯域で許容されるリップル量。dB 単位で Apass2 として指定します。 |
Ast | 阻止帯域の減衰量 (dB)。Astop を使用して指定します。 |
BWp | フィルター通過帯域の帯域幅。正規化周波数単位で BWpass として指定します。 |
BWst | フィルター阻止帯域の帯域幅。正規化周波数単位で BWstop として指定します。 |
F3dB1 | 最初のカットオフの通過帯域値より 3 dB 低い位置での周波数。正規化周波数単位で指定します。IIR フィルターに適用されます。 |
F3dB2 | 2 番目のカットオフの通過帯域値より 3 dB 低い位置での周波数。正規化周波数単位で指定します。IIR フィルターに適用されます。 |
Fc1 | 最初のカットオフ周波数 (正規化周波数単位)。Fcutoff1 を使用して指定します。FIR フィルターに適用されます。 |
Fc2 | 2 番目のカットオフ周波数 (正規化周波数単位)。Fcutoff1 を使用して指定します。FIR フィルターに適用されます。 |
Fp1 | 通過帯域の先頭の周波数。正規化周波数単位で Fpass1 として指定します。 |
Fp2 | 通過帯域の末尾の周波数。正規化周波数単位で Fpass2 として指定します。 |
Fst1 | 最初の阻止帯域の末尾の周波数。正規化周波数単位で Fstop1 として指定します。 |
Fst2 | 2 番目の阻止帯域の先頭の周波数。正規化周波数単位で Fstop2 として指定します。 |
N | FIR フィルターのフィルター次数。または、Na および Nb が指定されないときの、IIR フィルターの分子および分母の両方の次数。FilterOrder を使用して指定します。 |
Nb | IIR フィルターの分子の次数。DenOrder プロパティを使用して指定します。 |
Na | IIR フィルターの分母の次数。NumOrder プロパティを使用して指定します。 |
C | 制約付き帯域フラグ。これにより、3 つの帯域のうちの 1 つまたは 2 つにおいて、固定次設計の通過帯域リップルまたは阻止帯域の減衰量を指定できます。 仕様 |
フィルターの仕様を図で表すと、次のようになります。
Fp1
と Fst1
間などの仕様値が指定されていない領域は、フィルター応答が明示的に定義されていない遷移領域です。
フィルターの設計に使用できる設計法は、仕様の式によって異なります。これらの方法は、関数 designmethods
を使用して取得できます。次の表は、fdesign.bandstop
でサポートされる仕様の式および対応する設計法の一覧です。
仕様の式 | サポートされる設計法 |
---|---|
'Fp1,Fst1,Fst2,Fp2,Ap1,Ast,Ap2' | butter , cheby1 , cheby2 , ellip , equiripple , kaiserwin |
'N,F3dB1,F3dB2' | butter |
'N,F3dB1,F3dB2,Ap' | cheby1 |
'N,F3dB1,F3dB2,Ap,Ast' | ellip |
'N,F3dB1,F3dB2,Ast' | cheby2 , ellip |
'N,F3dB1,F3dB2,BWp' | cheby1 |
'N,F3dB1,F3dB2,BWst' | cheby2 |
'N,Fc1,Fc2' | window |
'N,Fc1,Fc2,Ap1,Ast,Ap2' | fircls |
'N,Fp1,Fp2,Ap' | cheby1 |
'N,Fp1,Fp2,Ap,Ast' | ellip |
'N,Fp1,Fst1,Fst2,Fp2' | iirlpnorm , equiripple , firls |
'N,Fp1,Fst1,Fst2,Fp2,C' | equiripple |
'N,Fp1,Fst1,Fst2,Fp2,Ap' | ellip |
'N,Fst1,Fst2,Ast' | cheby2 |
'Nb,Na,Fp1,Fst1,Fst2,Fp2' | iirlpnorm |
フィルターを設計するには、次のいずれかの設計法を入力にして関数 design
を呼び出します。フィルター応答のタイプは、'FIR'
または 'IIR'
を関数 design
に渡すことにより選択できます。詳細については、design
を参照してください。MATLAB® コマンド ラインで「help(bandstopSpecs,'method')
」と入力すると、特定の設計法 'method'
に対する設計オプションの詳細ヘルプを取得できます。
手順の詳細については、フィルターの設計手順を参照してください。例としてはノッチ フィルターの設計を参照してください。
仕様の値。値のコンマ区切りリストを指定します。式に現れる順序で spec
の各オプションの値を指定します。
例: bandstopSpecs = fdesign.bandstop('N,Fp1,Fst1,Fst2,Fp2,C',n,fp1,fst1,fst2,fp2,c)
以下の引数では、式の各オプションの詳細について説明します。
IIR フィルターの分子の次数。非負の整数として指定します。
データ型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
IIR フィルターの分母の次数。正の整数として指定します。
データ型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
これにより、3 つの帯域のうちの 1 つまたは 2 つにおいて、固定次設計の通過帯域リップルまたは阻止帯域の減衰量を指定できます。
仕様 'N,Fp1,Fst1,Fst2,Fp2,C'
では、3 つのすべての帯域 (2 つの通過帯域および 1 つの阻止帯域) の制約を同時に指定することはできません。制約は 1 つまたは 2 つの帯域で指定できます。
両方の通過帯域が 1 dB の既定値に制限されている、次のバンドストップ設計仕様について考えます。
例: spec = fdesign.bandstop('N,Fp1,Fst1,Fst2,Fp2,C',10,0.35,0.45,0.55,0.65); spec.Passband1Constrained=true; spec.Passband2Constrained=true;
最初の通過帯域で許容されるリップル量。dB 単位で正のスカラーとして指定します。magunits
が 'linear'
または 'squared'
である場合、指定に関係なく、最初の通過帯域リップルは関数によって dB 単位に変換されて格納されます。
データ型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
2 番目の通過帯域で許容されるリップル量。dB 単位で正のスカラーとして指定します。magunits
が 'linear'
または 'squared'
である場合、指定に関係なく、2 番目の通過帯域リップルは関数によって dB 単位に変換されて格納されます。
データ型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
阻止帯域の減衰量。dB 単位で正のスカラーとして指定します。magunits
が 'linear'
または 'squared'
である場合、指定に関係なく、阻止帯域の減衰量は関数によって dB 単位に変換されて格納されます。
データ型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
正規化周波数単位でのフィルター通過帯域の帯域幅。正のスカラーとして指定します。
データ型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
最初の 3 dB の周波数。正規化周波数単位で正のスカラーとして指定します。
これは最初のカットオフの通過帯域値より 3 dB 低い位置での周波数です。IIR フィルターにのみ適用されます。
データ型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
2 番目の 3 dB の周波数。正規化周波数単位で正のスカラーとして指定します。
これは 2 番目のカットオフの通過帯域値より 3 dB 低い位置での周波数です。IIR フィルターにのみ適用されます。
データ型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
最初のカットオフ周波数。正規化周波数単位で正のスカラーとして指定します。
FIR フィルターにのみ適用されます。
データ型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
2 番目のカットオフ周波数。正規化周波数単位で正のスカラーとして指定します。
FIR フィルターにのみ適用されます。
データ型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
最初の阻止帯域周波数。正規化周波数単位で正のスカラーとして指定します。
これは、阻止帯域の先頭の周波数です。
データ型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
2 番目の阻止帯域周波数。正規化周波数単位で正のスカラーとして指定します。
これは、阻止帯域の末尾の周波数です。
データ型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
最初の通過帯域周波数。正規化周波数単位で正のスカラーとして指定します。
これは最初の通過帯域の末尾の周波数です。
データ型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
2 番目の通過帯域周波数。正規化周波数単位で正のスカラーとして指定します。
これは、2 番目の通過帯域の先頭の周波数です。
データ型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
フィルターを適用する信号のサンプル レート。Hz 単位でスカラーを指定します。サンプル レートは、指定する他の数値の後でスカラーとして指定します。Fs
が指定された場合、指定された他のすべての周波数値と同じように、Fs
は Hz 単位であると見なされます。仕様の文字列を変更する必要はないことに注意してください。
次の設計では、仕様文字列を 'Fp1,Fst1,Fst2,Fp2,Ap1,Ast,Ap2'
に、サンプル レートを 8000 Hz に設定しています。
bandstopSpecs = fdesign.bandstop('Fp1,Fst1,Fst2,Fp2,Ap1,Ast,Ap2',1600,2000,2400,2800,1,80,.5,8000); filt = design(bandstopSpecs,'Systemobject',true);
データ型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
振幅仕様の単位。'dB'
、'linear'
または 'squared'
を指定します。この引数を省略すると、'dB'
であると仮定されます。振幅仕様は指定に関係なく常に dB 単位に変換されて格納されることに注意してください。Fs
が入力引数に含まれている場合、magunits
は入力引数リスト内で Fs
より後に指定しなければなりません。
出力引数
バージョン履歴
R2009a で導入
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Web サイトの選択
Web サイトを選択すると、翻訳されたコンテンツにアクセスし、地域のイベントやサービスを確認できます。現在の位置情報に基づき、次のサイトの選択を推奨します:
また、以下のリストから Web サイトを選択することもできます。
最適なサイトパフォーマンスの取得方法
中国のサイト (中国語または英語) を選択することで、最適なサイトパフォーマンスが得られます。その他の国の MathWorks のサイトは、お客様の地域からのアクセスが最適化されていません。
南北アメリカ
- América Latina (Español)
- Canada (English)
- United States (English)
ヨーロッパ
- 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)