1、第一节 MATLAB 概述一、MATLAB 语言的发展matlab 语言是由美国的 Clever Moler 博士于 1980 年开发的 它将一个优秀软件的易用性与可靠性、通用性与专业性 、一般目的的应用与高深的科学技术应用有机的相结合一、MATLAB 的主要功能:强大的数值(矩阵)运算功能1.矩阵运算功能2.符号运算功能 符号运算即用字符串进行数学分析 允许变量不赋值而参与运算 用于解代数方程、微积分、复合导数、积分、二重积分、有理函数、微分方程、泰乐级数展开、寻优等等,可求得解析符号解3.丰富的绘图功能与计算结果的可视化 具有高层绘图功能两维、三维绘图 具有底层绘图功能句柄绘图 使用 pl
2、ot 函数可随时将计算结果可视化4.图形化程序编制功能 动态系统进行建模、仿真和分析的软件包 用结构图编程,而不用程序编程 只需拖几个方块、连几条线,即可实现编程功能6.MATLAB 的兼容功能 可与 C 语言、FORTURE 语言跨平台兼容 用函数 CMEX、FMEX 实现7.MATLAB 的容错功能8.MATLAB 的开放式可扩充结构 9.强大的联机检索帮助系统matlab 的函数类型simple 未加载的内部函数、m 文件overloaded 加载的内部函数、m 文件subfunction 子函数 constructor matlab 类的创建函数private 局部函数四、matlab
3、 的程序结构matlab 语言的程序结构与其它高级语言是一致的,分为顺序结构,循环结构,分支结构。(1).顺序结构 依次顺序执行程序的各条语句(2).循环结构 被重复执行的一组语句,循环是计算机解决问题的主要手段。循环语句主要有: for end while end 循环(3). 分支结构根据一定条件来执行的各条语句。if else end 语句2.1.2 数据类型 数据类型包括数值型、字符串型、元胞型、构架型等。数值型有单精度型、双精度型和整数型。整数型有 uint8,uint16,uint32 和 uint64 等无符号型和 int8,int16,int32 和 int64 等符号型整数。
4、 数值型数据可以用带小数点的形式和科学计数法表示,数值的表示范围是 10-30910+309。 -20、1.25、2.88e-56(表示 2.8810-56)、7.68e204(表示 7.6810204) 都是合法的数据表示。 一般在计算时采用双精度型,在输出时有多种数值显示格式可供选择。 数值显示的格式可通过 format 命令设置2.2 变量2.2.1 变量的命名变量的命名规则为:1 变量名必须以字母开头,变量名的组成可以是任意字母、数字或者下划线,但不能含有空格和标点符号。2 关键字和函数名不能作为变量名。3 变量名不能超过 63 个字符。4 变量名区分字母的大小写,即大小写敏感。2.2
5、.2 变量的赋值MATLAB 赋值语句有两种格式:(1) 变量=表达式 (2) 表达式 %将表达式的值赋给预设变量 ans2.2.3 特殊变量(预定义变量) eps MATLAB 定义的正的极小值 2.2204e-16 realmax 最大的正实数 1.7977e+308 realmin 最小的正实数 2.2251e-308 pi 内建的 值 i, j 虚数单位 i=j= inf 数值运算的功能创建矩阵矩阵运算多项式运算线性方程组数值统计线性插值函数优化微分方程的数值解一、命令行的基本操作1. 创建矩阵的方法直接输入法规则: 矩阵元素必须用 括住 矩阵元素必须用逗号或空格分隔 在 内矩阵的行与
6、行之间必须用分号分隔二、矩阵运算1. 矩阵加、减(,)运算规则: 相加、减的两矩阵必须有相同的行和列两矩阵对应元素相加减。 允许参与运算的两矩阵之一是标量。标量与矩阵的所有元素分别进行加减操作。2. 矩阵乘()运算规则:A 矩阵的列数必须等于 B 矩阵的行数标量可与任何矩阵相乘。3 矩阵乘方 an,ap,paa p a 自乘 p 次幂4. 矩阵的其它运算 inv 矩阵求逆det 行列式的值eig 矩阵的特征值diag 对角矩阵 矩阵转置sqrt 矩阵开方5. 矩阵的数组运算 1. 数组加减(.+,.-)a.+ba.- b2. 数组乘除(,./,.)ab a,b 两数组必须有相同的行 和列两数组
7、相应元素相乘。a./b=b.a a.b=b./a 都是 a 的元素被 b 的对应元素除3. 数组乘方(.) 元素对元素的幂三、 多项式运算 matlab 语言把多项式表达成一个行向量,该向量中的元素是按多项式降幂排列的。f(x)=anxn+an-1xn-1+loa0可用行向量 p=an an-1 a1 +a0表示1. poly 产生特征多项式系数向量2.roots 求多项式的根3.conv,convs 多项式乘运算4.deconv 多项式除运算d,r=deconv(c,a)c 除 a 后的整数 余数四、代数方程组求解matlab 中有两种除运算左除和右除。对于方程 ax=b,a 为 anm 矩
8、阵,有三种情况: 当 n=m 时,此方程成为“恰定”方程 当 nm 时,此方程成为“超定”方程 当 nm 时,此方程成为“欠定”方程五、微分方程求解微分方程求解的仿真算法有多种,常用的有 Euler(欧拉法) 、Runge Kutta(龙格-库塔法。Euler 法称一步法,用于一阶微分方程七、函数优化寻优函数:fmin 单变量函数无约束条件fmins 多变量函数 constr 有约束条件八、数据分析与插值函数max 各列最大值 mean 各列平均值sum 各列求和九、拟合与插值1. 多项式拟合2.插值插值的定义是对某些集合给定的数据点之间函数的估值方法。当不能很快地求出所需中间点的函数时,插值
9、是一个非常有价值的工具。Matlab 提供了一维、二维、 三次样条等许多插值选择符号对象9.1.1 建立符号对象1建立符号变量和符号常量(1) sym 函数0)(,yxfdtysym 函数用来建立单个符号量,一般调用格式为:符号量名=sym(符号字符串)(2) syms 函数syms 函数的一般调用格式为:syms 符号变量名 1 符号变量名 2 符号变量名 n2建立符号表达式含有符号对象的表达式称为符号表达式9.1.2 符号表达式运算1符号表达式的四则运算符号表达式的加、减、乘、除运算可分别由函数 symadd、symsub、symmul 和symdiv 来实现,幂运算可以由 sympow
10、来实现。2符号表达式的提取分子和分母运算其一般调用格式为:n,d=numden(s)该函数提取符号表达式 s 的分子和分母,分别将它们存放在 n 与 d 中。9.1.3 符号表达式中变量的确定MATLAB 中的符号可以表示符号变量和符号常量。findsym 可以帮助用户查找一个符号表达式中的的符号变量。该函数的调用格式为:findsym(s,n)函数返回符号表达式 s 中的 n 个符号变量,若没有指定 n,则返回 s 中的全部符号变量。9.1.4 符号矩阵符号矩阵也是一种符号表达式,曾介绍过的许多应用于数值矩阵的函数,如diag、triu、tril、inv、det、rank、eig 等,也可直
11、接应用于符号矩阵。9.2 符号微积分9.2.1 符号极限limit 函数的调用格式为:求符号函数 f(x)的极限值、(1) limit(f,x,a): (2) limit(f,a):(3) limit(f):9.2.2 符号导数diff 函数用于对符号表达式求导数。该函数的一般调用格式为:diff(s):diff(s,v): diff(s,n): diff(s,v,n):9.2.3 符号积分符号积分由函数 int 来实现。该函数的一般调用格式为:int(s): int(s,v): int(s,v,a,b):求定积分运算。9.2.4 积分变换常见的积分变换有傅立叶变换、拉普拉斯变换和 Z 变换。
12、1傅立叶(Fourier)变换在 MATLAB 中,进行傅立叶变换的函数是:fourier(f,x,t):求函数 f(x)的傅立叶像函数 F(t)。ifourier(F,t,x):求傅立叶像函数 F(t)的原函数 f(x)。2拉普拉斯(Laplace)变换在 MATLAB 中,进行拉普拉斯变换的函数是:laplace(fx,x,t):求函数 f(x)的拉普拉斯像函数 F(t)。ilaplace(Fw,t,x):求拉普拉斯像函数 F(t)的原函数 f(x)。3Z 变换当函数 f(x)呈现为一个离散的数列 f(n)时,对数列 f(n)进行 z 变换的 MATLAB函数是:ztrans(fn,n,z
13、):求 fn 的 Z 变换像函数 F(z)。iztrans(Fz,z,n):求 Fz 的 z 变换原函数 f(n)。9.3 级 数9.3.1 级数符号求和求无穷级数的和需要符号表达式求和函数 symsum,其调用格式为:symsum(s,v,n,m)9.3.2 函数的泰勒级数taylor 函数将函数展开为幂级数,其调用格式为:taylor(f,v,n,a)9.4 符号方程求解9.4.1 符号代数方程求解求解用符号表达式表示的代数方程可由函数 solve 实现,其调用格式为:solve(s): solve(s,v): solve(s1,s2,sn,v1,v2,vn):、9.4.2 符号常微分方程
14、求解符号常微分方程求解可以通过函数 dsolve 来实现,其调用格式为:dsolve(e,c,v)dsolve 在求常微分方程组时的调用格式为:dsolve(e1,e2,en,c1,cn,v1,vn)丰富的 MATLAB 工具箱 MATLAB 主工具箱 符号数学工具箱 SIMULINK 仿真工具箱 控制系统工具箱 信号处理工具箱 图象处理工具箱 通讯工具箱 系统辨识工具箱 神经元网络工具箱 金融工具箱应用 matlab 能在各领域做什么 工业研究与开发 数学教学,特别是线性代数 数值分析和科学计算方面的教学与研究 电子学、控制理论和物理学等工程和科学学科方面的教学与研究 经济学、化学和生物学等计算问题的所有其他领域中的教学与研究