Signal Processing Toolbox | ![]() ![]() |
upfirdn
表示
yout=
upfirdn(xin,h) yout=
upfirdn(xin,h,p) yout=
upfirdn(xin,h,p,q) [yout,zf]=
upfirdn(xin,h,...,zi)
詳細
upfirdn
は、つぎの3つの操作をカスケードに実行します。
x
の中の入力データに対して、整数p
によるアップサンプリング(ゼロ挿入)
h
に与えられたインパルス応答で、1.のデータにFIRフィルタ処理
q
によるダウンサンプリング(サンプルを間引き) upfirdn
は、処理を最速にするためMEXファイルとして提供されているので、実際に必要な出力のみを計算します。FIRフィルタは通常ローパスフィルタで、remez
やfir1
などの別の関数を使って設計する必要があります。
yout
は、FIRインパルス応答 =
upfirdn(xin,h) h
で、入力信号xin
をフィルタ処理した結果の出力信号yout
を出力します。xin
が行ベクトルか列ベクトルの場合、1つの信号を表します。xin
が配列の場合、各列が別々の出力となります。h
が行ベクトルまたは列ベクトルの場合、これは、一つのFIRフィルタを表しています。h
が行列の場合、各列は、別々の独立したFIRインパルス応答列を表しています。一つの行ベクトルまたは列ベクトルをもつ場合、それは、一つの信号を表しています。行列の場合は、各列が別々の独立した出力になります。この書式で、アップサンプリングもダウンサンプリングも行わないこともできます。
yout
は、アップサンプリング係数 =
upfirdn(xin,h,p) p
を設定します。p
は整数で、デフォルトは1です。
yout
は、ダウンサンプリング係数 =
upfirdn(xin,h,p,q) q
を設定します。q
は整数で、デフォルトは1です。
[yout,zf]
は、ベクトル =
upfirdn(xin,h,...,zi) zi
に初期条件を設定します。
初期条件ベクトルzi
のサイズは、length(h)-1
に等しく、FIRフィルタの遅れ数に対応します。
xin
がベクトルの場合、最終条件ベクトルzf
のサイズは、length(h)-1
になり、フィルタ内の遅れ数に対応します。xin
が行列の場合、zf
は、(length(h)-1)
行size(xin,2)
列の行列になります。
注意
通常、入力xin
とフィルタh
はベクトルで、1つの出力信号のみが作成されます。ただし、これらの引数が配列の場合、各列は別々の信号またはフィルタとして扱われます。有効な組合せは、つぎのとおりです。
例題
p
とq
が共に1(すなわち、レート変更をしない)の場合、結果は2つの信号の通常のコンボリューションとなります(conv
と等価)。
yy =
upfirdn(xx,hh);
この例題では、7つの異なるフィルタと1つの入力信号とのコンボリューションを行うことにより、7チャンネルフィルタバンクを実現し、そして、5回のダウンサンプリングを行います。
% hhは、L行7列のフィルタ配列と仮定します。
yy =
upfirdn(xx,hh,1,5);
44.1 kHz(CDのサンプリングレート)から48 kHz(DATのサンプリングレート)へのサンプルレート変更、すなわち、160/147の比率に変更します。これには、c
=
2/160にカットオフ周波数をもつローパスフィルタが必要です。
% fsの1/160のカットオフをもつローパスフィルタを設計 hh=
fir1(300,2/160); % きわめて長いローパスフィルタが必要 yy=
upfirdn(xx,hh,160,147);
この例題では、フィルタ設計とリサンプリングは別々のステップです。resample
は、両方のステップを1つのステップとして実行します。
アルゴリズム
upfirdn
は、ポリフェーズ補間構造を使用します。ポリフェーズ構造での乗算-加算演算の回数は、およそ(LhLx-pLx)/q
となります。ここで、Lhと Lxは、それぞれh[n]
とx[n] の長さです。
プログラムではより正確なflops回数が計算されますが、実際の回数はやはり近似値です。長い信号x[n],に対しては、この公式はほとんどの場合、正確です。
参考
|
コンボリューションおよび多項式乗算 |
|
データ列に対するサンプリングレートの低減 (間引き)
|
|
巡回型(IIR)または非巡回型(FIR)フィルタによるデータのフィルタリング
|
|
整数ファクタをもとにサンプリングレートを高くする
(内挿) |
|
内挿FIRフィルタ設計 |
|
任意のファクタによるサンプリングレートの変更
|
参考文献
[1] Crochiere, R.E., and L.R. Rabiner, Multi-Rate Signal Processing, Prentice-Hall, Englewood Cliffs, NJ, 1983, pp. 88-91.
[2] Crochiere, R.E., "A General Program to Perform Sampling Rate Conversion of Data by Rational Ratios," Programs for Digital Signal Processing, IEEE Press, New York, 1979, pp. 8.2-1 to 8.2-7.
![]() |
unwrap | vco | ![]() |