ドキュメンテーション

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

fdesign.arbmag

任意応答振幅フィルターの仕様オブジェクト

構文

D= fdesign.arbmag
D= fdesign.arbmag(SPEC)
D = fdesign.arbmag(SPEC,specvalue1,specvalue2,...)
D = fdesign.arbmag(specvalue1,specvalue2,specvalue3)
D = fdesign.arbmag(...,Fs)

説明

D= fdesign.arbmag は、任意振幅フィルター仕様オブジェクト D を作成します。

D= fdesign.arbmag(SPEC) は、Specification プロパティを SPEC に初期化します。入力引数 SPEC は、以下の表に示す文字列のいずれかでなければなりません。仕様文字列では、大文字と小文字は区別されません。

    メモ:    アスタリスク付きの仕様文字列には、DSP System Toolbox™ ソフトウェアが必要です。

  • 'N,F,A' — シングルバンド設計 (既定の設定)

  • 'F,A,R' — シングルバンド最小次数設計 *

  • 'N,B,F,A' — マルチバンド設計

  • 'N,B,F,A,C' — 制約付きマルチバンド設計 *

  • 'B,F,A,R' — マルチバンド最小次数設計 *

  • 'Nb,Na,F,A' — シングルバンド設計 *

  • 'Nb,Na,B,F,A' — マルチバンド設計 *

文字列エントリは、以下のように定義されます。

  • A — 振幅ベクトル。A の値は、周波数ベクトル f で指定する周波数点でのフィルターの振幅を定義します。A を使用する場合は、F も使用しなければなりません。振幅の値は実数でなければなりません。複素数の設計には、fdesign.arbmagnphase を使用してください。

  • B — マルチバンド フィルターの帯域数

  • C — 制約付き帯域フラグ。これにより、マルチバンド設計の通過帯域リップルを制約できます。すべての帯域の通過帯域リップルを同時に制約することはできません。

  • F — 周波数ベクトル。F で指定する周波数値は、特定のフィルターの応答振幅を指定する場所を示します。F を指定する場合は、A も指定しなければなりません。

  • N — FIR フィルターのフィルター次数、および IIR フィルターの分子および分母の次数を入力します。

  • Nb — IIR フィルターの分子の次数

  • Na — IIR フィルター設計の分母の次数

  • R — リップル

既定の設定では、この手法ではすべての周波数仕様が正規化周波数で指定されていると仮定されます。

周波数と振幅ベクトルの指定

FA は、希望するフィルター応答の定義に使用する入力引数です。F で指定する各周波数値は、A に対応する応答値をもたなければなりません。以下の表に、FA がどのように関連するかを示します。

周波数ベクトル F[0 0.25 0.3 0.4 0.5 0.6 0.7 0.75 1.0] と定義します。

応答ベクトル A[1 1 0 0 0 0 0 1 1] と定義します。

これらの仕様は、FA を次に示すように接続します。

F (正規化周波数)

A (F の目標応答)

0

1

0.25

1

0.3

0

0.4

0

0.5

0

0.6

0

0.7

0

0.75

1

1.0

1

仕様によって、使用可能な設計法が異なる場合があります。特定の仕様文字列とフィルター仕様オブジェクトに対して使用可能な設計法の一覧を表示するには、関数 designmethods を使用してください。

フィルター仕様オブジェクトと特定の設計法に対して使用可能な設計オプションの一覧を表示するには、designopts を使用してください。特定の設計法に対して使用可能な設計オプションの詳細ヘルプを表示するには、「help(D,METHOD)」と入力します。

D = fdesign.arbmag(SPEC,specvalue1,specvalue2,...) は、specvalue1specvalue2 で仕様を初期化します。次のようなさまざまな仕様の説明を表示するには、get(D,'Description') を使用してください。specvalue1specvalue2、... specvalueN.

D = fdesign.arbmag(specvalue1,specvalue2,specvalue3) は、既定の仕様文字列 'N,F,A' を使用して、フィルター次数、フィルターの周波数ベクトル、および振幅ベクトルを、specvalue1specvalue2、および specvalue3 の値に設定します。

D = fdesign.arbmag(...,Fs) は、サンプリング周波数を Hz 単位で指定します。その他すべての周波数仕様も、Fs を指定した場合には Hz と仮定されます。

すべて展開する

マルチバンド任意振幅フィルターの設計

fdesign.arbmag を使用して 3 バンド フィルターを設計します。

周波数と振幅ベクトルの指定」で与えられた周波数ベクトルと振幅ベクトルを使用します。

N = 150;
B = 3;
F = [0 .25 .3 .4 .5 .6 .7 .75 1];
A = [1 1 0 0 0 0 0 1 1];
A1 = A(1:2);
A2 = A(3:7);
A3 = A(8:end);
F1 = F(1:2);
F2 = F(3:7);
F3 = F(8:end);
d = fdesign.arbmag('N,B,F,A',N,B,F1,A1,F2,A2,F3,A3);
Hd = design(d);
fvtool(Hd)

2 つの通過帯域 (約 0 ~ 0.25 と 0.75 ~ 1) をもつ応答が、FA のマッピングの結果として得られます。

シングルバンド任意振幅フィルターの設計

fdesign.arbmag を使用してシングルバンド等リップル フィルターを設計します。

n = 120;
f = linspace(0,1,100);  % 100 frequency points.
as = ones(1,100)-f*0.2;
absorb = [ones(1,30),(1-0.6*bohmanwin(10))',...
ones(1,5), (1-0.5*bohmanwin(8))',ones(1,47)];
a = as.*absorb;
d = fdesign.arbmag('N,F,A',n,f,a);
hd1 = design(d,'equiripple');

DSP System Toolbox がインストールされている場合は、最小位相等リップル フィルターを設計できます。

hd2 = design(d,'equiripple','MinPhase',true);
hfvt = fvtool([hd1 hd2],'analysis','polezero');
legend(hfvt,'Equiripple Filter','Minimum-phase Equiripple Filter');

マルチバンド最小次数任意振幅フィルターの設計

fdesign.arbmag を使用してマルチバンド最小次数フィルターを設計します。

この例には DSP System Toolbox が必要です。

1 サンプルあたり 0.25π および 0.55π ラジアンでノッチを配置します。

d = fdesign.arbmag('B,F,A,R');
d.NBands = 5;
d.B1Frequencies = [0 0.2];
d.B1Amplitudes = [1 1];
d.B1Ripple = 0.25;
d.B2Frequencies = 0.25;
d.B2Amplitudes = 0;
d.B3Frequencies = [0.3 0.5];
d.B3Amplitudes = [1 1];
d.B3Ripple = 0.25;
d.B4Frequencies = 0.55;
d.B4Amplitudes = 0;
d.B5Frequencies = [0.6 1];
d.B5Amplitudes = [1 1];
d.B5Ripple = 0.25;
Hd = design(d,'equiripple');
fvtool(Hd)

マルチバンド制約付き任意振幅フィルターの設計

fdesign.arbmag を使用してマルチバンド制約付き FIR フィルターを設計します。

この例には DSP System Toolbox が必要です。

1 サンプルあたり 0.15π ラジアンの周波数応答を 0 dB に指定します。

d = fdesign.arbmag('N,B,F,A,C',82,2);
d.B1Frequencies = [0 0.06 .1];
d.B1Amplitudes = [0 0 0];
d.B2Frequencies = [.15 1];
d.B2Amplitudes = [1 1];
% Design a filter with no constraints
Hd1 = design(d,'equiripple','B2ForcedFrequencyPoints',0.15);
% Add a constraint to the first band to increase attenuation
d.B1Constrained = true;
d.B1Ripple = .001;
Hd2 =  design(d,'equiripple','B2ForcedFrequencyPoints',0.15);
hfvt = fvtool(Hd1,Hd2);
legend(hfvt,'Original Design','Design with Constrained Stopband Ripple');

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