《MATLAB的基础知识及应用.doc》由会员分享,可在线阅读,更多相关《MATLAB的基础知识及应用.doc(24页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、MATLAB学年论文论文题目:MATLAB的基础知识及应用学 院:电子工程学院年 级:2008级专 业:电子信息科学与技术姓 名:孟静宇学 号:指导教师:王晓飞 2011年 6月 23 日摘要MATLAB有操作简便、易学习、应用广泛等优点。熟知MATLAB基础知识,合理运用MATLAB软件,会使学习广频通信技术、语音端点检测、形态学图像处理以及信号与系统等学科更为简单快捷。论文通过MATLAB在广频通信技术、语音端点检测、形态学图像处理以及信号与系统的应用实例,探讨了MATLAB在广频通信技术、语音端点检测、形态学图像处理以及信号与系统的应用方法。关键词:MATLAB , 广频通信技术 , 语
2、音端点检测 , 形态学图像处理 , 信号与系统 , 应用 。AbstractMATLAB to operate, easy to learn is widely used, etc. Familiar with basic knowledge, a reasonable use of MATLAB software MATLAB, will make learning wide frequency communications technology, speech endpoint detection, morphological image processing and signal and
3、 system, and other disciplines more simple and quick. Paper, by MATLAB in wide frequency communications technology, speech endpoint detection, morphological image processing and signal and system examples of application, discusses the MATLAB in wide frequency communications technology, speech endpoi
4、nt detection, morphological image processing and signal and system application method.Keywords: MATLAB, wide frequency communications technology, speech endpoint detection, morphological image processing, signal and system, the application.目录摘要IAbstractI第一章 MATLAB的发展概况和基础知识11.1MATLAB的发展概况11.2 matlab
5、基础知识1第二章 MATLAB的应用52.1 Matlab基本实验52.2 MATLAB在扩频通信技术的应用情况92.3 MATLAB在语音端点检测的应用112.4MATLAB在形态学图像处理的应用112.4.1Matlab图像处理工具箱中形态学图像处理函数112.4.2形态学图像处理实现122.5 MATLAB在信号与系统中的应用132.5.1用MATLAB绘制信号的波形132.5.2利用MATLAB解微分方程142.5.3根据传递函数求解16结束语20参考文献21第一章 MATLAB的发展概况和基础知识1.1MATLAB的发展概况MATLAB名字由MATrix和 LABoratory 两词
6、的前三个字母组合而成。20世纪七十年代,时任美国新墨西哥大学计算机科学系主任的Cleve Moler教授出于减轻学生编程负担的动机,为学生设计了一组调用LINPACK和EISPACK库程序的“通俗易用”的接口,此即用FORTRAN编写的萌芽状态的MATLAB。经几年的校际流传,在Little的推动下,由Little、Moler、Steve Bangert合作,于1984年成立了MathWorks公司,并把MATLAB正式推向市场。从这时起,MATLAB的内核采用C语言编写,而且除原有的数值计算能力外,还新增了数据视图功能。MATLAB在问世仅短短几年,就以其良好的开放性和运行的可靠性而被用户广
7、泛接受。在20世纪九十年代的时候,MATLAB已经成为国际控制界公认的标准计算软件。在许多国际一流学术刊物上,(尤其是信息科学刊物),都可以看到MATLAB的应用。1.2 matlab基础知识clear 移除工作空间里的数据项,释放内存isvarname 检查输入的字符串是否为有效地变量名genvarname 采用字符串构建有效的变量名ans 当没有指定输入变量名时,临时存储最近的答案namelengthmax 返回最大的标识符长度global a 声明全局变量apersistent a 声明永久变量aeps 浮点数相对精度(matlab计算时的容许误差)intmax 本计算机能表示的最大整数
8、intmin 本计算机能表示的最小整数realmax 本计算机能表示的最大浮点数realmax 本计算机能表示的最小浮点数pi 圆周率 3.i,j 虚数单位inf 无穷大NaA 非数,无效数值computer 计算机类(比如当返回字符串PCWIN时,操作系统为Microsoft Windows)version matlab版本字符串iskeyword 查看matlab所有的关键字 关系运算用于比较两个同维数组伙食同维向量的对应元素,结果为一个同维的逻辑数组。如果运算对象一个为标量,另一个为数组或是向量,那么先进行标量扩展,然后再比较。 matlab提供了两种类型的逻辑运算:一般逻辑运算和捷径运
9、算。捷径运算符只能对标量值执行逻辑与(&)和逻辑或(|)运算(捷径运算首先判断第一个运算对象,如果可以知道结果,直接返回,而不是继续判断第二个运算对象。如x=b&(a/b10),如果b为0。捷径运算符就不会计算(a/b10)的值了,也就避免了被0除的错误)。位运算:bitand 位与 bitor 位或 bitcmp 位比较,反码 bitxor 位异或bitget 返回指定位的数值,值为0或1,double型bitset 设定指定位的值为0或1。返回运算结果bitshift 移位运算,返回运算结果swapbytes 翻转字节的位顺序,返回运算结果特殊的运算符: 生成向量和矩阵() 在算术运算中优
10、先计算;封装函数参数;封装向量或是矩阵的下标 给单元数组赋值,或是创建一个空单元数组 在矩阵或向量之后表示复共轭转置;两个 之间的字符为字符串. 域访问 续行符; 在括号内结束行;禁止表达式显示结果;隔开声明:创建矢量、数组下标;循环迭代% 注释;格式转换定义符中的初始化字符 函数句柄,类似于c语言中的取址运算符 matlab中提供了一种非常重要的特殊表达式:字符串计算表达式。字符串计算有两个函数:eval和feval。前者计算包含表达式的字符串,调用方式是eval(expression);后者以字符串或函数句柄为函数名进行计算,调用方式是y1,y2=feval(fun_name, x1,x2
11、,xn)。如 t=0:.1:2*pi; y=eval(sin(t); plot(y) t=0:.1:2*pi; y=feval(sin,t); %或是y=feval(sin,t); plot(y)(以上例子的结果都相同,都是利用matlab绘制正弦函数) int8,uint8,int16,uint16,int32,uint32,int64,uint64 带符号和无符号整数数组。存储空间比单精度或双精度数组小。除int64和uint64外,其余都可用于数学运算。整数或是整数数组与标量double型浮点数 运算的结果的数据类型与整数操作数的一样。如 x=uint32(21 32 43)*1.1x
12、= 23 35 47 %结果都是想乘 四舍五入得出来的常见的整数操作函数:ceil 向无穷大方向取整round 四舍五入fix 向0取整floor 向无穷小方向取整isinteger 判断输入是否为整数数组isnumeric 判断输入是否为数值数组如 a=0.1 2 3; isinteger(a)ans = 0浮点数有单精度(single)和双精度(double)两种格式,默认是double,两者可以进行强制类型转换。double型数据共64位,single共32位。常见的浮点数操作函数:isfloat 检查输入是否为浮点数eps 浮点相对精度realmax 返回本计算机能够表示的最大浮点数r
13、ealmin 返回本计算机能够表示的最小浮点数isreal 检查是否数组所有元素为实数complex函数生成复数,其调用格式有两种:c=complex(a,b) 生成复数c,且c=a+bic=complex(a) 生成复数c,且c=a。c的虚部为0从复数中提取实部和虚部,分别用real和imag函数,如 z=2+3i; real(z)ans = 2 imag(z)ans = 3数值型数据还经常用到的一些其他函数format 控制输出的显示格式(这个函数仅改变数值的显示的方式,并不影响matlab怎样计算和保存数值)whos 显示输入的数据类型 (调用格式是whos 变量名)class 创建对象
14、或返回对象类型isa 检查输入是否为指定的数据类型isfinite 检查数组元素是否为有限值isinf 检查数组元素是否为无穷大或无穷小isnan 检查数组元素时候为NaN第二章 MATLAB的应用2.1 Matlab基本实验1某石油公司在墨西哥海湾拥有几个石油钻井平台,每个平台开采出的石油需要运往路易斯安那的炼油厂。要在平台与路易斯安那海岸之间建造一个管道网,使石油通过管道传输。这管道网该如何设计,才能使建造费用最低。代码:a= 0 2 inf inf inf inf inf 1 8 inf inf; 2 0 1 inf inf inf inf inf 6 inf inf; inf 1 0
15、2 inf inf inf inf inf 3 inf; inf inf 2 0 9 inf inf inf inf inf 7; inf inf inf 9 0 4 inf inf inf inf 2; inf inf inf inf 4 0 1 inf inf inf 1; inf inf inf inf inf 1 0 9 inf 4 inf; 1 inf inf inf inf inf 9 0 7 inf inf; 8 6 inf inf inf inf inf 7 0 1 inf; inf inf 3 inf inf inf 4 inf 1 0 6; inf inf inf 7 2
16、1 inf inf inf 6 0;T=;c=0;v=1;n=11;sb=2:n;for j=2:n b(1,j-1)=1; b(2,j-1)=j; b(3,j-1)=a(1,j);endwhile size(T,2)n-1 minu,i=min(b(3,:); T(:,size(T,2)+1) = b(:,1); c=c+b(3,i); v=b(2,i); temp = find(sb=b(2,i); sb(temp)=; b(:,i)=; for j=1:length(sb) d=a(v,b(2,j); if db(3,j) b(1,j)=v; b(3,j)=d; end endendT,
17、c结果:T =1 1 2 3 4 4 4 4 6 11 2 2 3 4 5 5 5 5 5 5 2 2 1 2 9 9 9 9 4 2c =18则:最低费用为18元2在一个计算机通讯网络中,某一个计算机欲呼叫另一台计算机并进行数据传输,若传输数据量很大,又要去了传输速度,则通常需要沿容量最大的路径进行传输数据。求两台给定计算机之间容量最大的路径。代码:a=10 8 inf inf 9 inf inf inf inf inf 4;. 8 10 7 inf 7 inf inf inf inf inf inf ;. inf 7 10 inf 8 inf inf inf inf 8 inf;. inf
18、 inf inf 10 6 inf inf 4 inf 8 inf;. 9 7 8 6 10 7 inf 7 inf inf inf;. inf inf inf inf 7 10 inf 8 inf inf 2;. inf inf inf inf inf inf 10 7 inf inf 4;. inf inf inf 4 7 8 7 10 0 inf inf;. inf inf inf inf inf inf inf 0 10 9 inf;. inf inf 8 8 inf inf inf inf 9 10 inf;. 4 inf inf inf inf 2 4 inf inf inf 10
19、;T=;c=0;v=1;n=11;sb=2:n; for j=2:n b(1,j-1)=1; b(2,j-1)=j; b(3,j-1)=a(1,j);endwhile size(T,2)n-1minu,i=min(b(3,:); T(:,size(T,2)+1)=b(:,i); c=c+b(3,i);v=b(2,i); temp=find(sb=b(2,i); sb(temp)=; b(:,i)=;for j=1:length(sb) d=a(v,b(2,j); if db(3,j) b(1,j)=v; b(3,j)=d; end endendT,c结果:T =1 11 11 6 5 4 8
20、5 2 4 11 6 7 5 4 8 9 2 3 10 4 2 4 7 6 4 0 7 7 8c =49则:最大流量是492.2 MATLAB在扩频通信技术的应用情况 “扩频通信技术是一种信息传输方式,其信号所占有的频带宽度远大于所传信息必需的最小带宽,频带的扩展是通过一个独立的码序列来完成,用编码及调制的方法来实现的,与所传信息数据无关。在接收端则用同样的码进行相关同步接收、解扩及恢复所传信息数据。扩频通信与一般的通信系统相比,主要是在发射端增加了扩频调制。而在接收端增加了扩频解调的过程,扩频通信按其工作方式不同主要分为直接序列扩频系统、跳频扩频系统、跳时扩频系统、线性调频系统和混合调频系统
21、。现以直接序列扩频系统为例说明扩频通信的实现方法。下图为直接序列扩频系统的原理框图:直接序列扩频系统误码率的仿真。其中:W 为传输带宽;C 为信息容量。式(8)含义是在给定信号功率S和噪声功率N的条件下,用一种编码系统,以很小的误码率,接近C 的传输速率传送信息。根据柯捷尔尼可夫理论可知:其中: e P 为误码率; F 为信号的频率; E 为信号能量; o N 为噪声功率谱密度。在MATLAB中的仿真模型如下图所示:加人噪声和干扰后,取=10 C L ,用3个不同的正弦信号干扰,其振幅分别为3,7,12。在误码率运算中加性噪声的方差是固定的,总共进行了1万次运算,而且在每次运算中,信号能量取值
22、都满足所需的信噪比要求,从而得到了下图所示的仿真曲线。可见,正弦干扰信号的振幅越大,误码率越大。同样,在相同信噪比下,处理增益越大,误码率越小,而在大信噪比时,这种差别尤为明显。2.3 MATLAB在语音端点检测的应用语音数据用wavread函数直接从语音文件中读取:x,fs,nbits=wavread(filename)语音信号进行预处理,由于语音信号的高频端大约在8000Hz以上,因此需要提升高频部分,滤除低频干扰,尤其是消除50Hz或60Hz的工频干扰。 可通过将语音信号通过一个一阶的高通滤波器来实现,滤波器的数学表达式为 11 - z a ,其中一般的98 . 0 93 . 0 a 6
23、。并用enframe进行分帧,确定每一帧的长度,本文中取帧长256,每一帧的帧移为90,分帧命令如下:y=(fi l ter(1-0.9375 ,1,x),256,90)短时能量:amp=sum(abs(y).2,2);短时过零率:tmp1=enframe(x(1:end-1),256,90);tmp2=enframe(x(2:end),256,90);signs=(tmp1.*tmp2)0.02;zcr=sum(signs.*di ffs,2);实验结果:结果表明,用语音短时能量和短时过零率相结合可以很好地检测出语音的起点和终点,把它用于语音识别系统能很好地获取语音信号,提高语音识别系统的效
24、果。2.4MATLAB在形态学图像处理的应用2.4.1Matlab图像处理工具箱中形态学图像处理函数 Matlab提供了20类图像处理函数,涵盖了图像处理的包括近期研究成果在内的几乎所有的技术方法,本文中我们主要介绍灰度与二值图像的形态学运算的IPT函数。 在Matlab中IPT函数strel运用各种形状和大小构建结构元素,其基本语法为se=strel(shape,parameters),其中,shape是指定希望形状的字符串,而parameters是指定形状(如其大小)的一列参数。IPT函数imdilate执行膨胀运算。基本的调用语法为A2=(A,B),其中,A2和A是二值图像或灰度图像,B
25、是指定的结构元素的由0和1组成的矩阵。腐蚀则用IPT函数imerode执行。开运算和闭运算在工具箱中用函数imopen和imclose实现。击中或击不中变换在IPT中用函数bwhitmiss实现,该函数语法为C=bwhitmiss(A,B1,B2),其中,C为结果,A为输入图像,B1和B2为结构元素。 2.4.2形态学图像处理实现 由于Matlab工具箱中含有丰富的形态学图像处理函数,使得我们在用形态学方法进行处理时能尽可能达到所需要的效果。形态学技术对图像进行预处理的过程中能够很好实现对图像的滤波、细化和裁剪,还能实现对图像边缘检测及特征提取。下面我们利用Matlab形态学处理函数对一副不均
26、匀亮度的米粒图像进行滤波处理,并进行阈值处理,使得米粒和背景分割开来,来比较滤波处理前后图像的分割效果。滤波处理部分源程序如下: f=imread(rice.png);se=strel(disk,50);fo=imopen(f,se);%读入图像米粒图像,并对图像进行开运算 figure,imshow(f);%显示米粒原图像,如图(a) 图(a)figure,imshow(fo);%显示经开运算之后的图像,如图(b) 图(b)f2=imsubtract(f,fo);%米粒原图像减去经开运算后的图像,获得一副均匀背景的米粒图像 figure,imshow(f2);%显示均匀背景的米粒图像,如图(
27、c) 图(c) 2.5 MATLAB在信号与系统中的应用2.5.1用MATLAB绘制信号的波形运用MATLAB绘图,可以很快速和简便的得到响应函数的波形图,通过分析响应的波形将对信号的分析有更深入的了解。用MATLAB绘制f(t)=e(t+3)-2e(t),其中e(t)为step函数解:在MATLAB窗口中输入如下命令 f=sym(heaviside(t+3)-2*heaviside(t) ezplot(f,-5,4), hold on,plot(0,0,-1,1), axis(-5,4,-1.1,1.1),hold off得图一:图一2.5.2利用MATLAB解微分方程在信号与系统中,连续时
28、间系统处理连续时间信号,通常用微分方程来描述这类系统,也就是系统的输入与输出之间通过他们时间函数及其对时间t的各阶导数的线性组合联系起来。因此,在信号与系统中,求解微分方程对于研究连续时间系统的时域分析非常的重要。运用MATLAB的方法。求解线性微分方程y+5y+4y+7y=3u+0.5u+4u 在输入u(t)为单位脉冲及单位阶跃信号时的解。解:两边进行拉普拉斯变换(脉冲输入U(S)=1;单位阶跃U(S)=1/S)求脉冲响应:A=1 5 4 7;B=3 0.5 4;r ,p,k=residue(B,A)时域解:t=0:0.2:10y=r(1)*exp(p(1)*t)+r(2)*exp(p(2)
29、*t)+r(3)*exp(p(3)*t);plot(t,y)得图二:图二求阶跃响应:打开MATLAB中的simulink模块,建立一个模型文件,命名为”meng.mdl”。如图三:图三单击仿真按钮,然后返回MATLAB中输入一下命令,即可得到如图四:图四 2.5.3根据传递函数求解根据传递函数求系统的零极点分布,单位冲激响应,单位阶跃响应以及幅频特性在分析系统的静态和动态特性时,常常可以通过对传递函数进行分析,从而解决系统是否稳定等问题,然而传统的分析方法,常常要借助于人工计算,不仅工作量比较大,而且效率也比较低。而MATLAB解决了这一难题,本文通过调用MATLAB内部的函数进行计算,非常的
30、高效的得到了零级点分布,单位冲激响应,单位阶跃响应以及幅频特性,非常的直观。 例:传递函数是解:首先建立一个m文件,并且命名为“meng.m”clear t=0:0.01:10; num=1; den=1 2 2 1; sys=tf(num,den) poles=roots(den) figure(1),pzmap(sys); %零级点分布 h1=impulse(num,den,t); figure(2),plot(t,h1); %单位冲激响应的波形 title(Impulse Response) %加标题 h2=step(num,den,t); figure(3),plot(t,h2); %
31、单位阶跃响应波形 H,w=freqs(num,den); figure(4),plot(w,abs(H); %幅频特性图 xlabel(omega) title(magni tude Response)%加标题 运行结果是 Transfer function: 1-s3 + 2 s2 + 2 s + 1 poles = -1.0000 -0.5000 + 0.8660i -0.5000 - 0.8660i 零极点分布如图五所示图五单位冲激响应的波形如图六所示图六单位阶跃响应波形如图七所示图七幅频特性如图八所示图八结束语MATLAB程序设计语言是美国Mathworks公司20世纪80年代中期推出
32、的高性能数值运算软件。Mathworks公司经过几十年的开发、扩充与不断完善,使MATLAB发展成为适合多学科、功能强大的大型系统软件。到目前为止,常用的数学计算软件主要有VB、VC、VF、MATLAB、Mathematica、Maple、MathCAD,Calcwin等。但MATLAB以其易用性、友好而简单的用户界面等重多优点而被广泛应用各个领域。在许多诸如控制论、时间序列分析、系统仿真、图像信号处理等方面产生了大量的矩阵及其相应的计算问题合理的应用MATLAB软件,将使我们的学习以及日后的实验更为轻松。参考文献1李正周.Matlab信号处理与应用M.北京:清华大学出版社,20082胡航,语音信号处理,哈尔滨工业大学出版社,1999.93罗建军,杨琦,精讲多练MATLAB,西安交通大学出版社,2002.84程佩青,数字信号处理教程,清华大学出版社,2007.25张平,MATLAB基础与应用,北京航空航天大学出版社,2007.76邓魏.MATLAB在图像处理和分析中的应用J.农机化研究,2006.7缪绍纲.数字图像处理:活用MatlabM.成都:西南交通大学出版社,2001.