arm_fir_decimate_q15関数 |
デシメーション(ダウンサンプリング)を行う |
関数のソース(CMSIS 2.0以上をダウンロード・インストールする必要あり) CMSIS_2_00\CMSIS\DSP_Lib\Source\Cortex-M4-M3\FilteringFunctions\arm_fir_decimate_q15.c サンプルソース(DFFSKN40基板付属CD-ROMに収録) 2011/09/04追加 IARprojects\src\projects\arm_decim 引数と戻り値 説明(イメージ) 使用例(サンプルソースの一部)
1/2ダウンサンプリングの結果、出力は50個のデータ列になる。 実験 上記のサンプルソースをDFFSKN40基板(デジタルフィルター社)にて実験した。Cortex-M4マイコンはPK40X256VMD100(Kinetis, フリースケール社)搭載。 @100個の入力データ列を1/2ダウンサンプリングして50個の出力データを得る。 A入出力データをUSB経由でパソコンに送る。 BWindowsアプリケーションで波形観測。 KnDecim.exe(DFFSKN40基板付属CD-ROMに収録)を実行してbefore Down Samplingボタンを押すと入力データ列(inData)が描画される。低い周波数と高い周波数が混在している。 after Down Samplingボタンを押すと出力データ列(outData)が描画される。FIRフィルタで高い周波数が除去された後に間引かれている。 「単純間引き」ボタンを押すと、arm_fir_decimate_q15無しで単純に間引きを行う。その場合、高い周波数成分が低域に引っ越してきて以下のように「うねり」を持った波形となる(正しいダウンサンプリングがされていない)。 まめ知識 FIRフィルタでフィルタリングしているのでその分遅延する。56タップなので入力の28サンプル分遅延、すなわち出力の最初の14サンプルがほぼゼロになる。 1/2ダウンサンプリングの場合、blockSizeは2の倍数にする必要あり。 blockSizeとは、一度に処理する入力データの数であることに注意。 遅延器の長さはnumTaps+blockSize-1必要。 |