c语言写fir低通滤波器.docVIP

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
c语言写fir低通滤波器.doc

根据fir滤波器的公式y n ∑h m x n-m ; m: 0~ N-1 .利用MATLAB产生滤波器系数(h(n))并归一化,下面为一个LP滤波算法 void filter void uint16 i,j; fp32 sum; int16 x1[2030]; fp32 h[19] -0.0027, -0.0025, 0.0050, 0.0157, -0.0000, -0.0471, -0.0482, 0.0838, 0.2953, 0.4013, 0.2953, 0.0838, -0.0482, -0.0471, -0.0000,0.0157, 0.0050, -0.0025, -0.0027 ; for i 0;i 2020;i++ x1[i] data0[i]; for i 0;i 2020;i++ sum 0.0; for j 0;j 19;j++ if i j sum+ h[j]*x1[i-j]; else ; data0[i] int16 sum; for i 0;i 2000;i++ data0[i] data0[i+20]; 考虑到前19个点为不完全累加和,故抛去前19个点。(应该是前后各18个点都是不完全累加和,都应该去掉,对于数据分段进入滤波器的情况,应该把前一段的后面数据放到下一段的前面,这段时间我在解调FSK时遇到了这个问题,通过滤波器的数据的分段处理。) 设输入数据x[N],输出数据y[N],滤波器系数h[n] 1.直接法 由y m h 0 *x m +h 1 *x m-1 +...+h N-1 *x m-n-1 ; void fir short x[], short h[], short y[] int i,j; long long sum; for j 0; j N; j++ sum 0; for i 0; i n; i++ sum + x[j-i] * h[i]; y[j] sum 15; 乘法器使用次数:N*n 2.逆推法: void fir short x[], short h[], short y[] int i,j; long sum; for j 0; j n; j++ for i 0; i N; i++ sum 0; sum h[j] * x[i] y[i] + sum 15; 乘法器使用次数:N*n 3.倒序法:(输入输出可以是同一量) void fir short x[], short h[], short y[] int i,j; long long sum; for j N; j 0; j-- sum 0; for i n; i 0; i-- sum + x[j-i] * h[i]; y[j] sum 15; #include #include #define true 1 #define false 0 #define n 8 #define bufsize 100 /* the buffer size is 100 */ /* global declarations */ int in_buffer[bufsize]; /* processing data buffers */ int out_buffer[bufsize]; /* functions */ static int processing int *input, int *output ; static void dataio void ; static long round long a ; void main int *input in_buffer[0]; int *output out_buffer[0]; puts the 1st experiment started\n ; /* loop forever */ while true /* * read input data using a probe-point connected to a host file. * write output data to a graph connected through a probe-point. */ // read the input signal. // if the input file is sine1.dat, the signal contains 300hz,400hz and 500hz. // if the input file is sine2.dat, the signal contains 1

文档评论(0)

dmz158 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档