数字信号处理论文目录
数字信号处理论文目录
第一章 时间离散信号与系统1.1 引言1.2 时间离散信号——序列1.2.1 常用序列举例1.2.2 序列的周期性1.2.3 序列的能量1.2.4 任意序列的δ(n)表示1.3 线性移不变系统1.4 系统的稳定性与因果性1.4.1 稳定系统1.4.2 因果系统1.5 线性常系数差分方程1.6 离散时间系统与信号频域表示1.7 傅里叶变换的一些对称性质1.8 时间连续信号的采样1.8.1 采样序列与原信号间的内在联系1.8.2 内插公式习题第二章 Z变换2.1 引言2.2 Z变换2.2.1 Z变换定义2.2.2 常用序列Z变换的收敛域2.3 Z反变换2.3.1 围线积分法(留数法)2.3.2 列表法2.3.3 幂级数法2.3.4 部分分式展开法2.4 Z变换的部分定理和基本性质2.5 系统函数习题第三章 离散傅里叶变换(DFT)3.1 引言3.2 周期序列的离散傅里叶级数(DFS)表示式3.3 离散傅里叶级数的性质3.3.1 线性关系3.3.2 序列的位移3.3.3 调制特性3.3.4 对称性3.3.5 周期卷积3.4 周期序列以离散傅里叶级数表示时的性质小结3.5 Z变换的采样3.6 有限长序列的傅里叶表示——离散傅里叶变换3.7 离散傅里叶变换的性质3.7.1 线性关系3.7.2 序列的循环位移3.7.3 对称性3.7.4 循环卷积3.8 离散傅里叶变换的性质小结3.9 以离散傅里叶变换实现线性卷积习题第四章 数字滤波器的结构表示4.1 引言4.2 数字滤波器的信号流图表示4.3 数字网络的矩阵表示4.4 无限冲激响应(IIR)系统的基本网络结构4.4.1 直接型4.4.2 级联型4.4.3 并联型4.5 转置型4.6 有限冲激响应(FIR)系统的基本网络结构4.6.1 直接型4.6.2 级联型4.6.3 线性相位有限冲激响应系统的网络结构4.6.4 线性相位有限冲激响应系统的零点对称性4.6.5 频率采样型结构习题第五章 快速傅里叶变换(FFT)5.1 引言5.2 离散傅里叶变换直接计算的难点及其解决途径5.3 按时间抽选的快速傅里叶变换算法5.3.1 原位计算5.3.2 位序的颠倒和规律5.3.3 其他形式5.4 按频率抽选的快速傅里叶变换算法5.4.1 原位计算5.4.2 转置关系5.5 快速傅里叶反变换(IFFT)算法习题第六章 数字滤波器设计第七章 离散希尔伯特变换第八章 数字信号处理技术的实现参考文献
张德明的主要成果
研究方向为通信信号处理及通信系统中的算法研究。近年来讲授的本科生课程有:《通信原理》、《数字信号处理》、《数字通信原理与SDH技术》等;同时从事研究生《信号分析》课程的教学工作。现为重庆市首批精品课程《电路分析基础》、重庆市首批特色专业“通信工程”专业和重庆市首批优秀教学团队负责人。从1993年以来已培养硕士研究生数十名,作为项目负责人或主要研究人员先后完成了多项国家、省部级科研攻关项目和教改项目,发表论文八十余篇,出版著作和教材十部。曾获四川省重大科技成果奖、邮电部科技进步三等奖、重庆市科技进步二等奖、重庆市优秀教育教学成果三等奖。先后获“四川省优秀青年教师”、“邮电部优秀青年骨干教师”、“邮电部有突出贡献专家”、“国务院特殊津贴”、“全国师德先进个人”、“重庆市优秀教师”、“重庆市名师奖”等荣誉称号。近5年来主持的教学研究课题 :1)国家特色专业“通信工程”建设项目(TS10485),教育部、财政部,2008-2011; 2)信息化环境下通信技术实践教学体系的研究和改革(0634166),重庆市教委,2007-2009; 3)研究生优质课程“信号分析”建设项目,重庆市教委,2009-2010 ; 4)精品教材项目“现代通信系统与信息网”,高等教育出版社,2004-2006。近几年来编写的教材/专著 :1)胡庆、谢显中、张德民等,电信传输原理,电子工业出版社,2004.8; 2)胡庆、张德民等,通信光缆与电缆工程,人民邮电出版社,2005.2 ; 3)鲜继清、张德民等,现代通信系统与信息网,高等教育出版社,2005.8; 4)张德民、胡庆,信号与系统分析,高等教育出版社,2006.9 5)何方白、张德民等,《数字信号处理》,高等教育出版社,2009.2.近几年发表的教学研究论文 :1) 多模式培养适应社会需求的工程技术人才探索,全国高校电子信息科学与工程类专业教学协作会论文集,北京邮电大学出版社,2008.12 ; 2)新西兰工程教育专业认证调查报告,全国高校电子信息科学与工程类专业教学协作会论文集,北京邮电大学出版社,2008.12 ; 3)爱尔兰工程教育专业认证调查报告,全国高校电子信息科学与工程类专业教学协作会论文集,北京邮电大学出版社,2008.12获得的教学表彰/奖励 表彰/奖励情况本人排名颁奖单位颁奖时间 重庆市名师重庆市政府2005.09 高等教育教学成果三等奖2重庆市政府2005.11 教学成果一等奖1重庆市政府2009.02近几年来承担的学术研究课题:1)LDPC码译码器的模拟VLSI实现研究,重庆市教委,2003-2005,⑵; 2)基于蜂窝网反射信号的超低空目标无源探测和定位新方法研究,重庆市自然科学基金2008-2011,⑵近几年在国内外公开发行刊物上发表的学术论文:1)基于高阶累积量的空间特征估计方法及其应用,系统工程与电子技术,2006.03; 2)相干多径环境下自适应阵列的性能改进,电波科学学报,2007.06 ; 3)相干环境下LCMV自适应阵列抗干扰问题研究,电子与信息学报,2007.07 ;4)相干多径环境下信号空间特征及波达方向估计,电波科学学报,2007.08
浅谈MATLAB在信号与系统分析中的应用 论文写法 本人新手
相关论文:
Vc++下如何利用Matlab工具箱进行数字信号处理
摘要: 本文详述了在Vc环境下如何利用Matlab工具箱进行数字信号处理,全文以Matlab工具箱中功率谱密度分析函数为例,介绍了通过Matlab自带的引擎、Matlab自身的编译器以及利用MathTools公司的Matcom进行对工具箱函数的调用。
关键词:Matlab M-文件 引擎 编译器 Matcom Vc++
Matlab的信号处理工具箱是信号算法文件的集合,它处理的基本对象是信号与系统,信号处理工具箱位于目录、Toolbox\Signal下,利用工具箱中的文件可以实现信号的变换、滤波、谱估计、滤波器设计等。在其它的环境如Vc下如果能调用Matlab工具箱中的文件,会大大地加快一些算法的实现,同时其可靠性也很高。
利用Matlab引擎
Matlab引擎采用客户和服务器计算方式,在运用中,Vc的C语言或C++语言的程序作为前端客户机,它向Matlab引擎传递命令和数据信息,并从Matlab引擎接收数据信息,它提供了下列几个函数: engOpen, engGetArray, engPutArray, engEvaString,
engOutputBuffer ,engClose与客户机进行交互。
下面例程是在Vc下建一个基于对话框的应用程序,在对话框中设置一个Button控件OnMatlabEngine.,在对话框 .cpp文件中加入”engine.h” 和“math.h” 头文件,下面给出部分程序清单。
Void CtestmatlabDlg::OnMatlabEngine(){
Engine *ep;
mxArray* T=NULL,*result=NULL,*mFs=NULL,*mnfft= NULL;
double datax[1024];
char buffer[1024];
for(int j=0;j<1024;j++)//注:如通过采集卡采集数据可将采集的数据放在datax[]数组中,此循环就不需要
{
double samt=(double)(1.0/1024);
datax[j]=sin(2.0*63.0*samt*3.1415926+1.15*3.1415926);
}
double *pPxx,*pFxx;
if(!(ep=engOpen(" \0"))){//打开Matlab引擎,建立与本地Matlab的连接
fprintf(stderr,"\n Can't start MATLAB engine\n");
exit(-1);
}
double Fs[1]={1024};//因为Matlab所有参与运算的参数都是矩阵的形式,因而下列几行将参数转变
double nfft[1]={1024};//成Matlab可接受的矩阵形式。
T=mxCreateDoubleMatrix(1,1024,mxREAL);
mnfft=mxCreateDoubleMatrix(1,1,mxREAL);
mFs=mxCreateDoubleMatrix(1,1,mxREAL);
mxSetName(T,"T");
mxSetName(mnfft,"mnfft");
mxSetName(mFs,"mFs");
memcpy((char*)mxGetPr(T),(char*)datax, 1024*sizeof(double));
memcpy((char*)mxGetPr(mnfft),(char*)nfft, sizeof(double));
memcpy((char*)mxGetPr(mFs),(char*)Fs,1*sizeof(double));
engPutArray(ep,T); //将转化的参数放入引擎中,此时可在Matlab command窗口下查看此参数
engPutArray(ep,mnfft);
engPutArray(ep,mFs);
engEvalString(ep,"[pxx,fo]=psd(T,mnfft,mFs);"); //利用引擎执行工具箱中文件
engOutputBuffer(ep,buffer,512); //如只想看显示图形,可将返回参数去掉,psd无返回参数缺省情况下会自动画图形
result=engGetArray(ep,"pxx");//取出引擎中的数据放在所指的区域中供后续处理
pPxx=mxGetPr(result);
result=engGetArray(ep,"fo");
pFxx=mxGetPr(result);
engEvalString(ep,"plot(fo,10*log10(pxx));");//利用引擎画图
engEvalString(ep,"title('功率谱分析');");
engEvalString(ep,"xlabel('Hz');");
engEvalString(ep,"ylable('db');");
mxDestroyArray(T); //释放内存
mxDestroyArray(mFs);
mxDestroyArray(mnfft);
mxDestroyArray(result);
engEvalString(ep,"close;");
engClose(ep);
}
上述程序在Vc下编译需要将 和两个动态库利用以下的命令:
lib/def:<自己的Matlab的安装路径,下同>e:\ Matlab\extern\include\*.def /machine:ix86 /out:*.lib来生成程序所需的静态连接库和,将和所在的目录加入Vc++ project/link/object/library modules下即可。
利用Matlab自身的编译器调用工具箱中的函数
Matlab的编译器可将Matlab的M文件转换为为C或C++的源代码以产生完全脱离Matlab运行环境的独立的运用程序,但Matlab本身的资料说明编译器如用来建立独立的运用程序,不能调用Matlab工具箱中的函数,这非常不利于搞一些特殊的算法。本人研究了一段时间发现,工具箱中的函数既然是M文件就一定可以用编译器来编译,以提供如Vc的调用函数,但是编译器只能编译一个独立的M文件,即这个 M文件不依赖于其他的M文件。如果M文件中又调用了其他的M文件,可将被调用的M文件拷贝到调用M文件的相应位置,作适当的改动就可以用于编译器编译。编译器不支持图形函数,所以M文件中如有图形函数需注释掉。
当Matlab的编译器mcc加入适当的参数-e(mcc –e *.*)或-p(mcc –p *.*)就可生成将输入的M文件转换为适用于特定运用的C或C++源代码。这样如果要在Vc下编译通过,还需连入以下几个库, , , . . 以及Matlab C MATH库,建议采用前述的方法将动态连接改为静态连接。对于C/C++编译环境的设置,在Matlab command窗口下运行mex –setup 然后依提示操作,而对于C/C++连接环境的设置,运行mbuild –setup依提示操作即可。
下面给出利用编译器将Matlab工具箱中psd.m文件生成可供Vc调用的函数。
将psd.m文件拷贝一份至Matlab\bin目录下,改写相应调用的M文件如nargchk.m, hanning.m等。为生成的代码简洁,对于采集数据处理输入参数很明了的情况下可作大量的删减,最终使psd.m成为一个不依赖于其他M文件的独立的M文件,注意千万注释掉作图代码,最终改成如下形式,限于篇幅给出关键的几步:
function [Pxx,f]=psd(Fs,nfft,noverlap,x)
window=o,5*(1-cos(2*pi*(1:nfft)’/(nffft+1)));//hanning 窗
dflag=’none’;
window=window(;)
………………………………….
以上只要稍懂Matlab语言和信号处理知识就可完成这项工作。
假设上述代码重新存为testwin.m,在Matlab command 窗口下设置好环境参数运行mcc –e testwin,则可在Matlab\bin下生成testwin.c ,如运行mcc –p testwin 则生成.
Vc下建立一个基于对话框的文件,然后在对话框里加一个Button控件OnButtonPsd
将上述生成的.c文件的头文件加入到工程的.cpp中,且将#ifdef_cplusplus
extern “c”{
#end if
c代码声明加入Vc的包含文件和生成的.C的包含文件之间
将#ifdef_cplusplus
}
#end if加入.cpp文件未尾
为了简洁且便于处理将生成的c函数稍改动,给出部分代码如下:
void CTestpsdwinDlg::OnButtonPsd(){
mxArray* x_rhs_;//指向采集数据存放区
Fs=23510;//数据采集的频率 nfft=1024;//1024点的fft
double datax[1024]//采集的数据
x_rhs_mxCreateDoubleMatrix(1,1024,mxReal);
memcpy(mxGetPr(x_rhs_),datax,1024*sizeof(double));
noverlap=512;
……………….
……………….
mccCopy(&Pxx,&Spec);
mccCopy(&f,&frevgg_vector);
for(int j=0;j<(int)(nfft/2+1);j++)
{
datap[j]=mccGetRealVectorElement(&Pxx, (j+1));//功率谱密度存于datap[]数组
dataf[j]=mccGetRealVectorElement(&f, (j+1));//相应频率存于数组dataf[]中
}
mccFreeMatrix(&Pxx);
……………….
SendMessageBox(WM_PAINT,0,0);//利用Vc下的图形函数画图
Return;
}
如上生成的程序可读性不太好,而生成的c++代码则可读性较好,但千万注意只能用 Matlab的MATH库,不可用c++的MATH库,否则编译会出错,限于篇幅在此不述。
3)利用Matcom调用工具箱中的函数
Matcom编译M文件,先将M文件按照与Matcom的cpp库的对应关系翻译为cpp源代码,然后用对应版本的c编译器将cpp文件编译成相应的exe或dll文件,所以第一次运行要指定c编译器的路径,否则无法编译,指定好的编译信息就写在Matcom\bin\文件中,不过这一步按装matcom时,它自动寻找编译器并将其写入文件中,matcom4.5版中使用TeeChart3.0 OCX控件,因而它支持图形操作。
我们依然用上述的testwin.m文件,不要将图形函数注释掉,利用Mideva来生成可被Vc调用的信号处理程序。
运行Mideva在主界面上直打开M文件,在菜单中选择compile to dll,输入testwin..在Matcom debug目录下可以找到这样的几个文件,testwin.c ,testwin.h,,,,等。
将上述和testwin.h加入工程中,project/add to project/files并且在相应的文件中加入”stdafx.h”
加连接库:Tools\option\directory\ , 选include选项,加入e:\matcom45\lib (包含matcom.h)
library选项,加入e:\matcom45\lib
4) project\add to project\files 文件类型选项选(.lib)将e:\matcom45\lib\加入工程中编译运行。相应代码如下:
void CtestmatcomDlg::OnpsdButton(){
double datap[512],dataf[512];
initM(MATCOM_VERSION);//初始化matcom库
Mm Fs,nfft,noverlap;//创建矩阵
Mm x=zeros(1,1024);
Fs=1024;nfft=1024;noverlap=128;
dMm(Pxx_o);dMm(f_o);//创建并命名矩阵
datax[];//数据采集的数据存于此数组中
for(int i=1;i<=1024;i++)
{
x.r(1,i)=datax[i+1];//给x阵赋值
}
testwin(Fs,nfft,noverlap,x,i_o,Pxx,f_o);//matcom生成的函数
for(i=0;i<513;i++){//取出功率谱密度分析结果
dataf[i]=f_o.r(i+1,1);
datap[i]=Pxx_o.r(i+1,1);}
exitM();
return;
}
可见利用Matcom进行M文件转换非常的容易,生成的代码可读性很好,以上的转换同时生成了可供Vc调用的动态连接库,其使用和一般的动态库一样使用。同时需指明Matcom不仅可转换独立的不依赖于其它M文件的M文件,同时可转换调用其它M文件的M文件嵌套。条件是这此M文件在同一个目录下面,如前所述的psd.m可直接用上述方法转换,生成了多个重载形式的psd函数
结论: 利用Mtlab引擎调用工具箱中的函数可节省大量的系统资源,应用程序整体性能较好,但不可脱离Matlab 的环境运行。用Matlab编译器进行工具箱函数的调用,须转换相应的M文件使其成为独立的M文件,且不支持图形函数,转换的代码可读性不太好。用Matcom 进行转换非常方便,生成的代码可读性很好,支持图形函数,且代码执行的速度比不转换平均要快1.5倍以上。以上程序在Vc++ 6.0,Matlab5.2,Matcom4.5中调试通过,以上方法在工程实践中已得到很好的运用。
仅供参考,请自借鉴
希望对您有帮助
生物医学信号处理方法论文
生物医学信号处理方法论文
生物医学信号处理是指据生物医学信号特点,应用信息科学的基本理论和方法,研究如何从扰和噪声淹没的观察记录中提取各种生物医学信号中所携带的信息,并对它们进步分析、解释和分类。以下是我精心准备的生物医学信号处理方法论文,大家可以参考以下内容哦!
摘 要: 生物医学信号是人体生命信息的集中体现,深入进行生物医学信号检测与处理的理论与方法的研究对于认识生命运动的规律、探索疾病预防与治疗的新方法都具有重要的意义。
关键词: 生物医学信号 信号检测 信号处理
1 概述
1。1 生物医学信号及其特点
生物医学信号是一种由复杂的生命体发出的不稳定的自然信号,属于强噪声背景下的低频微弱信号,信号本身特征、检测方式和处理技术,都不同于一般的信号。生物医学信号可以为源于一个生物系统的一类信号,这些信号通常含有与生物系统生理和结构状态相关的信息。生物医学信号种类繁多,其主要特点是:信号弱、随机性大、噪声背景比较强、频率范围一般较低,还有信号的统计特性随时间而变,而且还是非先验性的。
1。2 生物医学信号分类
按性质生物信号可分为生物电信号(Bioelectric Signals),如脑电、心电、肌电、胃电、视网膜电等;生物磁信号(Biomagnetic Signals),如心磁场、脑磁场、神经磁场;生物化学信号(Biochemical Signals),如血液的pH值、血气、呼吸气体等;生物力学信号(Biomechanical Signals),如血压、气血和消化道内压和心肌张力等;生物声学信号(Bioacoustic Signal),如心音、脉搏、心冲击等。
按来源生物医学信号可大致分为两类:(1)由生理过程自发产生的主动信号,例如心电(ECG)、脑电(EEG)、肌电(EMG)、眼电(EOG)、胃电(EGG)等电生理信号和体温、血压、脉博、呼吸等非电生信号;(2)外界施加于人体、把人体作为通道、用以进行探查的被动信号,如超声波、同位素、X射线等。
2 生物医学信号的检测及方法
生物医学信号检测是对生物体中包含的生命现象、状态、性质和成分等信息进行检测和量化的技术,涉及到人机接口技术、低噪声和抗干扰技术、信号拾取、分析与处理技术等工程领域,也依赖于生命科学研究的进展。信号检测一般需要通过以下步骤(见图1)。
①生物医学信号通过电极拾取或通过传感器转换成电信号;②放大器及预处理器进行信号放大和预处理;③经A/D转换器进行采样,将模拟信号转变为数字信号;④输入计算机;⑤通过各种数字信号处理算法进行信号分析处理,得到有意义的结果。
生物医学信号检测技术包括:(1)无创检测、微创检测、有创检测;(2)在体检测、离体检测;(3)直接检测、间接检测;(4)非接触检测、体表检测、体内检测;(5)生物电检测、生物非电量检测;(6)形态检测、功能检测;(7)处于拘束状态下的生物体检测、处于自然状态下的生物体检测;(8)透射法检测、反射法检测;(9)一维信号检测、多维信号检测;(10)遥感法检测、多维信号检测;(11)一次量检测、二次量分析检测;(12)分子级检测、细胞级检测、系统级检测。
3 生物医学信号的处理方法
生物医学信号处理是研究从扰和噪声淹没的信号中提取有用的生物医学信息的特征并作模式分类的方法。生物医学信号处理的目的是要区分正常信号与异常信号,在此基础上诊断疾病的存在。近年来随着计算机信息技术的飞速发展,对生物医学信号的处理广泛地采用了数字信号分析处理方法:如对信号时域分析的相干平均算法;对信号频域分析的快速傅立叶变换算法和各种数字滤波算法;对平稳随机信号分析的功率谱估计算法和参数模型方法;对非平稳随机信号分析的短时傅立叶变换、时频分布(维格纳分布)、小波变换、时变参数模型和自适应处理等算法;对信号的非线性处理方法如混沌与分形、人工神经网络算法等。下面介绍几种主要的处理方法。
3。1 频域分析法
信号的频域分析是采用傅立叶变换将时域信号x(t)变换为频域信号X(f),从而将时间变量转变成频率变量,帮助人们了解信号随频率的变化所表现出的特性。信号频谱X(f)描述了信号的频率结构以及在不同频率处分量成分的大小,直观地提供了从时域信号波形不易观察得到频率域信息。频域分析的'一个典型应用即是对信号进行傅立叶变换,研究信号所包含的各种频率成分,从而揭示信号的频谱、带宽,并用以指导最优滤波器的设计。
3。2 相干平均分析法
生物医学信号常被淹没在较强的噪声中,且具有很大的随机性,因此对这类信号的高效稳健提取比较困难。最常用的常规提取方法是相干平均法。相干平均(Coherent Average)主要应用于能多次重复出现的信号的提取。如果待检测的医学信号与噪声重叠在一起,信号如果可以重复出现,而噪声是随机信号,可用叠加法提高信噪比,从而提取有用的信号。这种方法不但用在诱发脑电的提取,也用在近年来发展的心电微电势(希氏束电、心室晚电位等)的提取中。
3。3 小波变换分析法
小波分析是传统傅里叶变换的继承和发展,是20世纪80年代末发展起来的一种新型的信号分析工具。目前,小波的研究受到广泛的关注,特别是在信号处理、图像处理、语音分析、模式识别、量子物理及众多非线性科学等应用领域,被认为是近年来在工具及方法上的重大突破。小波分析有许多特性:多分辨率特性,保证非常好的刻画信号的非平稳特征,如间断、尖峰、阶跃等;消失矩特性,保证了小波系数的稀疏性;紧支撑特性,保证了其良好的时频局部定位特性;对称性,保证了其相位的无损;去相关特性,保证了小波系数的弱相关性和噪声小波系数的白化性;正交性,保证了变换域的能量守恒性;所有上述特性使小波分析成为解决实际问题的一个有效的工具。小波变换在心电、脑电、脉搏波等信号的噪声去除、特征提取和自动分析识别中也已经取得了许多重要的研究成果。
3。4 人工神经网络
人工神经网络是一种模仿生物神经元结构和神经信息传递机理的信号处理方法。目前学者们提出的神经网络模型种类繁多。概括起来,其共性是由大量的简单基本单元(神经元)相互广泛联接构成的自适应非线性动态系统。其特点是:(1)并行计算,因此处理速度快;(2)分布式存贮,因此容错能力较好;(3)自适应学习(有监督的或无监督的自组织学习)。
参考文献
[1] 邢国泉,徐洪波。生物医学信号研究概况。咸宁学院学报(医学版),2006,20:459~460。
[2] 杨福生。论生物医学信号处理研究的学科发展战略。国外医学生物医学工程分册,1992,4(15):203~212。
基于matlab数字滤波器的设计
摘要
《数字信号处理》课程是一门理论性和实践性都很强, 它具备高等代数、数值分析、概率统计、随机过程等计算学科的知识; 要求我们学生掌握扎实的基础知识和理论基础。 又是跟其他学科密切相关,即与通信理论、计算机、微电子技术不可分,又是人工智能、模式识别、神经网络等新兴学科的理论基础之一。 本次数字滤波器设计方法是基于MATLAB的数字滤波器的设计。此次设计的主要内容为:IIR数字滤波器和FIR数字滤波器的设计
关键词:IIR、FIR、低通、高通、带阻、带通
Abstract
"Digital Signal Processing" is a theoretical and practical nature are strong, and it has advanced algebra and numerical analysis, probability and statistics, random process such as calculation of discipline knowledge; requires students to acquire basic knowledge and a solid theoretical basis. Is closely related with other subjects, namely, and communication theory, computers, microelectronics can not be separated, but also in artificial intelligence, pattern recognition, neural network theory one of the emerging discipline. The digital filter design method is based on MATLAB for digital filter design. The main elements of design: IIR and FIR digital filter design of digital filter
Key Words: IIR, FIR, low pass, high pass, band stop, band pass
目录
一、 前言 3
二、 课程设计的目的 3
三、 数字信号处理课程设计说明及要求 3
四、 滤波器的设计原理 4
4.1 数字滤波器简介 4
4.2 IIR滤波器的设计原理 4
4.3 FIR滤波器的设计原理 5
4.4 FIR滤波器的窗函数设计法 6
五、 设计内容 6
5.1 设计题目: 6
5.2设计程序代码及结果: 7
六、 结束语 15
七、 参考文献 16
一、 前言
数字信号处理(Digital Signal Processing,简称DSP)是一门涉及许多学科而又广泛应用于许多领域的新兴学科。
随着信息时代和数字世界的到来,数字信号处理已成为今一门极其重要的学科和技术领域。数字信号处理在通信语音、图像、自动控制、雷达、军事、航空航天、医疗和家用电器等众多领域得到了广泛的应用。在数字信号处理应用中,数字滤波器十分重要并已获得广泛应用。
二、 课程设计的目的
1)
三、 数字信号处理课程设计说明及要求
所需硬件:PC机
四、 滤波器的设计原理
4.1 数字滤波器简介
数字滤波器是一种用来过滤时间离散信号的数字系统,通过对抽样数据进行数学处理来达到频域滤波的目的。可以设计系统的频率响应,让它满足一定的要求,从而对通过该系统的信号的某些特定的频率成分进行过滤,这就是滤波器的基本原理。如果系统是一个连续系统,则滤波器称为模拟滤波器。如果系统是一个离散系统,则滤波器称为数字滤波器。
信号 通过线性系统后,其输出 就是输入信号 和系统冲激响应 的卷积。除了 外, 的波形将不同于输入波形 。从频域分析来看,信号通过线性系统后,输出信号的频谱将是输入信号的频谱与系统传递函数的乘积。除非 为常数,否则输出信号的频谱将不同于输入信号的频谱,某些频率成分 较大的模,因此, 中这些频率成分将得到加强,而另外一些频率成分 的模很小甚至为零, 中这部分频率分量将被削弱或消失。因此,系统的作用相当于对输入信号的频谱进行加权。
4.2 IIR滤波器的设计原理
IIR数字滤波器的设计一般是利用目前已经很成熟的模拟滤波器的设计方法来进行设计,通常采用模拟滤波器原型有butterworth函数、chebyshev函数、bessel函数、椭圆滤波器函数等。
IIR数字滤波器的设计步骤:
(1) 按照一定规则把给定的滤波器技术指标转换为模拟低通滤波器的技术指标;
(2) 根据模拟滤波器技术指标设计为响应的模拟低通滤波器;
(3) 很据脉冲响应不变法和双线性不变法把模拟滤波器转换为数字滤波器;
(4) 如果要设计的滤波器是高通、带通或带阻滤波器,则首先把它们的技术指标转化为模拟低通滤波器的技术指标,设计为数字低通滤波器,最后通过频率转换的方法来得到所要的滤波器。
4.3 FIR滤波器的设计原理
FIR滤波器通常采用窗函数方法来设计。窗设计的基本思想是,首先选择一个适当的理想选频滤波器(它总是具有一个非因果,无限持续时间脉冲响应),然后街区(加窗)它的脉冲响应得到线性相位和因果FIR滤波器。我们用Hd(e^jw)表示理想的选频滤波器,它在通带上具有单位增益和线性相位,在阻带上具有零响应。一个带宽wc<pi的低通滤波器由下式给定:
为了从hd(n)得到一个FIR滤波器,必须同时在两边截取hd(n)。而要得到一个因果的线性相位滤波器,它的h(n)长度为N,必须有:
这种操作叫做加窗,h(n)可以看做是hd(n)与窗函数w(n)的乘积:
h(n)=hd(n)w(n)
其中
根据w(n)的不同定义,可以得到不同的窗结构。
在频域中,因果FIR滤波器响应H(e^jw)由Hd(e^jw)和窗响应W(e^jw)的周期卷积得到,即
常用的窗函数有矩形窗、巴特利特(BARTLETT)窗、汉宁(HANNING)窗、海明(HAMMING)窗、布莱克曼(BLACKMAN)窗、凯泽(KAISER)窗等。
4.4 FIR滤波器的窗函数设计法
FIR滤波器的设计方法有许多种,如窗函数设计法、频率采样设计法和最优化设计法等。窗函数设计法的基本原理是用一定宽度窗函数截取无限脉冲响应序列获得有限长的脉冲响应序列,主要设计步骤为:
(1) 通过傅里叶逆变换获得理想滤波器的单位脉冲响应hd(n)。
(2) 由性能指标确定窗函数W(n)和窗口长度N。
(3) 求得实际滤波器的单位脉冲响应h(n), h(n)即为所设计FIR滤波器系数向量b(n)。
五、 设计内容
5.1 设计题目:
1-1.试用MATLAB设计一巴特沃斯低通数字滤波器,要求通带截至频率Wp=30HZ,主带截至频率为Ws=35HZ,通带衰减不大于0.5DB,主带衰减不小于40DB,抽样频Fs=100HZ。
1-2.基于Butterworth模拟滤波器原型,使用双线性状换设计数字滤波器:各参数值为:通带截止频率Omega=0.2*pi,阻带截止频率Omega=0.3*pi,通带波动值Rp=1dB,阻带波动值Rs=15dB,设Fs=20000Hz。
1-3设计一巴特沃斯高通数字滤波器,要求通带截止频率0.6*pi,通带衰减不大于1dB,阻带衰减15DB,抽样T=1。
1-4.设计一巴特沃斯带阻数字滤波器,要求通带上下截至频率为0.8*PI、0.2*PI,通带衰减不大于1DB,阻带上下截至频率0.7*PI、0.4*PI 阻带衰减不小于30DB,
2-1.用窗函数法设计一个线性相位FIR低通滤波器,并满足性能指标:通带边界频率
Wp=0.5*pi,阻带边界频率Ws=0.66*pi,阻带衰减不小于40dB,通带波纹不大于3dB。选择汉宁窗。
2-4.用海明窗设计一个FIR滤波器,其中Wp=0.2*pi,Ws=0.3*pi,通带衰减不大于0.25dB,阻带衰减不小于50dB。
5.2设计程序代码及结果:
1-1一.试用MATLAB设计一巴特沃斯低通数字滤波器,要求通带截至频率Wp=30HZ,阻带截至频率为Ws=35HZ,通带衰减不大于0.5DB,阻带衰减不小于40DB,抽样频Fs=100HZ。
代码为:
fp = 30;
fs = 35;
Fs = 100;
wp = 2*pi*fp/Fs;
ws = 2*pi*fs/Fs;
wp = tan(wp/2);
ws = tan(ws/2); % 通带最大衰减为0.5dB,阻带最小衰减为40dB
[N, wn] = buttord(wp, ws, 0.5, 40, 's'); % 模拟低通滤波器极零点
[z, p, k] = buttap(N); % 由极零点获得转移函数参数
[b, a] = zp2tf(z, p, k); % 由原型滤波器获得实际低通滤波器
[B, A] = lp2lp(b, a, wp);
[bz, az] = bilinear(B, A, .5);
[h, w] = freqz(bz, az, 256, Fs);
figure
plot(w, abs(h))
grid on
图1 巴特沃斯数字低通滤波器
1-2基于Butterworth模拟滤波器原型,使用双线性状换设计数字滤波器:各参数值为:通带截止频率Omega=0.2*pi,阻带截止频率Omega=0.3*pi,通带波动值Rp=1dB,阻带波动值Rs=15dB,设Fs=4000Hz。
代码:
wp=0.2*pi;ws=0.3*pi;
Fs=4000;T=1/Fs;
OmegaP=(2/T)*tan(wp/2);
OmegaS=(2/T)*tan(ws/2);
rp=1;rs=15;as=15;
ripple=10^(-rp/20);attn=10^(-rs/20);
[n,wn]=buttord(OmegaP,OmegaS,rp,rs,'s');
[z,p,k]=Buttap(n);
[b,a]=zp2tf(z,p,k);
[bt,at]=lp2lp(b,a,wn);
[b,a]=bilinear(bt,at,Fs);
[db,mag,pha,grd,w]=freqz_m(b,a);
%
%下面绘出各条曲线
subplot(2,2,1);plot(w/pi,mag);title('Magnitude Frequency幅频特性');
xlabel('w(/pi)');ylabel('|H(jw)|');
axis([0,1,0,1.1]);
set(gca,'XTickMode','manual','XTick',[0 0.2 0.3 1]);
set(gca,'YTickMode','manual','YTick',[0 attn ripple 1]);grid
subplot(2,2,2);plot(w/pi,db);title('Magnitude Frequency幅频特性(db)');
xlabel('w(/pi)');ylabel('dB');
axis([0,1,-30,5]);
set(gca,'XTickMode','manual','XTick',[0 0.2 0.3 1]);
set(gca,'YTickMode','manual','YTick',[-60 -as -rp 0]);grid
subplot(2,2,3);plot(w/pi,pha/pi);title('Phase Frequency相频特性');
xlabel('w(/pi)');ylabel('pha(/pi)');
axis([0,1,-1,1]);
subplot(2,2,4);plot(w/pi,grd);title('Group Delay群延时');
xlabel('w(/pi)');ylabel('Sample');
axis([0,1,0,15]);
set(gca,'XTickMode','manual','XTick',[0 0.2 0.3 1]);grid
运行结果:
图2巴特沃思数字低通滤波器幅频-相频特性
1-3设计一巴特沃斯高通数字滤波器,要求通带截止频率0.6*pi,通带衰减不大于1dB,阻带衰减15DB,抽样T=1。
Wp=0.6*pi;
Ws=0.4*pi;
Ap=1;
As=15;
[N,wn]=buttord(Wp/pi,Ws/pi,Ap,As); %计算巴特沃斯滤波器阶次和截止频率
%频率变换法设计巴特沃斯高通滤波器
[db,mag,pha,grd,w]=freqz_m(b,a); %数字滤波器响应
plot(w,mag);
title('数字滤波器幅频响应|H(ej\Omega)|')
图3巴特沃斯数字高通滤波器
2-1用窗函数法设计一个线性相位FIR低通滤波器,并满足性能指标:通带边界频率
Wp=0.5*pi,阻带边界频率Ws=0.66*pi,阻带衰减不小于40dB,通带波纹不大于3dB。选择汉宁窗。
代码:
wp =0.5*pi;
ws=0.66*pi;
wdelta =ws-wp;
N= ceil(8*pi/wdelta)
if rem(N,2)==0
N=N+1;
end
);
运行结果:
给分就给你个全的!
图6低通FIR滤波器
六、 结束语
本次数字滤波器设计方法是基于MATLAB的数字滤波器的设计,是用学过的数字信号理论为依据,用MATLAB代码来实现。课程设计过程中,通过IIR数字滤波器和FIR数字滤波器的设计实例,说明如何利用MATLAB来完成数字滤波器的设计。窗函数法中相位响应有严格的线性,不存在稳定性问题, 设计简单。双线性变换不会出现由于高频部分超过折叠频率而混淆到低频部分去的现象,但会产生频率混碟现象,使数字滤波器的频响偏移模拟滤波器的频响。由滤波器的频谱图和滤波前后的语音信号的频谱图对比可知本设计选用双线性变换法设计的IIR滤波器比较好。在同样的技术指标的要求下,IIR滤波器所要求的阶数N也比较小,实现起来比较容易。
通过综合运用数字信号处理的理论知识进行滤波器设计,通过理论推导得出相应结论,再利用 MATLAB 作为编程工具进行计算机实现,从而加深了对所学知识的理解,建立概念。对以前在课本上所学的东西有了更深入的理解和掌握。最后,无论做什么课程设计,都需要要有一定的理论知识作为基础,同时通过这次课程设计,我对于以前所学的数字信号处理知识有了更深的理解。
七、 参考文献
1. 程佩青《数字信号处理教程》北京清华大学出版社2007年2月.
2. 赵知劲、刘顺兰《数字信号处理实验》.浙江大学出版社.
3. .Digital Signal Processing:A Computer-Based Approach.
NewYork,NewYork:McGraw-Hill,thirded,2006.
4. 肖伟、刘忠等《 MATLAB程序设计与应用》清华大学出版社、北京交通大学出版社.
5. 胡良剑、孙晓君 《 MATLAB数学实验》.高等教育出版社.
上一篇:数字信号处理论文图像
下一篇:数字信号处理论文百度