当前位置:首页 > 基于MATLAB的信号消噪处理和程序设计
基于MATLAB的信号消噪处理和程序设计
种具有广泛应用前景的全新的计算机高级编程语言了。其功能也越来越强大,会不断根据科研需求提出新的解决方法。
MATLAB将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言(如C、Fortran)的编辑模式,代表了当今国际科学计算软件的先进水平。
MATLAB和Mathematica、Maple并称为三大数学软件。它在数学类科技应用软件中在数值计算方面首屈一指。MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连matlab开发工作界面接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。
MATLAB具有用法简单、灵活、程式结构性强、延展性好等优点,已经逐渐成为科技计算、视图交互系统和程序中的首选语言工具。特别是它在线性代数、数理统计、自动控制、数字信号处理、动态系统仿真等方面表现突出,已经成为科研工作人员和工程技术人员进行科学研究和生产实践的有利武器。
1.1.2 MATLAB语言的工作环境
MATLAB开发环境是一套方便用户使用的MATLAB函数和文件工具集,其中许多工具是图形化用户接口。它是一个集成的 用户工作空间,允许用户输入输出数据,并提供了M文件的集成编译和调试环境,包括MATLAB桌面、命令窗口、M文件编辑调试器、MATLAB工作空间和在线帮助文档。
1.2 MATLAB基本函数
(1)linspace函数的调用格式:
y=linspace(a,b)产生一个行矢量y,该矢量把a和b间的数等分100份而得到。 y=linspace(a,b,n)产生一个行矢量y,该矢量把a和b间的数分n份而得到。 (2)abs函数的调用格式:
2
基于MATLAB的信号消噪处理和程序设计
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(m n p),其中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为高通滤波器截止频率。
3
基于MATLAB的信号消噪处理和程序设计
(9)filter函数的调用格式:
y=filter(b,a,x)对向量x中的数据进行滤波处理,即差分方程求解,产生输出序列向量y。b和a分别为数字滤波器系统函数H(z)的分子和分母多项式系数向量。
(10)grid函数的调用格式:
给坐标加网格线用grid命令来控制。grid on/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软件平台进行频谱分析;并对所采集的语音信号加入干扰噪声,对加入噪声的信号进行频谱分析,设计合适的滤波器滤除噪声,恢复原信号。
4
基于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)按照模拟低通滤波器的技术指标设计模拟低通滤波器。
5
共分享92篇相关文档