码迷,mamicode.com
首页 > 编程语言 > 详细

基于DSP的C语言来实现FIR滤波器

时间:2017-12-09 13:06:23      阅读:235      评论:0      收藏:0      [点我收藏+]

标签:std   lte   text   amp   images   数字信号处理   style   cti   数据   

 首先,FIR滤波器的输出公式为:

                                                  技术分享图片(具体的话可以查看数字信号处理书籍,都忘得差不多了。。。)

 

假设:输入的信号是x(n) = sin(2*pi*f1*n/fs) + sin(2*pi*f2*n/fs)  

      所设计的滤波器是一个低通FIR滤波器,使用的是hamming窗,阶数为10

则可以使用MATLAB 的滤波器设计工具来设计滤波器:

技术分享图片

然后可以通过设计滤波器,生成C头文件来获取所需要的数值:

技术分享图片

 

 

FIR滤波器的C程序如下:

#include <stdio.h>
#include <math.h>             

#define pi    3.1415
#define N     11                      //N为滤波器的阶数+1
#define LEN   512

int inputdata[LEN];                   //假设数据的长度为512
int outputdata[LEN];

long int yn;                                //yn为int的话,在运算中数据可能会溢出,从而滤波失败

const int B[N] = {166, 0, -1374, 0, 9453, 16279, 9453, 0, -1374, 0,  166}    //FIR滤波器的参数,由MATLAB生成
void main()
{
	int f1,f2,fs,i,j;
        int  *a;
	
        f1=100;    //频率分量1(Hz)
	f2=300;    //频率分量2(Hz)
	fs=800;    //采样频率(Hz)

	
	
	for(i=0;n<LEN;n++)
	{
            inputdata[n]=sin(2*pi*f1*n/fs) + sin(2*pi*f2*n/fs);    //产生信号
        }
		
	for(j=0;j<LEN;j++)             //根据公式来进行滤波
	{
		a=&inputdata[j];
		yn=0;
		
                for(i=0;i<N;i++)
		{
                     yn=yn+B[i]*(*a++);
                }	
			
		outputdata[j]=yn>>16;     //滤波后信号
	}
	
	while(1);
}
                 

 

在CCS环境下运行,并且通过Graph来观察inputdata和outputdata的时域和频域图(这里就不上图了,在学校的实验课上测试过了。。。)

其CMD文件为:

-e start
MEMORY  {
        PAGE 0:
	         	PARAM:  org = 3000h    len = 4000h
        PAGE 1:
                        DARAM:  org = 100h    len=4000h
        } 
                                      
SECTIONS{
         .text 	        : >       PARAM   PAGE 0 
         stack          : >       DARAM   PAGE 1
         filter_vars	: >       DARAM   PAGE 1
        .bss  	 	: >       DARAM   PAGE 1
        .data 	 	: >       DARAM   PAGE 1
        }

  

 

基于DSP的C语言来实现FIR滤波器

标签:std   lte   text   amp   images   数字信号处理   style   cti   数据   

原文地址:http://www.cnblogs.com/Recca/p/8011093.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!