MATLAB语言程序设计

上传人:平*** 文档编号:47565192 上传时间:2018-07-03 格式:PPT 页数:46 大小:479.14KB
返回 下载 相关 举报
MATLAB语言程序设计_第1页
第1页 / 共46页
MATLAB语言程序设计_第2页
第2页 / 共46页
MATLAB语言程序设计_第3页
第3页 / 共46页
MATLAB语言程序设计_第4页
第4页 / 共46页
MATLAB语言程序设计_第5页
第5页 / 共46页
点击查看更多>>
资源描述

《MATLAB语言程序设计》由会员分享,可在线阅读,更多相关《MATLAB语言程序设计(46页珍藏版)》请在金锄头文库上搜索。

1、第2章 MATLAB语言程序设计基础 2.1 MATLAB语言数据类型 2.2 数值运算 2.3 符号运算 2.4 MATLAB语言程序控制结构 2.5 M文件概述 2.6 MATLAB图形绘制 2.7 实例解析本章目标:了解MATLAB语言程序设计 及图形绘制的基本内容2.1 MATLAB语言数据类型 MATLAB支持的基本数据类型见下图。MATLAB的数据类型一、变量与常量 v变量是任何程序设计语言的基本元素之一,它是指其数值在数据处理的 过程中可能会发生变化的一些数据量名称。而常量则是指在计算过程中 数值不发生变化的量。vMATLAB语言变量有如下特点:不要求对所使用的变量进行事先声明

2、,也不需要指定变量类型,MATLAB会自动根据所赋予变量的值或对变 量所进行的操作来确定变量的类型;在赋值过程中,如果变量已经存 在,MATLAB会用新值代替旧值,并以新的变量类型代替旧的变量类型 。v如果没有事先声明,MATLAB中的变量指的是局部变量。此外用户还可 以使用global()函数来定义全局变量,全局变量可以用于不同函数文件之 间的传递,但也正是由于全局变量的这种特性使得程序的可读性降低甚 至容易出错,所以建议读者一般不要使用全局变量。MATLAB语言中还有一些预定义的变量,这些变量即称为常量。 下表列出了MATLAB语言中常用的几个常量。常量名常量值常量名常量值i,jrealm

3、in最小的正浮点数2.2251e-308pirealmax最大的正浮点数1.7977e+308eps浮点运算相对精度2.2204e-016Inf或inf无穷大(如1/0)NaN或nan不定值(如0/0,/,0)注:NaN与Inf的乘积仍为NaN。二、数值型数据 数值型数据包括整数(带符号和无符号)和浮点数(单精度和双精度)。 在缺省(默认)状态下,MATLAB将所有的数都看作是双精度的浮点数。 使用整型变量和单精度变量可以节约内存空间。 三、符号型数据 符号型数据是一般科学计算软件所不具有的,它可以用于公式的推导 和数学问题的解析解法。在进行解析运算前需要首先将采用的变量申明为 符号变量,这需

4、要用syms()函数实现 。例如:syms a b;四、字符串 字符与字符串运算是各种高级语言不可缺少的部分,它可以用来表示 一些MATLAB函数的属性值,并用于显示中英文内容等。MATLAB具有强 大的字符处理能力。 1、字符串的定义 MATLAB提供了以下几种方法来定义一个字符串: 直接用单引号赋值; 利用char()函数结合ASCII码来生成字符串(因为字符串中的字符 是以ASCII码存储的,所以大小写是有区别的,可以用double()函数 或abs()函数查看一个字符串的ASCII码); 利用字符数组生成字符串。例如:用户可以在命令窗口中输入如下语句: s1=I love matlab

5、 % 方式1 s2=char(73 32 108 111 118 101 32 109 97 116 108 97 98) % 方式2 s3=I, ,l,o,v,e, ,m,a,t,l,a,b % 方式32、字符串的连接 字符串可以利用“ ”运算符进行拼接,不过拼接字符串时需要注意以下 两点: 若使用“,”作为不同字符串之间的间隔,则相当于扩展字符串成为更长的 字符串向量。 若使用“;”作为不同字符串之间的间隔,则相当于扩展字符串成为二维或 者多维的数组,这时,不同行上的字符串必须具有同样的长度,此外还可以利用MATLAB提供的函数实现字符串的拼接: strcat()函数实现字符串水平连接 s

6、trvcat()函数实现字符串垂直连接 五、元胞与结构体型数据1、元胞数组用户可以使用以下两种方法来建立一个元胞数组。用赋值语句直接定 义;由cell()函数预先分配存储空间,然后对细胞的每个元素逐个赋值 。元胞数组中元素一般可以用Am,n或A(m,n)这两种方式来调用,它们的 不同之处在于:Am,n得到的结果的类型为元素自身的类型,而A(m,n) 的数据类型为元胞数组类型。 2、结构数组 结构体是MATLAB中比元胞数组更广义的数组,它的每一个元素都称为域, 域中可以存放任意类型的数据结构。与其他数组不同的是结构数组用域名来调 用域的内容。结构数组具有层次数据结构,它可以描述一个班级下的每个

7、学生 的姓名、性别、课程和得分这样的层次结构。该层次的结构可以存放广泛的数 据类型,如典型的MATLAB图形结构就是用结构数组来组织的,由屏幕、菜单、 图形和修饰图形的元素自上而下这样的层次组成。 同元胞数组类似,结构数组的创建也有两种方法: 用赋值语句直接定义; 用结构函数structure()来直接产生。 六、不同数据类型之间的转化 MATLAB提供了丰富的函数来实现常用数据类型间的转换,具体见下图。 注:上图中的S2N包括:str2int,str2num,str2mat,sscanf等; N2S包括: int2str,num2str,mat2str,sprintf等。 2.2 数值运算

8、一、矩阵及其运算 MATLAB中是以矩阵作为基本编程单元的,所以矩阵运算十分重要。 1、矩阵的输入 在MATLAB中,输入矩阵可有以下几种方法: a) 输入元素列表;(a=1 2 3;4 5 6;7 8 9) b) 从外部数据文件中读取矩阵;(load data.mat) c) 利用MATLAB内部函数与工具箱函数产生矩阵;(a=eye(4) d) 用户自己编写语句产生矩阵。(r=5-10*rand(2, 3) 2、矩阵的基本运算矩阵的基本运算主要包括矩阵的代数运算、逻辑运算和关系运算。代 数运算主要包括矩阵转置(通过“”或transpose函数实现)、矩阵加(+)、 减(-)、乘(*)、除(

9、左除”,右除”/“)、乘方()和点(.)运算;逻辑运算包 括与(vy=t+i*t.*sin(t);vr=abs(y);theta=angle(y); %求极半径和极角v% theta,r = cart2pol(t,t.*sin(t);vsubplot 121,plot(y),title(直角坐标图)vsubplot 122,polar(theta,r),title(极坐标图) 输出结果如右图所示。 2、复数的基本运算 复数的基本运算包括求复数的实虚部、幅值和 相角以及其共轭复数等。相关的操作函数为: real,imag,abs,angle和conj。3、留数的计算由复变函数课程的学习可知,留数

10、的计算可以最终归结为极限的计 算,下面仅介绍留数在MATLAB中的求解。相关的实现语句如下:vc=limit(F*(z-z0),z,z0) % 单奇点vc=limit(diff(F*(z-z0)m,z,m-1)/prod(1:m-1),z,a) % m重奇点这里需要对上述两个函数作一点说明:limit()函数是求极限的函数, prod()函数是求连乘的函数。例如:vsyms x; limit(sin(x)/x)vans =1 vprod(1 3 6 4 7)vans =5042.3 符号运算 一、符号微积分 1、符号极限vMATLAB语言的符号运算工具箱提供的limit()函数可以用来求解极限

11、问题。其具 体调用格式如下:vL=limit(F,x,a)vL=limit(F,x,a,right或left)v其中,F为极限表达式且必须为符号表达式;x为符号自变量,求解之前应先用 syms x声明,若x=findsym(F)则可省略;a为极限点,可以是一个确定的值、函数 或无穷;right或left是单边极限的定义,给出左右选项。 2、符号导数v如果函数和自变量都已知,且均为符号变量,则可以用diff()函数解出给定函数 的各阶导数,该函数的调用格式为:vdF=diff(F,x,n)v其中,n为求导的阶次,缺省值为1。其余参数同limit()函数。 3、符号积分 MATLAB符号运算工具箱

12、中提供的int()函数可以直接用来求取积分问题的解析解。该函数的常用 调用格式为:I=int(f,x) % 求不定积分I=int(f,x,a,b) % 求定积分其中f为被积函数,x是自变量,a,b是积分区间,可以为确定的值,函数或无穷。 4、符号级数l级数展开单变量函数的Taylor幂级数展开v单变量函数的Taylor幂级数展开可以用符号工具箱的taylor()函数直接导出,其调用格式为vr=taylor(f,x,n,a)v其中f为函数的符号表达式,x为符号自变量,若函数只有一个自变量,则x可以省略,n为需 要展开的项数,默认值为6,a为函数展开点,表明需要获得关于x=a的幂级数展开,a的默认

13、 值为0。多变量函数的Taylor幂级数展开vMATLAB并未提供计算多变量函数Taylor幂级数展开的直接函数,但它可以调用maple语言中 的mtaylor()函数来直接求取多变量函数的Taylor幂级数展开。该函数的调用格式如下:vT=maple(mtaylor,f,x1,x2,.,xn,n) % 格式1vT=maple(mtaylor(f,x1,x2,.,xn,n) % 格式2vT=maple(mtaylor,f,x1=a1,x2=a2,.,xn=an,n) % 格式3vT=maple(mtaylor(f,x1=a1,x2=a2,.,xn=an,n) % 格式4v其中格式1与格式2等价

14、,格式3与格式4等价,格式1与格式2主要用于求解原点处的Taylor展 开,格式3和格式4主要用于求解(a1,a2,.,an)处的Taylor展开,n-1为展开的最高阶次。 Fourier级数展开v给定周期函数 ,其中 ,我们可以人为地对该函数在其他区间上进行周期延拓 ,使得这样可以根据需要将其写成下面的级数形式:其中该级数称为Fourier级数。根据上述公式这里编写了函数fseriessym和fseriesquadl 来求解函数的 Fourier级数展开。具体的源文件参看教材。l级数的求和 MATLAB符号运算工具箱提供的symsum()函数可以用于求解已知通项的有穷或无穷级数的和 。 该函

15、数的调用格式为:r = symsum(s,v,a,b),其中,s为级数的通项,v为级数自变量,a和b为 级数求和的起始项和终止项,并可以将起始项或终止项设置成无穷量inf。如果s变量中只含有 一个变量,则在函数调用时可以省略v。 5、符号积分变换lFourier变换及其逆变换 MATLAB提供了专门的Fourier变换的求解函数:fourier()和ifourier()。这两个函数的调用格式如下 : Fw = fourier(ft,t,w) ft = ifourier(Fw,w,t)lLaplace变换及其逆变换 MATLAB中提供了专门的Laplace变换求解函数:laplace()和ilaplace()。这两个函数的调用格式如下 : Fs=laplace(ft,t,s) ft=ilaplace(Fs,s,t)lZ变换及其逆变换 MATLAB中提供了专门的Z变换求解函数:ztrans()和iztrans() 。这两个函数的调用格式如下: FZ = ztrans(fn,n,z) fn = iztrans(FZ,z,n)二、符号方程的求解 1、符号代数方程的求解 v一般代数方程包括线性(Linear)、非线性(Nonlinear)和超越(Transcendental)方程等, MATLAB提供了统一的求解函数solve(),该函

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 中学教育 > 教学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号