* サンプリングレート変換 その6 [#z733982f] 今回は,以前チラッと触れた nearest neighbor 法と bilinear 法を評価してみます. ** nearest neighbor 法 [#j9eab8a7] nearest neighbor 法とはアップコンバート時に「最近傍の点で補間」する方法です. 例えばこの方法では ( 1, 2, 3, … ) というサンプル列を 2 倍のサンプリングレートにアップコンバートする場合,単純に ( 1, 1, 2, 2, 3, 3, … ) と,前のサンプル値を繰り替えして挿入することになります. と,前のサンプル値を繰り返して挿入することになります. これを,今まで説明してきた「0 による水増しと高周波数除去フィルタ」のモデルに当てはめてみます. 高周波数除去をトランスバーサルフィルタで行うとすると,そのタップ係数が 1, 1, 0, 0, 0, 0, … である場合,nearest neighbor 法と同じ動作になります. つまり,このトランスバーサルフィルタの特性を見れば,nearest neighbor 法の特性が分かることになります. ** bilinear 法 [#g4488ad4] bilinear 法とは,アップコンバート時に「近傍のサンプル点との重み付け平均で補間する」方法です. 例えばこの方法で ( 1, 2, 3, …) というサンプル列を 4 倍のサンプリングレートにアップコンバートする場合, ( 1, 1.25, 1.5, 1.75, 2, 2.25, 2.5, 2.75, 3, …) 2 倍のサンプリングレートでは ( 1, 1.5, 2, 2.5, 3, …) となります. nearest neighbor 法と同様に「0 による水増し+高周波数除去フィルタ」のモデルに当てはめると,トランスバーサルフィルタのタップ係数は 0.5, 1, 0,5, 0, 0, … となります. ** 解析 [#m0de9f47] フィルタの周波数特性を求め,グラフにしてみました. サンプリング周波数 8000 Hz -> 16000 Hz のアップコンバートの場合です. #ref(ip.png,center) 縦軸は今回はリニアではなく,dB 表示にしてみました. また鏡像部分は表示しないようにしました. Ideal とあるのは理想特性です. どうでしょう?