fdesign.bandpass
バンドパス フィルター設計仕様オブジェクト
構文
説明
関数 fdesign.bandpass
は、通過帯域周波数、阻止帯域周波数、通過帯域リップル、フィルター次数などのフィルターの仕様が含まれている bandpass
フィルター設計仕様オブジェクトを返します。関数 design
を使用して、フィルター設計仕様オブジェクトからフィルターを設計します。
制御オプションの詳細については、フィルターの設計手順を参照してください。完全なワークフローについては、Fdesign でのフィルターの設計 — プロセスの概要を参照してください。
は、次の既定の値をもつバンドパス フィルター設計仕様オブジェクトを構築します。 bandpassSpecs
= fdesign.bandpass
最初の阻止帯域周波数を 0.35 に設定。
最初の通過帯域周波数を 0.45 に設定。
2 番目の通過帯域周波数を 0.55 に設定。
2 番目の阻止帯域周波数を 0.65 に設定。
最初の阻止帯域の減衰量を 60 dB に設定。
通過帯域リップルを 1 dB に設定。
2 番目の阻止帯域の減衰量を 60 dB に設定。
は、特定のフィルター次数、阻止帯域周波数、通過帯域周波数、および仕様オプションをもつ、バンドパス フィルター仕様オブジェクトを構築します。指定するオプションを式 bandpassSpecs
= fdesign.bandpass(spec
,value1,...,valueN
)spec
で表します。式の後で、各オプションの値を指定します。spec
引数の後に値を指定しない場合、関数は既定値を仮定します。
では、フィルターを適用する信号のサンプル レートを Hz で指定します。bandpassSpecs
= fdesign.bandpass(___,Fs
)Fs
は、指定する他の数値の後でスカラーとして指定しなければなりません。この場合は、仕様内のすべての周波数も Hz です。
設計仕様 fdesign.bandpass('Fst1,Fp1,Fp2,Fst2,Ast1,Ap,Ast2',.4,.5,.6,.7,60,1,80)
は同じフィルターを fdesign.bandstop('Fst1,Fp1,Fp2,Fst2,Ast1,Ap,Ast2',1600,2000,2400,2800,60,1,80,8000)
として設計します。
では、指定した振幅の単位を指定します。bandpassSpecs
= fdesign.bandpass(___,magunits
)magunits
は、'linear'
、'dB'
、または 'squared'
のいずれかになります。この引数を省略すると、オブジェクトは、振幅の指定の単位を 'dB'
と仮定します。振幅仕様は、指定方法にかかわらず、常にデシベル単位に変換されて格納されます。Fs
が指定された場合、magunits
は入力引数リストの Fs
に従わなければなりません。
例
[1, 1.4] kHz の通過帯域をもち、次数が 100 の制約付き帯域 FIR 等リップル フィルターを設計します。阻止帯域の減衰量の値は両方とも 60 dB に制約されます。サンプル レートは 10 kHz です。
関数 fdesign.bandpass
を使用し、次の設計パラメーターを指定して、bandpass
フィルター設計仕様オブジェクトを作成します。
bandpassSpecs = fdesign.bandpass('N,Fst1,Fp1,Fp2,Fst2,C',100,800,1e3,1.4e3,1.6e3,1e4);
2 つの阻止帯域を 60 dB の阻止帯域の減衰量で制約します。
bandpassSpecs.Stopband1Constrained = true; bandpassSpecs.Astop1 = 60; bandpassSpecs.Stopband2Constrained = true; bandpassSpecs.Astop2 = 60;
関数 design
を使用してバンドパス フィルターを設計します。生成されるフィルターは、dsp.FIRFilter
System object™ です。このフィルターをストリーミング データに適用する方法の詳細については、dsp.FIRFilter
を参照してください。
bandpassFilt = design(bandpassSpecs,Systemobject=true)
bandpassFilt = dsp.FIRFilter with properties: Structure: 'Direct form' NumeratorSource: 'Property' Numerator: [5.5055e-04 5.4751e-05 -2.2052e-05 6.5244e-05 3.6129e-04 5.7237e-04 1.9824e-04 -9.8650e-04 -0.0025 -0.0030 -0.0014 0.0023 0.0062 0.0075 0.0040 -0.0034 -0.0109 -0.0135 -0.0082 0.0031 0.0142 0.0181 0.0119 -0.0012 … ] (1×101 double) InitialConditions: 0 Show all properties
設計したフィルターの周波数応答を可視化します。
filterAnalyzer(bandpassFilt)
measure
を使用して、フィルターの周波数応答特性を測定します。通過帯域リップルは 2 dB をわずかに上回ります。この設計ではいずれの阻止帯域も制約されるため、通過帯域リップルを制約することはできません。
measure(bandpassFilt)
ans = Sample Rate : 10 kHz First Stopband Edge : 800 Hz First 6-dB Point : 946.7621 Hz First 3-dB Point : 975.1807 Hz First Passband Edge : 1 kHz Second Passband Edge : 1.4 kHz Second 3-dB Point : 1.4248 kHz Second 6-dB Point : 1.4533 kHz Second Stopband Edge : 1.6 kHz First Stopband Atten. : 60.0614 dB Passband Ripple : 2.1443 dB Second Stopband Atten. : 60.0399 dB First Transition Width : 200 Hz Second Transition Width : 200 Hz
バタワース IIR バンドパス フィルターを設計します。フィルターの設計手順は、次のようになります。
関数
fdesign
を使用して、フィルター設計仕様を指定します。関数
designmethods
に用意されている設計法を選択します。選択できる設計オプションを調べるため、関数
designoptions
を使用します。関数
design
を使用してフィルターを設計します。
fdesign.bandpass
を使用して、既定のバンドパス フィルター設計仕様オブジェクトを作成します。
bandpassSpecs = fdesign.bandpass
bandpassSpecs = bandpass with properties: Response: 'Bandpass' Specification: 'Fst1,Fp1,Fp2,Fst2,Ast1,Ap,Ast2' Description: {7×1 cell} NormalizedFrequency: 1 Fstop1: 0.3500 Fpass1: 0.4500 Fpass2: 0.5500 Fstop2: 0.6500 Astop1: 60 Apass: 1 Astop2: 60
関数 designmethods
を使用して、使用可能な設計法を調べます。バタワース フィルターを設計するため、butter
を選択します。
designmethods(bandpassSpecs,'Systemobject',true)
Design Methods that support System objects for class fdesign.bandpass (Fst1,Fp1,Fp2,Fst2,Ast1,Ap,Ast2): butter cheby1 cheby2 ellip equiripple kaiserwin
フィルターを設計するときに、追加の設計オプションを指定できます。関数 designoptions
を使用して、オプションの一覧を表示します。この関数は、フィルターで使用する既定の設計オプションも表示します。
designoptions(bandpassSpecs,'butter')
ans = struct with fields:
FilterStructure: {'df1sos' 'df2sos' 'df1tsos' 'df2tsos' 'cascadeallpass' 'cascadewdfallpass'}
SOSScaleNorm: 'ustring'
SOSScaleOpts: 'fdopts.sosscaling'
MatchExactly: {'passband' 'stopband'}
SystemObject: 'bool'
DefaultFilterStructure: 'df2sos'
DefaultMatchExactly: 'stopband'
DefaultSOSScaleNorm: ''
DefaultSOSScaleOpts: [1×1 fdopts.sosscaling]
DefaultSystemObject: 0
関数 design
を使用してフィルターを設計します。'butter'
と、変数 bandpassSpecs
で与えられる仕様を入力引数として渡します。'matchexactly'
設計オプションとして 'passband'
を指定します。
bpFilter = design(bandpassSpecs,'butter','matchexactly','passband','SystemObject',true)
bpFilter = dsp.SOSFilter with properties: Structure: 'Direct form II' CoefficientSource: 'Property' Numerator: [7×3 double] Denominator: [7×3 double] HasScaleValues: true ScaleValues: [0.1657 0.1657 0.1561 0.1561 0.1504 0.1504 0.1485 1] Show all properties
設計したフィルターの周波数応答を可視化します。
freqz(bpFilter)
周波数が 1 kHz、10 kHz、および 15 kHz の 3 つの正弦波で構成される離散時間正弦波信号のバンドパス フィルター処理を行います。
最初にバンドパス フィルター設計仕様オブジェクトを作成し、次いでその仕様を使用してフィルターを設計することで、FIR 等リップル バンドパス フィルターを設計します。
バンドパス フィルターの設計
fdesign.bandpass
を使用して、バンドパス フィルター設計仕様オブジェクトを作成します。
bandpassSpecs = fdesign.bandpass('Fst1,Fp1,Fp2,Fst2,Ast1,Ap,Ast2', ... 1/4,3/8,5/8,6/8,60,1,60);
このオブジェクトの使用可能な設計法を示します。
designmethods(bandpassSpecs)
Design Methods for class fdesign.bandpass (Fst1,Fp1,Fp2,Fst2,Ast1,Ap,Ast2): butter cheby1 cheby2 ellip equiripple kaiserwin
等リップル フィルターを設計するには、'equiripple'
を選択します。
bpFilter = design(bandpassSpecs,'equiripple',Systemobject=true)
bpFilter = dsp.FIRFilter with properties: Structure: 'Direct form' NumeratorSource: 'Property' Numerator: [-0.0043 -3.0812e-15 0.0136 3.7820e-15 -0.0180 -4.2321e-15 7.1634e-04 4.0993e-15 0.0373 -4.1057e-15 -0.0579 3.7505e-15 0.0078 -3.4246e-15 0.1244 2.4753e-15 -0.2737 -8.6287e-16 0.3396 -8.6287e-16 -0.2737 2.4753e-15 … ] (1×37 double) InitialConditions: 0 Show all properties
設計したフィルターの周波数応答を可視化します。
freqz(bpFilter,[],44100)
正弦波信号の作成
1 kHz、10 kHz、および 15 kHz の周波数をもつ 3 つの正弦波の和である信号を作成します。スペクトル アナライザーを初期化し、元の信号とフィルター処理された信号を表示します。
Sine1 = dsp.SineWave(Frequency=1e3,SampleRate=44.1e3,SamplesPerFrame=4000); Sine2 = dsp.SineWave(Frequency=10e3,SampleRate=44.1e3,SamplesPerFrame=4000); Sine3 = dsp.SineWave(Frequency=15e3,SampleRate=44.1e3,SamplesPerFrame=4000); SpecAna = spectrumAnalyzer(PlotAsTwoSidedSpectrum=false, ... SampleRate=Sine1.SampleRate, ... ShowLegend=true, ... YLimits=[-240,45]); SpecAna.ChannelNames = {'Original noisy signal','Bandpass filtered signal'};
正弦波信号のフィルター処理
設計したバンドパス フィルターを使用して正弦波信号をフィルター処理します。元の信号とフィルター処理された信号をスペクトル アナライザーで表示します。1 kHz のトーンはフィルターで除外され、減衰します。10 kHz のトーンは影響を受けず、15 kHz のトーンはフィルターの遷移帯域に現れるため、少し減衰します。
for i = 1:5000 x = Sine1()+Sine2()+Sine3(); y = bpFilter(x); SpecAna(x,y); end release(SpecAna)
入力引数
仕様の式。次のいずれかの文字ベクトルを指定します。
'Fst1,Fp1,Fp2,Fst2,Ast1,Ap,Ast2'
(既定の設定)'N,F3dB1,F3dB2'
'N,F3dB1,F3dB2,Ap'
'N,F3dB1,F3dB2,Ast'
'N,F3dB1,F3dB2,Ast1,Ap,Ast2'
'N,F3dB1,F3dB2,BWp'
'N,F3dB1,F3dB2,BWst'
'N,Fc1,Fc2'
'N,Fc1,Fc2,Ast1,Ap,Ast2'
'N,Fp1,Fp2,Ap'
'N,Fp1,Fp2,Ast1,Ap,Ast2'
'N,Fst1,Fp1,Fp2,Fst2'
'N,Fst1,Fp1,Fp2,Fst2,C'
'N,Fst1,Fp1,Fp2,Fst2,Ap'
'N,Fst1,Fst2,Ast'
'Nb,Na,Fst1,Fp1,Fp2,Fst2'
次の表で、式で使用できる各オプションを説明します。
仕様のオプション | 説明 |
---|---|
Ap | 通過帯域で許容されるリップル量。dB 単位で Apass として指定します。 |
Ast | 阻止帯域の減衰量 (dB)。Astop を使用して指定します。 |
Ast1 | 最初の阻止帯域の減衰量 (dB)。Astop1 を使用して指定します。 |
Ast2 | 2 番目の阻止帯域の減衰量 (dB)。Astop2 を使用して指定します。 |
BWp | フィルター通過帯域の帯域幅。正規化周波数単位で BWpass として指定します。 |
BWst | 2 つの阻止帯域周波数の間の周波数の幅。正規化周波数単位で 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 フィルターの分子の次数。NumOrder プロパティを使用して指定します。 |
Na | IIR フィルターの分母の次数。DenOrder プロパティを使用して指定します。 |
C | 制約付き帯域フラグ。これにより、3 つの帯域のうちの 1 つまたは 2 つにおいて、固定次設計の通過帯域リップルまたは阻止帯域の減衰量を指定できます。 詳細については、 |
フィルターの仕様を図で表すと、以下のようになります。
Fst1
と Fp1
間などの仕様値間の領域は、フィルター応答が明示的に定義されていない遷移領域です。
フィルターの設計に使用できる設計法は、仕様の式によって異なります。これらの方法は、関数 designmethods
を使用して取得できます。次の表は、fdesign.bandpass
でサポートされる仕様の式および対応する設計法の一覧です。
仕様の式 | サポートされる設計法 |
---|---|
'Fst1,Fp1,Fp2,Fst2,Ast1,Ap,Ast2' | butter , cheby1 , cheby2 , ellip , equiripple , kaiserwin |
'N,F3dB1,F3dB2' | butter |
'N,F3dB1,F3dB2,Ap' | cheby1 |
'N,F3dB1,F3dB2,Ast' | cheby2 , ellip |
'N,F3dB1,F3dB2,Ast1,Ap,Ast2' | ellip |
'N,F3dB1,F3dB2,BWp' | cheby1 |
'N,F3dB1,F3dB2,BWst' | cheby2 |
'N,Fc1,Fc2' | window |
'N,Fc1,Fc2,Ast1,Ap,Ast2' | fircls |
'N,Fp1,Fp2,Ap' | cheby1 |
'N,Fp1,Fp2,Ast1,Ap,Ast2' | ellip |
'N,Fst1,Fp1,Fp2,Fst2' | iirlpnorm , equiripple , firls |
'N,Fst1,Fp1,Fp2,Fst2,C' | equiripple |
'N,Fst1,Fp1,Fp2,Fst2,Ap' | ellip |
'N,Fst1,Fst2,Ast' | cheby2 |
'Nb,Na,Fst1,Fp1,Fp2,Fst2' | iirlpnorm |
フィルターを設計するには、次のいずれかの設計法を入力にして関数 design
を呼び出します。フィルター応答のタイプは、'FIR'
または 'IIR'
を関数 design
に渡すことにより選択できます。詳細については、design
を参照してください。MATLAB® コマンド ラインで「help(bandpassSpecs,'method')
」と入力すると、特定の設計法に対する設計オプションの詳細ヘルプを取得できます。
仕様の値。値のコンマ区切りリストを指定します。式に現れる順序で spec
の各オプションの値を指定します。
例: bandpassSpecs = fdesign.bandpass('N,Fc1,Fc2,Ast1,Ap,Ast2',n,fc1,fc2,ast1,ap,ast2)
以下の入力引数では、式の各オプションの詳細について説明します。
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,Fst1,Fp1,Fp2,Fst2,C'
では、3 つのすべての帯域 (2 つの阻止帯域および 1 つの通過帯域) の制約を同時に指定することはできません。制約は 1 つまたは 2 つの帯域で指定できます。
両方の阻止帯域が 60 dB の既定値に制限されている、次のバンドパス設計仕様について考えます。
例: spec = fdesign.bandpass('N,Fst1,Fp1,Fp2,Fst2,C',100,800,1e3,1.4e3,1.6e3,1e4); spec.Stopband1Constrained=true; spec.Stopband2Constrained=true;
通過帯域リップル。dB 単位で正のスカラーを指定します。magunits
が 'linear'
または 'squared'
である場合、指定に関係なく、通過帯域リップルは関数によって 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
最初の阻止帯域の減衰量。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
最初の 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 番目の阻止帯域周波数。正規化周波数単位で正のスカラーとして指定します。
これは 2 番目の阻止帯域の先頭のエッジの周波数です。
データ型: 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
2 つの阻止帯域周波数の間の周波数の幅。正規化周波数単位で正のスカラーとして指定します。
データ型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
フィルターを適用する信号のサンプル レート。Hz 単位でスカラーを指定します。サンプル レートは、指定する他の数値の後でスカラーとして指定します。Fs
が指定された場合、他のすべての周波数値と同じように、Fs
は Hz 単位であると見なされます。仕様の文字列を変更する必要はないことに注意してください。
次の設計では、仕様文字列を 'Fst1,Fp1,Fp2,Fst2,Ast1,Ap,Ast2'
に、サンプル レートを 8000 Hz に設定しています。
bandpassSpecs = fdesign.bandpass('Fst1,Fp1,Fp2,Fst2,Ast1,Ap,Ast2',1600,2000,2400,2800,60,1,80,8000); filt = design(bandpassSpecs,'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)