马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?我要加入
x
本帖最后由 fnjcr 于 2013-7-19 19:08 编辑
本人是matlab+信号处理的新手
使用振动传感器采集速度波形,再由波形计算位移。在进行积分、去趋势后需要进行高通滤波,滤除极低频的干扰。
使用fdatool进行滤波器设计
convert to singlel section,得到了分子分母系数:
const int NL = 10;
const real64_T NUM[10] = { 0.8558457777315, -7.702611999584, 30.81044799834, -71.89104532945, 107.8365679942, -107.8365679942, 71.89104532945, -30.81044799834, 7.702611999584, -0.8558457777315 }; const int DL = 10; const real64_T DEN[10] = { 1, -8.688722481439, 33.55806880257, -75.61737954546, 109.553642522, -105.8293351142, 68.16455775223, -28.22860996292, 6.820250022448, -0.7324719952609 };
然后进行差分计算得到滤波结果,如下: pWave为输入波形,pFilter的内容也复制为输入波形 for(i=16; i<dataLength+32; ++i) { *(pFilter+i)= 0; float_Value = 0; for(j=0; j<10; ++j) { float_Value += (NUM[j]*(*(pWave+i-j))-DEN[j]*(*(pFilter+i-j))); } //好多结果的绝对值都超过32768 了。。。 if (float_Value>32768) { float_Value = 32768; } if (float_Value<-32768) { float_Value = -32768; } *(pFilter+i) = (float)(float_Value);//滤波 } 得到的结果波形不对,。 向各位请教问题在哪里?
|