《MATLAB自学教程》PPT课件.ppt_第1页
《MATLAB自学教程》PPT课件.ppt_第2页
《MATLAB自学教程》PPT课件.ppt_第3页
《MATLAB自学教程》PPT课件.ppt_第4页
《MATLAB自学教程》PPT课件.ppt_第5页
已阅读5页,还剩67页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

精讲多练 MATLAB,主讲:张安莉,第1章 MATLAB语言的基本使用方法 了解MATLAB的基本知识及其上机环境 学会利用MATLAB进行基本的数学运算,MATLAB的工作环境,Matlab 首先是一个视窗软件,意思是说,它在一个图形 操作界面內开启自己的视窗。我们目前都使用Windows 操作 界面,那也就是说,我们在Windows桌面上,双击Matlab的图 标,就进入Matlab的工作环境,也就是它的视窗。如下图:,MATLAB的工作环境,他的外框和功能表、工具列,都与一般的 Windows 视 窗软件(例如 MS-Word) 长得很像,因此在一般性质的操作 上,也是相同的。 Matlab 视窗的工作区域被切分为三块:Workspace(工作空 间)、command history(历史命令窗口)和command window (命令窗口)。 command window是用户与Matlab进行人机对 话的主要环境。,命令窗口:用户在提示符后键入命令,回车后,系统会执行输入的命令,并给出计算结果。 有很多的控制键和命令键可用于命令行的编辑。例如用,箭头键可以将所用过的指令调回来重复使用。其他的如,Home,End,Delete,Insert等,其功能一用便知。 清除命令窗口:clc 清除工作空间:clear all(清除全部变量);clear a(清除已存在的变量a);,1.1 基本计算,MATLAB具备最普通的掌上型计算器 (calculator) 功能。 使用MATLAB进行数学式的计算就象用计算器进行数字运算 一样简便方便。 他可以做基本的四則运算,例如: 假设要计算 1+2+3+4+5的结果,则只需在命令窗的系统 提示符号之后键入该算式: 1+2+3+4+5 ans = 15 他知道先乘除后加減,例如 2*3-4 ,得到正确的答案 2。,遇到需要先加減的情況,可以用一对小括号,例如: (1 + 2) * (3 - 12) 得到正确的答案 -27。 计算器当然不能只会计算整数,他也会处理小数。例 如以下是一个除法计算 1 / 2 得到答案 0.5。但是 Matlab 输出的格式0.5000。 再试试看 1.23 * 4 或者 1.2 * 3.4 。,除了四则运算与括号之外,Matlab 也具备一般掌上型 计算器该有的最基本功能,这包括计算平方根(square root),指 令是 sqrt( ),例如 sqrt(4) 在 sqrt( ) 里面可以有其他的运算,例如 sqrt(1+2) 或 者sqrt(1+2*3) 另一个基本功能是绝对值 (absolute value),指令是 abs( ),例如 abs(-3) 或者 abs(7-3) 或者 abs(3-7) 像sqrt( )和abs( )这种功能,在 Matlab 中称为函数(function)。函数可以和其他常数或函数做计算,例如 7+abs(3-7) 或者 sqrt(9)+abs(7-3),Matlab其实具备一般工程性计算器该有的基本功能。这包 括幂次方、指数与对数函数、三角与反三角函数等等。我们先 看看幂次方。计算幂次方的符号就是常用的 记号。指数部 分可以是任意数。例如 22 或者 2(-1) 或者 2(1/2) 或者 2(1.25),Matlab具备一般工程性计算器该有的基本功能指数 与对数。 科学与工程领域惯用标准指数函数,也就是以e为底 的指数函数。其中,e是一个无理数,大约等于2.71828。 Matlab 并不提供e这个常数,我们不能按幂指数的形式来写, 比如: e2 ! 是非法的。 Matlab以函数exp( )来计算以e为底的指数函数。比如: exp(1) 得到常数e的近似值。,Matlab 分别提供三个函数 log( ) 、 log10( ) 和 log2( ),分别表示以 e 为底的对数(自然对数),以10为底 的对数(常用对数)。例如 log(exp(2) 和 log10(100) 和 log2(4) 的答案都是 2。,Matlab具备一般工程性计算器该有的基本功能三角与 反三角函数。 六个三角函数在Matlab 中对应的函数分别为:,Matlab具备一般工程性计算器该有的基本功能三角与 反三角函数。 六个反三角函数在Matlab 中对应的函数分别为:,他们的用法并没有什么特殊的,需要注意的就是使用三角函数时,角度的单位是“弧度”,而不是“度”如果题设的已知条件给的是“度”,我们需要将他转化为弧度来计算。,Matlab 甚至超越了一般工程型计算器该有的基本功能, 以后我们会看到更多超越的功能,现在先看一个:复数。 比如我们要Matlab計算 sqrt(-1) 而以为他不会,但是他回答 0 + 1.0000i Matlab 的所有运算符号、所有函数,都懂得如何做复数 计算。例如 (1+2i)-(1-2i) 或者 3* (1+2i),abs( ) 计算的是复数的长度,也就是复数的模。例 如:abs(3+4i) 我们知道答案的确是5。 复数的平方根是由比较系数法求得,例如要找 1+2i 的平方根,就计算 (a + bi)2 = 1+2i 然后比较系数得到联立 方程式 a2 - b2 = 1 2ab = 2 Matlab 可以代劳,只要说 sqrt(1+2i) 就行了。 由此,我们知道了Matlab他认识复数。,1.2 变量,Matlab 比工程型计算器更好,除了因为他会计算复数之 外,还因为他接受变量 (variable)。变量是指在程序执行 过程中其值可以变化的量。简化来说,Matlab的变量应该有 两个属性: (1)变量名 (2)它的值,想象变量是一口箱子,在箱子上贴了标签,表明他的名 字,箱子里面放着他的值。 箱子本来不存在,只要你的Matlab 的操作视窗里“呼唤” 他的名字,他就出现了。比如: foo Matlab 可能回应Undefined function or variable foo, 这就是Matlab 沒有一个名叫 foo 的函数,也沒有一口名叫 foo 的箱子。,但是,只要说 foo = 5 Matlab 就自动制造了一口名叫foo的箱子,并且在箱子里放 了数值5。 之后,你可以再说 foo Matlab 就会告告诉你,foo 的值是 5。,把一个数值放进箱子的学名叫做指派 (assign),也就是 赋值。Matlab 用 = 作为指派符号。用法是 变量名字 = 数值 如果变量名字原来不存在,Matlab 就临时开一口新箱子给你; 如果它原来就存在,Matlab 放进新的数值,旧的便不见了, 就好像新的数值覆盖了旧的数值。因为箱子里面的数值很 容易改变,所以我们称它为变量。 指派的数值可以是一 个常数,例如 foo = 2.7183 或者任何计算的结果,例如,foo = 2.7183(-2) 或者 foo = exp(i*pi) 变量的显然用处就是节省打字。如果某个数值要一用再用,可 以利用变量把它存起來,将来再用。比如可以说 x = (-8)(1/3) 然后再说 x3 看看 Matlab 是不是真的计算了 -8 的三次方根?,在 Matlab 中,等号 = 是“指派”的意思,不是数学中 “相等“的意思 。比如 foo = 1/5; 那么 0.2 就被指派给foo,但是 Matlab 并没有回应。看起来 好像 Matlab 没反应,但是其实他已经做好了。不信的话,就 下指令 foo 只写一个变量名字 (別加分号),Matlab 就会回应那个变量的 值。其实,这是一个简单的规则:变量如果出现在等号的左 边,就是要被指派的意思。,除此而外,只要在 Matlab 指令的任何地方写出变量的名 字,就是要取出它的值。而取出來之后,那个数值就可以如同 常数般做任何计算。例如 foo * 5 或者 1 / foo 都会执行正确的计算。,第章 MATLAB的数值运算 介绍MATLAB的两种基本的数值运算: 、矩阵 、多项式,.1 矩阵,Matlab 原本就是 Matrix Laboratory (矩阵实验室) 的缩 写,所以他会认识矩阵,我们应该不会感到意外。我们用 A = 1, 2; 3, 4 指派一个 2x2 方阵给变量 A。 输入矩阵的时候,我们用中括号夹住两端,用逗号(,) 或者空格分开元素,用分号(;)分列。元素可以是常数、变 量和任何计算出来的数值。,例如 x = pi; B = pi, exp(1),log(2);sin(x/2),-cos(3*x/4),1+2(-2)+3(-2) 生成一个2x3 矩阵,并指派给变量 B。,Matlab是一个超级计算器以矩阵为物件。一般的计算 器或数值计算软件,都能做加减乘除这些运算,通常也都用 作为运算符,但是这些运算符都是作用在两个整数或者 有理数之间,很少能够作用在两个复数甚至是矩阵之间,而 Matlab 就可以。而且他还可以根据“物件”类型的不同而决 定该采取什么样的步骤来进行计算。 Matlab对于矩阵与矩阵之间的运算的处理方法与线形代数 中是相同的。,矩阵的加减运算 矩阵乘法 运算符:* 条件:前一个矩阵的列数和后一个矩阵的行数相同或者其中一个是标量。 (记忆:前一个矩阵行元素的个数与后一个矩阵列元素的个数相等) 矩阵除法 运算符:有两种运算符“/”(除以)和“”(除),分别表示右除和左 除。 区别 : 凡是按规则可以和 相乘的矩阵,都可以根据左乘和右乘作“除”或“除 以”的运算。 例如:线性联立方程式可以写成 Ax=b 的形式,其中 A 是一个n维可逆方 阵,b是一个n维向量,则,x = Ab 就是前述联立方程式的一组解。 例如以下线性联立方程式 可以如此求解:令 A = 4 6 -1; 5 -8 3; 1 4 1 b = 1 0 0 x = Ab 得到一組數值解 0.1667 0.0167 -0.2333,求特征值 函数eig()用来计算n 阶矩阵的特征值。 求方阵的行列式 把方阵看作行列式,则对应的行列式的值用函数det()来计算。 G=1 2 0;2 5 -1;4 10 -1; det(G) Ans= 1,向量: 向量可以看作是矩阵的组成元素。向量分为行向量和列向量。其中行 向量还可以看作是一组序列。一个行向量和一个列向量相乘得到一个1X1的 方阵,也就是一个纯量,这便是这两个向量的“内积”。例如 b = -3; -1; 0; 1和v = 2, 0, 2, 4 则,v * b 结果为一个纯量:-2 那既然向量是特殊的矩阵,那向量的加、减、乘运算都和矩阵的运算 法则相同。需要说的是向量的构造除了直接输入外,还有几种构造方法: 1、利用字符“:”来生成行向量; n:s:m 产生以s为间隔,从n开始,到“不超过”m的数。 对行向量的作转置运算就可以得到列向量。,2、利用内部函数产生; linspace(a,b,c) 产生首项为a,末项为b,项数为c的等差数列。 多项式 在MATLAB中,多项式用行向量表示。 在MATLAB中,用ploy(A)来产生行向量所对应的形如 所对应的多项式。此多项式还是行向量的形式。有一个函数 poly2sym(p,x) 可以将行向量形式的多项式转化为多项式形式。其中,p为要转换的行向 量,x为多项式中的变量。,多项式的运算 1、加减运算: 进行加减运算的多项式应该具有相同的阶次,如果阶 次不同,需要补零。 例:求两个多项式 和 的和、积、商。 a =5 4 3 2 1;b =3 0 1; c =a+0 0 b c= 5 4 6 2 2 对应的结果是 2、乘法 多项式乘法采用conv()函数。,3、除法 用deconv()函数实现多项式除法。不同的是多项式的除法需要指定商多项式和余数多项式两部分。计算多项式除法形如 div,rest=deconv() 4、微分 用函数polyder()来实现多项式的微分。 例如:求多项式 的微分。 p=2 -6 3 0 7; q= polyder(p) q= 8 -18 6 0 5、求根 求多项式的根,用函数roots。,6、求值 我们想要计算多项式中未知数为某个特定值时该多项式的值,这时, 我们会用到polyval函数。举例说明用法: polyval(p,1) Ans= 6 我们可以看出来,此语句是求多项式p当x=1时,多项式的值。 代表矩阵元素的变量 如果A是一个矩阵,则A是一个变量,MATLAB的精彩之处,就是变量 箱子可以储存一个数值,也可以储存一个矩阵。而变量储存矩阵的时候, 它会自动衍生出来元素变量、行变量和列变量。A( )括号内的数字都代表对 元素足标的操作。,例如: A(1,1) 代表A的(1,1)元素,MATLAB会回应它的值。如果要改变它,只要重 新指派它即可;例如 A(1,1) = 2 * A(1,1) 就是把A11元素置换成原来元素的两倍。 A(2,:) 代表 A 的第二列,也同樣可以置換它,例如 A(2,:) = -A(2,:) 就是把第二列每个元素都变号。 如果 x 代表一个向量,則它的元素变量可以用比较简单的形式: x(3) 就代表它的第三个元素 x3,而 x(3) = x(1) + x(2) 就是把 x3 置换成前两个 元素之和。,数组 1、一维数组 数组是一个长方形阵列,它可以具有不同的维数。在MATLAB中,一 行的矩阵,我们可以看作一个行向量,同时也可以看作是一个一维数组。 所以一维数组的构造方法与前面的矩阵和行向量的构造方法类似。 根据前面的内容,我们可以对已经构造好的数组中的某个元素进行操 作。例如: a=4:8; %构造数组 a(2) %取a的第二个元素 a(4 2 5 1) %把原来a数组的元素按4,2,5,1的次序重新排列 2、二维数组 从数据结构上看,矩阵和二维数组没有什么区别,构造方法类似于矩阵。,第3章 MATLAB的符号运算 介绍MATLAB的符号运算的概念和使用,前两章介绍的都是关于数值的运算,那还有一类运算,比如求极限, 对于这种运算我们知道会有一些x、y等的未知数的存在,对于这类运算, 我们就要用到符号计算的功能。 那前面我们知道MATLAB有很多工具箱,符号计算就是由符号数学工具 箱支持完成的。符号工具箱是在Maple软件的基础上完成的。当我们调用符 号函数,也就是请求MATLAB进行符号计算的时候,系统交给Maple进行计 算,计算完成后将结果返回系统的显示窗口。 符号变量和符号表达式 符号变量和符号表达式用sym函数来创建。如 x=sym(x) 运行后,符号变量x这口箱子里面存放字母x。 如果要同时创建几个符号变量,要用到syms函数。如 syms a b c x y,在定义了符号变量的基础上,就可以定义符号表达式。如 f=sym(a*x2+b*x+c) %定义符号表达式,并将它放入f这口箱子。 这样就可以很方便地分析一元二次方程 ,通过对f 执行符号操作,可以进行积分、微分等符号运算工作。如:对变量f求微 分,用微分函数diff()。 df=diff(f) 在符号表达式中,对于自变量的确定,如果事先没有指定自变量的 情况下,MATLAB会按照数学常规自行决定谁是自变量。确定原则:除了 和之外,最接近的小写字母被认定为自变量。 如果我们在编程的过程中,不能确定自变量,有一个函数可以告诉你: findsym,微积分 1、极限 求极限是微积分的基础,求极限的函数limit。 limit(f,x,a) %x趋近于a时,f 的极限 limit(f,x,a,left) %x左趋近于a时,f 的极限 limit(f,x,a,right) %x右趋近于a时,f的极限 看我们的教科书上p42的例题 2、微分 diff(f,t,n) %求f 对独立变量t的n次微分值 例:已知 %求f(x)的微分 3、积分 int(f,t,a,b) %求f 对独立变量t 在积分区间a,b的积分值 4、级数 自变量v在a,b之间取值时,对通项s求和。用函数symsum(s,v,a,b),F对自变量v的泰勒级数展开至n阶:toylor(F,v,n) 例:求sin(x)的前10项泰勒展开式。 方程求解 1、代数方程 solve(f) solve(f,a) 2、常微分方程 dsolve(常微分方程式,初始条件,自变量),上机遗留问题 1、求微分方程 的通解。 syms x y; dsolve(D2y+4*Dy+4*y=exp(-2*x),x) 2、解微分方程 。 dsolve(x2*Dy+x*y=y2,y(1)=1,x),第4章 计算结果的可视化 介绍MATLAB的两种基本绘图功能: 1、二维平面图形 2、三维立体图形,二维平面图形 1、基本图形函数 折线图 plot(x,y)函数 x,y是维度相同的序列或向量。比如: x=0 1 2; y=0 1 0; plot(x,y) 如果我们用300段折线画出sin(x)在-pi,pi区间內的折线图。想一想 会出现什么样的结果。 x = linspace(-pi, pi, 301); plot(x, sin(x),如果我们要画多条曲线,也可以用plot函数,不同的是把括号里面的x,y 写作:x,y1,x,y2,比如:画一条正弦曲线和余弦曲线。 x=0:pi/10:2*pi y1=sin(x) y2=cos(x) plot(x,y1,x,y2) plot(x,y1,r + -,x,y2,k * :) 我们可以看到:图形是以公共的x元素为横坐标值,y1,y2为纵坐标值绘 制曲线图的。 如果想要图形更加完美,我们可以用一些特殊的图形函数对它进行修 饰。 xlabel(独立变量X) ylabel(独立变量Y) ylabel(变量Y) title(正弦和余弦曲线),text(1.5,0.3,cos(x) gtext(sin(x) axis(0 2*pi -0.9 0.9) 如果只给plot( )一个参数,例如 plot(y) 而y是一个n 维向量或列。 则它的效果就相当于plot(1:n), y)。也就是说,Matlab以y的元素足标 作为它的橫轴坐标。试试看 y = 1 4 0 2 3 5; plot(y) 2、多重折线图 Matlab在一张图片上可以重复制图。基本上,画一张图的指令,将会自动清除前一张图。但是,如果下了指令hold on,将不会清除前一张图,而是重复画上去。下了hold on指令的所有图将会重迭在一张图片里,直到你下了hold off为止。,为了示范,让我们以 300 个折线段,在一张图片中,画出以下三个函 数在-pi, pi区间內的曲线图: sin(x), cos(x), x 做法如下。 x = linspace(0, 2*pi, 301); y = sin(x); plot(x, y, r); axis( 0 2*pi -1.2 1.2 ) hold on y = cos(x); plot(x, y, g); y = x; plot(x, y, b); hold off,我们还可以采用图形窗口分割的方法,在同一个视图窗口中画出多个小 图形。这时要用到subplot(n,m,k)。如果写subplot(2,2,1),即就是把图形 窗口分割成2行2列,在第1个位置(第1行第1列)画图。 x = linspace(0, 2*pi, 301); y = sin(x); subplot(2,2,1); plot(x, y); y = cos(x); subplot(2,2,2); plot(x, y); Matlab对数据是按列存储和计算的。,三维立体图形 1、三维曲线图 plot3函数调用格式:plot3(x1,y1,z1,x2,y2,z2,)。其中x1,y1,z1, x2,y2,z2等分别为维数相同的向量,分别存储着曲线的三个坐标值。 例 绘制方程 的空间方程。 t=0:pi/10:2*pi; x=t; y=sin(t); z=cos(t); plot3(x,y,z,r:p),grid on xlabel(X) ylabel(Y) zlabel(Z) title(sine and cosine) 2、三维网格图和曲面图 Matlab在绘制三维网格图与曲面图时,往往先将要绘制图形的定义区域 分成若干网格,然后计算这些网格节点上的二元函数值,最后才能使用 mesh和surf函数绘制相应的图形。生成网格矩阵使用meshgrid函数,其调 用格式为: U,V=meshgrid(x,y) 函数说明:利用向量x和y生成网格矩阵U和V,以便mesh和surf等函数 用来绘图。其中x、y分别是长度为n和m升序排列的行向量。,生成的方法是将x复制n次生成网格矩阵U,将y转置成列向量后复制m 次生成网格矩阵V。坐标(uij,vij)表示xoy平面上网格节点的坐标,第三维坐 标zij=f(uij,vij)。 例:给定向量x=1 2 3 4,y=10 11 12 13 14,试由向量x、y生成网 格矩阵。 x=1 2 3 4; %输入向量x y=10 11 12 13 14; %输入向量y U,V=meshgrid(x,y) %生成网格矩阵 z= peaks(n)生成一个n阶的高斯分布的方阵。 绘制三维网格图形或曲面图形使用的mesh和surf函数。 mesh函数及调用格式: mesh(X,Y,Z) 说明:在X、Y决定的网格区域上绘制数据Z的网格图。,surf(X,Y,Z)在XY确定的区域上绘制数据Z的三维曲面图。其中X、Y是 向量。 例:在-4x4,-4y4上绘制 的三维网格图。 x,y=meshgrid(-4:0,125:4); %定义网格数据向量x,y z=x.2+y.2; %计算二元函数值 mesh(x,y,z) %绘制三维网格图 3、观察点 函数view(azinmuth,elevation) azinmuth:方位角。观察点与坐标原点的连线在水平面上的投影和y轴负方向的夹角。(在水平面上) elevation:仰角。观察点与坐标原点的连线和水平面的夹角。(与水平面垂直) 动画 使用循环和观察点设定来实现动画效果。,第5章 MATLAB程序设计 1、命令文件和函数文件 2、基本控制结构和控制转移语句,命令文件: Matlab提供两种源程序文件格式:命令文件和函数文件。这两种文件的扩展名相同,均为“.m”,又称为“M文件”。 命令文件的执行方式:在提示符后键入命令文件的文件名。 命令文件适合于用户做需要理解得到结果的小规模运算。 函数文件: 函数文件由function语句引导。 其格式为: function 返回变量列表=函数名(输入变量列表),对于一个matlab程序员来说,编程序的一个主要内容就是如何将解决一 个应用问题所使用的算法用matlab语句和函数来描述出来。对于较复杂的 问题,我们就要通过组织程序的结构来实现。首先介绍构成程序的几个基 本结构。 、控制结构 Matlab提供三种常用控制结构:顺序结构、分支结构和循环结构。 顺序结构 顺序结构由两个程序模块串接构成。一个程序模块可以是一条语句、一 段程序或一个函数等。先执行程序模块1,再执行程序模块2, 在matlb编写程序时,实现顺序结构的方法非常简单:只需要将两个模块顺序排列就可以了。,选择结构 1)if-else-end语句 其格式为: if 逻辑表达式 程序模块1; else 程序模块2; end,2)switch语句 其格式为: switch 表达式 case 数值1 模块1; case 数值2 模块2; otherwise End 演示函数TranGrade,循环语句 1)while循环语句 其格式为: while 逻辑表达式 循环体 end 注释:当表达式的结果为真时,反复执行其循环体内的语句,直到逻辑表达式的值为假时退出循环。,1)for循环语句 其格式为: for 变量=初值:增量:结束值 程序模块; end 演示函数xunhuan,1.3.5 当前目录窗口和搜索路径 1当前目录窗口 当前目录是指MATLAB运行文件时的工作目录,只有在当前目录或搜索路径下的文件、函数可以被运行或调用。 在当前目录窗口中可以显示或改变当前目录,还可以显示当前目录下的文件并提供搜索功能。 将用户目录设置成当前目录也可使用cd命令。例如,将用户目录c:mydir设置为当前目录,可在命令窗口输入命令: cd c:mydir,2MATLAB的搜索路径 当用户在MATLAB命令窗口输入一条命令后,MATLAB按照一定次序寻找相关的文件。基本的搜索过程是: (1) 检查该命令是不是一个变量。 (2) 检查该命令是不是一个内部函数。 (3)

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论