基于MATLAB的信号消噪处理和程序设计.docx

上传人:wj 文档编号:7396554 上传时间:2023-05-11 格式:DOCX 页数:18 大小:149.81KB
下载 相关 举报
基于MATLAB的信号消噪处理和程序设计.docx_第1页
第1页 / 共18页
基于MATLAB的信号消噪处理和程序设计.docx_第2页
第2页 / 共18页
基于MATLAB的信号消噪处理和程序设计.docx_第3页
第3页 / 共18页
基于MATLAB的信号消噪处理和程序设计.docx_第4页
第4页 / 共18页
基于MATLAB的信号消噪处理和程序设计.docx_第5页
第5页 / 共18页
基于MATLAB的信号消噪处理和程序设计.docx_第6页
第6页 / 共18页
基于MATLAB的信号消噪处理和程序设计.docx_第7页
第7页 / 共18页
基于MATLAB的信号消噪处理和程序设计.docx_第8页
第8页 / 共18页
基于MATLAB的信号消噪处理和程序设计.docx_第9页
第9页 / 共18页
基于MATLAB的信号消噪处理和程序设计.docx_第10页
第10页 / 共18页
基于MATLAB的信号消噪处理和程序设计.docx_第11页
第11页 / 共18页
基于MATLAB的信号消噪处理和程序设计.docx_第12页
第12页 / 共18页
基于MATLAB的信号消噪处理和程序设计.docx_第13页
第13页 / 共18页
基于MATLAB的信号消噪处理和程序设计.docx_第14页
第14页 / 共18页
基于MATLAB的信号消噪处理和程序设计.docx_第15页
第15页 / 共18页
基于MATLAB的信号消噪处理和程序设计.docx_第16页
第16页 / 共18页
基于MATLAB的信号消噪处理和程序设计.docx_第17页
第17页 / 共18页
基于MATLAB的信号消噪处理和程序设计.docx_第18页
第18页 / 共18页
亲,该文档总共18页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

基于MATLAB的信号消噪处理和程序设计.docx

《基于MATLAB的信号消噪处理和程序设计.docx》由会员分享,可在线阅读,更多相关《基于MATLAB的信号消噪处理和程序设计.docx(18页珍藏版)》请在冰点文库上搜索。

基于MATLAB的信号消噪处理和程序设计.docx

基于MATLAB的信号消噪处理和程序设计

基于MATLAB的信号消噪处理和程序设计

摘要

采用MATLAB对含噪信号进行分解,并通过利用MATLAB信号处理工具箱可以快速有效地设计各种数字滤波器,从而重构出消噪后的信号;并对消噪前和消噪后的信号进行时域分析和频谱分析,以及比较消噪后的信号和原始信号进行对比。

本设计综合运用数字信号处理的理论知识对加噪声语音信号进行时域、频域分析和滤波。

数字滤波在滤波中占有重要的地位,在现代电子系统设计中得到广泛应用。

此外,利用MATLAB对信号消燥等实际问题进行处理,将理论应用于实际,加深了对它的理解。

关键词MATLAB噪声频谱分析消燥

目录

摘要 I

1.MATLAB语言及其应用 1

1.1MATLAB语言概述 1

1.1.1MATLAB语言的发展和特点 1

1.1.2MATLAB语言的工作环境 2

1.2MATLAB基本函数 2

1.3含噪信号处理的MATLAB实现 4

1.3.1程序设计流程 4

1.3.2信号频谱分析 5

1.3.3数字滤波 5

1.3.4巴特沃思滤波器 5

2.数字信号处理 5

2.1数字信号处理的基本概念 5

2.2数字信号处理的基本方法 5

2.3MATLAB在数字信号处理中的应用 5

2.3.1基本信号的表示及可视化 5

2.3.2MATLAB在采样与波形发生的应用 5

2.4.3MATLAB在数字滤波器中的应用 5

3.MATLAB程序及仿真 5

3.1原始信号试验程序和波形图 5

3.2加噪信号试验程序和波形图 5

3.3滤波后信号试验程序和波形图 5

4.总结 5

参考文献 5

II

1.MATLAB语言及其应用

1.1MATLAB语言概述

MATLAB是一种用于数值计算、可视化及编程的高级语言和交互式环境。

使用MATLAB,可以分析数据,开发算法,创建模型和应用程序。

借助其语言、工具和内置数学函数,您可以探求多种方法,比电子表格或传统编程语言(如C/C++或Java)更快地求取结果。

MATLAB应用广泛,其中包括信号处理和通信、图像和视频处理、控制系统、测试和测量、计算金融学及计算生物学等众多应用领域。

在各行业和学术机构中,有一百多万工程师和科学家使用MATLAB这一技术计算语言。

1.1.1MATLAB语言的发展和特点

MATLAB是矩阵实验室(MatrixLaboratory)的简称,是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和Simulink两大部分。

70年代后期,CleveMoler担任美国墨西哥大学计算机系系主任,为了让学生方便的调用EISPACK和LINPACK,设计了接口程序,取名MATLAB(MATrixLABoratory),即Matrix和Laboratory的组合。

 MATLAB的第一个商业化的版本是1984年推出的是3.0的DOS版本,1992年MathWorks公司于推出了4.0版本,1994年的4.2版本扩充了4.0版本的功能,尤其在图形界面设计方面更提供了新的方法。

1997年推出的5.0版允许了更多的数据结构,如单元数据、多维矩阵、对象与类等,使其成为一种更方便编程的语言。

1999年推出的MATLAB5.3版在很多方面又进一步改进了MATLAB语言的功能。

2000年10月底推出了其全新的MATLAB6.0正式版(Release12),在核心数值算法、界面设计、外部接口、应用桌面等诸多方面有了极大的改进。

现在的MATLAB支持各种操作系统,它可以运行在十几个操作平台上,其中比较常见的有基于Windows9X/NT、OS/2、Macintosh、Sun、Unix、Linux等平台的系统。

现在的MATLAB再也不是一个简单的矩阵实验室了,它已经演变成为一种具有广泛应用前景的全新的计算机高级编程语言了。

其功能也越来越强大,会不断根据科研需求提出新的解决方法。

MATLAB将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言(如C、Fortran)的编辑模式,代表了当今国际科学计算软件的先进水平。

 

MATLAB和Mathematica、Maple并称为三大数学软件。

它在数学类科技应用软件中在数值计算方面首屈一指。

MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连matlab开发工作界面接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。

MATLAB具有用法简单、灵活、程式结构性强、延展性好等优点,已经逐渐成为科技计算、视图交互系统和程序中的首选语言工具。

特别是它在线性代数、数理统计、自动控制、数字信号处理、动态系统仿真等方面表现突出,已经成为科研工作人员和工程技术人员进行科学研究和生产实践的有利武器。

 

1.1.2MATLAB语言的工作环境

MATLAB开发环境是一套方便用户使用的MATLAB函数和文件工具集,其中许多工具是图形化用户接口。

它是一个集成的用户工作空间,允许用户输入输出数据,并提供了M文件的集成编译和调试环境,包括MATLAB桌面、命令窗口、M文件编辑调试器、MATLAB工作空间和在线帮助文档。

1.2MATLAB基本函数

(1)linspace函数的调用格式:

y=linspace(a,b)产生一个行矢量y,该矢量把a和b间的数等分100份而得到。

y=linspace(a,b,n)产生一个行矢量y,该矢量把a和b间的数分n份而得到。

(2)abs函数的调用格式:

A=abs(z)返回z每个元素的绝对值。

如果z的绝对值是复数,则返回其模。

(3)randn函数的调用格式:

randn(N)产生N×N的矩阵,其元素是按正态分布的数组;

randn(M,N)产生M×N的矩阵;

s=randn(‘state’)是一个二元向量,包括标准发生器的状态;

randn(‘state’,s)设置发生器的状态为s(即标准状态);

randn(‘state‘,0)设置发生器的初始状态;

randn('state',J):

J为整数,设置发生器到J阶状态;

(4)subplot函数的调用格式:

subplot(m,n,p)或subplot(mnp),其中m,n,p取值为1~9。

该函数表示将绘图窗口划分为m×n个子窗口(子图),并在第p个子窗口中绘图。

(5)fft函数的调用格式:

A=fft(X,N,DIM)其中,X表示输入图像;N表示采样间隔点,如果X小于该数值,那么Matlab将会对X进行零填充,否则将进行截取,使之长度为N;DIM表示要进行离散傅立叶变换。

(6)plot函数的调用格式:

plot(x)当x为一向量时,以x元素的值为纵坐标,x的序号为横坐标值绘制曲线。

当x为一实矩阵时,则以其序号为横坐标,按列绘制每列元素值相对于其序号的曲线,当x为m×n矩阵时,就由n条曲线。

plot(x,y)以x元素为横坐标值,y元素为纵坐标值绘制曲线。

plot(x,y1,x,y2,…)以公共的x元素为横坐标值,以y1,y2,…元素为纵坐标值绘制多条曲线。

(7)butter函数的调用格式:

[b,a]=butter(n,Wn),其中n为阶数,Wn为截止频率,‘hign’表示是高通。

butter函数的的作用是用来产生滤波器传输函数的分子和分母,其中b表示分子系数的向量形式,而a表示分母系数的向量形式。

(8)buttord函数的调用格式:

[b,a]=buttord(n,Wn,’hign’)其中b为H(z)的分子多项式系数,a为H(z)的分母多项式系数,n为高通滤波器阶数,Wn为高通滤波器截止频率。

(9)filter函数的调用格式:

y=filter(b,a,x)对向量x中的数据进行滤波处理,即差分方程求解,产生输出序列向量y。

b和a分别为数字滤波器系统函数H(z)的分子和分母多项式系数向量。

(10)grid函数的调用格式:

给坐标加网格线用grid命令来控制。

gridon/off命令控制是画还是不画网格线,不带参数的grid命令在两种状态之间进行切换。

(11)有关图形标注函数的调用格式为:

title(图形名称),xlabel(x轴说明),ylabel(y轴说明)。

1.3含噪信号处理的MATLAB实现

1.3.1程序设计流程

首先,绘制原始信号分析,给原始信号加上一个高频噪声在Matlab中人为设计一个随机序列的噪声信号,在本设计中用randn函数产生正态分布的随机数或矩阵的函数,随机数的均值为0,方差为1,并将这些随机数作为噪声加到原始信号上。

其次,设计一个滤波器,滤除高频噪声由模拟滤波器变换为数字滤波器时,采用的是双线性变换法,它保留的是从模拟到数字域的系统函数表示。

在滤波器的选取时,由于设计方法的侧重点不同,作出比较是困难的。

如果FIR滤波器情况下,最优的设计将是椭圆滤波器。

用双线性变换法设计低通滤波器。

本设计是用双线性变换法设计BW带阻型滤波器。

在MATLAB中,可以利用函数buttord,设计巴特沃斯滤波器。

用设计好的低通滤波器对含噪信号进行滤波,在Matlab中巴特沃斯滤波器利用函数filter对信号进行滤波。

在一个窗口同时画出滤波前后的波形及频谱,从图中可以看出,高频成分消失,信号与开始的基本一样,滤波器成功的滤除了干扰信号。

利用MATLAB对信号进行分析和处理,采集语音信号后,利用MATLAB软件平台进行频谱分析;并对所采集的语音信号加入干扰噪声,对加入噪声的信号进行频谱分析,设计合适的滤波器滤除噪声,恢复原信号。

1.3.2信号频谱分析

信号频谱分析的实际上是研究如何将信号分解为正交函数集的各分量的叠加,在此我们讨论的正交函数集是最常用的三角函数集,并从信号分量的组成情况去考察信号的特性。

正弦波、方波、三角波和白噪声信号是实际工程测试中常见的典型信号,这些信号时域、频域之间的关系很明确,并且都具有一定的特性,通过对这些典型信号的频谱进行分析,对掌握信号的特性,熟悉信号的分析方法大有益处,并且这些典型信号也可以作为实际工程信号分析时的参照资料。

1.3.3数字滤波

数字滤波是数字信号分析中最重要的组成部分之一,数字滤波与模拟滤波相比,具有精度和稳定性高、系统函数容易改变、灵活性高、不存在阻抗匹配问题、便于大规模集成、可实现多维滤波等优点。

数字滤波器的作用是利用离散时间系统的特性对输入信号波形(或频谱)进行加工处理,或者说利用数字方法按预定的要求对信号进行变换。

把输入序列x(n)变换成一定的输出序列y(n)从而达到改变信号频谱的目的。

从广义讲,数字滤波是由计算机程序来实现的,是具有某种算法的数字处理过程。

1.3.4巴特沃思滤波器

巴特沃思滤波器以巴特沃思函数来近似滤波器的系统函数。

巴特沃斯滤波器是根据幅频特性在通频带内具有最平坦特性定义的滤波器。

由模拟低通滤波器设计巴特沃斯低通滤波器

l)确定数字低通滤波器的技术指标通带截止频率Wp通带衰减αP;阻带截止频率Ws;阻带衰减αs。

2)将数字低通滤波器的技术指标转换为模拟低通滤波器的技术指标。

只转换边界频率Wp,Ws,αP,αs指标不作变化,边界频率的转换关系为脉冲响应不变法。

3)按照模拟低通滤波器的技术指标设计模拟低通滤波器。

2.数字信号处理

2.1数字信号处理的基本概念

几乎在所有的工程技术领域中都会涉及到信号处理问题,其信号表现形式有电、磁、机械以及热、光、声等。

信号处理一般包括数据采集以及对信号进行分析、变换、综合、估值与识别等。

一般来说,数字信号处理的对象是数字信号,模拟信号处理的对象是模拟信号。

但是,如果系统中增加数/模转换器和模/数转换器,那么,数字信号处理系统也可以处理模拟信号。

这里关键的问题是两种信号处理系统对信号处理方式的不同,数字信号处理是采用数值计算的方法完成对信号的处理,而模拟信号处理则是通过一些模拟器件完成对信号的处理。

2.2数字信号处理的基本方法

数字信号处理的目的是对真实世界的连续模拟信号进行测量或滤波。

因此,在进行信号处理之前需要将信号从模拟域转换到数字域,这通常通过模数转换器实现。

数字信号处理的输出经常也要变换到模拟域,这是数模转换器实现的。

数字信号处理的算法需要利用计算机或专用处理设备如数字信号处理器和专用集成电路等。

数字信号处理技术及设备具有灵活、精确。

抗干扰性强、设备尺寸小、造价低、速度快等突出优点,这些都是模拟信号处理技术与设备无法比拟的。

数字信号处理的核心算法是离散傅立叶变换,是DFT使信号在数字域和频域都实现了离散化,从而可以用通用计算机处理离散信号。

然而使数字信号处理从理论走向实用的是快速傅立叶变换(FFT),FFT的出现大大减少了DFT的运算量,使实时的数字信号处理成为可能,极大地促进了该学科的发展。

2.3MATLAB在数字信号处理中的应用

2.3.1基本信号的表示及可视化

数字信号处理的基础是离散信号及离散系统,在MATLAB中可直观快速进行离散信号的显示与运算。

用MATLAB表示一离散序列x[k]时,可用两个向量来表示。

其中一个向量表示自变量k的取值范围,另一个向量表示序列x[k]的值,在命令窗口直接输入表示两个向量的命令语句即可。

另外,MATLAB的工具箱中还提供了大量的信号产生函数,例如:

sawtooth(产生锯齿波或三角波信号)、square(产生方波信号)、chirp(产生调谐余弦信号)、gauspuls(产生高斯正弦脉冲信号)等等,调用这些函数可以方便地生成多种复杂信号。

2.3.2MATLAB在采样与波形发生的应用

数字信号处理的对象,是在采样时钟的控制之下,通过A/D转换器一定的采样频率对模拟信号进行采样得到的。

根据采样定理,采样率必须大于模拟信号的最高采样率(Nyquist频率)的2倍。

但是在许多情况下,要求信号以不同的频率采样,改变采样时钟虽然可行,但是并不可取。

这时需要对采样数据进行处理:

或者用抽取的方法降低其采样率(下采样);或者用内插的方法提高其采样率(上采样);或者两者兼有之(重采样)。

在程序设计阶段,为了对程序进行调试或验证算法的正确性,需要一些特性已知的信号(简单的如正弦、方波、三角波等),所以可以由Matlab提供一些波形产生函数。

例如在上节中提到的方波发生器square()、锯齿波和三角波发生器sawtooth()等。

2.4.3MATLAB在数字滤波器中的应用

滤波器是指用来对输入信号进行滤波的硬件或软件。

如果滤波器的输入、输出都是离散时间信号,则该滤波器冲击响应也必然是离散的,这样的滤波器定义为数字滤波器。

数字滤波器用硬件实现的基本部件包括延迟器、乘法器和加法器;如果用软件来实现时,它即是一段线性卷积程序。

软件实现的优点是系统函数具有可变性,仅依赖于算法结构,而且易于获得较理想的滤波功能。

MATLAB的信号处理工具箱的两个基本组成就是滤波器的设计与实现以及谱分析。

工具箱提供了丰富而简便的设计、实现FIR和IIR的方法,使原来繁琐的程序设计简化成函数调用,特别是滤波器的表达方式和形式之间的相互转换显得十分简便,为滤波器的设计和实现开辟了一片广阔的天地。

数字滤波器从功能上分类,可分为低通滤波器、高通滤波器、带通滤波器、带阻滤波器。

从滤波器的网络结构或者从单位脉冲响应分类,可分为IIR滤波器(即无限长单位冲击响应滤波器)和FIR滤波器(即有限长单位冲击响应滤波器)。

IIR滤波器和FIR滤波器的设计方法有很多不同之处,IIR滤波器设计方法有两类,经常用到的一类设计方法是借助于模拟滤波器的设计方法进行的。

其设计思路是:

先设计模拟滤波器得到传输函数H(s),然后将H(s)按某种方法转换成数字滤波器的系统函数H(z)。

这类方法是基于模拟滤波器的设计方法比较成熟的情况下,它不仅有完整的设计公式,也有完整的图表供查阅。

更可以直接调用MATLAB中的对应的函数进行设计。

另一类是直接在频域或者时域中进行设计的,设计时必须用计算机作辅助设计,直接调用MATLAB中的一些程序或者函数可以很方便地设计出所需要的滤波器。

FIR滤波器不能采用由模拟滤波器的设计进行转换的方法。

经常用的是窗函数法和频率采样法。

也可以借助计算机辅助设计软件采用切比雪夫等波逼近法进行设计。

3.MATLAB程序及仿真

3.1原始信号试验程序和波形图

figure

(1);%原始信号分析

t=linspace(0,6,512)

ft=sin(t*pi)+cos(t*pi);

subplot(2,1,1);

plot(t,ft);

xlabel('t');

ylabel('f(t)');

title('f(t)=sin(πt)+cos(πt)');

gridon;

Fw1=fft(ft);

Fw=abs(Fw1);

subplot(2,1,2);

plot(Fw(1:

32));

xlabel('w');

ylabel('|Fw|');

title('原始信号的幅频特性');

gridon;

图3-1原始信号波形图

3.2加噪信号试验程序和波形图

figure

(2);%对原始信号加噪

t=linspace(0,6,512)

ft=sin(t*pi)+cos(t*pi);

randn('state',0)

m=randn(1,512);

y=ft+0.18*m;

subplot(2,1,1);

plot(t,y);

xlabel('t');

ylabel('y');

title('加噪信号的时域特性');

gridon;

Fw2=fft(y);

fx=abs(Fw2);

subplot(2,1,2);

plot(fx(1:

32));

xlabel('w');

ylabel('|Fx(w)|');

title('加噪信号的幅频特性');

gridon;

图3-2加噪信号波形图

3.3滤波后信号试验程序和波形图

figure(3);%滤波后信号分析

t=linspace(0,6,512)

ft=sin(t*pi)+cos(t*pi);

randn('state',0)

m=randn(1,512);

y=ft+0.18*m;

[N,wc]=buttord(0.01,0.35,2,66);

[b,a]=butter(N,wc);

y1=filter(b,a,y);

subplot(2,1,1);

plot(t,y1);

xlabel('t');

ylabel('y1');

title('滤波后信号的时域特性');

gridon;

Fw3=fft(y1);

fy=abs(Fw3);

subplot(2,1,2);

plot(fy(1:

32));

xlabel('w');

ylabel('|Fy(w)|');

title('滤波后信号的幅频特性');gridon;

图3-3滤波信号波形图

4.总结

经过一周的努力,终于顺利完成了这次的课程设计,给原始信号加上一个高频噪声;设计一个滤波器,滤除高频噪声;并最终将课程设计报告总结完毕。

虽然时间较短,但我感觉从本次课程设计中学到了很多书上学不到的东西。

上网搜索相关资料,到图书馆查阅相关文献。

只有牢固掌握了所学的知识,才能有清晰的思路,知道每一步该怎样走。

运用MATLAB实现信号处理,简单高效,仿真效果好,特别适合信号与系统及数字信号处理的辅助教学。

刚拿到题目的时候,大致看一下要求,根据平时所学的知识,脑海中就立刻会想到应该用到的的基本知识和理论,然后再去图书馆去查这些资料,很快地初步方案以及大概的程序框图就出来了。

但是,这样快的速度是要以我们对知识的熟练掌握为前提的。

通过这次课程设计,我发现,课程设计不仅是对前面所学知识的一种检验,也是对自己能力的一种提高,通过这次课程设计使自己明白了原来的那点知识是非常欠缺的,要学习的东西还很多让我认识了知识的重要性之外,更让我明白了自己理论知识和实践知识的欠缺

参考文献

[1]刁彦华.基于MATLAB的信号消噪处理研究[J].河北职业技术学院学报.2002,2.

[2]陈怀琛.MATLAB及电子信息课程中的应用.北京电子工业出版社.2008,12.

[3]陈后金,胡健.信号与系统.高等教育出版社.2009:

P195——P201.

[4]陈后金,薛健.数字信号处理.高等教育出版社.2010:

P116——P153.

[5]贺兴华.MATLAB7.X图像处理人民邮电出版社.2006

[6]章毓晋图像工程(上册)北京清华大学出版社.1999

[7]陈后金.信号与系统[M].北京:

高等教育出版社.2007.07.

[8]张洁.双边带幅度调制及其MATLAB仿真[J].科技经济市场.2006.9

15

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 高等教育 > 军事

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2