Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

islinphase

離散時間フィルター System object が線形位相であることの確認

説明

flag = islinphase(sysobj) は、フィルター System object™ が線形位相をもつ場合に true を返します。

flag = islinphase(sysobj,tol) は、許容誤差 tol を使用して、2 つの数が等しいと見なせる程度に近づく時点を判別します。tol を指定しない場合は、既定値の eps^(2/3) が使用されます。

flag = islinphase(___,Arithmetic=arithType) は、前の構文のいずれかを使用して、入力 arithType で指定された演算に基づいてフィルター System object を解析します。

その他の入力オプションについては、Signal Processing Toolbox™ の islinphase を参照してください。

すべて折りたたむ

ウィンドウ法を使用して、正規化されたカットオフ周波数 0.55 をもつ 10 次のローパス FIR フィルターを設計します。フィルターが線形位相をもっているかどうかを確認します。

firSpecs = fdesign.lowpass('N,Fc',10,0.55);
lpFIR = design(firSpecs,'window',SystemObject=true)
lpFIR = 
  dsp.FIRFilter with properties:

            Structure: 'Direct form'
      NumeratorSource: 'Property'
            Numerator: [0.0036 0.0078 -0.0375 -0.0334 0.2856 0.5477 0.2856 -0.0334 -0.0375 0.0078 0.0036]
    InitialConditions: 0

  Use get to show all properties

flag = islinphase(lpFIR)
flag = logical
   1

フィルターの位相応答をプロットし、線形であることを確認します。

[phs,w] = phasez(lpFIR);
plot(w/pi,phs)
xlabel('Frequency \omega/\pi')
ylabel('Phase')

Figure contains an axes object. The axes object with xlabel Frequency omega / pi, ylabel Phase contains an object of type line.

通常、IIR フィルターは線形位相をもっていません。これについて、バタワース、チェビシェフ、および楕円フィルターを同様の仕様で作成して確認します。通過帯域周波数を 0.35、阻止帯域周波数を 0.4、通過帯域リップルを 1 dB、阻止帯域の減衰量を 20 dB に設定します。

Wp = 0.35;
Wst = 0.4;
atten = 20;
rippl = 1;

buttSpecs = fdesign.lowpass('Fp,Fst,Ap,Ast',Wp,Wst,rippl,atten);
buttIIR = design(buttSpecs,'butter',SystemObject=true);

chb1Specs = fdesign.lowpass('Fp,Fst,Ap,Ast',Wp,Wst,rippl,atten);
chb1IIR = design(chb1Specs,'cheby1',SystemObject=true);

chb2Specs = fdesign.lowpass('Fp,Fst,Ap,Ast',Wp,Wst,rippl,atten);
chb2IIR = design(chb2Specs,'cheby2',SystemObject=true);

ellpSpecs = fdesign.lowpass('Fp,Fst,Ap,Ast',Wp,Wst,rippl,atten);
ellpIIR = design(ellpSpecs,'ellip',SystemObject=true);

フィルターの位相応答をプロットします。線形位相をもっているかどうかを判別します。

fv = fvtool(buttIIR,chb1IIR,chb2IIR,ellpIIR,Analysis='phase');
legend(fv,'Butterworth','Chebyshev I','Chebyshev II','Elliptic')

Figure Figure 1: Phase Response contains an axes object. The axes object with title Phase Response, xlabel Normalized Frequency ( times pi blank rad/sample), ylabel Phase (radians) contains 4 objects of type line. These objects represent Butterworth, Chebyshev I, Chebyshev II, Elliptic.

phs = [islinphase(buttIIR) islinphase(chb1IIR) ...
       islinphase(chb2IIR) islinphase(ellpIIR)]
phs = 1x4 logical array

   0   0   0   0

入力引数

すべて折りたたむ

2 つの数が等しいと見なせる程度に近づく時点を判別する許容誤差の値。正のスカラーとして指定します。tol を指定しない場合は、既定値の eps^(2/3) が使用されます。

フィルター解析で使用される演算。'double''single'、または 'Fixed' として指定します。演算入力が指定されず、フィルター System object がロック解除状態の場合、解析ツールは倍精度フィルターを使用します。演算入力が指定されず、System object がロックされている場合、関数はロックされた入力のデータ型に基づいて解析を実行します。

'Fixed' 値は、固定小数点プロパティのみをもつフィルター System object に適用されます。

'Arithmetic' 入力引数が 'Fixed' として指定され、フィルター オブジェクトの係数のデータ型が 'Same word length as input' に設定されている場合、演算解析は System object がロック解除されているかロックされているかに応じて異なります。

  • ロック解除 –– 解析オブジェクト関数は係数のデータ型を判断できません。関数は、係数のデータ型が符号付き、16 ビット語長、自動スケーリングであると仮定します。関数は、この仮定に基づいて固定小数点解析を実行します。

  • ロック –– 入力のデータ型が 'double' または 'single' の場合、解析オブジェクト関数は係数のデータ型を判断できません。関数は、係数のデータ型が符号付き、16 ビット語長、自動スケーリングであると仮定します。関数は、この仮定に基づいて固定小数点解析を実行します。

System object がロックされているかロック解除されているかを確認するには、関数 isLocked を使用します。

演算入力が 'Fixed' として指定され、フィルター オブジェクトの係数のデータ型がカスタム数値型に設定されている場合、オブジェクト関数はカスタム数値データ型に基づいて固定小数点解析を実行します。

出力引数

すべて折りたたむ

フィルターが線形位相をもつかどうかを判別するフラグ。logical として返されます。

  • 1 –– フィルターは線形位相をもっています。

  • 0 –– フィルターは非線形位相をもっています。

データ型: logical

バージョン履歴

R2013a で導入

すべて展開する