このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
polyphase
マルチレート フィルターのポリフェーズ分解
説明
例
ポリフェーズ分解を使用するマルチレート フィルターを作成する場合、関数 polyphase
を使用すると、成分を行列の行として返して成分のフィルターを個別に解析できます。最初に、係数 3 の内挿フィルターを作成します。
hs = dsp.FIRInterpolator
hs = dsp.FIRInterpolator with properties: InterpolationFactor: 3 NumeratorSource: 'Property' Numerator: [0 -1.2906e-04 -2.2804e-04 0 5.5461e-04 8.0261e-04 0 -0.0015 -0.0020 0 0.0034 0.0043 0 -0.0067 -0.0083 0 0.0121 0.0145 0 -0.0205 -0.0241 0 0.0332 0.0388 0 -0.0530 -0.0620 0 0.0861 0.1027 0 -0.1540 -0.1976 0 ... ] (1x72 double) Use get to show all properties
この構文では、行列 p
にすべてのサブフィルターが含まれ、行列の各行にフィルターが 1 つずつ格納されます。
p = polyphase(hs)
p = 3×24
0 0 0 0 0 0 0 0 0 0 0 0 1.0000 0 0 0 0 0 0 0 0 0 0 0
-0.0001 0.0006 -0.0015 0.0034 -0.0067 0.0121 -0.0205 0.0332 -0.0530 0.0861 -0.1540 0.4088 0.8247 -0.1976 0.1027 -0.0620 0.0388 -0.0241 0.0145 -0.0083 0.0043 -0.0020 0.0008 -0.0002
-0.0002 0.0008 -0.0020 0.0043 -0.0083 0.0145 -0.0241 0.0388 -0.0620 0.1027 -0.1976 0.8247 0.4088 -0.1540 0.0861 -0.0530 0.0332 -0.0205 0.0121 -0.0067 0.0034 -0.0015 0.0006 -0.0001
最後に、成分のフィルターを個別に解析するには、対応するポリフェーズ成分ベクトルで解析関数の 1 つを使用します。たとえば、最初の成分のフィルターのインパルス応答をプロットするには、ポリフェーズ行列の最初のベクトルに対して impz
を使用します。
impz(p(1,:))
入力引数
入力フィルター。次のいずれかのフィルター System object として指定します。
ポリフェーズ行列の計算に使用する演算を指定します。'double'
または 'single'
を指定した場合、関数は倍精度または単精度の解析を実行します。'fixed'
を指定した場合は、CoefficientDataType
プロパティの設定および System object がロックされているかロック解除されているかに応じて演算が変わります。
固定小数点演算の詳細
System object の状態 | 係数のデータ型 | ルール |
---|---|---|
ロック解除 | 'Same as input' | 関数は、係数のデータ型が符号付き、16 ビット、自動スケーリングであると仮定します。関数は、この仮定に基づいて固定小数点解析を実行します。 |
ロック解除 | 'Custom' | 関数は、CustomCoefficientsDataType プロパティの設定に基づいて固定小数点解析を実行します。 |
ロック | 'Same as input' | 入力のデータ型が 'double' または 'fixed' である場合、関数は係数のデータ型が符号付き、16 ビット、自動スケーリングであると仮定します。関数は、この仮定に基づいて固定小数点解析を実行します。 |
ロック | 'Custom' | 関数は、CustomCoefficientsDataType プロパティの設定に基づいて固定小数点解析を実行します。 |
CIC 以外の構造で演算を指定しない場合、System object がロック解除された状態であれば、関数は倍精度演算を使用します。System object がロックされていれば、関数はロックされた入力のデータ型に基づいて解析を実行します。CIC 構造では固定小数点演算のみがサポートされます。
出力引数
マルチレート フィルターのポリフェーズ行列 p
。行列の各行が 1 つのポリフェーズ分岐に対応します。行列 p
の 1 行目が 1 つ目のポリフェーズ分岐を表し、2 行目が 2 つ目のポリフェーズ分岐を表し、その後も最後のポリフェーズ分岐まで同様になります。p
の列数はポリフェーズ分岐ごとのフィルター タップ数に対応します。
バージョン履歴
R2011a で導入R2024b 以降、polyphase
解析関数は dsp.VariableFIRDecimator
オブジェクトおよび dsp.VariableFIRInterpolator
オブジェクトをサポートします。
出力引数なしで関数 polyphase
を呼び出す場合、関数はマルチレート フィルターのポリフェーズ行列を返します。以前のリリースでは、出力引数のない関数 polyphase
は、すべてのポリフェーズ サブフィルターを含めてフィルターの可視化ツールを起動し、各成分のサブフィルターを個別に解析することができました。
コードを変更する必要はありません。ただし、個々のサブフィルターを解析するには、個々のポリフェーズ成分ベクトルに対してフィルター解析カテゴリのいずれかの関数を使用します。
たとえば、フィルターの可視化ツールを使用せずに、既定の dsp.FIRInterpolator
フィルターに対する最初のポリフェーズ成分サブフィルターのインパルス応答をプロットするコードを次に示します。
firI = dsp.FIRInterpolator
firI = dsp.FIRInterpolator with properties: InterpolationFactor: 3 NumeratorSource: 'Property' Numerator: [0 -1.2906e-04 -2.2804e-04 0 5.5461e-04 … ] (1×72 double)
polyComp = polyphase(firI) impz(polyComp(1,:))
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)