当前位置:文档之家› 基于MATLAB的信号分析与处理汇总

基于MATLAB的信号分析与处理汇总

基于MATLAB的信号分析与处理汇总
基于MATLAB的信号分析与处理汇总

基于MATLAB的信号分析与处理

第一节MA TLAB快速入门

一MATLAB操作入门

MATLAB是MATrix LABoratory (矩阵实验室)的缩写,是由美国MathWorks公司于20世纪80年代初推出的一套以矩阵计算为基础的、适合多学科、多种工作平台的功能强劲的大型软件.MATLAB将数值计算、可视化和编程功能集成在非常便于使用的环境中,具有编程效率高、用户使用方便、扩充能力强、移植性好等特点.经过MathWorks公司的不断完善,目前MATLAB已经发展成为国际上最优秀的高性能科学与工程计算软件之一.

1、启动(Windows操作平台)

双击桌面上MA TLAB的快捷方式或程序里MA TLAB选项即可启动MATLAB.

2、MATLAB环境

启动MATLAB后对话框如下图(图1),它大致包括以下几个部分:

图1

1)菜单栏------单击即可打开相应的菜单;在MATLAB 6.5主窗口的菜单栏,共包含File、Edit、View、Web、Window和Help 6个菜单项。

(1) File菜单项:File菜单项实现有关文件的操作。“New”命令下的“M-file”选

项表示新建一个M文件,该命令将打开MATLAB的M文件编辑/调试器。通过M文件

编辑/调试器,用户可以创建自己的M文件,也可以编辑已有的M文件并调试MATLAB 程序。“Figure”选项表示新建一个图形窗口。

(2) Edit菜单项:Edit菜单项用于命令窗口的编辑操作。

(3) View菜单项:View菜单项用于设置MATLAB集成环境的显示方式。

(4) Web菜单项:Web菜单项用于设置MATLAB的Web操作。

(5) Window菜单项:主窗口菜单栏上的Window菜单,只包含一个子菜单Close all,

用于关闭所有打开的编辑器窗口,包括M-file、Figure、Model和GUI窗口。

(6) Help菜单项:Help菜单项用于提供帮助信息。

2)工具栏------使用它们能使操作更快捷;

3)Command Window(命令窗口)------用来输入和显示计算结果,其中符号“>>”表示等待用户输入;在命令提示符后键入命令并按下回车键后,MATLAB就会解释执行所输入的命令,并在命令后面给出计算结果。

在命令窗口中实现管理功能的常用命令有:

>>cd 显示当前工作目录;

>>dir 显示当前工作目录或指定目录下的文件;

>>clc 清除命令窗口中的所有内容;

>>clf 清除图形窗口;

>>quit(exit) 退出MATLAB;

>>type test 在命令窗口中显示文件test.m的内容

>>delete test 删除文件test.m;

>>which test 显示test.m的目录;

>>what 显示当前目录或指定目录下的M、MA T、MEX文件.

4)Workspace(工作区窗口)------存储着命令窗口输入的命令和所有变量值;工作空间是MATLAB用于存储各种变量和结果的内存空间。在该窗口中显示工作空间中所有变量的名称、大小、字节数和变量类型说明,可对变量进行观察、编辑、保存和删除。

5)Current Directory(当前目录选择窗口)------显示当前路径.

3、MATLAB的帮助系统

MATLAB的帮助系统提供帮助命令、帮助窗口等帮助方法.

(1)帮助命令help

假如准确知道所要求助的主题词,或指令名称,那么使用help命令是获得在线帮助的最简单有效的途径. 例如要获得关于函数sin 使用说明的在线求助,可键入命令>> help sin

将显示

SIN Sine.

SIN(X) is the sine of the elements of X.

Overloaded methods

help sym/sin.m

(2)帮助窗口(图2)

帮助窗口给出的信息按目录编排,比较系统,便于浏览与之相关的信息,其内容与帮助命令给出的一样,进入帮助窗口的方法有:

?选取帮助菜单里的“MATLAB Help”或键入命令“helpwin”;

?双击菜单条上的问号按钮.

图2

第二节变量与函数

一、变量

变量是任何程序设计语言的基本要素之一,MATLAB语言当然也不例外.与一般常规的程序设计语言不同的是,MA TLAB语言并不要求对所使用的变量进行事先声明,也不需要指定变量类型,它会自动根据赋予变量的值或对变量进行的操作来确定变量的类型并为其分配内存空间.在赋值过程中,如果变量已存在,MATLAB将使用新值代替旧值,并以新的变量类型代替旧的变量类型.

MATLAB中变量的命名规则是:

1、变量名区分大小写;

2、变量名的长度不超过31位,第31个字符之后的字符将被忽略;

3、变量名必须以字母开头,之后可以是任意字母、数字或下划线,变量名中不允许使用标点符号.

MATLAB中有一些预定义的变量,这些特殊的变量称为常量.

MATLAB语言中的常量

在MA TLAB语言中,定义变量时应避免与常量名相同,以免改变常量的值.

与其他程序设计语言相同,MA TLAB语言中也存在变量作用域的问题.在未特殊说明

的情况下,MA TLAB语言将所识别的一切变量视为局部变量,即仅在其调用的函数内有效.若要定义全局变量,应对变量进行声明,即在该变量前加关键字global.

二、运算符号及标点符号

运算符号:

1、算术运算符(表1)

表1

2、关系运算符(表2)

3、逻辑运算符(表3)

表3

标点符号:

MATLAB中标点符号的含义是:

1、在命令窗口中输入一个MATLAB语句(语句的一般形式为:变量=表达式),如果语句后为逗号或无标点符号,则在命令窗口中显示该语句的计算结果;如果语句后为分号,MATLAB 只进行计算,不在命令窗口中显示计算结果.如果要查看计算结果,只需要在命令窗口中输入变量名按回车键或打开工作空间双击选中的变量即可.

2、在MATLAB的命令窗口中输入一个表达式或利用MATLAB进行编程时,如果表达式太长,可以用续行符号“…”将其延续到下一行.

3、编写MATLAB程序时,通常利用符号“%”对程序或其中的语句进行注释.

三、函数

MATLAB语言中最基本最重要的成分是函数.一个函数由函数名、输入变量和输出变

量组成.同一个函数,不同数目的输入变量和不同数目的输出变量,均代表不同的含义.这不仅丰富了MA TLAB的函数功能,而且大大减少了需要的磁盘空间,使得MATLAB编写的程序简单而且高效.

MATLAB的函数,按照用途,可以分为四类:标量函数、向量函数、矩阵函数和图形函数.

1、标量函数:标量函数作用于标量,一般用于简单的数值计算.常用的标量函数有三角函数、指数对数函数、复数函数、截断函数和求余函数等.

三角函数:sin、cos、tan、cot、sec、csc、asin、acos、atan、acot、asec、acsc、sinh、cosh、tanh、asinh、acosh、atanh;

指数和对数函数:exp(以e为底的指数函数)、pow2(以2为底的指数函数)、sqrt(正的平方根函数)、realsqrt(正的平方根函数,若输入不是正数则报错)、nthroot(n次方根函数)、log(自然对数函数)、reallog(自然对数函数,若输入不是正数则报错)、log10(以10为底的对数函数)、log2(以2为底的对数函数);

复数函数:abs(绝对值或复数模)、angle(复数的相角或幅角)、conj(复数共轭)、real(复数实部)、imag(复数虚部)、complex(用实部和虚部构造复数)、isreal(判断是否为实数矩阵).例如:c=complex(a,b) 将根据的a、b构造复数c, 复数c的实部为a,复数c的虚部为b.>>a=[1 2;3 4];b=[5 6;7 8]

>> c=complex(a,b)

截断和求余函数:mod(除法求余数,与除数同号)、rem(除法求余数,与被除数同号)、sign(符号函数)、fix(朝零方向取整函数)、floor(向负无穷方向取整函数)、ceil(向正无穷方向取整函数)、round(四舍五入函数)、rats(有理逼近函数).

当一个标量函数作用于向量或矩阵时,是这个标量函数作用于这个向量或矩阵的每一个元素.这个功能将大大方便我们处理成批的数据.

2、向量函数:MATLAB中有些函数只有当它们作用于行向量或列向量时才有意义,称为向量函数.常用的向量函数:max(最大值)、min(最小值)、sum(和)、length(长度)、mean(平均值)、median(中数)、prod(乘积)、sort(从小到大排列).例如:

>>x=[0.6833,0.2126,0.8392,0.6288,0.1338,0.2071,0.6072,0.6299,0.3705,0.5751];

>>a=max(x), b=min(x),c=mean(x),d=median(x)

当一个向量函数作用于一个矩阵时会产生一个行向量,这个行向量的每个元素是向量函数作用于矩阵相应列向量的结果.

在MA TLAB的统计工具箱中,我们还会学习到许多向量函数.

3、矩阵函数:MA TLAB中有大量的矩阵函数,从其作用来看,可以分为构造矩阵的函数和进行矩阵计算的函数.

4、基本二维图形函数

绘制二维图形时最常用的是plot函数。

(1)plot(y):当只有一个参数时,plot以该参数的值为纵坐标,横坐标从1开始自动

赋值向量【1 2 3 。。。。】,向量的方向和长度与参数y相同。例如

y=[0 1 2 1 0];

plot(y)

(2) plot(x,y):这是最常用的形式。x为横坐标向量,y为纵坐标向量,例如

t=1:0.2:10;

y=sin(t);

plot(t,y)

(3)对数坐标曲线三个函数:semilog semilogx loglog可以绘制二维对数坐标曲线,这几个函数的用法与plot函数相同。例如

t=0:0.1:2*pi;

y=sin(t);

semilogx(t,y);

grid on

绘制的横坐标为对数坐标,并用grid on命令为图形窗口添加了网络。

第三节MATLAB的数值计算功能

强大的数值计算功能是MATLAB最具代表性的特点.也正是由于MATLAB具有强大的数值计算功能,MathWorks公司才有能力把MA TLAB延伸到不同专业、不同行业和不同部门的各个领域,使其成为世界上最优秀的、应用最为广泛的、最受用户喜爱的数学软件.

一、数组及其运算

1、数组的建立

(1). 直接输入数组

建立数组最直接的方法是在命令窗口中直接输入数组.数组元素需要用方括号“[ ]”括起来,元素之间可以用空格、逗号或分号分隔.需要注意的是,用空格和逗号分隔建立行数组,元素之间全部用分号分隔建立列数组.

(2). 利用冒号表达式建立数组, 此时不用方括号“[ ]”.

冒号表达式建立等差数组,它的基本形式为x=x1:step:x2, 其中x1、step、x2分别为给定数值,x1表示数组的首元素数值,step 表示步长,即从第二个元素开始,后一个元素与前一个元素之间的差值,x2表示数组尾元素数值限.注意:x2并非尾元素数值,当x2-x1为step的整数倍时,x2才是尾元素数值.例如:>>a=1:2:12 和>>a=1:2:13 注:(a).如果step=1, 可以省略此项的输入,直接写成x=x1:x2.

(b).如果x1< x2,则需要step>0;如果x1> x2, 则需要step<0;如果x1= x2, 则建立的数组只有一个元素.

(3). 线性等分数组的建立

MATLAB提供了函数linspace用来建立线性等分数组,调用格式如下:

y=linspace(x1,x2) 建立100维的等分数组,使得y(1)=x1,y(100)=x2;

y=linspace(x1,x2,n) 建立n维的等分数组,使得y(1)=x1,y(n)=x2.例如:

>>y=linspace(1,100), y=linspace(1,100,6)

线性等分函数和冒号表达式都可以建立等分数组,前者是设定了数组的维数去建立等分数组,后者是通过设定步长建立维数随之确定的等分数组.

(4). 对数等分数组的建立

MATLAB中提供了对数等分函数logspace生成等比数组,将此数组取以10为底的对数可生成等差数组.调用格式如下:

y=logspace(x1,x2) 生成50维对数等分数组,使得y(1)=10x1, y(50)=10x2;例

如:>>y=logspace(5,8);

y=logspace(x1,x2,n) 生成n维对数等分行数组,使得y(1)=10x1, y(n)=10x2.

另外,数组还可以从矩阵中抽取,还可以把数组看成1*n阶或n*1阶的矩阵,以矩阵形式生成.由于在MATLAB中矩阵比数组重要的多,此类函数将在矩阵及其运算中详细介绍.2、数组元素的调用

(1). 调用数组的一个元素:数组的元素可以通过下标调用,如x(i)表示数组x的第i个元素.

(2). 调用数组的部分元素:x(a:b:c)表示调用数组x的从第a个元素开始,以步长为b到第c 个元素,b可以为负数,b缺省时为1.

(3). 直接使用元素序号调用数组元素:x([a b c d])表示调用数组x的第a、b、c、d个元素构成一个新数组[x(a) x(b) x(c) x(d)].

3、数组的运算

(1). 数组对标量的加、减、乘、除、乘方是数组的每个元素对该标量进行相应的加、减、乘、除、乘方运算.

设a=[a1 a2 … an], c=标量,则

a±c=[a1±c a2±c … an±c];

a*c=c*a=a.*c=[a1*c a2*c … an*c]

a/c=a./c=[a1/c a2/c … an/c]

a\c=a.\c=[a1\c a2\c … an\c]

a^c=a.^c=[a1^c a2^c … an^c]

c^a=c.^a=[c^a1 c^a2 … c^an]

(2). 两个相同维数的数组进行加、减、乘、除、幂运算,可按元素对元素的方式进行,不同大小或维数的数组不能进行运算.

设a=[a1 a2 … an],b=[b1 b2 … bn],则

a±b=[a1±b1 a2±b2 … an±bn];

a.*b=[a1*b1 a2*b2 … an*bn]

a./b=[a1/b1 a2/b2 … an/bn]

a.\b=[a1\b1 a2\b2 … an\bn]

a.^b=[a1^b1 a2^b2 … an^bn]

(3). 两个相同维数的数组的点积由dot函数实现,调用格式:dot(a,b).

(4). 两个三维数组之间的向量积由cross函数实现,调用格式:cross(a,b).

二、矩阵及其运算

由于MATLAB的数值计算功能都是以(复)矩阵为基本单元进行的,因此,MATLAB 中矩阵的运算可谓最全面、最强大.本小节将对矩阵及其运算进行详细的阐述.

1、矩阵的建立

(1). 直接输入小矩阵

在键盘上直接输入矩阵是最方便、最常用和最好的建立数值矩阵的方法,尤其适合较小的简单矩阵.用此方法建立矩阵时,应当注意以下几点:

(a). 输入矩阵以“[ ]”为其标识,即矩阵的元素应在“[ ]”的内部,此时MA TLAB才将其识别为矩阵,如:a= [ 1 2 3; 1 1 1; 4, 5, 6]

(b). 矩阵的同行元素之间可由空格或逗号分隔,行与行之间用分号或回车符分隔;

(c). 矩阵大小可不预先定义;

(d). 若不想获得中间结果,在[ ]后可用分号结束;

(e). 无任何元素的空矩阵也合法;

(f). 矩阵元素可以为运算表达式,如b= [sin(pi/3), cos(pi/4); log(9), tanh(6)].

(2). 当矩阵很大,不适合在命令窗口直接输入时,可以使用MATLAB提供的矩阵编辑器来完成矩阵的输入和修改.在使用矩阵编辑器时,必须首先在命令窗口中预先定义一个变量,这个变量可以是数或简单的矩阵.例如在命令窗口中输入A=1,打开工作空间窗口,选中变量A双击,就可以打开矩阵A的编辑器,通过添加或修改原来的元素,从而建立起我们需要的矩阵.

(3)、通过M文件建立大矩阵

当矩阵的规模比较大,直接输入法就显得笨拙,出现差错也不易修改.为了解决此问题,可以通过M文件输入矩阵.M文件是一种可以在MATLAB环境中运行的文本文件,分为命令文件和函数文件两种.这里是用命令M文件来建立大型矩阵.从菜单栏的File中选择New,再选择M-file命令,打开MA TLAB Editor窗口,按格式把所要输入的矩阵写入一文本文件中,并将此文件以m为扩展名,即为M文件.在MA TLAB命令窗口中输入此M文件名,运行后则把M文件中的大型矩阵输入到MA TLAB的内存中.

例如:编制一名为example.m的M文件,内容如下:

A=[456 468 873 2 579 55; 21, 687,54 488 8 13; 65 4656 88 98 21 5]

在MA TLAB 命令窗口输入:

>>example % 将矩阵A调入到MA TLAB的内存中

说明:M文件要保存在MATLAB的搜索路径上,才能在MATLAB的命令窗口中调用.

三、多项式运算

1、多项式的建立

在MA TLAB中多项式P(x)=a0x n+a1x n-1+…+a n-1x+a n由行向量P=[a0,a1,…,a n-1,a n]表示,这样就把多项式的问题转化为向量的问题.

(1). 由系数向量建立多项式:在MA TLAB中,由于多项式是以向量形式储存的,因此,建立多项式的最简单的方法是直接输入向量,MA TLAB自动将向量元素按降幂顺序分配给多项式的各系数值,向量可以为行向量,也可以是列向量.

例:输入多项式x3-5x2+6x-33.

>>p=[1 -5 6 -33 ];

(2).特征多项式的建立:矩阵的特征多项式由函数poly实现.

>>A=[1 2 3; 2 3 4; 3 4 5]; p=poly(A)

(3).由多项式的根建立多项式:由给定的根建立相应的多项式也由函数poly实现.

>>root=[ -5 -3+4i -3-4i]; p=poly(root)

2、多项式的运算

(1). 求多项式的值.求多项式的值有两种形式,对应着两种算法:一种是以数组为计算单元,此时的计算函数是polyval, 调用格式为y=polyval(p,x),其中p为行向量形式的多项式,x为代入多项式的值,它可以是标量、向量、矩阵.如果x是向量或者矩阵,该函数将对向量或者矩阵的每一个元素计算多项式的值.另一种是以方阵为计算单元,进行矩阵运算,求得矩阵多项式的值,此时的计算函数为polyvalm.这两种计算的差别是源于数组运算和矩阵运算的差别.

>>p=[1 11 55 125];x=[1 1;2 2];

>>a=polyval(p,x)

>>b=polyvalm(p,x)

(2). 求多项式的根.求多项式的根有两种方法,一种是直接调用MATLAB的函数roots 求多项式的所有根;另一种是通过先建立多项式的伴随矩阵再求其特征值的方法得到多项式的所有根.

例:用两种方法求解方程2x4-5x3+6x2-x+9=0的所有根.

>>p=[2 -5 6 -1 9]; roots(p)

>>a=compan(p), eig(a)

(3). 多项式的乘除法运算.多项式的乘法由函数conv实现,多项式的除法由函数deconv 来实现.

>>p1=[2 -5 6 -1 9]; p2=[3 -90 -18 ];

>>p=conv(p1,p2) %多项式乘法

>>[q,r]=deconv(p,p2) %多项式除法

(4). 多项式的微分.函数polyder可以实现多项式的微分计算.

>>c=[4 13 28 27 18];

>>q=polyder(c)

>>q=polyder(a,b) %求a*b的导数

>>[q,d]=polyder(a,b) %求a/b的导数

(5). 多项式的拟合.多项式拟合是多项式运算的一个重要组成部分,在工程及科研工作中都得到了广泛的应用.MATLAB提供了专用的拟合函数polyfit.其调用格式如下:polyfit(X,Y,n) 其中X,Y为拟合数据,n为拟合多项式的阶数.

[p,s]= polyfit(X,Y,n) 其中p为拟合多项式系数向量,s为误差估计数组.

例:用4次多项式对[0,pi/2]上的正弦函数进行最小二乘拟合.

>>x=0:pi/20:pi/2; y=sin(x); % 获得[0,pi/2] 上的数据点

>>a=polyfit(x,y,4) % 进行多项式拟合.

第四节MATLAB的图形功能

在进行数值计算的过程中,为了从直观上认识计算结果,可以通过MATLAB的图形功能将计算结果图形化.MA TLAB是通过描点、连线来作图的,因此,在作二维图形和三维图形之前,必须先取得该图形上一系列点的坐标,然后利用MATLAB函数作图.下面着重介绍二维图形的画法,对三维图形只作简单叙述.

一、二维图形

二维图形的绘制是MA TLAB图形功能的基础,也是在绝大多数数值计算中广泛应用的图形方式之一.

1、基本绘图命令

(1). plot命令绘制二维图形最常用的命令是plot.对于不同形式的输入,该函数可以实现不同的功能.

(i). 当plot函数仅有一个输入变量时:plot(X)

如果X为实向量,则以X的索引坐标作为横坐标,以X的各元素作为纵坐标绘制图形.如果X为复向量,则以X的实部作为横坐标,虚部作为纵坐标绘制图形.如果X为实数矩阵,则绘制X的列向量对其坐标索引的图形.如

>>X=[0 0.5 0.75 0.95 0.8 0.35]; plot(X) %图4.1

>>X=[1+2i,2+4i,3+2i,5+i,6+4i];plot(x) %图4.2

图4.1 图4.2

(ii). 当plot函数有两个输入变量时:plot(X,Y)

当X和Y为向量时,X和Y的维数必须相同,而且同时为行向量或同时为列向量.此时以第一个向量的分量为横坐标,第二个向量的分量为纵坐标绘制图形,这是实际应用过程中最为常用的.例如:

>>x=0:0.01*pi:pi; y=sin(x).*cos(x); %注意:此处的.*表示两个向量对应元素的乘积.>>plot(x,y) %图4.3

图4.3 图4.4 当X,Y为m*n矩阵时,将在同一幅图中绘出n条不同颜色的连线.绘制规则为: 以X 矩阵的第j列分量作为横坐标,矩阵Y的第j列分量作为纵坐标,绘得第j条连线.若在同一幅图中出现多条曲线,MATLAB会自动地把不同曲线绘制成不同的颜色,以进行简单的区别.如:

>>x=0:0.01*pi:pi; y=[sin(x'),cos(x')];

>>plot([x',x'],y)

(iii). 当plot函数有三个输入变量时:plot(X,Y, 'Linespec')

想绘制不同的线型、颜色、标识等的图形时,可以调用此形式,第3个输入变量为图形显示属性的设置选项:线型、颜色、标识.

线型:-实线;: 点线;-. 虚点线;--虚线;

颜色:y 黄;m紫;c青;r 红;g 绿;b 蓝;w 白;k 黑;

标识:. 点;o圆点;x 叉号;+ 加号;* 星号;s方形;d菱形;v下三角;^ 上三角;

< 左三角;> 右三角;p 五角星;h 六角星.

应用上述符号的不同组合可以为图形设置不同的线型、颜色、标识.在调用时,选项应置于单引号内,当多于一个选项时,各选项直接相连,中间不需要任何的分隔符.如:>>x=1:0.1*pi:2*pi; y=sin(x); z=cos(x); plot(x,y,'--k',x,z,'-.kd') %图4.4

(2). fplot命令

前面介绍的plot命令是根据外部输入数据或通过函数数值计算得到的数据进行作图.而在实际应用中,我们可能并不知道某一函数随自变量变化的趋势,此时若采用plot命令来绘图,则有可能会因为自变量的取值间隔不合理而使曲线图形不能反映出自变量在某些区域内函数值的变化情况.当然我们可以将自变量间隔取得足够小以体现函数值随自变量变化的曲线,但这样会使数据量变大.

fplot命令可以很好地解决这个问题.该命令通过内部的自适应算法来动态决定自变量的取值间隔,当函数值变化缓慢时,间隔取大一点;变化剧烈时,间隔取小一点.fplot命令的调用方式:

fplot(@fun, [xmin xmax ymin ymax]) 在[xmin xmax]内画出字符串fun表示的函数的图形,[ymin ymax]给出了y的限制.例如:

>>fplot('sin(x)./x',[-20 20 -0.3 1.3]) %图4.5

图4.5图4.6

2、图形处理的基本技术

除了提供强大的绘图功能外,MATLAB语言还有极为强大的图形处理能力.下面介绍一些图形处理技术,包括图形控制、图形标注、图形保持以及子图的绘制等.

(1). 图形控制

MATLAB语言中较常用的图形控制函数有坐标轴控制函数axis、坐标轴缩放函数zoom 和坐标网格函数grid等.

(i). axis函数控制坐标轴的特征

在缺省情况下MATLAB自动选择图形的横、纵坐标的比例,如果你对这个比例不满意,

可以用axis命令控制,常用的有:

axis([xmin xmax ymin ymax]) [ ]中分别给出了x轴和y轴的最小、最大值;

axis equal 或axis('equal') x轴和y轴单位长度相同;

axis square 或axis('square') 图框呈方形;

axis off 或axis('off') 清除坐标刻度.例如:

>>x=0:0.025:pi/2; plot(x,tan(x),'-ko') %使用axis命令设定坐标轴之前的图形图4.6 >>axis([0 pi/2 0 5]) %使用axis命令设定坐标轴之后的图形图4.7

图4.7 图4.8 (ii). zoom函数控制坐标轴的缩放:zoom函数可以实现对二维图形的缩放,该函数在处理局部较为密集的图形中有很大作用.常用的调用格式有:

zoom 在zoom on 和zoom off之间切换;

zoom on 允许对图形进行缩放;

zoom off 禁止对图形进行缩放;

zoom xon 允许x 轴缩放;

zoom yon 允许y轴缩放;

zoom out 恢复进行的一切缩放.

当zoom处于on 状态时,可以通过鼠标进行图形缩放,单击鼠标左键将光标处的图形放大一倍;而单击鼠标右键将光标处的图形缩小一倍;双击鼠标左键则将会恢复缩放前的状态,即取消一切缩放操作.

应当注意,对图形的缩放不会影响图形的原始尺寸,也不会影响图形的横纵坐标的比例,即不会改变图形的基本结构.

(iii).grid函数控制平面图形的坐标网格:MA TLAB提供了平面网图函数grid用于绘制坐标网格,提高图形显示效果.grid函数的调用格式如下:

grid on 在图形中绘制坐标网格;

grid off 取消坐标网格.

单独的函数grid将实现grid on 与grid off两种状态之间的转换.

>>x=0:0.1*pi:2*pi; y=sin(x);

>>plot(x,y)

>>grid on %图4.8

(2). 图形的标注

MATLAB语言还提供了丰富的图形标注函数供用户自由地标注所绘制的图形.

(i).坐标轴标注和图形标题

xlabel ylabel 为x, y坐标轴添加标注

title 为图形添加标题

xlabel('标注内容','属性1', '属性值1', '属性2', '属性值2',…) %属性包括标注文本的属性,包括字体大小、字体名等.

三个函数的调用结果的区别仅在于标注所处的位置不同,title 给出的标注将置于图的顶部,而xlabel 和ylabel则分置于相应的坐标轴的边上.例如:

>>x=1:0.1*pi:2*pi; y=sin(x);

>>plot(x,y)

>>xlabel('x(0-2\pi)', 'fontweight', 'bold');

>>title('y=sin(x)','fontsize', 12, 'fontweight', 'bold') %12不加单引号%图4.9

图4.9 图4.10在标注过程中经常会遇到特殊符号的输入问题,为了解决这个问题,MA TLAB语言提供了相应的字符转换,如:\alpha→α;\beta→β;\gamma→γ;\delta→δ;\epsilon→ε;\zeta →ζ;\pi→π;\omega→ω;\Omega→Ω等等.

用户也可以对文本标注进行显示控制,如:\bf黑体,\it 斜体,\rm 标准形式,例如:>>x=-10:0.1:10; y=exp(-x.^2/2);

>>plot(x,y, '-')

>>title('\bf y=e^{-x^{2}/2}') %图4.10

(ii). 文本标注

MATLAB对图形进行文本注释所提供的函数为text和gtext.

text函数的调用格式:text(x,y, '标注文本及控制字符串')其中(x,y)给定标注文本在图中添加的位置,例如:

>>x=1:0.1*pi:2*pi; y=sin(x);

>>plot(x,y)

>>text(3*pi/4,sin(3*pi/4), '\leftarrow sin(3\pi/4)=0.707')

>>text(5*pi/4,sin(5*pi/4),['sin(5\pi/4)=',num2str(sin(5*pi/4)),'\rightarrow'],'HorizontalAlign ment', 'right', 'Fontsize', 12) %图4.11

%属性HorizontalAlignment用来控制文本标注输入起点是在标注本身的左侧还是右侧.

图4.11 图4.12 交互式文本输入函数gtext. 使用该函数,用户可以通过使用鼠标来选择文本输入的点,单击后,系统将把指定的文本输入到所选的位置上.

>>x=1:0.1*pi:2*pi; y=sin(x);

>>plot(x,y)

>>gtext('y=sin(x)', 'Fontsize', 12)

执行该函数时,将鼠标放在图形上会出现“+”字型交叉线供用户添加标注的点,选择添加标注的位置后,单击鼠标左键即可在该位置上添加标注.

(iii). 图例标注

在对数值计算结果进行绘图时,经常会出现在同一张图形中绘制多条曲线的情况,这时可以使用legend命令为曲线添加图例以便于区别它们.legend 函数能够为图形中的所有曲线进行自动标注,以其输入变量作为标注文本,具体调用格式如下:

legend('标注1', '标注2',…)标注1,标注2等分别对应绘图过程中按绘制先后顺序所生成的曲线.

>>x=0:0.1*pi:2*pi; y=sin(x); z=cos(x);

>> plot(x,y,'k-o',x,z,'k--h')

>>legend('sin(x)', 'cos(x)') %图4.12

可以用鼠标拖动图例框改变其在图中的位置.也可以在legend函数调用时进行简单的定位设置:legend('标注1', '标注2',…, '定位代号')

MATLAB 给出了6个定位代号,具体说明如下:

0: 自动定位,使得图标与图形重复最少;1: 置于图形的右上角(默认值);2: 置于图

形的左上角;3: 置于图形的左下角;4: 置于图形的右下角;-1: 置于图形的右外侧.关于标注位置,没有必要记住,可以通过在线帮助获得.help legend

图例标注后,也可以用鼠标来调整图例标注的位置.

(3). 图形保持与子图

(i).图形保持

在绘图过程中,经常会遇到在已存在的一张图中添加新的曲线,这就要求保持已存在的图形,MA TLAB语言中实现该功能的函数是hold.

hold on 启动图形保持功能,此后绘制的图形将添加到当前的图形窗口中,并自动调整坐标轴的范围;

hold off关闭图形保持功能,新绘制图形将覆盖原图形.

hold在hold on 和hold off之间切换.如:

>>x=0:0.1*pi:2*pi; y=sin(x); z=cos(x);

>>plot(x,y,'k-*')

>>hold on

>>plot(x,z, 'k-o')

>>plot(x,y+z,'k-h')

>>legend('sin(x)', 'cos(x)', 'sin(x)+cos(x)', 0)

>>hold off %图4.13

图13

(ii).子图

在绘图过程中,经常需要将几个图形在同一图形窗口中表示出来,但又不在同一个坐标系中绘制,此时要用到函数subplot.调用格式如下:

subplot(m,n,p) 将一个图形窗口分割成m*n个小窗口,可以通过参数p分别对若干子绘图区域进行操作,子绘图区域的编号为按行从左至右编号.如果p是一个向量,则创建一坐标轴,包含所有罗列在p中的小窗口.

例如:在四个子图中绘制不同的三角函数图.

>>x=0:0.1*pi:2*pi;

>>subplot(2,2,1) %第1个绘图子域

>>plot(x,sin(x), '-*'); axis([0 2*pi -1 1]); title('sin(x)')

>>subplot(2,2,2) %第2个绘图子域

>>plot(x,cos(x), '-o'); axis([0 2*pi -1 1]); title('cos(x)')

>>subplot(2,2,3) %第3个绘图子域

>>plot(x,2*sin(x).*cos(x), '-x'); axis([0 2*pi -1 1]); title('2sin(x)cos(x)')

>>subplot(2,2,4) %第4个绘图子域

>>plot(x,sin(x)./cos(x), '-h'); axis([0 2*pi -1 1]); title('sin(x)/cos(x)') %图4.14

图4.14

在子图绘制过程中,axis,hold,title,xlabel,grid等都可以只针对某个子图进行图形设置,而不会影响到其他子图.

3、特殊的二维图形函数

MATLAB提供了一系列特殊的二维图形函数,其中包括特殊坐标系的二维图形函数以

及特殊二维图形函数.

(1).极坐标图形用polar函数可以画出极坐标图形, 该函数有两种表达形式:

polar(theta, rho) 创建一个幅角theta相对于半径rho的极坐标图.

polar(theta, rho, LineSpec) %LineSpec为绘出的图形指定线型、颜色和标识.

>>x=0:0.01*pi:4*pi;

>>y=sin(x/2)+x;

>>polar(x,y,'k-') %图4.15

图4.15

(2). 二维特殊函数图

下列函数可以绘制其它的二维特殊函数图形:area填充绘图;bar条形图;barh水平条形图;comet彗星图;ezpolar简单绘制极坐标图;feather矢量图;fill多边形填充;gplot 拓扑图;hist直方图;pie饼状图;rose极坐标系下的柱状图等等.以上各函数均有不同的调用方法,详细内容读者可以通过MATLAB在线帮助获得.

二、三维图形

三维图形的绘制与二维图形的绘制在许多方面都很类似,其中曲线的属性设置完全相同.最常用的三维绘图是绘制三维曲线图、三维网格图和三维曲面图三种基本类型,相应的MATLAB命令为plot3、mesh、surf, 下面分别介绍它们的具体使用方法.

1. plot3命令与plot类似,plot3是三维绘图的基本函数,调用格式如下:

plot3(x,y,z) 其中x,y,z为同维向量.绘制一条以向量x,y,z为X,Y,Z轴坐标值的空间曲线.

plot3(X,Y,Z) 若X,Y,Z均为m*n的矩阵,将绘制n条曲线,其第j条曲线是以X,Y,Z 矩阵的第j列分量为x,y,z轴坐标值的空间曲线..

plot3(X,Y,Z,s) s为定义线型、颜色等的字符串.

plot3(x1,y1,z1,s1,x2,y2,z2,s2,…)

例如:>>x=0:pi/50:10*pi; plot3(cos(x),sin(x),x) %绘制螺旋线图4.16

图4.16 图4.17

2.mesh 网图函数命令

mesh命令可以绘出某一区间内完整的曲面,而不是单根曲线.调用格式如下:

mesh(X,Y,Z)

例如:>>x=-4:0.25:4; y=x;

>>[X Y]=meshgrid(x,y); %三维图形的X,Y数组

>>a=sqrt(X.^2+Y.^2)+eps; z=sin(a)./a; %加eps是防止出现0/0

>>mesh(X,Y,z) %三维网格表面,图4.17

MATLAB中的网图函数meshc、meshz、和meshgrid命令对基本的三维绘图命令增加了一些特别的处理图形的功能.meshgrid命令的作用是将给定的区域按一定的方式划分成平面网格,该平面网格可以用来绘制三维曲面.调用方法如下:

[X,Y]=meshgrid(x,y)其中x和y为给定的向量,用来定义网格划分区域,也可以定义网格划分方法,X和Y用来存储网格划分后的数据矩阵.

函数meshc与函数mesh调用方式相同,该函数在mesh函数的作用之上又增加了contour 函数的功能,即绘制相应的等高线.如:

>>[X,Y]=meshgrid([-4:0.5:4]);

>>Z=sqrt(X.^2+Y.^2); mesh(Z)

>>meshc(Z)

函数meshz与函数mesh调用方式相同,该函数在mesh函数的作用之上又增加了屏蔽作用,即增加了边界面屏蔽.

3. surf 着色函数命令

该命令的调用方法与mesh命令类似,不同的是mesh函数绘制的图形是一个网格图,而surf命令绘制得到的是着色的三维曲面.其调用格式如下:surf(X,Y,Z) 例1:>>[X,Y]=meshgrid([-4:0.5:4]);

>>Z=sqrt(X.^2+Y.^2); surf(Z)

例2:>>[X,Y ,Z]=peaks(30); surf(X,Y,Z)

这里,我们不给出上述两个例子的图形,读者可以通过在MA TLAB 命令窗口中运行上面的命令得到.

第五节 简单程序运行

在命令窗口输入程序按回车键,运行的结果在命令窗口显示,如果是图形的话,就在figure 窗口显示;

或是在File- “New ”命令下的“M-file ”选项新建一个M 文件,该命令将打开MATLAB 的M 文件编辑/调试器。打开M 文件编辑/调试器后输入程序并存储,若要运行,将程序复制到命令窗口,按回车键,运行的结果在命令窗口显示,如果是图形的话,就在figure 窗口显示。

练习:

1、 简单的运算

练习1 求 23)]47(212[÷-?+

解:用键盘在命令窗口输入以下内容 >> (12+2*(7-4))/3^2

按Enter 键,该指令就被执行;命令窗口显示所得结果 ans =

2

2 MATLAB 表达式的输入

MATLAB 中表达式的输入有两种常见的形式: (1) 表达式; (2)变量=表达式

练习2 求 23)]47(212[÷-?+ 解 输入

>> y=(12+2*(7-4))/3^2 按回车键,结果显示 y =

2

练习3:已知 )3(sin 15.2)(43f x x x x f y 求+-==

解 输入

>> x=3;y=x^3-x^(1/4)+2.15*sin(x) 按回车键,结果显示

y =

25.9873

基于Matlab的脑电波信号处理

做脑电波信号处理滴嘿嘿。。Matlab addicted Codes %FEATURE EXTRACTER function [features] = EEGfeaturetrainmod(filename,m) a = 4; b = 7; d = 12; e = 30; signals = 0; for index = 1:9; % read in the first ten EEG data because the files are numbered as ha11test01 rather than ha11test1. s = [filename '0' num2str(index) '.dat']; signal = tread_wfdb(s); if signals == 0; signals = signal; else signals = [signals signal]; end end for index = 10:1:m/2; % read in the rest of the EEG training data s = [filename num2str(index) '.dat']; signal = tread_wfdb(s); if signals == 0;

signals = signal; else signals = [signals signal]; end end %%%%% modification just for varying the training testing ratio ------ for index = 25:1:25+m/2; % read in the rest of the EEG training data s = [filename num2str(index) '.dat']; signal = tread_wfdb(s); if signals == 0; signals = signal; else signals = [signals signal]; end end %%%%%end of modification just for varying the training testing ratio----- for l = 1:m % exrating features (power of each kind of EEG wave forms) [Pxx,f]=pwelch(signals(:,l)-mean(signals(:,l)), [], [], [], 200); % relative power fdelta(l) = sum(Pxx(find(fa))); falpha(l) = sum(Pxx(find(fb))); fbeta(l) = sum(Pxx(find(fd))); fgama(l)= sum(Pxx(find(f>e))); % gama wave included for additional work

信号的频谱分析及MATLAB实现

第23卷第3期湖南理工学院学报(自然科学版)Vol.23 No.3 2010年9月 Journal of Hunan Institute of Science and Technology (Natural Sciences) Sep. 2010信号的频谱分析及MATLAB实现 张登奇, 杨慧银 (湖南理工学院信息与通信工程学院, 湖南岳阳 414006) 摘 要: DFT是在时域和频域上都已离散的傅里叶变换, 适于数值计算且有快速算法, 是利用计算机实现信号频谱分析的常用数学工具. 文章介绍了利用DFT分析信号频谱的基本流程, 重点阐述了频谱分析过程中误差形成的原因及减小分析误差的主要措施, 实例列举了MATLAB环境下频谱分析的实现程序. 通过与理论分析的对比, 解释了利用DFT分析信号频谱时存在的频谱混叠、频谱泄漏及栅栏效应, 并提出了相应的改进方法. 关键词: MA TLAB; 频谱分析; 离散傅里叶变换; 频谱混叠; 频谱泄漏; 栅栏效应 中图分类号: TN911.6 文献标识码: A 文章编号: 1672-5298(2010)03-0029-05 Analysis of Signal Spectrum and Realization Based on MATLAB ZHANG Deng-qi, YANG Hui-yin (College of Information and Communication Engineering, Hunan Institute of Science and Technology, Yueyang 414006, China) Abstract:DFT is a Fourier Transform which is discrete both in time-domain and frequency-domain, it fits numerical calculation and has fast algorithm, so it is a common mathematical tool which can realize signal spectrum analysis with computer. This paper introduces the basic process of signal spectrum analysis with DFT, emphasizes the causes of error producing in spectrum analysis process and the main ways to decrease the analysis error, and lists the programs of spectrum analysis based on MATLAB. Through the comparison with the theory analysis, the problems of spectrum aliasing, spectrum leakage and picket fence effect are explained when using DFT to analyze signal spectrum, and the corresponding solution is presented. Key words:MATLAB; spectrum analysis; DFT; spectrum aliasing; spectrum leakage; picket fence effect 引言 信号的频谱分析就是利用傅里叶分析的方法, 求出与时域描述相对应的频域描述, 从中找出信号频谱的变化规律, 以达到特征提取的目的[1]. 不同信号的傅里叶分析理论与方法, 在有关专业书中都有介绍, 但实际的待分析信号一般没有解析式, 直接利用公式进行傅里叶分析非常困难. DFT是一种时域和频域均离散化的傅里叶变换, 适合数值计算且有快速算法, 是分析信号的有力工具. 本文以连续时间信号为例, 介绍利用DFT分析信号频谱的基本流程, 重点阐述频谱分析过程中可能存在的误差, 实例列出MATLAB 环境下频谱分析的实现程序. 1 分析流程 实际信号一般没有解析表达式, 不能直接利用傅里叶分析公式计算频谱, 虽然可以采用数值积分方法进行频谱分析, 但因数据量大、速度慢而无应用价值. DFT在时域和频域均实现了离散化, 适合数值计算且有快速算法, 是利用计算机分析信号频谱的首选工具. 由于DFT要求信号时域离散且数量有限, 如果是时域连续信号则必须先进行时域采样, 即使是离散信号, 如果序列很长或采样点数太多, 计算机存储和DFT计算都很困难, 通常采用加窗方法截取部分数据进行DFT运算. 对于有限长序列, 因其频谱是连续的, DFT只能描述其有限个频点数据, 故存在所谓栅栏效应. 总之, 用DFT分析实际信号的频谱, 其结果必然是近似的. 即使是对所有离散信号进行DFT变换, 也只能用有限个频谱数据近似表示连续频 收稿日期: 2010-06-09 作者简介: 张登奇(1968? ), 男, 湖南临湘人, 硕士, 湖南理工学院信息与通信工程学院副教授. 主要研究方向: 信号与信息处理

信号处理实验一:用matlab描述基本信号

哈尔滨工程大学 实验报告 实验名称:用matlab描述基本信号 班级:电子信息工程4班 学号: 姓名: 实验时间:2016年10月10日 成绩:________________________________ 指导教师:栾晓明 实验室名称:数字信号处理实验室哈尔滨工程大学实验室与资产管理处制

实验一用matlab 描述基本信号 一、 冲激信号 1、 原理: 最简单的信号是(移位的)单位冲激信号: δ[n -n 0] = ? ??≠=00 0 1n n n n (3.1) 在MA TLAB 中产生冲激信号,必须先确定所关注信号部分的长度。如果准备用冲激信 号δ[n ]来激励因果LTI 系统,可能需要观察从n = 0到n = L -1总共L 个点。若选择L = 31,下面的MA TLAB 代码将产生一个“冲激信号”。 1. L = 31; 2. nn = 0 : (L-1); 3. imp = zeros(L, 1); 4. imp(1) = 1; 注意,根据MA TLAB 编址约定,n =0标号必须对应imp(1)。 例:产生移位冲激信号程序(函数文件) function [x,n] = impseq(n0,n1,n2) % 产生 x(n) = delta(n-n0); n1 <=n0 <= n2 % ---------------------------------------------- % [x,n] = impseq(n0,n1,n2) % if ((n0 < n1) | (n0 > n2) | (n1 > n2)) error('参数必须满足 n1 <= n0 <= n2') end n = [n1:n2]; %x = [zeros(1,(n0-n1)), 1, zeros(1,(n2-n0))]; x = [(n-n0) == 0]; 以上函数文件可以产生指定区间内的冲激移位脉冲。 例1—1:调用这个函数文件生成并绘制: x(n) = 2δ[n+2]-δ[n -4] -5≤ n ≤ 5 程序 % x(n) = 2*delta(n+2) - delta(n-4), -5<=n<=5 n = [-5:5]; x = 2*impseq(-2,-5,5)-impseq(4,-5,5); stem(n,x); title('例 2.1a 的序列图') ylabel('x(n)'); axis([-5,5,-2,3]);text(5.5,-2,'n')

matlab频谱分析

设计出一套完整的系统,对信号进行频谱分析和滤波处理; 1.产生一个连续信号,包含低频,中频,高频分量,对其进行采样,进行频谱分析,分别设计三种高通,低通,带通滤波器对信号进行滤波处理,观察滤波后信号的频谱。 2.采集一段含有噪音的语音信号(可以录制含有噪音的信号,或者录制语音后再加进噪音信号),对其进行采样和频谱分析,根据分析结果设计出一合适的滤波器滤除噪音信号。 %写上标题 %设计低通滤波器: [N,Wc]=buttord() %估算得到Butterworth低通滤波器的最小阶数N和3dB截止频率Wc [a,b]=butter(N,Wc); %设计Butterworth低通滤波器 [h,f]=freqz(); %求数字低通滤波器的频率响应 figure(2); % 打开窗口2 subplot(221); %图形显示分割窗口 plot(f,abs(h)); %绘制Butterworth低通滤波器的幅频响应图 title(巴氏低通滤波器''); grid; %绘制带网格的图像 sf=filter(a,b,s); %叠加函数S经过低通滤波器以后的新函数 subplot(222); plot(t,sf); %绘制叠加函数S经过低通滤波器以后的时域图形 xlabel('时间(seconds)'); ylabel('时间按幅度'); SF=fft(sf,256); %对叠加函数S经过低通滤波器以后的新函数进行256点的基—2快速傅立叶变换 w= %新信号角频率 subplot(223); plot()); %绘制叠加函数S经过低通滤波器以后的频谱图 title('低通滤波后的频谱图'); %设计高通滤波器 [N,Wc]=buttord() %估算得到Butterworth高通滤波器的最小阶数N和3dB截止频率Wc [a,b]=butter(N,Wc,'high'); %设计Butterworth高通滤波器 [h,f]=freqz(); %求数字高通滤波器的频率响应 figure(3); subplot(221); plot()); %绘制Butterworth高通滤波器的幅频响应图 title('巴氏高通滤波器'); grid; %绘制带网格的图像 sf=filter(); %叠加函数S经过高通滤波器以后的新函数 subplot(222); plot(t,sf); ;%绘制叠加函数S经过高通滤波器以后的时域图形 xlabel('Time(seconds)'); ylabel('Time waveform'); w; %新信号角频率 subplot(223);

基于MATLAB的语音信号处理系统设计(程序+仿真图)--毕业设计

语音信号处理系统设计 摘要:语音信号处理是研究用数字信号处理技术对语音信号进行处理的一门学科。语音信号处理的目的是得到某些参数以便高效传输或存储,或者是用于某种应用,如人工合成出语音、辨识出讲话者、识别出讲话内容、进行语音增强等。本文简要介绍了语音信号采集与分析以及语音信号的特征、采集与分析方法,并在采集语音信号后,在MATLAB 软件平台上进行频谱分析,并对所采集的语音信号加入干扰噪声,对加入噪声的信号进行频谱分析,设计合适的滤波器滤除噪声,恢复原信号。利用MATLAB来读入(采集)语音信号,将它赋值给某一向量,再将该向量看作一个普通的信号,对其进行FFT变换实现频谱分析,再依据实际情况对它进行滤波,然后我们还可以通过sound命令来对语音信号进行回放,以便在听觉上来感受声音的变化。 关键词:Matlab,语音信号,傅里叶变换,滤波器 1课程设计的目的和意义 本设计课题主要研究语音信号初步分析的软件实现方法、滤波器的设计及应用。通过完成本课题的设计,拟主要达到以下几个目的: 1.1.了解Matlab软件的特点和使用方法。 1.2.掌握利用Matlab分析信号和系统的时域、频域特性的方法; 1.3.掌握数字滤波器的设计方法及应用。 1.4.了解语音信号的特性及分析方法。 1.5.通过本课题的设计,培养学生运用所学知识分析和解决实际问题的能力。 2 设计任务及技术指标 设计一个简单的语音信号分析系统,实现对语音信号时域波形显示、进行频谱分析,

利用滤波器滤除噪声、对语音信号的参数进行提取分析等功能。采用Matlab设计语言信号分析相关程序,并且利用GUI设计图形用户界面。具体任务是: 2.1.采集语音信号。 2.2.对原始语音信号加入干扰噪声,对原始语音信号及带噪语音信号进行时频域分析。 2.3.针对语音信号频谱及噪声频率,设计合适的数字滤波器滤除噪声。 2.4.对噪声滤除前后的语音进行时频域分析。 2.5.对语音信号进行重采样,回放并与原始信号进行比较。 2.6.对语音信号部分时域参数进行提取。 2.7.设计图形用户界面(包含以上功能)。 3 设计方案论证 3.1语音信号的采集 使用电脑的声卡设备采集一段语音信号,并将其保存在电脑中。 3.2语音信号的处理 语音信号的处理主要包括信号的提取播放、信号的重采样、信号加入噪声、信号的傅里叶变换和滤波等,以及GUI图形用户界面设计。 Ⅰ.语音信号的时域分析 语音信号是一种非平稳的时变信号,它携带着各种信息。在语音编码、语音合成、语音识别和语音增强等语音处理中无一例外需要提取语音中包含的各种信息。语音信号分析的目的就在与方便有效的提取并表示语音信号所携带的信息。语音信号分析可以分为时域和变换域等处理方法,其中时域分析是最简单的方法。 Ⅱ.语音信号的频域分析 信号的傅立叶表示在信号的分析与处理中起着重要的作用。因为对于线性系统来说,可以很方便地确定其对正弦或复指数和的响应,所以傅立叶分析方法能完善地解决许多信号分析和处理问题。另外,傅立叶表示使信号的某些特性变得更明显,因此,它能更

基于Matlab的语音信号处理与分析

系(院)物理与电子工程学院专业电子信息工程题目语音信号的处理与分析 学生姓名 指导教师 班级 学号 完成日期:2013 年5 月 目录 1 绪论 (3) 1.1课题背景及意义 (3) 1.2国内外研究现状 (3) 1.3本课题的研究内容和方法 (4) 1.3.1 研究内容 (4) 1.3.2 开发环境 (4) 2 语音信号处理的总体方案 (4) 2.1 系统基本概述 (4) 2.2 系统基本要求与目的 (4) 2.3 系统框架及实现 (5) 2.3.1 语音信号的采样 (5) 2.3.2 语音信号的频谱分析 (5) 2.3.3 音乐信号的抽取 (5) 2.3.4 音乐信号的AM调制 (5) 2.3.5 AM调制音乐信号的同步解调 (5) 2.4系统设计流程图 (6) 3 语音信号处理基本知识 (6) 3.1语音的录入与打开 (6)

3.2采样位数和采样频率 (6) 3.3时域信号的FFT分析 (7) 3.4切比雪夫滤波器 (7) 3.5数字滤波器设计原理 (8) 4 语音信号实例处理设计 (8) 4.1语音信号的采集 (8) 4.3.1高频调制与低频调制 (10) 4.3.2切比雪夫滤波 (11) 4.3.3 FIR滤波 (11) 5 总结 (12) 参考文献 (13) 语音信号的处理与分析 【摘要】语音信号处理是研究用数字信号处理技术和语音学知识对语音信号进行处理的新兴的学科,是目前发展最为迅速的信息科学研究领域的核心技术之一。通过语音传递信息是人类最重要、最有效、最常用和最方便的交换信息形式。 Matlab语言是一种数据分析和处理功能十分强大的计算机应用软件,它可以将声音文件变换为离散的数据文件,然后利用其强大的矩阵运算能力处理数据,如数字滤波、傅里叶变换、时域和频域分析、声音回放以及各种图的呈现等,它的信号处理与分析工具箱为语音信号分析提供了十分丰富的功能函数,利用这些功能函数可以快捷而又方便地完成语音信号的处理和分析以及信号的可视化,使人机交互更加便捷。信号处理是Matlab重要应用的领域之一。 本设计针对现在大部分语音处理软件内容繁多、操作不便等问题,采用MATLAB7.0综合运用GUI界面设计、各种函数调用等来实现语音信号的变频、变幅、傅里叶变换及滤波,程序界面简练,操作简便,具有一定的实际应用意义。 最后,本文对语音信号处理的进一步发展方向提出了自己的看法。 【关键词】Matlab 语音信号傅里叶变换低通滤波器

语音信号处理matlab实现

短时能量分析matlab源程序: x=wavread('4.wav'); %计算N=50,帧移=50时的语音能量 s=fra(50,50,x);%对输入的语音信号进行分帧,其中帧长50,帧移50 s2=s.^2;%一帧内各种点的能量 energy=sum(s2,2);%求一帧能量 subplot(2,2,1); plot(energy) xlabel('帧数'); ylabel('短时能量E'); legend('N=50'); axis([0,500,0,30]) %计算N=100,帧移=100时的语音能量 s=fra(100,100,x); s2=s.^2; energy=sum(s2,2); subplot(2,2,2); plot(energy) xlabel('帧数'); ylabel('短时能量E'); legend('N=100'); axis([0,300,0,30]) %计算N=400,帧移=400时的语音能量 s=fra(400,400,x); s2=s.^2; energy=sum(s2,2); subplot(2,2,3); plot(energy) xlabel('帧数'); ylabel('短时能量E'); legend('N=400'); axis([0,60,0,100]) %计算N=800,帧移=800时的语音能量 s=fra(800,800,x); s2=s.^2; energy=sum(s2,2); subplot(2,2,4); plot(energy) xlabel('帧数'); ylabel('短时能量E'); legend('N=800'); axis([0,30,0,200]) 分帧子函数: function f=fra(len,inc,x) %对读入语音分帧,len为帧长,inc为帧重叠样点数,x为输入语音数据 fh=fix(((size(x,1)-len)/inc)+1);%计算帧数 f=zeros(fh,len);%设一个零矩阵,行为帧数,列为帧长 i=1;n=1; while i<=fh %帧间循环 j=1; while j<=len %帧内循环 f(i,j)=x(n); j=j+1;n=n+1; end n=n-len+inc;%下一帧开始位置 i=i+1; end

基于MATLAB的语音信号采集与处理

工程设计论文 题目:基于MATLAB的语音信号采集与处理 姓名: 班级: 学号: 指导老师:

一.选题背景 1、实践意义: 语音信号是一种非平稳的时变信号,它携带着各种信息。在语音编码、语音合成、语音识别和语音增强等语音处理中无一例外需要提取语音中包含的各种信息。语音信号分析的目的就在于方便有效地提取并表示语音信号所携带的信息。所以理解并掌握语音信号的时域和频域特性是非常重要的。 通过语音相互传递信息是人类最重要的基本功能之一.语言是人类特有的功能.声音是人类常用工具,是相互传递信息的最重要的手段.虽然,人可以通过多种手段获得外界信息,但最重要,最精细的信息源只有语言,图像和文字三种.与用声音传递信息相比,显然用视觉和文字相互传递信息,其效果要差得多.这是因为语音中除包含实际发音容的话言信息外,还包括发音者是谁及喜怒哀乐等各种信息.所以,语音是人类最重要,最有效,最常用和最方便的交换信息的形式.另一方面,语言和语音与人的智力活动密切相关,与文化和社会的进步紧密相连,它具有最大的信息容量和最高的智能水平。 语音信号处理是研究用数字信号处理技术对语音信号进行处理的一门学科,处理的目的是用于得到某些参数以便高效传输或存储;或者是用于某种应用,如人工合成出语音,辨识出讲话者,识别出讲话容,进行语音增强等. 语音信号处理是一门新兴的学科,同时又是综合性的多学科领域,

是一门涉及面很广的交叉学科.虽然从事达一领域研究的人员主要来自信息处理及计算机等学科.但是它与语音学,语言学,声学,认知科学,生理学,心理学及数理统计等许多学科也有非常密切的联系. 语音信号处理是许多信息领域应用的核心技术之一,是目前发展最为迅速的信息科学研究领域中的一个.语音处理是目前极为活跃和热门的研究领域,其研究涉及一系列前沿科研课题,巳处于迅速发展之中;其研究成果具有重要的学术及应用价值. 数字信号处理是利用计算机或专用处理设备,以数值计算的方法对信号进行采集、抽样、变换、综合、估值与识别等加工处理,借以达到提取信息和便于应用的目的。它在语音、雷达、图像、系统控制、通信、航空航天、生物医学等众多领域都获得了极其广泛的应用。具有灵活、精确、抗干扰强、度快等优点。 数字滤波器, 是数字信号处理中及其重要的一部分。随着信息时代和数字技术的发展,受到人们越来越多的重视。数字滤波器可以通过数值运算实现滤波,所以数字滤波器处理精度高、稳定、体积小、重量轻、灵活不存在阻抗匹配问题,可以实现模拟滤波器无法实现的特殊功能。数字滤波器种类很多,根据其实现的网络结构或者其冲激响应函数的时域特性,可分为两种,即有限冲激响应( FIR,Finite Impulse Response)滤波器和无限冲激响应( IIR,Infinite Impulse Response)滤波器。 FIR滤波器结构上主要是非递归结构,没有输出到输入的反馈,系统函数H (z)在处收敛,极点全部在z = 0处(因果系统),因而只能

matlab信号处理学习总结

常用函数 1 图形化信号处理工具,fdatool(滤波器设计),fvtool(图形化滤波器参数查看)sptool (信号处理),fvtool(b,a),wintool窗函数设计.或者使用工具箱 filter design设计。当使用离散的福利叶变换方法分析频域中的信号时,傅里叶变换时可能引起漏谱,因此 需要采用平滑窗, 2数字滤波器和采样频率的关系。 如果一个数字滤波器的采样率为 FS,那么这个滤波器的分析带宽为Fs/2。也就是说这 个滤波器只可以分析[0,Fs/2]的信号.举个例字: 有两个信号,S1频率为20KHz,S2频率为40KHz,要通过数字方法滤除S2。 你的滤波器的采样率至少要为Fs=80HKz,否则就分析不到 S2了,更不可能将它滤掉 了!(当然根据采样定理,你的采样率 F0也必须大于80HK,,Fs和 F0之间没关系不大,可以任取,只要满足上述关系就行。) 3 两组数据的相关性分析 r=corrcoef(x,y) 4 expm 求矩阵的整体的 exp 4 离散快速傅里叶 fft信号处理中,傅里叶变换的典型用途是将信号分解成幅值分量和频率分量)。Ft为连续傅里叶变换。反傅里叶 ifft 5 ztrans(),Z变换是把离散的数字信号从时域转为频率 6 laplace()拉普拉斯变换是把连续的的信号从时域转为频域 7 sound(x)会在音响里产生 x所对应的声音 8 norm求范数,det行列式,rank求秩 9 模拟频率,数字频率,模拟角频率关系 模拟频率f:每秒经历多少个周期,单位Hz,即1/s; 模拟角频率Ω是指每秒经历多少弧度,单位rad/s; 数字频率w:每个采样点间隔之间的弧度,单位rad。 Ω=2pi*f; w = Ω*T 10 RMS求法 Rms = sqrt(sum(P.^2))或者norm(x)/sqrt(length(x) var方差的开方是std标准差,RMS应该是norm(x)/sqrt(length(x))吧. 求矩阵的RMS:std(A(:)) 11 ftshift 作用:将零频点移到频谱的中间 12 filtfilt零相位滤波, 采用两次滤波消除系统的非线性相位, y = filtfilt(b,a,x);注意x的长度必须是滤波器阶数的3倍以上,滤波器的 阶数由max(length(b)-1,length(a)-1)确定。 13 [h,t]=impz(b,a,n,fs),计算滤波器的冲激响应 h为n点冲击响应向量 [h,x]=freqz(b,a,n,fs)计算频响,有fs时,x为频率f,无fs,x为w角频率, 常用于查看滤波器的频率特性 14 zplane(z,p) 画图零极点分布图 15 beta=unwarp(alpha) 相位会在穿越+-180发生回绕,可将回绕的 16 stepz 求数字滤波器的阶跃响应 [h,t] = stepz(b,a,n,fs) fvtool(b1,a1,b2,a2,...bn,an) fvtool(Hd1,Hd2,...) h = fvtool(...) 15 IIR数字滤波器设计方法 1 先根据已知带同参数求出最佳滤波器阶数和截止频率 [n,Wn] = buttord(Wp,Ws,Rp,Rs);

数字信号处理MATLAB中FFT实现

MATLAB中FFT的使用方法 说明:以下资源来源于《数字信号处理的MATLAB实现》万永革主编 一.调用方法 X=FFT(x); X=FFT(x,N); x=IFFT(X); x=IFFT(X,N) 用MATLAB进行谱分析时注意: (1)函数FFT返回值的数据结构具有对称性。 例: N=8; n=0:N-1; xn=[43267890]; Xk=fft(xn) → Xk= 39.0000-10.7782+6.2929i0-5.0000i 4.7782-7.7071i 5.0000 4.7782+7.7071i0+5.0000i-10.7782-6.2929i Xk与xn的维数相同,共有8个元素。Xk的第一个数对应于直流分量,即频率值为0。 (2)做FFT分析时,幅值大小与FFT选择的点数有关,但不影响分析结果。在IFFT时已经做了处理。要得到真实的振幅值的大小,只要将得到的变换后结果乘以2除以N即可。 二.FFT应用举例 例1:x=0.5*sin(2*pi*15*t)+2*sin(2*pi*40*t)。采样频率fs=100Hz,分别绘制N=128、1024点幅频图。

clf; fs=100;N=128;%采样频率和数据点数 n=0:N-1;t=n/fs;%时间序列 x=0.5*sin(2*pi*15*t)+2*sin(2*pi*40*t);%信号 y=fft(x,N);%对信号进行快速Fourier变换 mag=abs(y);%求得Fourier变换后的振幅 f=n*fs/N;%频率序列 subplot(2,2,1),plot(f,mag);%绘出随频率变化的振幅 xlabel('频率/Hz'); ylabel('振幅');title('N=128');grid on; subplot(2,2,2),plot(f(1:N/2),mag(1:N/2));%绘出Nyquist频率之前随频率变化的振幅xlabel('频率/Hz'); ylabel('振幅');title('N=128');grid on; %对信号采样数据为1024点的处理 fs=100;N=1024;n=0:N-1;t=n/fs; x=0.5*sin(2*pi*15*t)+2*sin(2*pi*40*t);%信号 y=fft(x,N);%对信号进行快速Fourier变换 mag=abs(y);%求取Fourier变换的振幅 f=n*fs/N; subplot(2,2,3),plot(f,mag);%绘出随频率变化的振幅 xlabel('频率/Hz'); ylabel('振幅');title('N=1024');grid on; subplot(2,2,4) plot(f(1:N/2),mag(1:N/2));%绘出Nyquist频率之前随频率变化的振幅 xlabel('频率/Hz'); ylabel('振幅');title('N=1024');grid on; 运行结果:

实验一 基于Matlab的数字信号处理基本

实验一 基于Matlab 的数字信号处理基本操作 一、 实验目的:学会运用MA TLAB 表示的常用离散时间信号;学会运用MA TLAB 实现离 散时间信号的基本运算。 二、 实验仪器:电脑一台,MATLAB6.5或更高级版本软件一套。 三、 实验内容: (一) 离散时间信号在MATLAB 中的表示 离散时间信号是指在离散时刻才有定义的信号,简称离散信号,或者序列。离散序列通常用)(n x 来表示,自变量必须是整数。 离散时间信号的波形绘制在MATLAB 中一般用stem 函数。stem 函数的基本用法和plot 函数一样,它绘制的波形图的每个样本点上有一个小圆圈,默认是空心的。如果要实心,需使用参数“fill ”、“filled ”,或者参数“.”。由于MATLAB 中矩阵元素的个数有限,所以MA TLAB 只能表示一定时间范围内有限长度的序列;而对于无限序列,也只能在一定时间范围内表示出来。类似于连续时间信号,离散时间信号也有一些典型的离散时间信号。 1. 单位取样序列 单位取样序列)(n δ,也称为单位冲激序列,定义为 ) 0() 0(0 1)(≠=?? ?=n n n δ 要注意,单位冲激序列不是单位冲激函数的简单离散抽样,它在n =0处是取确定的值1。在MATLAB 中,冲激序列可以通过编写以下的impDT .m 文件来实现,即 function y=impDT(n) y=(n==0); %当参数为0时冲激为1,否则为0 调用该函数时n 必须为整数或整数向量。 【实例1-1】 利用MATLAB 的impDT 函数绘出单位冲激序列的波形图。 解:MATLAB 源程序为 >>n=-3:3; >>x=impDT(n); >>stem(n,x,'fill'),xlabel('n'),grid on >>title('单位冲激序列') >>axis([-3 3 -0.1 1.1]) 程序运行结果如图1-1所示。 图1-1 单位冲激序列

基于matlab的信号分析与处理

基于m a t l a b的信号分 析与处理 IMB standardization office【IMB 5AB- IMBK 08- IMB 2C】

山东建筑大学 课程设计说明书题目:基于MATLAB的信号分析与处理课程:数字信号处理课程设计 院(部):信息与电气工程学院 专业:通信工程 班级:通信111班 学生姓名: 学号: 指导教师: 完成日期: 2014年1月

目录4

摘要 这次是基于MATLAB的信号分析与处理。所谓数字滤波器,就是输入、输出都是数字信号的,通过数值计算处理改变输入信号所含频率成分的相对比例,或者滤除某些频率成分的数字器件或程序。常用的经典滤波器有低通、高通、带通、带阻。 首先产生一个连续信号,包含低频、中频、高频分量;对其进行采样,得到数字信号;对数字信号进行FFT频谱分析,绘制其频谱图;根据信号频谱分析的结果,分别设计高通、低通、带通滤波器,绘制滤波器的幅频及相频特性;用所设计的滤波器对信号滤波,并绘制出滤波后的频谱图。 关键词:MATLAB; FFT;滤波器;信号产生;频谱分析

1设计目的和要求 产生一个连续信号,包含低频,中频,高频分量,对其进行采样,进行频谱分析,分别设计三种高通,低通,带通滤波器对信号进行滤波处理,观察滤波后信号的频谱。 2设计原理 信号的采样要符合奈奎斯特采样定律,一般为被采信号最高频率的2倍,只有这样,才能保证频域不混叠,也就是采样出来数字信号中包含了被采信号的所有信息,而且没有引入干扰。这就是信号的时域采样。 频谱分析是指对信号进行频域谱的分析,观察其频域的各个分量的功率大小,其理论基础是傅立叶变换,现在一般采用数字的方法,也就是将时域信号数字化后做FFT,可以得到频域的波形。 数字滤波器是一种用来过滤时间离散信号的数字系统,通过对抽样数据进行数学处理来达到频域滤波的目的。可以设计系统的频率响应,让它满足一定的要求,从而对通过该系统的信号的某些特定的频率成分进行过滤,这就是滤波器的基本原理。 IIR滤波器的设计原理: IIR数字滤波器的设计一般是利用目前已经很成熟的模拟滤波器的设计方法来进行设计,通常采用模拟滤波器原型有butterworth函数、chebyshev函数、bessel函数、椭圆滤波器函数等。 IIR数字滤波器的设计步骤: (1)按照一定规则把给定的滤波器技术指标转换为模拟低通滤波器的技术指标; (2)根据模拟滤波器技术指标设计为响应的模拟低通滤波器; (3)很据脉冲响应不变法和双线性不变法把模拟滤波器转换为数字滤波器; (4)如果要设计的滤波器是高通、带通或带阻滤波器,则首先把它们的技术指标转化为模拟低通滤波器的技术指标,设计为数字低通滤波器,最后通过频率转换的方法来得到所要的滤波器。 本课程设计设计思想:首先利用MATLAB分别产生低频、中频、高频信号,然后进行叠加得到连续时间信号;对所产生的连续时间信号进行采样,得到数字信号;对信

利用MATLAB实现信号的AM调制与解调

郑州轻工业学院 课程设计任务书 题目利用MATLAB实现信号的AM调制与解调专业、班级电子信息工程级班学号姓名 主要内容、基本要求、主要参考资料等: 主要内容: 利用MATLAB对信号 () () ?? ? ? ?≤ = 其他 ,0 t , 100 2t t Sa t m 进行AM调制,载波信号 频率为1000Hz,调制深度为0.5。t0=0.2;首先在MATLAB中显示调制信号的波形和频谱,已调信号的波形和频谱,比较信号调制前后的变化。然后对已调信号解调,并比较解调后的信号与原信号的区别。 基本要求: 1、掌握利用MATLAB实现信号AM调制与解调的方法。 2、学习MATLAB中信号表示的基本方法及绘图函数的调用,实现对常用连续时间信号的可视化表示。 3、加深理解调制信号的变化;验证信号调制的基本概念、基本理论,掌握信号与系统的分析方法。 主要参考资料: 1、王秉钧等. 通信原理[M].北京:清华大学出版社,2006.11 2、陈怀琛.数字信号处理教程----MATLAB释义与实现[M].北京:电子工业出版社,2004. 完成期限:2014.6.9—2014.6.13 指导教师签名: 课程负责人签名: 2014年6月5日

目录 摘要 (1) 1.matlab简介 (2) 1.1matlab基本功能 (2) 1.2matlab应用 (2) 2.系统总体设计方案 (4) 2.1调制信号 (4) 2.1.1 matlab实现调制信号的波形 (4) 2.1.2 matlab实现调制信号的频谱 (4) 2.1.3 matlab实现载波的仿真 (5) 2.2信号的幅度调制 (6) 2.2.1信号的调制 (6) 2.2.2幅度调制原理 (6) 2.2.3 matlab实现双边带幅度调制 (8) 2.2.4 matlab实现已调信号的频谱图 (8) 2.2.5 幅度调制前后的比较 (9) 2.3已调信号的解调 (9) 2.3.1 AM信号的解调原理及方式 (9) 2.3.2 matlab实现已调信号的解调 (11) 2.3.3信号解调前后的比较 (12) 结论与展望 (13) 参考文献 (14) 附录 (15)

信号分析与处理MATLAB仿真程序

一正弦信号 w=pi/6; ns1=0;nf1=48; n1=[ns1:nf1]; x1=sin(w*n1); subplot(1,1,1); stem(n1,x1); axis([0,50,-1.2,1.2]); xlabel('n');ylabel('x');title('正弦信号'); grid on; 二周期信号 x=[1 1 0 -1 -1 1 0 0]; xn1=x'*ones(1,8); xn1=xn1(:); xn1=xn1'; n1=0:length(xn1)-1; subplot(1,1,1); stem(n1,xn1); axis([0,42,-1.5,1.5]); xlabel('n');ylabel('xn');title('周期信号'); grid on; 三高斯随机信号 n1=30; xn1=randn(1,n1); subplot(1,1,1); stem(xn1); axis([0,32,-4,4]); xlabel('n');ylabel('xn');title('高斯随机信号'); grid on; 四正选信号求特征值: >> clear w=pi/6; ns1=0;nf1=48; >> n1=[ns1:nf1]; >> xn1=sin(w*n1); >> x=mean(xn1); >> y=var(xn1); >> x x = -1.0931e-017 >> y y = 0.5000 五周期信号特征值计算: >> clear >> x=[1 1 0 -1 -1 1 0 0]; xn1=x'*ones(1,8);

xn1=xn1(:); xn1=xn1'; n1=0:length(xn1)-1; >> u=mean(xn1); >> v=var(xn1); >> u u = 0.1250 >> v v = 0.6190 六高斯随机信号特征值计算: >> clear >> n1=30; xn1=randn(1,n1); >> m=mean(xn1); >> v=var(xn1); >> m m = -0.1349 >> v v = 1.3187 七信号运算 w=pi/6; ns1=0;nf1=48;n1=[ns1:nf1]; xn1=sin(w*n1); x=[1 1 0 -1 -1 1 0 0]; xn2=x'*ones(1,8); xn2=xn2(:); xn2=xn2'; ns2=0;nf2=length(xn2)-1;n2=0:nf2;ny=0:max(nf1,nf2); y1=zeros(1,length(ny));y2=y1; y1(find(ny<=nf1))=xn1;y2(find(ny<=nf2))=xn2; ya=y1+y2;ys=y1-y2; subplot(3,2,1);stem(n1,xn1); xlabel('n');ylabel('xn');title('正弦信号');grid on; subplot(3,2,2);stem(ny,y1); xlabel('n');ylabel('xn');title('修正后的正弦信号');grid on; subplot(3,2,3);stem(n2,xn2); xlabel('n');ylabel('xn');title('周期信号');grid on; subplot(3,2,4);stem(ny,y2); xlabel('n');ylabel('xn');title('修正后的周期信号');grid on;

基于matlab的信号分析与处理

山东建筑大学 课程设计说明书题目:基于MATLAB的信号分析与处理课程:数字信号处理课程设计 院(部):信息与电气工程学院 专业:通信工程 班级:通信111班 学生姓名: 学号: 指导教师: 完成日期:2014年1月

目录 摘要 (Ⅰ) 1 设计目的和要求 (1) 2 设计原理 (2) 3 设计内容 (3) 3.1 程序源代码 (4) 3.2 调试分析与过程描述 (7) 3.3 结果分析 (12) 总结 (13) 致谢 (14) 参考文献 (15)

摘要 这次是基于MATLAB的信号分析与处理。所谓数字滤波器,就是输入、输出都是数字信号的,通过数值计算处理改变输入信号所含频率成分的相对比例,或者滤除某些频率成分的数字器件或程序。常用的经典滤波器有低通、高通、带通、带阻。 首先产生一个连续信号,包含低频、中频、高频分量;对其进行采样,得到数字信号;对数字信号进行FFT频谱分析,绘制其频谱图;根据信号频谱分析的结果,分别设计高通、低通、带通滤波器,绘制滤波器的幅频及相频特性;用所设计的滤波器对信号滤波,并绘制出滤波后的频谱图。 关键词:MATLAB; FFT;滤波器;信号产生;频谱分析

1设计目的和要求 产生一个连续信号,包含低频,中频,高频分量,对其进行采样,进行频谱分析,分别设计三种高通,低通,带通滤波器对信号进行滤波处理,观察滤波后信号的频谱。 2设计原理 信号的采样要符合奈奎斯特采样定律,一般为被采信号最高频率的2倍,只有这样,才能保证频域不混叠,也就是采样出来数字信号中包含了被采信号的所有信息,而且没有引入干扰。这就是信号的时域采样。 频谱分析是指对信号进行频域谱的分析,观察其频域的各个分量的功率大小,其理论基础是傅立叶变换,现在一般采用数字的方法,也就是将时域信号数字化后做FFT,可以得到频域的波形。 数字滤波器是一种用来过滤时间离散信号的数字系统,通过对抽样数据进行数学处理来达到频域滤波的目的。可以设计系统的频率响应,让它满足一定的要求,从而对通过该系统的信号的某些特定的频率成分进行过滤,这就是滤波器的基本原理。 IIR滤波器的设计原理: IIR数字滤波器的设计一般是利用目前已经很成熟的模拟滤波器的设计方法来进行设计,通常采用模拟滤波器原型有butterworth函数、chebyshev函数、bessel函数、椭圆滤波器函数等。 IIR数字滤波器的设计步骤: (1)按照一定规则把给定的滤波器技术指标转换为模拟低通滤波器的技术指标; (2)根据模拟滤波器技术指标设计为响应的模拟低通滤波器; (3)很据脉冲响应不变法和双线性不变法把模拟滤波器转换为数字滤波器; (4)如果要设计的滤波器是高通、带通或带阻滤波器,则首先把它们的技术指标转化为模拟低通滤波器的技术指标,设计为数字低通滤波器,最后通过频率转换的方法来得到所要的滤波器。 本课程设计设计思想:首先利用MATLAB分别产生低频、中频、高频信号,然后进行叠加得到连续时间信号;对所产生的连续时间信号进行采样,得到数字信号;对信号进行FFT频谱分析,绘制其频谱图;根据信号频谱分析的结果,分别设计高通,低通,带通滤波器,得到滤波器的幅频及相频特性。

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