好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

Matlab程序语言设计基础.ppt

57页
  • 卖家[上传人]:re****.1
  • 文档编号:590610179
  • 上传时间:2024-09-14
  • 文档格式:PPT
  • 文档大小:792KB
  • / 57 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 第第 2 2 章章MATLAB 语言程序设计基础语言程序设计基础1 n nMATLAB 语言的简洁高效性语言的简洁高效性n nMATLAB 语言的科学运算功能语言的科学运算功能n nMATLAB 语言的绘图功能语言的绘图功能n nMATLAB 庞大的工具箱与模块集庞大的工具箱与模块集n nMATLAB 强大的动态系统仿真功能强大的动态系统仿真功能 MATLABMATLAB 语言是当前国际上自动控制领域的首选语言是当前国际上自动控制领域的首选语言是当前国际上自动控制领域的首选语言是当前国际上自动控制领域的首选计算机语言,也是很多理工科专业最适合的计算机数计算机语言,也是很多理工科专业最适合的计算机数计算机语言,也是很多理工科专业最适合的计算机数计算机语言,也是很多理工科专业最适合的计算机数学语言2 本章主要内容本章主要内容n nMATLAB 程序设计语言基础程序设计语言基础n n基本数学运算基本数学运算n nMATLAB的程序设计的程序设计n nMATLAB语言流程控制语言流程控制n nMATLAB 函数的编写函数的编写3 2.1 MATLAB 程序设计语言基础程序设计语言基础n nMATLAB 的保留常量的保留常量n nepseps, i, j, pi, , i, j, pi, NaNNaN, , InfInfn nlastwarnlastwarn, , lasterrlasterr n nMATLAB 语言的变量名规则语言的变量名规则n n由一个字母引导,后面可以为其他字符由一个字母引导,后面可以为其他字符由一个字母引导,后面可以为其他字符由一个字母引导,后面可以为其他字符n n区分大小写区分大小写区分大小写区分大小写 AbcAbc ABcABcn n有效有效有效有效 MYvar12, MY_Var12MYvar12, MY_Var12 和和和和 MyVar12_MyVar12_n n错误的变量名错误的变量名错误的变量名错误的变量名 12MyVar, _MyVar1212MyVar, _MyVar12 4 数值型数据结构数值型数据结构n n双精度数值变量双精度数值变量n nIEEEIEEE标准,标准,标准,标准,6464位位位位 (8(8字节字节字节字节) ),,,,1111指数位,指数位,指数位,指数位,5353数值数值数值数值位和一个符号位位和一个符号位位和一个符号位位和一个符号位n n n ndouble( ) double( ) 函数的转换函数的转换函数的转换函数的转换n n其他数据类型其他数据类型n nuint8uint8,无符号的,无符号的,无符号的,无符号的8 8位整形数据类型位整形数据类型位整形数据类型位整形数据类型, ,常用于图像常用于图像常用于图像常用于图像表示和处理表示和处理表示和处理表示和处理n nint8( ), int16( ), int32( ),uint16( ), uint32( )int8( ), int16( ), int32( ),uint16( ), uint32( )5 符号型变量数据类型符号型变量数据类型n n符号型,符号型,sym(A), 常用于公式推导常用于公式推导n n 变量声明变量声明变量声明变量声明n n 采用变精度函数求值采用变精度函数求值采用变精度函数求值采用变精度函数求值【【例例2-1】】求出求出 p p 的的 300 位有效数字位有效数字6 MATLAB 支持的其他数据结构支持的其他数据结构n n字符串型数据:用单引号括起来字符串型数据:用单引号括起来 n n多维数组:是矩阵的直接扩展,多个下标多维数组:是矩阵的直接扩展,多个下标n n单元数组:将不同类型数据集成到一个变单元数组:将不同类型数据集成到一个变量名下面,用量名下面,用{ }表示表示n n结构体:结构体:A.b,, 引用也用引用也用 A.b,,不是不是A->bn n类与对象:可以定义重载函数类与对象:可以定义重载函数7 一、命令行的基本操作一、命令行的基本操作创建矩阵的方法创建矩阵的方法创建矩阵的方法创建矩阵的方法n n直接输入法直接输入法直接输入法直接输入法规则:规则:规则:规则:  矩阵元素必须用矩阵元素必须用矩阵元素必须用矩阵元素必须用[ ][ ]括住括住括住括住  矩阵元素必须用逗号或空格分隔矩阵元素必须用逗号或空格分隔矩阵元素必须用逗号或空格分隔矩阵元素必须用逗号或空格分隔     在在在在[ ][ ]内矩阵的行与行之间必须内矩阵的行与行之间必须内矩阵的行与行之间必须内矩阵的行与行之间必须 用分号分隔用分号分隔用分号分隔用分号分隔8 矩阵元素可以是任何矩阵元素可以是任何MATALB表达式表达式 ,可以是实数,可以是实数 ,也可以是复数,复数可,也可以是复数,复数可用特殊函数用特殊函数i,,j 输入输入 a=[1 2 3;4 5 6] x=[2 pi/2; sqrt(3) 3+5i] 矩阵元素矩阵元素9 符号的作用符号的作用n 逗号和分号的作用逗号和分号的作用   逗号和分号可作为指令间的分隔符,逗号和分号可作为指令间的分隔符,MATLAB允许多条语句在同一行出现。

      允许多条语句在同一行出现   分号如果出现在指令后,屏幕上将分号如果出现在指令后,屏幕上将不显示结果不显示结果10 注意注意:只要是赋过值的变量,不管是否在:只要是赋过值的变量,不管是否在屏幕上显示过,都存储在工作空间中,以屏幕上显示过,都存储在工作空间中,以后可随时显示或调用后可随时显示或调用变量名尽可能不要变量名尽可能不要重复,否则会覆盖重复,否则会覆盖 当一个指令或矩阵太长时,可用当一个指令或矩阵太长时,可用•••续续行行11 2.用用MATLAB函数创建矩阵函数创建矩阵n n 空阵空阵 [ ] — MATLAB允许输入空阵,允许输入空阵, 当一项操作无结果时,返回空阵当一项操作无结果时,返回空阵n n rand —— 随机矩阵随机矩阵n n eye —— 单位矩阵单位矩阵n n zeros ——全部元素都为全部元素都为0的矩阵的矩阵n n ones ——全部元素都为全部元素都为1的矩阵的矩阵12 还有伴随矩阵、稀疏矩阵、魔方矩阵、还有伴随矩阵、稀疏矩阵、魔方矩阵、对角矩阵、范德蒙等矩阵的创建对角矩阵、范德蒙等矩阵的创建注意:注意:MATLAB严格区分大小写字母严格区分大小写字母,,因此因此a与与A是两个不同的变量是两个不同的变量 MATLAB函数名必须小写函数名必须小写13 3. 矩阵的修改矩阵的修改 直接修改直接修改 可用可用 键找到所要修改的矩阵,用键找到所要修改的矩阵,用键键移动到要修改的矩阵元素上即可修改移动到要修改的矩阵元素上即可修改。

       指令修改指令修改 可以用可以用A( , )=   来修改14 例如例如:>>a=[1 2 0;3 0 5;7 8 9]a =1 2 0 3 0 5 7 8 9>>a(3,3)=0a =1 2 0 3 0 5 7 8 0还可以用函数还可以用函数subs修修改改15 把把MATLAB工作空间中一些有用的数工作空间中一些有用的数据长久保存下来的方法是生成据长久保存下来的方法是生成mat数据文数据文件  save —— 将工作空间中所有的变量存将工作空间中所有的变量存到到matlab.mat文件中二、数据的保存与获取二、数据的保存与获取默认文件名默认文件名16  save data——将工作空间中所有的将工作空间中所有的变量存到变量存到data.mat文件中 save data a b ——将工作空间中将工作空间中a和和b变量存到变量存到data.mat文件中 下次运行下次运行matlab时即可用时即可用load指令调指令调用已生成的用已生成的mat文件。

      文件17 load ——load data ——load data a b —— mat文件是标准的二进制文件,文件是标准的二进制文件,还可以还可以ASCII码形式保存码形式保存即可恢复保即可恢复保存过的所有存过的所有变量变量18 MATLAB 的基本语句结构的基本语句结构n n直接赋值语句直接赋值语句【【例例2-2】】表示矩阵表示矩阵19 【【例例2-32-3】】 试输入复数矩阵试输入复数矩阵需要避免的语句需要避免的语句20 n n函数调用语句函数调用语句n n冒号表达式冒号表达式21 n 冒号的作用冒号的作用 用于生成等间隔的向量,默认间用于生成等间隔的向量,默认间隔为隔为1 用于选出矩阵指定行、列及元素用于选出矩阵指定行、列及元素 循环语句循环语句22 【【例例2-42-4】】 用不同的步距生成用不同的步距生成 (0,(0,p p) ) 间向量间向量23 子矩阵提取n n基本语句格式基本语句格式n n【【例例2-5】】子矩阵提取子矩阵提取n n提取提取提取提取 A A 矩阵全部奇数行,所有列矩阵全部奇数行,所有列矩阵全部奇数行,所有列矩阵全部奇数行,所有列n n 提取提取提取提取 A A 矩阵矩阵矩阵矩阵 3,2,1 3,2,1 行、行、行、行、2,3,4 2,3,4 列构成子矩阵列构成子矩阵列构成子矩阵列构成子矩阵n n将将将将 A A 矩阵左右翻转矩阵左右翻转矩阵左右翻转矩阵左右翻转 “ “end”end”表示某一表示某一表示某一表示某一维数中的最大值维数中的最大值维数中的最大值维数中的最大值24 2.2 2.2 基本数学运算基本数学运算n n2.2.1 矩阵的代数运算矩阵的代数运算n n2.2.2 矩阵的逻辑运算矩阵的逻辑运算n n2.2.3 矩阵的比较运算矩阵的比较运算n n2.2.4 解析结果的化简与变换解析结果的化简与变换n n2.2.5 基本数论运算基本数论运算n n2.2.6 多项式运算多项式运算25 2.2.1 矩阵的代数运算矩阵的代数运算n n矩阵表示矩阵表示n n矩阵转置矩阵转置n n数学表示数学表示数学表示数学表示 n nMATLABMATLAB 求解求解求解求解共轭转置共轭转置26 n n矩阵加减法矩阵加减法规则:规则: 相加、减的两矩阵必须有相同的行和列,相加、减的两矩阵必须有相同的行和列,两矩阵对应元素相加减。

      两矩阵对应元素相加减 允许参与运算的两矩阵之一是标量标量允许参与运算的两矩阵之一是标量标量与矩阵的所有元素分别进行加减操作与矩阵的所有元素分别进行加减操作27 n n矩阵乘法矩阵乘法n n数学表示数学表示数学表示数学表示n nMATLAB MATLAB 表示表示表示表示 n n注意相容性注意相容性注意相容性注意相容性 规则:规则:• A矩阵的列数必须等于矩阵的列数必须等于B矩阵的行数矩阵的行数• 标量可与任何矩阵相乘标量可与任何矩阵相乘28 n n矩阵除法矩阵除法n n矩阵左除:矩阵左除:矩阵左除:矩阵左除:AX AX = = B B,,,,求求求求 X Xn nMATLAB MATLAB 求解:求解:求解:求解:X X= =A\BA\Bn n矩阵右除:矩阵右除:矩阵右除:矩阵右除:XA XA = = B B,,,,求求求求 X Xn n MATLAB MATLAB求解:求解:求解:求解:X X= =B/AB/A29 n n矩阵翻转矩阵翻转n n左右翻转左右翻转左右翻转左右翻转 n n上下翻转上下翻转上下翻转上下翻转n n旋转旋转旋转旋转 9090o on n如何旋转如何旋转如何旋转如何旋转180180o o???? § 矩阵的变维矩阵的变维 >>a=1:12; >>b=reshape(a,3,4) >>c=zeros(3,4); >>c(:)=a(:) 30 n n矩阵乘方矩阵乘方n n A A 为方阵,求为方阵,求为方阵,求为方阵,求n n MATLAB MATLAB 实现:实现:实现:实现: a ^ p —— a 自乘p次幂 方阵方阵>1的的整数整数对于对于p的其它值的其它值,计算将涉及特征值和特征向量;计算将涉及特征值和特征向量;如果如果p是矩阵,是矩阵,a是标量,是标量,a^p使用特征值和特征向使用特征值和特征向量自乘到量自乘到p次幂;次幂;如如a,p都是矩阵,都是矩阵,a^p则无意义。

      则无意义31 >> a=[1,2,3;4,5,6;7,8,9]; >>a^2 ans =30 36 42 66 81 96 102 126 150 当一个方阵有复数特征值或负实特征值时,当一个方阵有复数特征值或负实特征值时,非整数幂是复数阵非整数幂是复数阵32 >>a^0.5 ans = 0.4498 + 0.7623i 0.5526 + 0.2068i 0.6555 -0.3487i0.4498 + 0.7623i 0.5526 + 0.2068i 0.6555 -0.3487i 1.0185 + 0.0842i 1.2515 + 0.0228i 1.4844 - 0.0385i 1.0185 + 0.0842i 1.2515 + 0.0228i 1.4844 - 0.0385i 1.5873 - 0.5940i 1.9503 - 0.1611i 2.3134 + 0.2717i 1.5873 - 0.5940i 1.9503 - 0.1611i 2.3134 + 0.2717i33 数组运算指元素对元素的算术运算,与通常意义上的数组运算指元素对元素的算术运算,与通常意义上的数组运算指元素对元素的算术运算,与通常意义上的数组运算指元素对元素的算术运算,与通常意义上的由符号表示的线性代数矩阵运算不同由符号表示的线性代数矩阵运算不同由符号表示的线性代数矩阵运算不同由符号表示的线性代数矩阵运算不同1 1、、、、 数组加减数组加减数组加减数组加减(.+, .-)(.+, .-) a.+b a.+b a.- b a.- b§ 矩阵的数组运算(点运算)矩阵的数组运算(点运算) 对应元素相加减(与矩阵加减等效)对应元素相加减(与矩阵加减等效)34 2、、 数组乘除数组乘除(  ,,./,,.\))a a      b —— b —— a a,b,b两数组必须有相同的行和列两数组必须有相同的行和列两数组必须有相同的行和列两数组必须有相同的行和列, ,两数组相两数组相两数组相两数组相应应应应 元素相乘。

      元素相乘元素相乘元素相乘>>a=[1 2 3;4 5 6;7 8 9];>>a=[1 2 3;4 5 6;7 8 9];>>b=[2 4 6;1 3 5;7 9 10];>>b=[2 4 6;1 3 5;7 9 10];>>a.*b>>a.*bans =ans = 2 8 18 2 8 18 4 15 30 4 15 30 49 72 90 49 72 90 a*bans = 25 37 46 55 85 109 85 133 17235 a./b=b.\aa.\b=b./aa./b=b.\a — 都是都是a的元素去除的元素去除b的对应元素的对应元素a.\b=b./a — 都是都是a的元素被的元素被b的对应元素除的对应元素除例例: a=[1 2 3]; b=[4 5 6]; c1=a.\b; c2=b./a c1 = 4.0000 2.5000 2.0000 c2 = 4.0000 2.5000 2.0000 给出给出a,b对应元素间的商对应元素间的商36 3、数组乘方、数组乘方(.^) — 元素对元素的幂元素对元素的幂例例例例: :>>a=[1 2 3]; b=[4 5 6];>>a=[1 2 3]; b=[4 5 6];>>z=a.^2>>z=a.^2z =z = 1 4 9 1 4 9>>z=>>z=a.^ba.^bz =z = 1 32 729 1 32 72937 2.2.2 矩阵的逻辑运算矩阵的逻辑运算n n逻辑变量:逻辑变量:n n当前版本有逻辑变量当前版本有逻辑变量当前版本有逻辑变量当前版本有逻辑变量n n对对对对 double double 变量来说,非变量来说,非变量来说,非变量来说,非 0 0 表示逻辑表示逻辑表示逻辑表示逻辑 1 1n n逻辑运算逻辑运算(相应元素间的运算)(相应元素间的运算)(相应元素间的运算)(相应元素间的运算)n n与运算与运算与运算与运算n n或运算或运算或运算或运算n n非运算非运算非运算非运算n n异或运算异或运算异或运算异或运算 38 2.2.3 矩阵的比较运算矩阵的比较运算n n各种允许的比较关系各种允许的比较关系 >, >=, <, <=, ==,~=, find( ), all( ), any( )n n实例实例39 2.2.4 解析结果的化简与变换解析结果的化简与变换n n其他常用化简函数【例2-6】>> [a,m]=simple(p)40 n n变量替换n n转换成 LaTeX 表示41 【例2-7】求其 Taylor 幂级数展开42 2.2.5 基本数论运算基本数论运算43 【【例例2-8】】 对下面的数据进行取整运算对下面的数据进行取整运算 -0.2765, 0.5772, 1.4597, 2.1091, 1.191, -1.618744 【【例例2-9】】3x3 Hilbert 矩阵,试用矩阵,试用 rat( ) 函数变换函数变换【【例例2-10】】1856120,,1483720,最大公约数、,最大公约数、最小公倍数,质因数分解最小公倍数,质因数分解【【例例2-11】】1-1000间质数间质数>>gcd(1856120,1483720) 1960>>lcm(1856120,1483720) 1.4051e+00945 2.2.6 多项式运算多项式运算MATLABMATLAB语言把多项式表达成一个行向量,该向量中语言把多项式表达成一个行向量,该向量中语言把多项式表达成一个行向量,该向量中语言把多项式表达成一个行向量,该向量中的元素是按多项式降幂排列的。

      的元素是按多项式降幂排列的的元素是按多项式降幂排列的的元素是按多项式降幂排列的 f(x)=af(x)=an nx xn n+a+an-1n-1x xn-1n-1+……+a+……+a0 0 可用行向量可用行向量可用行向量可用行向量 p=[ap=[an n a an-1n-1 …… a …… a1 1 a a0 0] ]表示表示表示表示1 1、、、、poly —— poly —— 产生特征多项式系数向量产生特征多项式系数向量产生特征多项式系数向量产生特征多项式系数向量 p=p=poly(spoly(s) s) s为方阵、为方阵、为方阵、为方阵、p p为特征多项式为特征多项式为特征多项式为特征多项式n n 特征多项式一定是特征多项式一定是特征多项式一定是特征多项式一定是n+1n+1维的维的维的维的n n 特征多项式第一个元素一定是特征多项式第一个元素一定是特征多项式第一个元素一定是特征多项式第一个元素一定是1 146 例例例例: >> : >> a=[1 2 3;4 5 6;7 8 0];a=[1 2 3;4 5 6;7 8 0]; >> >> p=p=poly(apoly(a) ) p =1 -6 -72 -27 p =1 -6 -72 -27 p p是多项式是多项式是多项式是多项式p(x)=xp(x)=x3 3-6x-6x2 2-72x-27-72x-27的的的的MATLABMATLAB描述方法,描述方法,描述方法,描述方法,我们可用:我们可用:我们可用:我们可用: p1=poly2str(p,‘x’)p1=poly2str(p,‘x’) — —显示多项式的形式显示多项式的形式显示多项式的形式显示多项式的形式p1 =x^3 - 6 p1 =x^3 - 6 x^2 - 72 x - 27x^2 - 72 x - 2747 2、、roots —— 求多项式的根求多项式的根>> a=[1 2 3;4 5 6;7 8 0]; >> p=poly(a)p = 1.00 -6.00 -72.00 -27.00>> r=roots(p)r = 12.1229 -5.7345 —— r是矩阵是矩阵a的特征值的特征值 -0.388448 可用可用poly令其返回多项式形式令其返回多项式形式>> p2=poly(r)p2 = 1.00 -6.00 -72.00 -27.00n nMATLAB规定多项式系数向量用行向量表规定多项式系数向量用行向量表示,一组根用列向量表示。

      示,一组根用列向量表示49 3、、多项式求值多项式求值 polyval(p,s) p为多项式,为多项式, s为给定值为给定值例:计算例:计算 多项式的值多项式的值>> p1=[1 21 20 0];>> polyval(p1,2) % % 计算计算计算计算x=2x=2时多项式的值时多项式的值时多项式的值时多项式的值 ans = 132>> x=0:0.5:3;>> polyval(p1,x)50 4、、conv 多项式乘运算多项式乘运算例例: a(x)=x2+2x+3; b(x)=4x2+5x+6; c(x)=(x2+2x+3)(4x2+5x+6)>>a=[1 2 3];b=[4 5 6];>>c=conv(a,b) % conv([1 2 3],[4 5 6])c = 4 13 28 27 18>>p=poly2str(c,'x')p = 4 x^4 + 13 x^3 + 28 x^2 + 27 x + 1851 5、、deconv多项式除运算多项式除运算>>a=[1 2 3]; >>c = [4 13 28 27 18];>>d=deconv(c,a)d =4 5 6[d,r]=deconv(c,a)余数余数c除除a后的整数后的整数52 6、多项式微分、多项式微分MATLAB提供了提供了polyder函数求多项式的微函数求多项式的微分分polyder(p): 求求p的微分的微分polyder(a,b): 求求多项式多项式a,b乘积的微分乘积的微分[p,q]=polyder(a,b): 求求多项式多项式a,b商的微分商的微分例:例:>>a=[1 2 3 4 5]; poly2str(a,'x') ans = x^4 + 2 x^3 + 3 x^2 + 4 x + 5 >>b=polyder(a) b = 4 6 6 4 >>poly2str(b,'x') ans =4 x^3 + 6 x^2 + 6 x + 453 7 7、多项式拟合与插值、多项式拟合与插值、多项式拟合与插值、多项式拟合与插值 多项式拟合多项式拟合的目的就是在最小二乘的意义下,找的目的就是在最小二乘的意义下,找出满足样本点分布的多项式,所用函数为出满足样本点分布的多项式,所用函数为polyfit,其,其使用方式为:使用方式为: P=polyfit(x,y,n) x和和y为已知样本点的横坐标和纵坐标,为已知样本点的横坐标和纵坐标,n为所求为所求拟合多项式的阶数。

      拟合多项式的阶数例如:例如: >> x=0:0.1:pi; >> y=sin(x); % 产生样本点产生样本点 >> p=polyfit(x,y,3); %求拟合多项式%求拟合多项式 >> plot(x,y,'+',x,polyval(p,x))54 “+”表示样本点,实线表示拟合曲表示样本点,实线表示拟合曲线线 55 多项式插值多项式插值是指根据给定的有限个样本点,产生是指根据给定的有限个样本点,产生另外的估计点以达到数据更为光滑的效果插值在信另外的估计点以达到数据更为光滑的效果插值在信号和图像处理方面由很重要的应用主要有一维数据号和图像处理方面由很重要的应用主要有一维数据((interp1)、二维数据)、二维数据(interp2)和高维数据和高维数据(interp3)的插值 函数函数interp1采用多项式插值法,用多项式拟合所采用多项式插值法,用多项式拟合所给样本点,然后根据多项式计算出插值点上相应的值给样本点,然后根据多项式计算出插值点上相应的值。

      调用格式为:调用格式为: yi=interp1(x,y,xi,’method’) 其中,其中,x和和y表示已知样本点数据,表示已知样本点数据,xi为需要插值的为需要插值的点,点,yi为根据插值算法求出插值点相应的值,为根据插值算法求出插值点相应的值,method为具体的插值方法有为具体的插值方法有4种选择,种选择,nearest、、linear、、spline和和cubic56 例:例: >> y=[0 0.9 0.6 1 0 0.1 -0.3 -0.5 -1 -0.3]; >> x=0:length(y)-1; %% x,,y为样本点为样本点 >> x1=0:0.1:length(y)-1; %% 插值点插值点 >> y1=interp1(x,y,x1,'linear'); %% 线性插值线性插值 >> y2=interp1(x,y,x1,'spline'); %% 样条插值样条插值57 。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.