《Matlab》课程设计说明书-MATLAB的基本运算.doc

上传人:yyf 文档编号:5016566 上传时间:2020-01-28 格式:DOC 页数:28 大小:389.50KB
返回 下载 相关 举报
《Matlab》课程设计说明书-MATLAB的基本运算.doc_第1页
第1页 / 共28页
《Matlab》课程设计说明书-MATLAB的基本运算.doc_第2页
第2页 / 共28页
《Matlab》课程设计说明书-MATLAB的基本运算.doc_第3页
第3页 / 共28页
《Matlab》课程设计说明书-MATLAB的基本运算.doc_第4页
第4页 / 共28页
《Matlab》课程设计说明书-MATLAB的基本运算.doc_第5页
第5页 / 共28页
点击查看更多>>
资源描述

《《Matlab》课程设计说明书-MATLAB的基本运算.doc》由会员分享,可在线阅读,更多相关《《Matlab》课程设计说明书-MATLAB的基本运算.doc(28页珍藏版)》请在三一文库上搜索。

1、武汉理工大学Matlab课程设计说明书课程设计任务书学生姓名: 专业班级: 通信0904班 指导教师: 工作单位: 信息工程学院 题 目: MATLAB的基本运算 初始条件:1. Matlab实验软件2. 实验程序要求完成的主要任务: 采用MATLAB选用适当的函数或矩阵进行如下计算(1) 极限的计算、微分的计算、积分的计算、级数的计算、求解代数方程、求解常微分方程;(2) 矩阵的最大值、最小值、均值、方差、转置、逆、行列式、特征值的计算、矩阵的相乘、右除、左除、幂运算;(3) 多项式加减乘除运算、多项式求导、求根和求值运算、多项式的部分分式展开、多项式的拟合、插值运算。时间安排:1.第5周排

2、任务,分组2.67周设计仿真,撰写报告3.第8周完成设计,提交报告,答辩指导教师签名: 年 月 日系主任(或责任教师)签名: 年 月 日课程设计目录摘要11.前言21.1Matlab的历史以及应用 32.程序和运行结果52.1基础微分计算62.11极限的计算82.12微分的计算92.13级数的计算 92.14求解代数方程 102.15求解常微分方差 112.2矩阵的基本运算2.21矩阵的最值122.22均值、方差132.23转置142.24逆矩阵152.25特征值162.26相乘172.27矩阵的右乘、左乘182.28矩阵的幂运算192.3多项式的基本运算202.31四则运算212.32求导、

3、求值、求根232.33展开242.34多项式拟合252.35多项式插值运算263.心得体会274.参考文献283摘要MATLAB是一款功能强大而又齐全的软件,受到各界人士的重视。不仅在仿真方面做的出色,在数值计算和科学的计算方面也有着重要的地位。对于它的学习不仅可以深入了解到它的重要地位更要的的是可以作为我们学习的辅助工具。本报告主要撰写了Matlab的基本知识和一些运用常识,包括了对函数的微分、倒数、定积分、不定积分的计算,矩阵和多项式的相关计算。这些简单的运用可以为我们以后对它的更深层次的了解打下基础,更进步的还有对图形的简单处理,帮助我们了解到高斯、椒盐噪声,中值、维纳、高通、低通滤波的

4、理论知识。通过对本软件的基本了解,可以让我们对本软件有个大体的印象,认识到它的重要作用,在以后的学习中药重视它的学习,它是联系实际与理论的直接纽带。241.前言Matlab的由来及历史MATLAB 是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和Simulink两大部分。MATLAB是矩阵实验室(Matrix Laboratory)的简称,和Mathematica、Maple并称为三大数学软件。它在数学类科技应用软件中在数值计算方面首屈一指。MATLAB可以进行矩阵运算、绘制函数和数据、实现算法

5、、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。MATLAB的基本数据单位是矩阵,它的指令表达式与数学、工程中常用的形式十分相似,故用MATLAB来解算问题要比用C,FORTRAN等语言完相同的事情简捷得多,并且mathwork也吸收了像Maple等软件的优点,使MATLAB成为一个强大的数学软件。在新的版本中也加入了对C,FORTRAN,C+ ,JAVA的支持。可以直接调用,用户也可以将自己编写的实用程序导入到MATLAB函数库中方便自己以后调用,此外许多的MATLAB爱好者都编写了一些经典的程序,用户可以

6、直接进行下载就可以用。20世纪70年代,美国新墨西哥大学计算机科学系主任Cleve Moler为了减轻学生编程的负担,用FORTRAN编写了最早的MATLAB。1984年由Little、Moler、Steve Bangert合作成立了的MathWorks公司正式把MATLAB推向市场。到20世纪90年代,MATLAB已成为国际控制界的标准计算软件。2.程序及实验结果2.1微积分计算微积分的计算可以说是数学的基础,关于基础的微机分计算主要有求函数的极限,微分运算,积分运算,级数的计算,代数的求解,以及常微分方程的求解,下面分别介绍。2.1.1计算极限MATLAB中极限函数limit格式如下:li

7、mit(F,x,a) ;limit(F,a);limit(F);limit(F,x,a,right);limit(F,x,a,left)其中F表示的是函数式,x表示求极限的变量,a表示的是变量取的值,left或right表示是取左极限还是右极限。例:求 y=分析:这是一个典型的求极限的题目,题目中涉及了两个变量,故在程序开始应该先定义两个变量,然后直接利用函数limit编程计算。示例程序如下:syms x yy= limit(ex,x,2)运行结果如下:Y=e22.1.2 微分的计算MATLAB中微分函数diff格式如下:Y = diff(X);Y = diff(X,n);Y = diff(X

8、,n,dim)其中X表示待微分的变量,n表示n次微分,第三式表示沿着定维dim的n阶微分。例:求sin(x)*cos(x)的微分;分析:微分运算能直观的显示函数值的变化快慢,在平时计算中常常反映变量的变化对函数值的影响大小这是一个简单的一阶微分式子,可以直接写定义变量然后求结果。示例程序如下:syms x y dyy= sin(x)*cos(x)dy=diff(y)运行结果如下:2.1.3 积分的计算MATLAB中积分常用函数为int,格式如下:int(f,x,a,b)其中f表示待积分的函数,x表示积分变量,而a,b则分别表示积分起始终止点。例:求下列变上限积分分析:积分运算大量运用于求面积体

9、积等,此处选用的是一个变上限积分,属于有些典型的积分例子,但任然是根据函数格式就可以写出程序。示例程序如下:syms k x;y=k2;f=int(y,k,x,x2)运行结果如下:2.1.4 级数的计算MATLAB中级数常用函数为symsum,格式如下:r = symsum(s);r = symsum(s,v);r = symsum(s,a,b);r = symsum(s,v,a,b)函数表达的意义是表达式s关于变量v从a到b求和。例: 计算级数 的值,示例程序如下:syms k;t=symsum(1/k,1,5)运行结果如下: 2.1.5 求解代数方程代数方程分为很多种,有简单有复杂,方法也

10、有很多。一般多项式方程的根可为实数,也可为复数,可用MATLAB符号工具箱中的solve( )函数, MATLAB中求解代数方程常用函数solve格式如下:x,=solve(eqn1,eqn2,eqnn,x,)其中eqn表示的是式子,x等表示的是变量。例:求解方程5x+7=10示例程序如下:syms xx=solve(5*x+7=10,x)运行结果如下:2.1.6 求解常微分方程未知的函数以及它的某些阶的导数连同自变量都由一已知方程联系在一起的方程称为微分方程。如果未知函数是一元函数,称为常微分方程。MATLAB中主要用dsolve求符号解析解。dsolve的基本格式是:s=dsolve(方程

11、1, 方程2,初始条件1,初始条件2 ,自变量)例:求解微分方程 求解析解。示例程序如下:syms y ts=dsolve(Dy=-y+t+1,y(0)=1,t);simplify(s)运行结果如下:2.2 矩阵的基本计算矩阵计算是线性代数中的核心内容,其对于整个数学系统的计算方面的意义是十分巨大的,集中它的基本运算包括最大值、最小值、均值、方差、转置、逆、行列式、特征值的计算、矩阵的相乘、右除、左除、幂运算等等,下面将具体介绍。矩阵的运算都是要以矩阵为基础的,本报告中决定选用一组矩阵来完成几乎全部可以完成的计算,那么首先就得生成矩阵了。矩阵的定义和分配可以 有多种方法。最简单的方法是有方括号

12、包围的逐行给定元素。若定义一个标量,则方括号就不需要了。相同行中的元素是由一行或多个空格或一个逗号, 分隔,列由分号; 或回车键分隔。没有结尾分号的每个命令在屏幕上显示出其结果。若结尾带分号,就执行计算,但计算结果并不显示。如定义33矩阵如下: 则在命令窗口输入:A=1 2 3;4 5 6;7 8 9屏幕显示结果为:A=1 2 34 5 67 8 9 2.2.1 矩阵的最大值、最小值MATLAB中max函数可以表示求每一列的最大值,那么经过分析可以知道,先求出每一列的最大值然后求出这些最大值里面的最大值,下面以A矩阵为例。示例程序如下:y=max(A)x=max(y)运行结果如下:对比A中数值

13、发现结果是正确的。MATLAB中求最小值的函数为min,求解思路与求最大值思路类似,仍然以矩阵A为例。示例程序如下:y=min(A)x=min(y)运行结果如下:对比A中数值发现结果是正确的。2.2.2 矩阵的均值、方差MATLAB中求解矩阵均值的函数是mean,它的具体用法如下:mean(A,1)表示对列取平均,mean(A,2)表示对行取平均,mean(A)则默认为mean(A,1)。下面以矩阵B分别举例,程序示例如下:a=mean(A)b=mean(A,2)运行结果如下:观察可知,a,b分别显示出了矩阵行列的均值。如果想求矩阵的均值可以进行2次操作。示例程序如下:c=mean(a)运行结

14、果如下:可以观察到c的值就是矩阵b所有值的均值。MATLAB中求解矩阵方差的函数是var,它的常用格式是V = var(X),如果X是一个矩阵,var(X)返回一个包含矩阵X每一列方差的行向量。下面还是以矩阵A来示例,程序如下:d=var(var(A)运行结果如下:2.2.3 矩阵的转置矩阵的一个重要的运算是转置,如果A是一个实数矩阵,那么它被转置时,第1行变成第1列,第2行变成第2列,依此类推,一个mn矩阵变为一个nm矩阵。如果矩阵是方阵,那么这个矩阵在主对角线反映出来。MATLAB中求转置的函数是“”,以A为例,编程如下:e=A运行结果如下:转置矩阵e 2.2.4 矩阵的逆、行列式 实际中

15、求矩阵的逆跟行列式均要求矩阵是方阵,MATLAB中求逆的函数是inv,格式为Y = inv(X), 求矩阵的函数是det,格式为Y = det(X)。下面仍以矩阵A 为例来编程示例,如下:f=inv(A)运行结果如下:编程如下:c=det(A)运行结果:2.2.5 矩阵特征值的计算矩阵的特征值的求解,就是找到方程组的解:其中是一个标量,x是一个长度为n的列向量。标量是A的特征值,x是相对应的特征向量。对于实数矩阵A来说,特征值和特征向量可能是复数。一个 nn的矩阵有n个特征值,表示为。求矩阵的特征值和特征向量可用eig函数。Eig(A)求包含矩阵A的特征值的向量。V,D =eig(A)产生一个

16、矩阵A的特征值在对角线上的对角矩阵D和矩阵V,它的列是相应的特征向量,满足AV=VD,下面以矩阵A为例来演示。编程如下: V,D =eig(A)运行结果如下2.2.6 矩阵的相乘 假定有两个矩阵A和B,若A为mn矩阵,B为np矩阵,则C=AB为mp矩阵。元素是A的第i行和B的第j列的点积。对于方阵,也定义了积B A,但其结果通常与A B不同。MATLAB中求矩阵的乘积直接用符号*即可,下面以A、B矩阵为例来分别演示AB与BA区别。示例程序如下:c=A*Bd=B*A运行结果如下:对比可以知道,AB与BA的结果是有区别的。2.2.7 矩阵右除和左除在MATLAB中,有两个矩阵除法的符号,左除“ ”

17、和右除“/”。如果A是一个非奇异方阵,那么A B和B / A对应A的逆与B的左乘和右乘,即分别等价于命令 inv(A)*B和B*inv(A)。可是,MATLAB执行它们时是不同的,且在MATLAB中求解一个系统用左除比用逆和乘法所需的运算次数要少。令R=B/A, L=AB , 下面仍然以A、B为例来演示。示例程序如下:R=B/AL=AB 运行结果如下:2.2.8 矩阵的幂运算 对于二维方阵,A的p次乘方可以用Ap实现。如果p是一个正整数,那么这个幂可以由许多矩阵乘法运算定义。对于 p= 0,得到与A维数相同的同一个矩阵;当 p空域卷积。5.维纳滤波:从噪声中提取信号波形的各种估计方法中,维纳(

18、Wiener)滤波是一种最基本的方法,适用于需要从噪声中分离出的有用信号是整个信号(波形),而不只是它的几个参量。 设维纳滤波器的输入为含噪声的随机信号。期望输出与实际输出之间的差值为误差,对该误差求均方,即为均方误差。因此均方误差越小,噪声滤除效果就越好。为使均方误差最小,关键在于求冲激响应。如果能够满足维纳霍夫方程,就可使维纳滤波器达到最佳。根据维纳霍夫方程,最佳维纳滤波器的冲激响应,完全由输入自相关函数以及输入与期望输出的互相关函数所决定。6.中值滤波:中值滤波是基于排序统计理论的一种能有效抑制噪声的非线性信号处理技术,中值滤波的基本原理是把数字图像或数字序列中一点的值用该点的一个邻域中

19、各点值的中值代替,让周围的像素值接近的真实值,从而消除孤立的噪声点。方法是去某种结构的二维滑动模板,将板内像素按照像素值的大小进行排序,生成单调上升(或下降)的为二维数据序列。二维中值滤波输出为g(x,y)=medf(x-k,y-l),(k,lW) ,其中,f(x,y),g(x,y)分别为原始图像和处理后图像。W为二维模板,通常为2*2,3*3区域,也可以是不同的的形状,如线状,圆形,十字形,圆环形等。7. 巴特沃斯低通滤波:巴特沃斯滤波器是滤波器的一种设计分类,其采用的是巴特沃斯传递函数,有高通、低通、带通、带阻等多种滤波器类型。 巴特沃斯滤波器在通频带内外都有平稳的幅频特性,但有较长的过渡

20、带,在过渡带上很容易造成失真。(2).图像加噪声原始图像:(1).图像加高斯噪声程序:axes(handles.axes2);x=(handles.img);y=imnoise(x,gaussian,0,0.05); %加高斯噪声imshow(y);imwrite(y,gaussian.jpg);title(加高斯噪声) (2).图像加椒盐噪声程序:axes(handles.axes2);x=(handles.img);y=imnoise(x,salt & pepper,0.04); %加椒盐噪声imshow(y);imwrite(y,salt.jpg);title(加椒盐噪声)2.滤波(1)

21、中值滤波程序: axes(handles.axes2);x=(handles.img);y=imnoise(x,salt & pepper,0.04); %加椒盐噪声z=medfilt2(y,5 5,symmetric); %中值滤波imshow(z);imwrite(z,medfilt.jpg);title(中值滤波)(2)维纳滤波程序:axes(handles.axes2);x=(handles.img);y=imnoise(x,gaussian,0,0.05); %加高斯噪声z=wiener2(y,5 5); %维纳滤波imshow(z);imwrite(z,wiener.jpg);ti

22、tle(维纳滤波) 4.心得体会matlab跟其他语言不一样(我用的比较多的编程语言,除了matlab就应该是c或c了,VB和Delphi也接触过,我想版面(matlab版)大部分人也差不多),如果你抱着“把其他语言的思想运用在matlab里面”的话,那么我想,即使程序运行不出错,也很难把握matlab的精髓,也就很难发挥matlab的作用了。所以,如果你是希望matlab作为VC的附属品,即你不想在matlab上面花太多功夫,只纯粹想用matlab来完成VC做不了或很难做成的任务的话,那么,这篇文章你也不需要再阅读下去了;如果你是希望掌握一门语言、一个工具,使它更有效为你服务的话,那么,希望

23、本文对你有所帮助。Matlab是一个基于矩阵运算的软件,这恐怕是众所周知的事情了,但是,真正在运用的时候(就是在编程的时候),许多人(特别是初学者)往往没有注意到这个问题,因此,for循环(包括while循环)满天飞.这不仅是暴殄天物(没有发挥matlab所长),还浪费了你宝贵的时间。对此,版友MVH在他的“MATLAB 小技巧”一文中也有所涉及,雷同的东西我也就不重复了,matlab的“帮助”里面也有相关的指示。我这里想说的一点是,初学者往往在初始化矩阵的时候注意到这个问题,懂得了使用矩阵而不是循环来赋值,但是,在其他环节上,就很容易疏忽,或者说,仍然没有摆脱C的思4.参考文献1 Matlab使用指南,主编张延华,清华大学出版社3 陈怀琛主编,MATLAB及在电子信息课程中的应用(第三版,电子工业出版社,20064 掌握精通Matlab,主编张志涌,北京航空航天大学本科生课程设计成绩评定表姓 名性 别专业、班级课程设计题目:课程设计答辩或质疑记录:成绩评定依据:最终评定成绩(以优、良、中、及格、不及格评定)指导教师签字: 年 月 日

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

当前位置:首页 > 研究报告 > 商业贸易


经营许可证编号:宁ICP备18001539号-1