c语言写的fir低通滤波器

上传人:第*** 文档编号:31071334 上传时间:2018-02-04 格式:DOC 页数:5 大小:40KB
返回 下载 相关 举报
c语言写的fir低通滤波器_第1页
第1页 / 共5页
c语言写的fir低通滤波器_第2页
第2页 / 共5页
c语言写的fir低通滤波器_第3页
第3页 / 共5页
c语言写的fir低通滤波器_第4页
第4页 / 共5页
c语言写的fir低通滤波器_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
资源描述

《c语言写的fir低通滤波器》由会员分享,可在线阅读,更多相关《c语言写的fir低通滤波器(5页珍藏版)》请在金锄头文库上搜索。

1、根据 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 x12030;fp32 h19= -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

2、;for(i=0;i= j)sum+=hj*x1i-j;else;data0i=(int16)sum;for(i=0;i 15;乘法器使用次数:N*n2.逆推法:void fir(short x, short h, short y)int i,j;long sum; for (j = 0; j 15;乘法器使用次数:N*n3.倒序法:(输入输出可以是同一量)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 += xj-i *

3、hi;yj = 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_bufferbufsize; /* processing data buffers */int out_bufferbufsize;/* functions */static int processing(int *input, int *output);static void dataio(v

4、oid);static long round(long a);void main()int *input = int *output = puts(the 1st experiment startedn);/* 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 inp

5、ut file is sine1.dat, the signal contains 300hz,400hz and 500hz./ if the input file is sine2.dat, the signal contains 100hz,400hz and 500hz./ the sampling frequency is 1200hz.dataio();/* remove the frequency compoment of 400hz and 500hz*/processing(input, output);/ write the output signal./ the outp

6、ut file is result.dat.dataio();/* = processing =* function: apply a low-pass fir filter to input signal and remove the frequency higher than 350hz.* parameters: address of input and output buffers.* return value: true. */static int processing(int *input, int *output)int i,size = bufsize;short xx0,x,

7、y;/ short zn=0,0,0,0,0,0,0,0,0;short zn=0,0,0,0,0,0,0,0;/short w2*n+1=22,356,155,990,466,220,777,216,777,26,466,9,155,0,22;/short w2*n+1=6,457,56,1024,224,418,523,382,784,99,784,43,523;/ short w2*n+1=330*2,3299*2,1982*2,6867*2,4955*2,1594*2,6607*2,1065*2,4955*2,109*2,1982*2,17*2,330*2;/short w2*n+1=

8、661,6598,3964,13733,9910,3187,13214,2131,9910,217,3964,34,661;/ short w2*n+1=58,5628,526,8192,2105,5883,4913,3829,7369,1543,7369,504,4913,102,2105,14,526,1,58;/short w2*n+1=28,4432,280,8192,1259,4883,3356,3975,5873,1509,7048,644,5873,142,3356,30,1259,3,280,0,28;/ short w2*n+1=26,651,182,1024,545,421

9、,909,247,909,51,545,11,182,1,26;/short w2*n+1=831,20846,5815,32768,17445,13486,29075,7888,29075,1647,17445,349,5815,21,831;/short w2*n+1=208,5211,1454,8192,4361,3371,7269,1972,7269,412,4361,87,1454,5,208;short w2*n+1=101,4356,810,8192,2835,3403,5670,2517,7088,605,5670,193,2835,21,810;/ short w2*n+1=

10、101,4356,810,8192,2835,3403,5670,2517,7088,605,5670,193,2835,21,810,2,101;/ short w2*n+1=50,3814,454,8192,1815,3504,4235*,3084,6353,831,6353,349,4235,50,1815,8,454,0,50;long y0,z0;/22222222222222while(size-)xx0=*input+;x=xx0*6;z0=(long)x15);y0=round(y0); for(i=n-1;i0;i-)zi=zi-1; z0=round(z0);z0=(short)(z015);y=(short)(y015);*output+ =y;/* additional processing load */return(true);/* = dataio =* function: read input signal and write processed output signal.* parameters: none.* return value: none.*/static void dataio()/* do data i/o */return;static long round(long a) long x3;x3=areturn x3;

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 解决方案

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号