TMS320C6713で使用する場合は、コンパイラの最適化オプション -o2 を指定してください.
fast_iir.c (高速IIRフィルタ関数)
//================================================================
float fast_iir(float x) {
static float coef[13]={
0.29357052877879780, // a0
0.58714105755759560, // a1
-0.29357052877879780, // a2
-1.17428211511519076, // a3
-0.29357052877879780, // a4
0.58714105755759560, // a5
0.29357052877879780, // a6
-0.29922464400732474, // -b1
0.83321126587782335, // -b2
0.76239129232791236, // -b3
-0.15507719822462518, // -b4
-0.31822563826759126, // -b5
-0.08627526530326139 // -b6
};
static float z[13]={0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
float y;
unsigned i;
z[0]=x;
y= coef[ 0]*z[ 0]
+coef[ 1]*z[ 1]
+coef[ 2]*z[ 2]
+coef[ 3]*z[ 3]
+coef[ 4]*z[ 4]
+coef[ 5]*z[ 5]
+coef[ 6]*z[ 6]
+coef[ 7]*z[ 7]
+coef[ 8]*z[ 8]
+coef[ 9]*z[ 9]
+coef[10]*z[10]
+coef[11]*z[11]
+coef[12]*z[12];
for (i=12; 0<i; i=i-1) z[i]=z[i-1];
z[7]=y;
return y;
}
//================================================================
サンプルのIIRフィルタ(BPF)の仕様
見れば分かるようにバタワース特性です
サンプルのIIRフィルタ(BPF)の処理結果
入力信号は白色雑音