声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1308|回复: 1

[滤波] 利用由fdatool设计的高通滤波系数编程进行滤波的问题

[复制链接]
发表于 2013-7-19 19:02 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

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);//滤波

}

得到的结果波形不对,。

向各位请教问题在哪里?


回复
分享到:

使用道具 举报

 楼主| 发表于 2013-7-19 19:07 | 显示全部楼层
我看了帖子:高通滤波算法
http://forum.vibunion.com/forum. ... &fromuid=210113。而且我的二阶滤波是可以的。但是高阶不对,难道是fdatool导出的系数问题?
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-11-25 09:36 , Processed in 0.061577 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表