当前位置:文档之家› dsp滤波要点

dsp滤波要点

dsp滤波要点
dsp滤波要点

数字信号处理

综合设计性实验报告

学院:电子信息工程学院

班级:自动化0706班

电子0701班

指导教师:高海林

学生:张越07213056

陈冠宇07214004

北京交通大学电工电子教学基地

2010年1月20日

利用DSP实现信号滤波

一:实验目的

实现离散信号滤波是DSP的基本功能,本实验中我们尝试实现分别了设计FIR 和IIR滤波器实现低通,高通,带通,带阻四种滤波器对正弦离散信号进行滤波。(1)学会编写滤波程序和输入信号程序。

(2)熟悉CCS集成开发环境,熟悉DSK板的使用。

(3)通过实验比较FIR和IIR在设计上和滤波效果上的区别。

二:FIR滤波器的设计

例:设计一个采样频率Fs为8000Hz,输入信号频率为1000HZ、2500HZ与4000HZ 的合成信号,通过设计FIR滤波器分别实现低通,高通,带通,带阻的滤波功能。

一:实验原理

一个线性位移不变系统的输出序列y(n)和输入序列x(n)之间的关系,应满

足常系数线性差分方程:

x(n): 输入序列,y(n): 输出序列,ai、bi : 滤波器系数,N: 滤波器的阶数。在式上式中,若所有的ai 均为0,则得FIR 滤波器的差分方程:

对上式进行z 变换,可得FIR 滤波器的传递函数:

FIR 滤波器的结构

FIR 滤波器的单位冲激响应h(n)为有限长序列。

若h(n)为实数,且满足偶对称或奇对称的条件,则FIR 滤波器具有线性相位特性。在数字滤波器中,FIR 滤波器具有如下几个主要特点:

① FIR 滤波器无反馈回路,是一种无条件稳定系统;

② FIR 滤波器可以设计成具有线性相位特性。

本实验程序设计的就是一种偶对称的线性相位滤波器。

程序算法实现采用循环缓冲区法。

二:算法原理:

①在数据存储器中开辟一个N个单元的缓冲区(滑窗),用来存放最新的N个输入样本;

②从最新样本开始取数;

③读完最老样本后,输入最新样本来代替最老样本,而其他数据位置不变;

④用BK 寄存器对缓冲区进行间接寻址,使缓冲区地址首尾相邻。

三:实验程序设计步骤

1.FIR滤波器设计

利用MATLAB中的FDA工具导出正确的参数。

2.产生滤波器输入信号文件

以下是一个产生输入信号的C语言程序,信号是频率为1000Hz、2500Hz和4000Hz 的正弦波合成的波形:

#include

#include

void main()

{

int i;

double f[256];

FILE *fp;

if((fp=fopen("in.inc","wt"))==NULL)

{

printf("can't open file! \n");

return;

}

for(i=0;i<=255;i++)

{

f[i]=sin(2*3.14159*i*1000/8000)+sin(2*3.14159*i*2500/8000)+sin(2*

3.14159*4000/8000);

fprintf(fp," .word %1d\n",(long)(f[i]*32768/3));

}

fclose(fp);

}

该文件会生成一个.inc的文件,由于比较冗长,在此不再赘述。然后,在DSP汇编语言中通过.copy汇编命令将生成的数据文件iirin.inc复制到汇编程

序中,作为IIR滤波器的输入数据。此过程的作用相当于把信号通过了AD转换。

由此即可得到16位二进制数据表示的离散数据文件,即离散的三频谱叠加的正

弦信号。

3.编写滤波器的汇编源程序

(1)低通滤波器

**********一个FIR低通滤波器程序lowpass.asm************

**************使用线性缓冲区法************************

.mmregs

.global start

.def start,_c_int00

KS .set 256 ;输入样本数据个数

N .set 46 ;FIR滤波器阶数

COEF_FIR .sect "COEF_FIR" ;FIR滤波器系数

.word 297, 226, 180, 24, -213, -451, -585, -532, -271

.word 125, 505, 686, 535, 40, -651, -1260, -1456, -979

.word 248, 2064, 4092, 5839, 6848, 6848, 5839, 4092, 2064

.word 248, -979, -1456, -1260, -651, 40, 535,

686, 505

.word 125, -271, -532, -585, -451, -213, 24, 180, 226, 297

.data

INPUT .copy "lowpass.inc" ;输入数据在数据区0x2400 OUTPUT .space 1024 ;输出数据在数据区0x2500 DATABUF .usect "FIR_BFR",N

BOS .usect "STACK",0Fh

TOS .usect "STACK",1

.text

.asg AR4,DATA_P ;数据x(n)缓冲区指针

.asg AR6,INBUF_P ;模拟输入数据指针

.asg AR7,OUTBUF_P ;FIR滤波器输出数据指针

_c_int00

b start

nop

nop

start: SSBx FRCT ;小数乘法编程时,设置FRCT(小

数方式)位

STM #DATABUF,DATA_P ;数据缓冲区清零

RPTZ A,N-1

STL A,*DATA_P+

FIR_TASK:

STM #DATABUF,DATA_P

STM #INPUT,INBUF_P

STM #OUTPUT,OUTBUF_P

STM #KS-1,BRC

RPTB LOOP-1

LD *INBUF_P+,A ;装载输入数据

FIR_FILTER: ;FIR滤波运算

STL A,*DATA_P ;输入样本值x(n)

STM #(DATABUF+N-1),DATA_P ;数据缓冲区指针指向

x[n-(N-1)]

RPTZ A,N-1

MACD *DATA_P-,COEF_FIR,A ;FIR滤波运算

MAR *DATA_P+ ;调整DATA_P指针指向DATABUF

第一个单元

STH A,*OUTBUF_P+

LOOP:

EEND B EEND

.end

(2)高通滤波器

*********一个FIR高通滤波器程序highpass.asm************

**************使用线性缓冲区法************************

.mmregs

.global start

.def start,_c_int00

KS .set 256 ;输入样本数据个数

N .set 49 ;FIR滤波器阶数

COEF_FIR .sect "COEF_FIR" ;FIR滤波器系数

.word -358, 632, 30, -284, -184, 211, 371, -6, -448

.word -263, 396, 572, -142, -806, -319, 840, 949, -519

.word -1650, -355, 2294, 2303, -2746, -10014, 19293,

-10014, -2746

.word 2303, 2294, -355, -1650, -519, 949, 840, -319, -806

.word -142, 572, 396, -263, -448, -6, 371, 211, -184

.word -284, 30, 632, -358

.data

INPUT .copy "highpass.inc" ;输入数据在数据区0x2400 OUTPUT .space 1024 ;输出数据在数据区0x2500 DATABUF .usect "FIR_BFR",N

BOS .usect "STACK",0Fh

TOS .usect "STACK",1

.text

.asg AR4,DATA_P ;数据x(n)缓冲区指针

.asg AR6,INBUF_P ;模拟输入数据指针

.asg AR7,OUTBUF_P ;FIR滤波器输出数据指针

_c_int00

b start

nop

nop

start: SSBx FRCT ;小数乘法编程时,设置FRCT(小

数方式)位

STM #DATABUF,DATA_P ;数据缓冲区清零

RPTZ A,N-1

STL A,*DATA_P+

FIR_TASK:

STM #DATABUF,DATA_P

STM #INPUT,INBUF_P

STM #OUTPUT,OUTBUF_P

STM #KS-1,BRC

RPTB LOOP-1

LD *INBUF_P+,A ;装载输入数据

FIR_FILTER: ;FIR滤波运算

STL A,*DATA_P ;输入样本值x(n)

STM #(DATABUF+N-1),DATA_P ;数据缓冲区指针指向

x[n-(N-1)]

RPTZ A,N-1

MACD *DATA_P-,COEF_FIR,A ;FIR滤波运算

MAR *DATA_P+ ;调整DATA_P指针指向DATABUF 第一个单元

STH A,*OUTBUF_P+

LOOP:

EEND B EEND

.end

(3)带通滤波器

*********一个FIR带通滤波器程序bandpass.asm************

**************使用线性缓冲区法************************

.mmregs

.global start

.def start,_c_int00

KS .set 256 ;输入样本数据个数

N .set 46 ;FIR滤波器阶数

COEF_FIR .sect "COEF_FIR" ;FIR滤波器系数

.word 193, 108, -74, -635, -620, 112, 784, 773, 94

.word -533, -431, -18, -243, -946, -741, 1064, 2933, 2307

.word -1241, -4633, -4091, 551, 5088, 5088, 551, -4091, -4633

.word -1241, 2307, 2933, 1064, -741, -946, -243, -18, -431

.word -533, 94, 773, 784, 112, -620, -635, -74, 108, 193

.data

INPUT .copy "bandpass.inc" ;输入数据在数据区0x2400 OUTPUT .space 1024 ;输出数据在数据区0x2500 DATABUF .usect "FIR_BFR",N

BOS .usect "STACK",0Fh

TOS .usect "STACK",1

.text

.asg AR4,DATA_P ;数据x(n)缓冲区指针

.asg AR6,INBUF_P ;模拟输入数据指针

.asg AR7,OUTBUF_P ;FIR滤波器输出数据指针

_c_int00

b start

nop

nop

start: SSBx FRCT ;小数乘法编程时,设置FRCT(小

数方式)位

STM #DATABUF,DATA_P ;数据缓冲区清零

RPTZ A,N-1

STL A,*DATA_P+

FIR_TASK:

STM #DATABUF,DATA_P

STM #INPUT,INBUF_P

STM #OUTPUT,OUTBUF_P

STM #KS-1,BRC

RPTB LOOP-1

LD *INBUF_P+,A ;装载输入数据

FIR_FILTER: ;FIR滤波运算

STL A,*DATA_P ;输入样本值x(n)

STM #(DATABUF+N-1),DATA_P ;数据缓冲区指针指向

x[n-(N-1)]

RPTZ A,N-1

MACD *DATA_P-,COEF_FIR,A ;FIR滤波运算

MAR *DATA_P+ ;调整DATA_P指针指向DATABUF

第一个单元

STH A,*OUTBUF_P+

LOOP:

EEND B EEND

.end

(4)带阻滤波器

*********一个FIR带阻滤波器程序bandstop.asm************

**************使用线性缓冲区法************************

.mmregs

.global start

.def start,_c_int00

KS .set 256 ;输入样本数据个数

N .set 49 ;FIR滤波器阶数

COEF_FIR .sect "COEF_FIR" ;FIR滤波器系数

.word -309, 830, 326, 72, 98, 297, 201, -395, -910

.word -584, 414, 999, 575, -92, 42, 581, 10, -1900

.word -2933, -799, 3409, 5411, 2317, -3534, 26290, -3534, 2317

.word 5411, 3409, -799, -2933, -1900, 10, 581, 42, -92

.word 575, 999, 414, -584, -910, -395, 201, 297, 98

.word 72, 326, 830, -309

.data

INPUT .copy "bandstop.inc" ;输入数据在数据区0x2400 OUTPUT .space 1024 ;输出数据在数据区0x2500 DATABUF .usect "FIR_BFR",N

BOS .usect "STACK",0Fh

TOS .usect "STACK",1

.text

.asg AR4,DATA_P ;数据x(n)缓冲区指针

.asg AR6,INBUF_P ;模拟输入数据指针

.asg AR7,OUTBUF_P ;FIR滤波器输出数据指针

_c_int00

b start

nop

nop

start: SSBx FRCT ;小数乘法编程时,设置FRCT(小

数方式)位

STM #DATABUF,DATA_P ;数据缓冲区清零

RPTZ A,N-1

STL A,*DATA_P+

FIR_TASK:

STM #DATABUF,DATA_P

STM #INPUT,INBUF_P

STM #OUTPUT,OUTBUF_P

STM #KS-1,BRC

RPTB LOOP-1

LD *INBUF_P+,A ;装载输入数据

FIR_FILTER: ;FIR滤波运算

STL A,*DATA_P ;输入样本值x(n)

STM #(DATABUF+N-1),DATA_P ;数据缓冲区指针指向

x[n-(N-1)]

RPTZ A,N-1

MACD *DATA_P-,COEF_FIR,A ;FIR滤波运算

MAR *DATA_P+ ;调整DATA_P指针指向DATABUF 第一个单元

STH A,*OUTBUF_P+

LOOP:

EEND B EEND

.end

附:FIR滤波器的链接命令文件

CMD文件的作用是DSP代码的定位

以低通为例,其他类似

lowpass.obj

-m lowpass.map

-o lowpass.out

MEMORY

{

PAGE 0:ROM1(RIX) :ORIGIN=0080H,LENGTH=100H PAGE 1:INTRAM1(RW):ORIGIN=2400H,LENGTH=0200H INTRAM2(RW):ORIGIN=2600H,LENGTH=0100H INTRAM3(RW):ORIGIN=2700H,LENGTH=0100H B2B(RW) :ORIGIN=0070H,LENGTH=10H }

SECTIONS

{

.text : {}>ROM1 PAGE 0

.data : {}>INTRAM1 PAGE 1

COEF_FIR: {}>INTRAM2 PAGE 1

FIR_BFR : {}>INTRAM3 PAGE 1

STACK : {}>B2B PAGE 1

}

三:IIR滤波器的设计

例:设计一个采样频率Fs为8000Hz,输入信号频率为1000HZ与2500HZ与4000HZ 的合成信号,通过设计IIR滤波器实现低通和高通功能。

实验原理

数字滤波器的输入x[k]和输出y[k]之间的关系可以用如下常系数线性差分

方程及其z 变换描述:

系统的转移函数为:

设N=M,则传输函数变为:

转换成极零点表示为:

式中,j z 表示零点,j p 表示极点,它具有N 个零点和N 个极点,如果任何极点在Z 平面单位圆外,则系统不稳定。如果系数bj 全部为0,滤波器成为

非递归的FIR 滤波器,这时系统没有极点,因此FIR 滤波器总是稳定的。对于IIR 滤波器,有系数量化敏感的缺点。由于系统对序列施加的算法,是由加法、延时和常系数乘三种基本运算的组合,所以可以用不同结构的数字滤波器来实现而不影响系统总的传输函数。

四阶直接型IIR 滤波器的结构

实验程序设计步骤

1.IIR滤波器的设计以及参数提取

通过MATLAB中的FDA工具导出正确的滤波器参数,需要注意的一点是:设计IIR 滤波器时,会出现一个或一个以上的系数大于等于1的情况,为了用Q15定点小数格式表示系数,可以用大数去除所有系数。为避免在累加过程中出现大于等于一的情况,将系数进一步缩小,为此,在MATLAB中加入

二:产生滤波器输入信号的程序

程序如下:

以下是一个产生输入信号的C语言程序,信号是频率为1000Hz、2500Hz和4000Hz的正弦波合成的波形:

#include

#include

void main()

{

int i;

double f[256];

FILE *fp;

if((fp=fopen("in.inc","wt"))==NULL)

{

printf("can't open file! \n");

return;

}

for(i=0;i<=255;i++)

{

f[i]=sin(2*3.14159*i*1000/16000)+sin(2*3.14159*i*2500/16000)+sin( 2*3.14159*4000/16000);

fprintf(fp," .word %1d\n",(long)(f[i]*32768/3));

}

fclose(fp);

}

该文件会生成一个.inc的文件,由于比较冗长,在此不再赘述。然后,在DSP汇编语言中通过.copy汇编命令将生成的数据文件iirin.inc复制到汇编程序中,作为IIR滤波器的输入数据。此过程的作用相当于把信号通过了AD转换。

由此即可得到16位二进制数据表示的离散数据文件,即离散的三频谱叠加的正弦信号。

三:编写滤波器的汇编源程序

(1)低通滤波器

*****************直接型IIR数字低通滤波器汇编程序iir.asm******************

.title "lowpass.asm"

.mmregs

.global start

.def start,_c_int00

N .set 8

.copy "iirin.inc" ;输入信号x(n)数据

table ;IIR滤波器系数

.word 1,-2,3,-2,3,-2,3,-2,1

.word -271,531,-623,476,-239,77,-14,1

.data

BN .usect "BN",N+1

AN .usect "AN",N+1

INBUF .usect "INBUF",256 ;输入缓冲区在数据区0x2400 OUTPUT .usect "OUTPUT",256 ;输入缓冲区在数据区0x2600

.text

.asg AR0,INDEX_P

.asg AR2,XN_P

.asg AR3,ACOFF_P

.asg AR4,YN_P

.asg AR5,BCOFF_P

_c_int00

b start

nop

nop

start: SSBX FRCT

SSBX OVM

SSBX SXM

STM #BN+N,AR1

RPT #N

MVPD #table,*AR1- ;将bi由程序区存放到数据区

STM #AN+N-1,AR1

RPT #N-1

MVPD #table+N+1,*AR1- ;将ai由程序区存放到数据区

STM #OUTPUT,AR1

RPTZ A,#255

STL A,*AR1+ ;输出数据缓冲区清零

STM #INBUF,AR1

RPT #255

MVPD #INPUT,*AR1+ ;将输入数据由程序区存放到数据区

STM #OUTPUT,YN_P

STM #INBUF, XN_P

STM #N-1,INDEX_P

STM #255,BRC

RPTB LOOP-1

IIR: SUB A,A

STM #BN,BCOFF_P

STM #AN,ACOFF_P

RPT #N-1 ;计算前向通道

MAC *XN_P+,*BCOFF_P+,A

MAC *XN_P,*BCOFF_P,A

MAR *XN_P-0 ;将AR2指针指向x(n-N)

RPT #N-1 ;计算反馈通道

MAC *YN_P+,*ACOFF_P+,A

STH A,*YN_P-0 ;保存y(n) LOOP:

EEND B EEND

.end

(2)高通滤波器

*****************IIR数字高通滤波器汇编程序highpass.asm******************

.title "highpass.asm"

.mmregs

.global start

.def start,_c_int00

N .set 10

.copy "iirin.inc" ;输入信号x(n)数据

table ;IIR滤波器系数

.word 10,-68,229,-498,772,-891,772,-498,229,-68,10

.word -283,589,-833,875,-697,423,-191,62,-12,1

.data

BN .usect "BN",N+1

AN .usect "AN",N+1

INBUF .usect "INBUF",256 ;输入缓冲区在数据区0*2400 OUTPUT .usect "OUTPUT",256 ;输入缓冲区在数据区0*2600

.text

.asg AR0,INDEX_P

.asg AR2,XN_P

.asg AR3,ACOFF_P

.asg AR4,YN_P

.asg AR5,BCOFF_P

_c_int00

b start

nop

nop

start: SSBX FRCT

SSBX OVM

SSBX SXM

STM #BN+N,AR1

RPT #N

MVPD #table,*AR1- ;将bi由程序区存放到数据区

STM #AN+N-1,AR1

RPT #N-1

MVPD #table+N+1,*AR1- ;将ai由程序区存放到数据区

STM #OUTPUT,AR1

RPTZ A,#255

STL A,*AR1+ ;输出数据缓冲区清零

STM #INBUF,AR1

RPT #255

MVPD #INPUT,*AR1+ ;将输入数据由程序区存放到数据区

STM #OUTPUT,YN_P

STM #INBUF, XN_P

STM #N-1,INDEX_P

STM #255,BRC

RPTB LOOP-1

IIR: SUB A,A

STM #BN,BCOFF_P

STM #AN,ACOFF_P

RPT #N-1 ;计算前向通道

MAC *XN_P+,*BCOFF_P+,A

MAC *XN_P,*BCOFF_P,A

MAR *XN_P-0 ;将AR2指针指向x(n-N)

RPT #N-1 ;计算反馈通道

MAC *YN_P+,*ACOFF_P+,A

STH A,*YN_P-0 ;保存y(n) LOOP:

EEND B EEND

.end

几种非线性滤波算法的研究-内附程序

2017 年秋季学期研究生课程考核 (读书报告、研究报告) 考核科目:雷达系统导论 学生所在(系):电子与信息工程学院 学生所在学科:电子与同学工程 学生姓名: 学号: 学生类别: 考核结果阅卷人 第 1 页(共页)

几种非线性滤波算法的介绍与性能分析 作者姓名:学号: 专业院系:电信学院电子工程系 电子邮件: 摘要—非线性滤波算法在雷达目标跟踪中有着重要的应用,对雷达的跟踪性能有着至关重要的影响。好的滤波算法有利于目标航迹的建立及保持,能够得到较精确的目标位置,为发现目标后的后续工作提供可靠的数据依据。本文重点介绍了雷达数据处理中的几种非线性滤波算法:扩展卡尔曼滤波(EKF)、不敏卡尔曼滤波(UKF)、粒子滤波(PF),并且给出了一个利用这三种算法进行数据处理的一个实例,通过这个实例对比分析了这三种算法的性能以及优劣。 关键字—非线性滤波算法;扩展卡尔曼滤波;不敏卡尔曼滤波;粒子滤波; I.概述(一级表题格式) 在雷达对目标进行跟踪前要先对目标进行检测。对于满足检测条件的目标就需要进行跟踪,在跟踪的过程中可以利用新获得的数据完成对目标的进一步检测比如去除虚假目标等,同时利用跟踪获得数据可以进一步完成对目标动态特性的检测和识别。因此对目标进行准确的跟踪是雷达性能的一个重要指标。在检测到满足条件的目标后,根据目标运动状态建立目标运动模型,然后对目标跟踪算法进行设计,这是雷达目标跟踪中的核心部分。 目前主要的跟踪算法包括线性自回归滤波,两点外推滤波、维纳滤波、- αβ滤波、加权最小二乘滤波、维纳滤波和卡尔曼滤波[1]。对于线性系统而言最优滤波的方法就是卡尔曼滤波,卡尔曼滤波是线性高斯模型下的最优状态估计算法。但是实际问题中目标的运动模型往往不是线性的,因此卡尔曼滤波具有很大的局限性。目前主要用的非线性滤波算法可以分为高斯滤波和粒子滤波[2]。不敏卡尔曼滤波和扩展卡尔曼滤波就是高斯滤波中的典型代表,也是应用相对较为广泛的。粒子滤波的应用范围比高斯滤波的适用范围要广,对于系统状态非线性,观测模型非高斯等问题都有很好的适用性。本文具体分析阐述了扩展卡尔曼滤波算法,不敏卡尔曼滤波算法,粒子滤波算法,并且通过一个实例利用仿真的方法分析了这三种算法在滤波性能上的优劣,最后对这三种算法做了一定的总结。 我本科毕业设计题目为《基于历史数据的路径生成算法研究》,由于我是跨专业保研到电信学院,该课题所研究内容不属于雷达系统研究范围,是一种城市路网最快路径生成算法。 II.几种非线性滤波算法 A.扩展卡尔曼滤波 扩展卡尔曼滤波是将非线性系统转换为近似的线性系统的一种方法,其核心思想是围绕滤波值将非线性函数展开成泰勒级数并略去二阶及以上的项,得到一个近似的线性化模型,然后应用卡尔曼滤波完成状态估计。 扩展卡尔曼滤波状态空间模型: k k k w x f+ = + ) ( x 1 状态方程 k k k v x h+ =) ( z观测方程 其中(.) f和(.) h为非线性函数 在扩展卡尔曼滤波中,状态的预测以及观测值的预测由非线性函数计算得出,线性卡尔曼滤波中的状态转移矩阵A阵和观测矩阵H阵由f和h函数的雅克比矩阵代替。 对 (.) f和(.) h Taylor展开,只保留一次项有: ) ? ( ) ?( ) ( k k k k k x x A x f x f- + ≈ ) ? ( ) ?( ) ( k k k k k x x H x h x h- + ≈ 其中: k k x x k k dx df A ?= =为f对 1- k x求导的雅克比矩阵 k k x x k k dx dh H ?= =为h对 1- k x求导的雅克比矩阵 ) ?( ? 1-k k x f x=,于是可以得出: k k k k k k k w x A x f x A x+ - + ≈ + ) ? ) ?( ( 1 k k k k k k k v x H x h x H z+ - + ≈ + ) ? ) ?( ( 1 通过以上变换,将非线性问题线性化。接下来EKF 滤波过程同线性卡尔曼滤波相同,公式如下: )) | (?( ) |1 ( X?k k X f k k= + ) ( ) ( ) | ( ) ( ) |1 (P k Q k k k P k k k+ Φ' Φ = + )1 ( )1 ( ) |1 ( )1 ( )1 (S+ + + ' + + = +k R k H k k P k H k )1 ( )1 ( ) |1 ( )1 ( K1+ + ' + = +-k S k H k k P k

常用的8种数字滤波算法

常用的8种数字滤波算法 摘要:分析了采用数字滤波消除随机干扰的优点,详细论述了微机控制系统中常用的8种数字滤波算法,并讨论了各种数字滤波算法的适用范围。 关键词:数字滤波;控制系统;随机干扰;数字滤波算法 1 引言 在微机控制系统的模拟输入信号中,一般均含有各种噪声和干扰,他们来自被测信号源本身、传感器、外界干扰等。为了进行准确测量和控制,必须消除被测信号中的噪声和干扰。噪声有2大类:一类为周期性的,其典型代表为50 Hz 的工频干扰,对于这类信号,采用积分时间等于20 ms整倍数的双积分A/D转换器,可有效地消除其影响;另一类为非周期的不规则随机信号,对于随机干扰,可以用数字滤波方法予以削弱或滤除。所谓数字滤波,就是通过一定的计算或判断程序减少干扰信号在有用信号中的比重,因此他实际上是一个程序滤波。 数字滤波器克服了模拟滤波器的许多不足,他与模拟滤波器相比有以下优点: (1)数字滤波器是用软件实现的,不需要增加硬设备,因而可靠性高、稳定性好,不存在阻抗匹配问题。 (2)模拟滤波器通常是各通道专用,而数字滤波器则可多通道共享,从而降低了成本。 (3)数字滤波器可以对频率很低(如0.01 Hz)的信号进行滤波,而模拟滤波器由于受电容容量的限制,频率不可能太低。 (4)数字滤波器可以根据信号的不同,采用不同的滤波方法或滤波参数,具有灵活、方便、功能强的特点。 2 常用数字滤波算法 数字滤波器是将一组输入数字序列进行一定的运算而转换成另一组输出数字序列的装置。设数字滤波器的输入为X(n),输出为Y(n),则输入序列和输出序列之间的关系可用差分方程式表示为: 其中:输入信号X(n)可以是模拟信号经采样和A/D变换后得到的数字序列,也

基于DSP 的FIR滤波器的设计

基于TMS320VC5416 的FIR 数字滤波器设计与实现 论文摘要:在现代电子系统中,数字滤波器在语音处理、图像处理、模式识别以及各种随机信号分析中有着广泛的应用,且其波形传递系统中都越来越多的要求信道具有线性的相位特性,在这方面FIR滤波器具有独到的优点,它可以在幅度特性随意设计的同时保证精确严格的线性相位。本文以窗函数法设计线性相位FIR数字滤波器为例,研究有限冲击响应(FIR)滤波器的基本原理,介绍用MATLAB工具软件设计数字滤波器的方法和如何在定点TMS320VC5416 DSP芯片上设计实现连续数字滤波器。 关键词:FIR滤波器,TMS320V5416 一. 课题的目的以及意义 随着集成电路技术的发展,各种新型的大规模和超大规模集成电路不断涌现集成电路技术与计算机技术结合在一起,使得对数字信号处理系统功能的要求越来越强。 DSP 技术就是基于VLSI技术和计算机技术发展起来的一门重要技术,DSP 技术已在通信、控制信号处理、仪器仪表、医疗、家电等很多领域得到了越来越广泛的应用.在数字信号处理中数字滤波占有极其重要的地位。数字滤波在语音信号、图象处理模式识别和谱分析等领域中的一个基本的处理技术。数字滤波与模拟滤波相比数字滤波具有很多突出的优点,主要是因为数字滤波器是过滤时间离散信号的数字系统,它可以用软件(计算机程序)或用硬件来实现,而且在两种情况下都可以用来过滤实时信号或

非实时信号。尽管数字滤波器这个名称一直到六十年代中期才出现,但是随着科学技术的发展及计算机的更新普及,数字滤波器有着很好的发展前景。同时它也有完全取代模拟滤波器的时候,原因是数字滤波没有漂移,它能处理低频信号,数字滤波的频率响应特征可做成极接近于理想的特性,它可以做成没有插入损耗和有线性相位特性,可相当简单地获得自适应滤波,滤波器的设计者可以控制数字字长,因而可以精确地控制滤波器的精度,其中的道理是数字滤波随着滤波器参数的改变,很容易改变滤波器的性能。这一特点就能允许我们用一种程序滤波器来完成多重滤波任务。滤波器对幅度和相位特性的严格要求,可以避免模拟滤波器所无法克服的电压漂移、温度漂移和噪声等问题。用可编程DSP芯片实现数字滤波可通过修改滤波器的参数十分方便地改变滤波器的特性,因此我们有必要对滤波器的设计方法进行研究,理解其工作原理优化设计方法,设计开发稳定性好的滤波器系统。我们将通过DSP设计平台来实现较为重要的“FIR和自适应滤波器系统”并实现了它们的应用系统以TMS320VC5416芯片为核心的硬件电路,实现能独立完成滤波功能的系统从而通过本课题的研究。掌握滤波器的设计技术和原理能为在通信领域、信号处理领域等诸多领域中对数字滤波器的设计提供技术和准备。本科题的研究将为今后设计以DSP为核心部件的嵌入式系统集成提供技术准备,这不仅具有重要的理论意义同时还具有重要的现实意义。 二、FIR滤波器的DSP实现的技术指标及性能

数字滤波算法

几种简单的数字滤波 假定从8位AD中读取数据(如果是更高位的AD可定义数据类型为int),子程序为get_ad(); 1、限副滤波 /* A值可根据实际情况调整 value为有效值,new_value为当前采样值 滤波程序返回有效的实际值*/ #define A 10 char value; char filter() { char new_value; new_value = get_ad(); if ( ( new_value - value > A ) || ( value - new_value > A ) return value; return new_value; } 2、中位值滤波法 /* N值可根据实际情况调整 排序采用冒泡法*/ #define N 11 char filter() { char value_buf[N]; char count,i,j,temp; for ( count=0;countvalue_buf[i+1] ) { temp = value_buf[i]; value_buf[i] = value_buf[i+1]; value_buf[i+1] = temp; } } }

return value_buf[(N-1)/2]; } 3、算术平均滤波法 /* */ #define N 12 char filter() { int sum = 0; for ( count=0;count

几种卡尔曼滤波算法理论

自适应卡尔曼滤波 卡尔曼滤波发散的原因 如果卡尔曼滤波是稳定的,随着滤波的推进,卡尔曼滤波估计的精度应该越来越高,滤波误差方差阵也应趋于稳定值或有界值。但在实际应用中,随着量测值数目的增加,由于估计误差的均值和估计误差协方差可能越来越大,使滤波逐渐失去准确估计的作用,这种现象称为卡尔曼滤波发散。 引起滤波器发散的主要原因有两点: (1)描述系统动力学特性的数学模型和噪声估计模型不准确,不能直接真实地反映物理过程,使得模型与获得的量测值不匹配而导致滤波发散。这种由于模型建立过于粗糙或失真所引起的发散称为滤波发散。 (2)由于卡尔曼滤波是递推过程,随着滤波步数的增加,舍入误差将逐渐积累。如果计算机字长不够长,这种积累误差很有可能使估计误差方差阵失去非负定性甚至失去对称性,使滤波增益矩阵逐渐失去合适的加权作用而导致发散。这种由于计算舍入误差所引起的发散称为计算发散。 针对上述卡尔曼滤波发散的原因,目前已经出现了几种有效抑制滤波发散的方法,常用的有衰减记忆滤波、限定记忆滤波、扩充状态滤波、有限下界滤波、平方根滤波、和自适应滤波等。这些方法本质上都是以牺牲滤波器的最优性为代价来抑制滤波发散,也就是说,多数都是次优滤波方法。 自适应滤波 在很多实际系统中,系统过程噪声方差矩阵Q和量测误差方差阵R事先是不知道的,有时甚至连状态转移矩阵 或量测矩阵H也不能确切建立。如果所建立的模型与实际模型不符可能回引起滤波发散。自适应滤波就是这样一种具有抑制滤波发散作用的滤波方法。在滤波过程中,自适应滤波一方面利用量测值修正预测值,同时也对未知的或不确切的系统模型参数和噪声统计参数进行估计修正。自适应滤波的方法很多,包括贝叶斯法、极大似然法、相关法与协方差匹配法,其中最基本也是最重要的是相关法,而相关法可分为输出相关法和新息相关法。

滤波各种算法优缺点

滤波关键看你什么应用!采样频率,这个方法很多的。以下仅供参考: 1、限幅滤波法(又称程序判断滤波法) A、方法: 根据经验判断,确定两次采样允许的最大偏差值(设为A) 每次检测到新值时判断: 如果本次值与上次值之差<=A,则本次值有效 如果本次值与上次值之差>A,则本次值无效,放弃本次值,用上次值代替本次值 B、优点: 能有效克服因偶然因素引起的脉冲干扰 C、缺点 无法抑制那种周期性的干扰 平滑度差 2、中位值滤波法 A、方法: 连续采样N次(N取奇数) 把N次采样值按大小排列 取中间值为本次有效值 B、优点: 能有效克服因偶然因素引起的波动干扰 对温度、液位的变化缓慢的被测参数有良好的滤波效果 C、缺点: 对流量、速度等快速变化的参数不宜 3、算术平均滤波法 A、方法: 连续取N个采样值进行算术平均运算 N值较大时:信号平滑度较高,但灵敏度较低 N值较小时:信号平滑度较低,但灵敏度较高 N值的选取:一般流量,N=12;压力:N=4 B、优点: 适用于对一般具有随机干扰的信号进行滤波 这样信号的特点是有一个平均值,信号在某一数值范围附近上下波动 C、缺点: 对于测量速度较慢或要求数据计算速度较快的实时控制不适用 比较浪费RAM 4、递推平均滤波法(又称滑动平均滤波法) A、方法: 把连续取N个采样值看成一个队列 队列的长度固定为N 每次采样到一个新数据放入队尾,并扔掉原来队首的一次数据.(先进先出原则) 把队列中的N个数据进行算术平均运算,就可获得新的滤波结果 N值的选取:流量,N=12;压力:N=4;液面,N=4~12;温度,N=1~4 B、优点: 对周期性干扰有良好的抑制作用,平滑度高 适用于高频振荡的系统 C、缺点: 灵敏度低 对偶然出现的脉冲性干扰的抑制作用较差 不易消除由于脉冲干扰所引起的采样值偏差 不适用于脉冲干扰比较严重的场合 比较浪费RAM 5、中位值平均滤波法(又称防脉冲干扰平均滤波法) A、方法: 相当于“中位值滤波法”+“算术平均滤波法” 连续采样N个数据,去掉一个最大值和一个最小值 然后计算N-2个数据的算术平均值

dsp滤波要点

数字信号处理 综合设计性实验报告 学院:电子信息工程学院 班级:自动化0706班 电子0701班 指导教师:高海林 学生:张越07213056 陈冠宇07214004 北京交通大学电工电子教学基地 2010年1月20日

利用DSP实现信号滤波 一:实验目的 实现离散信号滤波是DSP的基本功能,本实验中我们尝试实现分别了设计FIR 和IIR滤波器实现低通,高通,带通,带阻四种滤波器对正弦离散信号进行滤波。(1)学会编写滤波程序和输入信号程序。 (2)熟悉CCS集成开发环境,熟悉DSK板的使用。 (3)通过实验比较FIR和IIR在设计上和滤波效果上的区别。 二:FIR滤波器的设计 例:设计一个采样频率Fs为8000Hz,输入信号频率为1000HZ、2500HZ与4000HZ 的合成信号,通过设计FIR滤波器分别实现低通,高通,带通,带阻的滤波功能。 一:实验原理 一个线性位移不变系统的输出序列y(n)和输入序列x(n)之间的关系,应满 足常系数线性差分方程: x(n): 输入序列,y(n): 输出序列,ai、bi : 滤波器系数,N: 滤波器的阶数。在式上式中,若所有的ai 均为0,则得FIR 滤波器的差分方程: 对上式进行z 变换,可得FIR 滤波器的传递函数: FIR 滤波器的结构

FIR 滤波器的单位冲激响应h(n)为有限长序列。 若h(n)为实数,且满足偶对称或奇对称的条件,则FIR 滤波器具有线性相位特性。在数字滤波器中,FIR 滤波器具有如下几个主要特点: ① FIR 滤波器无反馈回路,是一种无条件稳定系统; ② FIR 滤波器可以设计成具有线性相位特性。 本实验程序设计的就是一种偶对称的线性相位滤波器。 程序算法实现采用循环缓冲区法。 二:算法原理: ①在数据存储器中开辟一个N个单元的缓冲区(滑窗),用来存放最新的N个输入样本; ②从最新样本开始取数; ③读完最老样本后,输入最新样本来代替最老样本,而其他数据位置不变; ④用BK 寄存器对缓冲区进行间接寻址,使缓冲区地址首尾相邻。 三:实验程序设计步骤 1.FIR滤波器设计 利用MATLAB中的FDA工具导出正确的参数。 2.产生滤波器输入信号文件 以下是一个产生输入信号的C语言程序,信号是频率为1000Hz、2500Hz和4000Hz 的正弦波合成的波形: #include #include

各种滤波算法比较

数字滤波方法有很多种,每种方法有其不同的特点和使用范围。从大的范围可分为3类。 1、克服大脉冲干扰的数字滤波法 ㈠.限幅滤波法㈡.中值滤波法 2、抑制小幅度高频噪声的平均滤波法 ㈠.算数平均㈡.滑动平均㈢.加权滑动平均㈣一阶滞后滤波法 3、复合滤波法 四、介绍 在这我选用了常用的8种滤波方法予以介绍 (一)克服大脉冲干扰的数字滤波法: 克服由仪器外部环境偶然因素引起的突变性扰动或仪器内部不稳定引起误码等造成的尖脉冲干扰,是仪器数据处理的第一步。通常采用简单的非线性滤波法。 1、限幅滤波法(又称程序判断滤波法)限幅滤波是通过程序判断被测信号的变化幅度,从而消除缓变信号中的尖脉冲干扰。 A、方法:根据经验判断,确定两次采样允许的最大偏差值(设为A)每次检测到新值时判断:如果本次值与上次值之差A,则本次值无效,放弃本次值,用上次值代替本次值 B、优点:能有效克服因偶然因素引起的脉冲干扰 C、缺点无法抑制那种周期性的干扰平滑度差 D、适用范围: 变化比较缓慢的被测量值 2、中位值滤波法 中位值滤波是一种典型的非线性滤波器,它运算简单,在滤除脉冲噪声的同时可以很好地保护信号的细节信息。 A、方法:连续采样N次(N取奇数)把N次采样值按大小排列(多采用冒泡法)取

中间值为本次有效值 B、优点:能有效克服因偶然因素引起的波动(脉冲)干扰 C、缺点:对流量、速度等快速变化的参数不宜 D、适用范围:对温度、液位的变化缓慢的被测参数有良好的滤波效果 (二)抑制小幅度高频噪声的平均滤波法 小幅度高频电子噪声:电子器件热噪声、A/D量化噪声等。通常采用具有低通特性的线性滤波器:算数平均滤波法、加权平均滤波法、滑动加权平均滤波法一阶滞后滤波法等。 3、算术平均滤波法算术平均滤波法是对N个连续采样值相加,然后取其算术平均值作为本次测量的滤波值。 A、方法:连续取N个采样值进行算术平均运算N值较大时:信号平滑度较高,但灵敏度较低N值较小时:信号平滑度较低,但灵敏度较高N值的选取:一般流量,N=12;压力:N=4 B、优点:对滤除混杂在被测信号上的随机干扰信号非常有效。被测信号的特点是有一个平均值,信号在某一数值范围附近上下波动 C、缺点:不易消除脉冲干扰引起的误差。对于采样速度较慢或要求数据更新率较高的实时系统,算术平均滤法无法使用的。比较浪费RAM 4、递推平均滤波法(又称滑动平均滤波法) 对于采样速度较慢或要求数据更新率较高的实时系统,算术平均滤法无法使用的。滑动平均滤波法把N个测量数据看成一个队列,队列的长度固定为N,每进行一次新的采样,把测量结果放入队尾,而去掉原来队首的一个数据,这样在队列中始终有N个“最新”的数据。 A、方法:把连续取N个采样值看成一个队列,队列的长度固定为N ,每次采样到

DSP的FIR设计(低通滤波)C语言编写

一、设计目的 低通滤波器设计。 本设计中使用的信号为 信息信号: signal=sin(2*pi*sl*n*T) 高频噪声1:noise1=0.7*sin(2*pi*ns1*n*T) 高频噪声2:noise2=0.4*sin(2*pi*ns2*n*T) 混合信号: x=(signal+noise1+noise2) 其中sl=500Hz ,ns1=3000Hz ,ns2=8000Hz ,T=1/20000。混合信号波形为滤波器输入信号波形,信息信号波形为输出信号波形,滤波器的效果为滤除两个高频噪声。 二、FIR 滤波器基本理论 (1)FIR 滤波器的特点 数字滤波器的功能,就是把输入序列通过一定的运算变换成输出序列。它的实现方法有很多,其中比较常用到的是无限长脉冲响应滤波器 IIR 和有限长脉冲响应滤波器FIR 两种。 在计算量相等的情况下,IIR 数字滤波器比FIR 滤波器的幅频特性优越,频率选择性也好。但是,它有着致命的缺点,其相位特性不好控制。它的相位特性 )argH( )f(ω ωj e =是使频率产生严重的非线性的原因。但是在图像处理、数据传 输等波形传递系统中都越来越多的要求信道具有线性的相位特性。在这方面 FIR 滤波器具有它独特的优点,设FIR 滤波器单位脉冲响应h(n)长度为N ,其系统函数H(z)为 ∑-=-= 1 )()(N n n z n h z H H(z)是1 -z 的(N-1)次多项式,它在z 平面上有(N-1)个零点,原点z=0是(N-1)阶重极点。因此,H(z)永远稳定,它可以在幅度特性随意设计的同时,保证精确、严格的线性相位。 (2)FIR 滤波器的基本结构 数字滤波是将输入的信号序列,按规定的算法进行处理,从而得到所期望的输出序列,FIR 滤波器的差分方程为: ∑-=-= 1 )()(N k k k n x a n y 对上式进行Z 变换得到FIR 滤波器的传递函数为: ()() () ∑-=-= = 1 N i k k z b z X z Y z H

数字滤波器的MATLAB设计与DSP上的实现

数字滤波器的MAT LAB设计与 DSP上的实现 数字滤波器的MATLAB 设计与DSP上的实现 公文易文秘资源网佚名2007-11-15 11:56:42我要投稿添加到百度搜藏 摘要:以窗函数法设计线性相位FIR数字滤波器为例,介绍用MATLAB工具软件设计数字滤波器的方法和在定点DSP上的实现。实现时,先在CCS5000仿真开发,然后将程序加载到TMS320VC5409评估板上实时运行,结果实现了目标要求。文中还讨论了定标、误差、循环寻址等在DSP上实现的关键问题。关键词 摘要:以窗函数法设计线性相位 FIR数字滤波器为例,介绍用 MATLAB工具软件设计数字滤波器的方法和在定点DSP上的实现。实现时,先在 CCS5000仿真开发,然后将程序加载到 TMS320VC5 409评估板上实时运行,结果实现了目标要求。文中还讨论了定标、误差、循环寻址等在DSP上实 现的关键问题。 关键词:数字滤波器MATLAB DSP 引言 随着信息时代和数字世界的到来,数字信号处理已成为今一门极其重要的学科和技术领域。数字信号处理在通信、语音、图像、自动控制、雷达、军事、航空航天、医疗和家用电器等众多领域得到了广泛的应

用。在数字信号处理应用中,数字滤波器十分重要并已获得广泛应用。 1数字滤波器的设计 1.1数字滤波器设计的基本步骤 数字滤波器根据其冲激响应函数的时域特性,可分为两种,即无限长冲激响应(IIR )滤波器和有限长冲激响应(FIR )滤波器。IIR滤波器的特征是,具有无限持续时间冲激响应。种滤波器一般需要用递归模型来实现,因而有时也称之为递归滤波器。FIR滤波器的冲激响应只能延续一定时间, 在工程实际中可以采用递归的方式实现,也可以采用非递归的方式实现。数字滤波器的设计方法有多种,如双线性变换法、窗函数设计法、插值逼近法和Chebyshev逼近法等等。随着 MATLAB软件尤 其是MATLAB的信号处理工作箱的不断完善,不仅数字滤波器的计算机辅助设计有了可能,而且还可以使设计达到最优化。 数字滤波器设计的基本步骤如下: (1确定指标 在设计一个滤波器之前,必须首先根据工程实际的需要确定滤波器的技术指标。在很多实际应用中,数字滤波器常常被用来实现选频操作。因此,指标的形式一般在频域中给岀幅度和相位响应。幅度指标主要以两种方式给岀。第一种是绝对指标。它提供对幅度响应函数的要求,一般应用于FI R滤波器的设计。第二种指标是相对指标。它以分贝值的形式给岀要求。在工程实际中,这种指标最受欢迎。对于相位响应指标形式,通常希望系统在通频带中人有线性相位。运用线性相位响应指标进行滤波器设计具有如下优点:①只包含实数算法,不涉及复数运算;②不存在延迟失真,只有固定数量的延迟;③长度为N的滤波器(阶数为N-1),计算量为N/2数量级。因此,本文中滤波器的设计就以线性相位FIR滤波器的设计为例。 (2)逼近

(整理)11种滤波方法+范例代码.

软件滤波算法(转载) 这几天做一个流量检测的东西,其中用到了对数据的处理部分,试了很多种方法,从网上找到这些个滤波算法,贴出来记下 需要注意的是如果用到求平均值的话,注意总和变量是否有溢出,程序没必要照搬,主要学习这些方法,相信做东西的时候都能用得上 1、限幅滤波法(又称程序判断滤波法) A、方法: 根据经验判断,确定两次采样允许的最大偏差值(设为A) 每次检测到新值时判断: 如果本次值与上次值之差<=A,则本次值有效 如果本次值与上次值之差>A,则本次值无效,放弃本次值,用上次值代替本次值 B、优点: 能有效克服因偶然因素引起的脉冲干扰 C、缺点 无法抑制那种周期性的干扰 平滑度差 2、中位值滤波法 A、方法: 连续采样N次(N取奇数) 把N次采样值按大小排列 取中间值为本次有效值 B、优点: 能有效克服因偶然因素引起的波动干扰 对温度、液位的变化缓慢的被测参数有良好的滤波效果 C、缺点: 对流量、速度等快速变化的参数不宜 3、算术平均滤波法 A、方法: 连续取N个采样值进行算术平均运算 N值较大时:信号平滑度较高,但灵敏度较低 N值较小时:信号平滑度较低,但灵敏度较高 N值的选取:一般流量,N=12;压力:N=4 B、优点:

适用于对一般具有随机干扰的信号进行滤波 这样信号的特点是有一个平均值,信号在某一数值范围附近上下波动 C、缺点: 对于测量速度较慢或要求数据计算速度较快的实时控制不适用 比较浪费RAM 4、递推平均滤波法(又称滑动平均滤波法) A、方法: 把连续取N个采样值看成一个队列 队列的长度固定为N 每次采样到一个新数据放入队尾,并扔掉原来队首的一次数据.(先进先出原则) 把队列中的N个数据进行算术平均运算,就可获得新的滤波结果 N值的选取:流量,N=12;压力:N=4;液面,N=4~12;温度,N=1~4 B、优点: 对周期性干扰有良好的抑制作用,平滑度高 适用于高频振荡的系统 C、缺点: 灵敏度低 对偶然出现的脉冲性干扰的抑制作用较差 不易消除由于脉冲干扰所引起的采样值偏差 不适用于脉冲干扰比较严重的场合 比较浪费RAM 5、中位值平均滤波法(又称防脉冲干扰平均滤波法) A、方法: 相当于“中位值滤波法”+“算术平均滤波法” 连续采样N个数据,去掉一个最大值和一个最小值 然后计算N-2个数据的算术平均值 N值的选取:3~14 B、优点: 融合了两种滤波法的优点 对于偶然出现的脉冲性干扰,可消除由于脉冲干扰所引起的采样值偏差 C、缺点: 测量速度较慢,和算术平均滤波法一样 比较浪费RAM

几种滤波算法

一.十一种通用滤波算法(转) 1、限幅滤波法(又称程序判断滤波法) A、方法: 根据经验判断,确定两次采样允许的最大偏差值(设为A) 每次检测到新值时判断: 如果本次值与上次值之差<=A,则本次值有效 如果本次值与上次值之差>A,则本次值无效,放弃本次值,用上次值代替本次值B、优点: 能有效克服因偶然因素引起的脉冲干扰 C、缺点 无法抑制那种周期性的干扰 平滑度差 2、中位值滤波法 A、方法: 连续采样N次(N取奇数) 把N次采样值按大小排列 取中间值为本次有效值 B、优点: 能有效克服因偶然因素引起的波动干扰 对温度、液位的变化缓慢的被测参数有良好的滤波效果 C、缺点: 对流量、速度等快速变化的参数不宜 3、算术平均滤波法 A、方法: 连续取N个采样值进行算术平均运算 N值较大时:信号平滑度较高,但灵敏度较低 N值较小时:信号平滑度较低,但灵敏度较高 N值的选取:一般流量,N=12;压力:N=4

适用于对一般具有随机干扰的信号进行滤波 这样信号的特点是有一个平均值,信号在某一数值范围附近上下波动 C、缺点: 对于测量速度较慢或要求数据计算速度较快的实时控制不适用 比较浪费RAM 4、递推平均滤波法(又称滑动平均滤波法) A、方法: 把连续取N个采样值看成一个队列 队列的长度固定为N 每次采样到一个新数据放入队尾,并扔掉原来队首的一次数据.(先进先出原则) 把队列中的N个数据进行算术平均运算,就可获得新的滤波结果 N值的选取:流量,N=12;压力:N=4;液面,N=4~12;温度,N=1~4 B、优点: 对周期性干扰有良好的抑制作用,平滑度高 适用于高频振荡的系统 C、缺点: 灵敏度低 对偶然出现的脉冲性干扰的抑制作用较差 不易消除由于脉冲干扰所引起的采样值偏差 不适用于脉冲干扰比较严重的场合 比较浪费RAM 5、中位值平均滤波法(又称防脉冲干扰平均滤波法) A、方法: 相当于“中位值滤波法”+“算术平均滤波法” 连续采样N个数据,去掉一个最大值和一个最小值 然后计算N-2个数据的算术平均值 N值的选取:3~14

dsp-fir滤波器

基于DSP的FIR低通滤波器的设计学号: 电子与控制工程学院

一、 设计要求 通过ICETEK –VC5509-A 评估板实现FIR 滤波功能,将输入的方波信号通过评估板上的AD 模块,滤波模块,以及DA 模块后输出正弦波信号并在示波器上观察方波滤除后所产生的正弦波。在CCS 下编写C 语音和汇编语言程序分别实现滤波器功能,并且比较c 语言和汇编语言的执行速度进行比较。 二、 设计原理 数字信号处理技术的应用领域非常广泛,而数字滤波器的设计是数字信号处理中最重要的设计环节。数字滤波器分为IIR 滤波器和FIR 滤波器。本次课设使用的是FIR 滤波器。 FIR 滤波器即有限长单位响应滤波器,是数字信号处理系统中最基本的原件。可以在保证任意频率特性的同时具有严格的线性相位特性。同时其单位冲激响应是有限长的,因而滤波器是稳定的系统。FIR 滤波器在通信、图像处理、模式识别等领域具有广泛的应用。 在进入FIR 滤波器前,首先要将信号通过A/D 器件进行模数转换,把模拟信号转化为数字信号;为了使信号处理能够不发生失真,信号的采样速度必须满足奈奎斯特定理,一般取信号频率上限的4-5倍做为采样频率;一般可用速度较高的逐次逼进式A/D 转换器,不论采用乘累加方法还是分布式算法设计FIR 滤波器,滤波器输出的数据都是一串序列,要使它能直观地反应出来,还需经过数模转换。 FIR 滤波器误反馈回路,是一种稳定系统,可以设计成具有线性相位特性。设FIR 滤波器的系数为h(0)、h(1)……h(N-1),X(n)表示滤波器在n 时刻的输入,则那时刻的输出为: y(n)=h(0)*x(n)+h(1)*x(n-1)+……+h(N-1)*x[n-(N-1)] FIR 滤波器的差分方程为: ∑-=-=1 )()(N k k k n x a n y 对上式进行Z 变换得到FIR 滤波器的传递函数为: ∑-=-==1 )()z (z N i k K z b z X Y H )(

用巴特莱特窗函数法设计数字FIR带通滤波器dsp课程设计

课程设计课程设计名称:数字信号处理课程设计 专业班级:电信 学生姓名: 学号: 指导教师:乔丽红 课程设计时间: 6.16-6.20 电子信息工程专业课程设计任务书

说明:本表由指导教师填写,由教研室主任审核后下达给选题学生,装订在设计(论文)首页 一需求分析和设计内容 数字信号处理是把许多经典的理论体系作为自己的理论基础,同时又使自己成为一系列新兴学科的理论基础。现如今随着电子设备工作频率范围的不断扩大,电磁干扰也越来越严重,接收机接收到的信号也越来越复杂。为了得到所需要频率的信号,

就需要对接收到的信号进行过滤,从而得到所需频率段的信号,这就是滤波器的工作 原理。对于传统的滤波器而言,如果滤波器的输入,输出都是离散时间信号,则该滤 波器的冲激响应也必然是离散的,这样的滤波器定义为数字滤波器。它通过对采样数 据信号进行数学运算来达到频域滤波的目的. 滤波器在功能上可分为四类,即低通(LP )、高通(HP )、带通(BP )、带阻(BS ) 滤波器等,每种又有模拟滤波器(AF )和数字滤波器(DF )两种形式。对数字滤波器, 从实现方法上,具有有限长冲激响应的数字滤波器被称为FIR 滤波器,具有无限长冲 激响应的数字滤波器被称为IIR 滤波器。 FIR 数字滤波器的主要优点有:一、具有严格的线性相位特性;二、不存在稳定性 问题;三、可利用DFT 来实现。这些优点使FIR 数字滤波器得到了广泛应用。窗函数 法是一种设计FIR 数字滤波器的基本方法,但它不是最佳设计方法,在满足同样设计 指标的情况下,用这种方法设计出的滤波器的阶数通常偏大。在窗函数法的基础上, 以所定义的逼近误差最小为准则来进行优化设计的算法,由于其中的逼近误差可根据 不同的设计要求进行定义,故此算法适应性强,它既可用于设计选频型滤波器,又适 用于非选频型滤波器的设计。常用的窗函数有矩形窗函数、巴特莱特窗函数、三角窗 函数、汉宁(Hann )窗函数、海明(Hamming )窗函数、布莱克曼(Blackman )窗函数、 凯塞(Kaiser )窗函数等。本设计通过MATLAB 软件对FIR 型滤波器进行理论上的实现, 利用巴特莱特窗函数设计数字FIR 带通滤波器。FIR 系统不像IIR 系统那样易取得较好 的通带和阻带衰减特性,要取得较好的衰减特性,一般要求H (z )阶次要高,也即M 要大。 FIR 系统有自己突出的优点:系统总是稳定的;易实现线性相位;允许设计多通带(或多 阻带)滤波器,后两项都是IIR 系统不易实现的。FIR 数字滤波器的设计方法有多种, 如窗函数设计法、频率采样法和Chebyshev 逼近法等。随着Matlab 软件尤其是Matlab 的信号处理工作箱的不断完善,不仅数字滤波器的计算机辅助设计有了可能,而且还可 以使设计达到最优化。本实验的数字滤波器的MATLAB 实现是指调用MATLAB 信号处理 工具箱函数filter 对给定的输入信号x(n)进行滤波,得到滤波后的输出信号y(n )。 用巴特莱特窗函数法设计一个数字FIR 带通滤波器,要求通带边界频率为400Hz , 500Hz ,阻带边界频率为350Hz ,550Hz ,通带最大衰减1dB ,阻带最小衰减40dB ,抽样 频率为2000Hz ,用MATLAB 画出幅频特性,画出并分析滤波器传输函数的零极点; 信号)2sin()2sin()()()(2121t f t f t x t x t x ππ+=+=经过该滤波器,其中=1f 450Hz ,

DSP高通滤波器课程设计报告

D S P课程设计报告 题目:FIR高通滤波器设计 姓名 学号 教学院系 专业年级 指导教师

DSP课程设计 目录 一、设计题目 (1) 二、设计目标 (1) 三、算法研究与参数计算 (1) 1、FIR的原理和参数生成公式 (1) 2、利用MATLAB计算滤波系数 (1) 3、输入信号参数计算 (2) 四、编写源程序 (3) 五、调试过程 (4) 1、调试前准备 (5) 2、MATLAB的使用 (5) 3、编写及编译程序 (5) 4、设置断点和探针 (6) 5、打开观察窗口 (6) 六、实验结果及分析 (6) 1、输入信号的时域波形和频域波形 (6) 2、输出信号的时域波形和频域波形 (7) 七、设计心得 (8)

1 一、设计题目 FIR 高通滤波器设计 二、设计目标 设计一个FIR 高通滤波器,通带边界频率为6000Hz ,采样频率为20000Hz 。FIR 滤波器的设计用MA TLAB 窗函数法进行。 三、算法研究与参数计算 1、FIR 的原理和参数生成公式 图3-1 2、利用MATLAB 计算滤波系数 在MATLAB 界面输入图3-2所示程序,可得到滤波系数并生成INC 文件。 图 3-2

DSP 课程设计 2 输入freqz (y ,1,512),MATLAB 中显示高通滤波器的滤波特性曲线。如图3-3所示。 图3-3 3、输入信号参数计算 MATLAB 中输入图3-4中所示程序,包含两种频率成分的正弦信号,一种信号频率1000Hz ,一种信号6000Hz 。 图3-4 其频谱特性曲线如图3-5。 图3-5

FIR高通滤波器设计 四、编写源程序 参考资料,编写汇编语言源程序: HIGHPASS .set 1 ;if you want to use ,please set the value to 1 .global start,fir .mmregs COFF_FIR_START: .sect "coff_fir" .copy "0126.inc" K_FIR_BFFR .set 64 d_data_buffer .usect "fir_bfr",64 FIR_DP .usect "fir_vars",0 d_filin .usect "fir_vars",1 output .usect "fir_vars",1 input .usect "fir_vars",1 d_filout .usect "fir_vars",100h stacksize .set 256 stack .usect "fir_vars",stacksize .asg AR4,FIR_DATA_P .asg AR6,INBUF_P .asg AR7,OUTBUF_P .asg AR3,OUTBUF .asg AR2,INBUF .sect "fir_prog" nop start: stm #stack+stacksize,SP LD #FIR_DP,DP STM #d_data_buffer,FIR_DATA_P RPTZ A,#K_FIR_BFFR-1 STL A,*FIR_DATA_P+ STM #d_filin,INBUF_P 3

滤波各种算法优缺点

1、限幅滤波法(又称程序判断滤波法) A、方法: 根据经验判断,确定两次采样允许的最大偏差值(设为A) 每次检测到新值时判断: 如果本次值与上次值之差<=A,则本次值有效 如果本次值与上次值之差>A,则本次值无效,放弃本次值,用上次值代替本次值 B、优点: 能有效克服因偶然因素引起的脉冲干扰 C、缺点 无法抑制那种周期性的干扰 平滑度差 2、中位值滤波法 A、方法: 连续采样N次(N取奇数) 把N次采样值按大小排列 取中间值为本次有效值 B、优点: 能有效克服因偶然因素引起的波动干扰 对温度、液位的变化缓慢的被测参数有良好的滤波效果 C、缺点: 对流量、速度等快速变化的参数不宜 3、算术平均滤波法 A、方法: 连续取N个采样值进行算术平均运算 N值较大时:信号平滑度较高,但灵敏度较低 N值较小时:信号平滑度较低,但灵敏度较高 N值的选取:一般流量,N=12;压力:N=4 B、优点: 适用于对一般具有随机干扰的信号进行滤波 这样信号的特点是有一个平均值,信号在某一数值范围附近上下波动 C、缺点: 对于测量速度较慢或要求数据计算速度较快的实时控制不适用 比较浪费RAM 4、递推平均滤波法(又称滑动平均滤波法) A、方法: 把连续取N个采样值看成一个队列 队列的长度固定为N 每次采样到一个新数据放入队尾,并扔掉原来队首的一次数据.(先进先出原则) 把队列中的N个数据进行算术平均运算,就可获得新的滤波结果 N值的选取:流量,N=12;压力:N=4;液面,N=4~12;温度,N=1~4 B、优点: 对周期性干扰有良好的抑制作用,平滑度高 适用于高频振荡的系统 C、缺点: 灵敏度低 对偶然出现的脉冲性干扰的抑制作用较差 不易消除由于脉冲干扰所引起的采样值偏差 不适用于脉冲干扰比较严重的场合 比较浪费RAM 5、中位值平均滤波法(又称防脉冲干扰平均滤波法) A、方法: 相当于“中位值滤波法”+“算术平均滤波法” 连续采样N个数据,去掉一个最大值和一个最小值 然后计算N-2个数据的算术平均值 N值的选取:3~14

基于DSP芯片的语音信号FIR滤波系统

摘要 数字信号处理(Digital Signal Processing,简称DSP)是一门涉及许多学科而又广泛应用于许多领域的新兴学科。20世纪60年代以来,随着计算机和信息技术的飞速发展,数字信号处理技术应运而生并得到迅速的发展。数字信号处理是一种通过使用数学技巧执行转换或提取信息,来处理现实信号的方法,这些信号由数字序列表示。在过去的二十多年时间里,数字信号处理已经在通信等领域得到极为广泛的应用。 随着微处理技术的快速发展,微处理器芯片的集成度从最早的几千个晶体管发展到现在的上亿个晶体管,字长从4位提高到了64位,正是这些技术的飞速发展引发了一轮又一轮的信息产业革命,而人们的生活、学习和工作方式也在以计算机技术、通信技术为核心的信息技术的影响下发生着前所未有的改变。 然而在这次设计中,比较核心的是数字滤波器,数字滤波器是一种用来过滤时间离散信号的数字系统,通过对抽样数据进行数学处理来达到频域。滤波的目的。根据其单位冲激响应函数的时域特性可分为两类:无限冲激响应(IIR)滤波器和有限冲激响应(FIR)滤波器。与IIR滤波器相比,FIR滤波器只有零点,除原点外.在z平面上没有极点,因此总是稳定的和可实现的;更重要的是,FIR 滤波器在满足一定的对称条件下,可以获得严格的线性相位特性,这一点是IIR 滤波器难以实现的。因此。它在高保真的信号处理.如数字音频、图像处理、数据传输、生物医学等领域得到广泛应用。 对于本设计主要是利用一个DSP芯片来进行语音采集系统的设计,而数字信号处理技术的发展使得采用数字化的方法实时的处理语音信号成为可能。早期的语音信号处理均是采用模拟处理,对声音信号最常用的滤波、相关、谱分析等运算,部分采用模拟电路来实现的。这种传统的模拟方法处理语音信号,硬件设备昂贵,不能升级、产品生命周期短,而采用数字处理技术处理语音信号具有抗干扰性强、便于传输和处理等优点,代表着语音处理技术的发展方向。DSP芯片高速、可编程的特点使其非常适合于语音信号处理领域。 一、设计所用软件介绍 1.1 FIR滤波器及它的工作原理 FIR(Finite Impulse Response)滤波器:有限长单位冲激响应滤波器,又称为非递归型滤波器,是数字信号处理系统中最基本的元件,它可以在保证任意幅频特性的同时具有严格的线性相频特性,同时其单位抽样响应是有限长的,因而滤波器是稳定的系统。因此,FIR滤波器在通信、图像处理、模式识别等领域都有着广泛的应用。 在进入FIR滤波器前,首先要将信号通过A/D器件进行模数转换,把模拟信号转化为数字信号;为了使信号处理能够不发生失真,信号的采样速度必须满足奈奎

相关主题
文本预览
相关文档 最新文档