搜索
bottom↓
回复: 1

F-I-R滤波器的计算仿真

[复制链接]

出0入399汤圆

发表于 2014-7-25 12:44:16 | 显示全部楼层 |阅读模式
看了2天资料,时间太短,有不对的地方见谅,首先定义自己滤波器的参数:设计一个低通滤波器,通带边缘频率100HZ,阻带边缘频率1K,阻带衰减60db,采用频率2K。之后呢就需要用matlab计算参数了,这里有两种办法,一种是直接编程实现,一种是利用工具FDATool实现,首先利用第一种方法实现:
首先是选择窗口函数,各个窗口函数的基本参数如下:

这里我们选择海明窗。计算截止频率:2pi*[(100+1K)/2]/2K=0.55pi,这里的截止频率是数字频率,定义如下:

理想低通滤波器的响应为h1(n)=sin(0.55pin)/n/pi.
窗函数的长度在上面看出是8pi/N,低通滤波器的过度带宽为2pi*900/2K=0.9pi,两者相等,得N=8.8,取9.窗函数为:
w(n)=0.54+0.46cos2pin/(N-1)
所以最终加窗之后的响应为h(n)=h1(n)*w(n),|n|<=4;下面在matlab中实现参数的计算:



下面利用FDATool实现:

看出跟第一种方法计算的系数是一样的。
计算完系数之后可用simulink看一下是否正常,我搭了一个,输入为500HZ,8000HZ的正弦波,但是软件不熟悉,可能那块没设对,不符合现象,有熟悉的看看哪里不对:

下面通过CCS软件验证这个低通系数:
程序如下:

  1. #include"math.h"

  2. #define FIRNUMBER 9
  3. #define SIGNAL1F 1000
  4. #define SIGNAL2F 4500
  5. #define SAMPLEF  10000
  6. #define PI 3.1415926

  7. float InputWave();
  8. float FIR();

  9. float fHn[FIRNUMBER]={0.003712875589426, -0.02014261495238, -0.02635165187265,   0.2699186217774,
  10. 0.5457255389164,   0.2699186217774, -0.02635165187265, -0.02014261495238,
  11. 0.003712875589426};
  12. float fXn[FIRNUMBER]={ 0.0 };
  13. float fInput,fOutput;
  14. float fSignal1,fSignal2;
  15. float fStepSignal1,fStepSignal2;
  16. float f2PI;
  17. int i;
  18. float fIn[256],fOut[256];
  19. int nIn,nOut;
  20. /***************************************************************
  21. 函数名:main(void)
  22. 入口参数:空
  23. 出口参数:空
  24. 说明:主函数
  25. **************************************************************/
  26. main(void)
  27. {
  28.     nIn=0; nOut=0;
  29.         f2PI=2*PI;
  30.         fSignal1=0.0;
  31.         fSignal2=PI*0.1;
  32.         fStepSignal1=2*PI/30;
  33.         fStepSignal2=2*PI*1.4;
  34.         while ( 1 )
  35.         {
  36.                 fInput=InputWave();  //得到输入信号
  37.                 fIn[nIn]=fInput;      //保存在fIn[nIn]
  38.                 nIn++; nIn%=256;
  39.                 fOutput=FIR();       //FIR滤波
  40.                 fOut[nOut]=fOutput;   //保存在fOut[nOut]
  41.                 nOut++;
  42.                 if ( nOut>=256 )
  43.                 {
  44.                         nOut=0;               
  45.                 }
  46.         }
  47. }        
  48. /**************************************************************
  49. 函数名:float InputWave()
  50. 入口参数:空
  51. 出口参数:fXn[0]
  52. 说明:波形输入函数
  53. *************************************************************/
  54. float InputWave()
  55. {
  56.         for ( i=FIRNUMBER-1;i>0;i-- )
  57.         fXn[i]=fXn[i-1];
  58.         fXn[0]=sin(fSignal1)+cos(fSignal2)/6.0;
  59.         //fXn[]数组右移,并对数组第一个元素赋值
  60.         fSignal1+=fStepSignal1;
  61.         if ( fSignal1>=f2PI )        fSignal1-=f2PI;
  62.         //计算fSignal1,并使其保证在0到2PI内
  63.         fSignal2+=fStepSignal2;
  64.         if ( fSignal2>=f2PI )        fSignal2-=f2PI;
  65.         //计算fSignal2,并使其保证在0到2PI内
  66.         return(fXn[0]);
  67. }
  68. /**************************************************************
  69. 函数名:float FIR()
  70. 入口参数:空
  71. 出口参数:fSum
  72. 说明:FIR滤波函数
  73. **************************************************************/
  74. float FIR()
  75. {
  76.         float fSum;
  77.         fSum=0 ;//fSum初始化为0
  78.         for ( i=0;i<FIRNUMBER;i++ )
  79.         {
  80.                 fSum+=(fXn[i]*fHn[i]);
  81.         }
  82.         return(fSum); //返回fSum
  83. }
复制代码

是在网上找的程序,FIR函数就是滤波函数,InputWave是目标信号叠加噪声信号之后,没太仔细看叠加噪声的频率,不过低通肯定能使噪声平滑,看下面的仿真结果:


还有一点win7 64位安装不了CCS 3.3,即使安装上了有些东西也用不了,原因如下:http://www.seeddsp.com/service/bbs/archiver/?tid-46863.html
还有我的rts.lib这个文件怎么找不到呢,不过我没添加上面的仿真也没问题:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入399汤圆

 楼主| 发表于 2014-7-25 12:45:34 | 显示全部楼层
有时间的回答上面的2个问题吧:
1,simulink仿真不正确的原因?
2,rts.lib文件怎么找不到呢?
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-23 12:28

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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