第2章 MATLAB基础(精品).ppt
第二章 MATLAB基础MATLAB基础及其应用教程第二章第二章 MATLABMATLAB软件基础软件基础本章主要内容如下:本章主要内容如下:2.1 2.1基本概念基本概念 2.22.2 向量运算向量运算 2.32.3 矩阵运算矩阵运算 2.4 2.4数组运算数组运算 2.5 2.5 字符串运算字符串运算第二章 MATLAB基础MATLAB基础及其应用教程2.1 基本概念基本概念2.1.1 数据类型第二章 MATLAB基础MATLAB基础及其应用教程2.1.2 常量与变量1.1.常量常量n常量是程序语句中取不变值的哪些量 数值常量、字符串常量2.变量命名规则变量命名规则n变量名、函数名对字母大小写敏感。MAY、may表示不同变量。n变量名第一个字母必须是英文字母,且不能超过63个字符。n变量名中不得包含空格、标点但可包含下画线,如my_var 是合法的变量名。可以有数字。第二章 MATLAB基础MATLAB基础及其应用教程3.MATLAB默认的预定义变量(常量)默认的预定义变量(常量)ans 计算结果的缺省变量名 i或j 虚单元 pi 圆周率 Inf 或 inf 无穷大,如1/0 NaN 或 nan 非数(不是一个数),如0/0 realmax 最大正实数 realmin 最小正实数 eps 浮点数的最小分辨率,PC上此值为 n【说明】用户在编写指令和程序时,尽可能避免对预定义变量重新赋值。n关键字(如 if、while 等)不能作为变量名。第二章 MATLAB基础MATLAB基础及其应用教程2.1.3 标量、向量、矩阵与数组(MATLAB 运算中的基本运算量)1.1.数组数组n数组不是一个数学量一维数组的数学原型是向量二维数组的数学原型是矩阵2.矩阵矩阵n矩阵是一个数学概念。3.向量向量n向量是一个数学量(矩阵的特例)。4.标量标量 标量也是一个数学概念(矩阵的特例)。简单变量一般高级 语言中没有第二章 MATLAB基础MATLAB基础及其应用教程2.1.4 字符串n字符串是用单引号来标示的,例如,S=I Have a Dream.。n在 MATLAB 中,字符串的存储是按其中字符逐个顺序单一存放的,且存放的是它们各自的 ASCII 码,由此看来字符串实际可视为一个字符数组,字符串中每个字符则是这个数组的一个元素。2.1.5 运算符1.1.算术运算符算术运算符第二章 MATLAB基础MATLAB基础及其应用教程第二章 MATLAB基础MATLAB基础及其应用教程第二章 MATLAB基础MATLAB基础及其应用教程2.2.关系运算符关系运算符第二章 MATLAB基础MATLAB基础及其应用教程3.3.逻辑运算符逻辑运算符第二章 MATLAB基础MATLAB基础及其应用教程2.1.6 命令、函数、表达式和语句1.1.命令命令n命令通常就是一个动词,如clearn函数库 general 存放通用命令2.2.函数函数n函数最一般的引用格式是:函数名(参数 1,参数 2,)3.3.表达式、语句表达式、语句 第二章 MATLAB基础MATLAB基础及其应用教程nMATLAB的语句形式为:变量名=表达式;n通过等于符号将表达式的值赋予变量。当键入回车键时,该语句被执行。语句执行之后,窗口自动显示出语句执行的结果。n如果希望结果不被显示,则只要在语句之后加上一个分号(;)即可。此时尽管结果没有显示,但它依然被赋值并在MATLAB工作空间中分配了内存。a=A+B&C-sin(A*pi)b=2;n调用语句、循环控制语句、条件分支语句第二章 MATLAB基础MATLAB基础及其应用教程2.2 向量运算向量运算2.2.1 向量的生成1.直接输入法 格式是:向量名=a1,a2,a3,【例 2.1】直接法输入向量。A=2,3,4,5,6,B=1;2;3;4;5,C=4 5 6 7 8 9;%最后一个分号表示执行后不 显示C。其运行结果为 A=2 3 4 5 6 B=1 2 3 4 5 第二章 MATLAB基础MATLAB基础及其应用教程2.冒号表达式法 冒号表达式 a1:step:an【例 2.2】用冒号表达式生成向量。A=1:2:10,B=1:10,C=10:-1:1,D=10:2:4,E=2:-1:10 其运行结果为A=1 3 5 7 9 B=1 2 3 4 5 6 7 8 9 10 C=10 9 8 7 6 5 4 3 2 1 D=Empty matrix:1-by-0 E=Empty matrix:1-by-0 试分析 D、E 不能生成的原因。第二章 MATLAB基础MATLAB基础及其应用教程3.函数法 线性等分linspace()、对数等分logspace()通用格式为 A=linspace(a1,an,n)、A=logspace(a1,an,n)【例 2.3】A=linspace(1,50),B=linspace(1,30,10)【例 2.4】A=logspace(0,49),B=logspace(0,4,5)2.2.2 向量的加减和数乘运算加减 维数相同【例 2.5】向量的加、减和数乘运算。A=1 2 3 4 5;B=3:7;C=linspace(2,4,3);AT=A;BT=B;E1=A+B,E2=A-B,F=AT-BT,G1=3*A,G2=B/3,H=A+C 第二章 MATLAB基础MATLAB基础及其应用教程其运行结果为 E1=4 6 8 10 12 E2=-2 -2 -2 -2 -2 F=-2 -2 -2 -2 -2 G1=3 6 9 12 15 G2=1.0000 1.3333 1.6667 2.0000 2.3333?Error using=+Matrix dimensions must agree.第二章 MATLAB基础MATLAB基础及其应用教程2.2.3 向量的点、叉积运算1.点积运算 函数:dot(A,B),A、B 是维数相同的两向量【例 2.6】向量点积运算。A=1:10;B=linspace(1,10,10);AT=A;BT=B;e=dot(A,B),f=dot(AT,BT)其运算结果为 e=385 f=385 2.叉积运算第二章 MATLAB基础MATLAB基础及其应用教程A=Ax i+Ay j+Az k B=Bx i+By j+Bz k C=AB=(Ay Bz-Az By)i+(Az Bx-Ax Bz)j+(Ax By-Ay Bx)k 叉积运算的函数是:cross(A,B),该函数计算的是 A、B 叉积后各分量的元素值,且 A、B 只能是三维向量。【例 2.7】合法向量叉积运算。A=1:3,B=3:5 E=cross(A,B)其运算结果为 A=1 2 3 B=3 4 5 E=-2 4 -2 第二章 MATLAB基础MATLAB基础及其应用教程3.混合积运算2.3 矩阵运算矩阵运算2.3.1 矩阵元素的存储次序存放次序是按列的先后顺序存放,即存完第 1 列后,再存第 2 列,依次类推。例如有一个 34 阶的矩阵 B第二章 MATLAB基础MATLAB基础及其应用教程2.3.2 矩阵元素的表示及相关操作1.元素的下标表示法(1)全下标方式:A(i,j)(2)单下标方式:A(s),其中 s=(j-1)mI【例 2.10】元素的下标表示。A=1 2 3;6 5 4;8 7 9 A=1 2 3 6 5 4 8 7 9 A(2,3),A(6)%显示矩阵中全下标元素A(2,3)和单下标元素A(6)的值 ans=4 第二章 MATLAB基础MATLAB基础及其应用教程ans=7 A(1:2,3)%显示矩阵A第1、2两行的第3列的元素值 ans=3 4 A(6:8)%显示矩阵A单下标第68号元素的值,此处是用一向量表示一下标区间 ans=7 3 4 第二章 MATLAB基础MATLAB基础及其应用教程2.矩阵元素的赋值(1)全下标方式:【例 2.11】全下标接收元素赋值。clear%不要因工作空间中已有内容干扰了后面的运算 A(1:2,1:3)=1 1 1;1 1 1%可用一矩阵给矩阵A的12行13列的全部元素赋值为1 A=1 1 1 1 1 1 A(3,3)=2%给原矩阵中并不存在的元素下标赋值会扩充矩阵阶数,注意补0的原则 A=1 1 1 1 1 1 0 0 2 第二章 MATLAB基础MATLAB基础及其应用教程(2)单下标方式:【例 2.12】单下标接收元素赋值(续例 2.11)。A(3:6)=-1 1 1-1%可用一向量给单下标表示的连续多个矩阵元素赋值 A=1 1 1 1 1 1 -1 -1 2 A(3)=0;A(6)=0%用单下标对单一元素赋值 A=1 1 1 1 1 1 0 0 2 第二章 MATLAB基础MATLAB基础及其应用教程(3)全元素方式:【例 2.13】全元素方式赋值。A(:)=1:9%将一向量按列之先后赋值给矩阵A,A在上例已被引用 A=1 4 7 2 5 8 3 6 9 A(3,4)=16,B=11 12 13;14 15 16;17 18 19;0 0 0%扩充矩阵A,生成43阶矩阵B A=1 4 7 0 2 5 8 0 3 6 9 16 第二章 MATLAB基础MATLAB基础及其应用教程B=11 12 13 14 15 16 17 18 19 0 0 0 A(:)=B%将43阶矩阵B按列全部赋给34阶矩阵A A=11 0 18 16 14 12 0 19 17 15 13 0 第二章 MATLAB基础MATLAB基础及其应用教程3.矩阵元素的删除【例 2.14】删除元素操作。clear A(2:3,2:3)=1 1;2 2%生成一新矩阵A A=0 0 0 0 1 1 0 2 2 A(2,:)=%删除A矩阵的第2行,“:”可表示所有行或列A=0 0 0 0 2 2 A(1:2)=%删除新矩阵A的前两个单下标元素,矩阵变成向量 第二章 MATLAB基础MATLAB基础及其应用教程A=0 2 0 2 A=%删除所有元素 A=2.3.3 矩阵的创建1.直接输入法【例 2.15】用直接输入法建立矩阵。x=27;y=3;A=1 2 3;4 5 6;B=2,3,4;7,8,9;12,2*6+1,14;C=3 4 5 7 8 x/y 10 11 12;%用回车符而非分号分隔矩阵各行 A,B,C第二章 MATLAB基础MATLAB基础及其应用教程其运算结果为 A=1 2 3 4 5 6 B=2 3 4 7 8 9 12 13 14 C=3 4 5 7 8 9 10 11 12 第二章 MATLAB基础MATLAB基础及其应用教程2.抽取法1)用全下标方式【例 2.16】用全下标抽取法建立子矩阵。clear A=1 2 3 4;5 6 7 8;9 10 11 12;13 14 15 16 A=1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 B=A(1:3,2:3)%取矩阵A行数为13,列数为23的元素B=构成子矩阵B 2 3 6 7 10 11 第二章 MATLAB基础MATLAB基础及其应用教程C=A(1 3,2 4)%取矩阵A行数为1、3,列数为2、4的元素构成子矩阵C C=2 4 10 12 D=A(4,:)%取矩阵A第4行,所有列,“:”可表示所有行或列 D=13 14 15 16 E=A(2 4,end)%取1、4行,最后列,用“end”表示某一维数中的最大值 E=8 16 第二章 MATLAB基础MATLAB基础及其应用教程2)用单下标方式【例 2.17】用单下标抽取法建立子矩阵。clear A=1 2 3 4;5 6 7 8;9 10 11 12;13 14 15 16 A=1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 B=A(4:6;3 5 7;12:14)B=13 2 6 9 2 10 15 4 8 第二章 MATLAB基础MATLAB基础及其应用教程3.拼接法【例 2.18】小矩阵拼成大矩阵。A=1 2 3;4 5 6;7 8 9,B=9 8;7 6;5 4,C=4 5 6;7 8 9 A=1 2 3 4 5 6 7 8 9 B=9 8 7 6 5 4 C=4 5 6 7 8 9 第二章 MATLAB基础MATLAB基础及其应用教程 E=A B;B A%行列两个方向同时拼接,请留意行、列数的匹配问题 E=1 2 3 9 8 4 5 6 7 6 7 8 9 5 4 9 8 1 2 3 7 6 4 5 6 5 4 7 8 9 F=A;C%A、C列数相同,沿行向扩展拼接 1 2 3 4 5 6 7 8 9 4 5 6 7 8 9 第二章 MATLAB基础MATLAB基础及其应用教程4.函数法第二章 MATLAB基础MATLAB基础及其应用教程第二章 MATLAB基础MATLAB基础及其应用教程【例 2.19】用函数生成矩阵。A=ones(3,4),B=eye(3,4),C=magic(3)A=1 1 1 1 1 1 1 1 1 1 1 1 B=1 0 0 0 0 1 0 0 0 0 1 0 C=8 1 6 3 5 7 4 9 2 第二章 MATLAB基础MATLAB基础及其应用教程5.拼接函数和变形函数法6.加载法7.M文件法2.3.4 矩阵的代数运算1.求矩阵行列式的值函数 det(A)【例 2.24】求给定矩阵的行列式值。A=3 2 4;1-1 5;2 13,D1=det(A)A=3 2 4 1 -1 5 2 -1 3 D1=24第二章 MATLAB基础MATLAB基础及其应用教程2.矩阵加减、数乘与乘法【例 2.25】已知矩阵A、B 求 A+B,2A,2A-3B,AB。A=1 3;2 1;B=3 0;1 2;A+B ans=4 3 3 1 2*A ans=2 6 4 -2 2*A-3*B ans=-7 6 1 -8 A*B ans=6 6 5 -2 第二章 MATLAB基础MATLAB基础及其应用教程3.求矩阵的逆矩阵inv(A)【例 2.26】求矩阵 A 的逆矩阵。A=1 0 1;2 1 2;0 4 6 A=1 0 1 2 1 2 0 4 6 format rat;A1=inv(A)A1=-1/3 2/3 -1/6 -2 1 0 4/3 -2/3 1/6 第二章 MATLAB基础MATLAB基础及其应用教程4.矩阵的除法左除 AB=inv(A)*B,右除 A/B=A*inv(B)【例 2.27】求下列线性方程组的解 解:此方程可列成两组不同的矩阵方程形式。一是,设X=x1;x2;x3;x4为列向量,矩阵A=1 4 7 6;0 2 1 1;0 1 1 3;1 0 1 1,B=0;-8;-2;1为列向量,则方程形式为 AX=B,其求解过程用左除:第二章 MATLAB基础MATLAB基础及其应用教程A=1 4-7 6;0 2 1 1;0 1 1 3;1 0 1-1,B=0;-8;-2;1,x=AB A=1 4 -7 6 0 2 1 1 0 1 1 3 1 0 1 -1 B=0 -8 -2 1 x=3.0000 -4.0000 -1.0000 1.0000 第二章 MATLAB基础MATLAB基础及其应用教程 inv(A)*Bans=3.0000 -4.0000 -1.0000 1.0000 二是,设 X=x1 x2 x3 x4为行向量,矩阵 A=1 0 0 1;4 2 1 0;-7 1 1 1;6 1 3-1,矩阵 B=0 8 2 1为行向量,则方程形式为 XA=B,其求解过程用右除:第二章 MATLAB基础MATLAB基础及其应用教程A=1 0 0 1;4 2 1 0;-7 1 1 1;6 1 3-1,B=0-8-2 1,x=B/A A=1 0 0 1 4 2 1 0 -7 1 1 1 6 1 3 -1 B=0 -8 -2 1 x=3.0000 -4.0000 -1.0000 1.0000 B*inv(A)ans=3.0000 -4.0000 -1.0000 1.0000 第二章 MATLAB基础MATLAB基础及其应用教程5.求矩阵的秩函数 rank(A)【例 2.28】求矩阵的秩。B=1 3-9 3;0 1-3 4;-2-3 9 6,rb=rank(B)B=1 3 -9 3 0 1 -3 4 -2 -3 9 6 rb=2 第二章 MATLAB基础MATLAB基础及其应用教程6.求矩阵的特征值与特征向量函数:X,=eig(A)【例 2.29】求矩阵 A 的特征值和特征向量。A=1-3 3;3-5 3;6-6 4,X,Lamda=eig(A)A=1 -3 3 3 -5 3 6 -6 4 X=0.4082 0.4082 -0.1203 0.4082 -0.4082 -0.7595 0.8165 -0.8165 -0.6393 Lamda=4.0000 0 0 0 -2.0000 0 0 0 -2.0000 第二章 MATLAB基础MATLAB基础及其应用教程7.矩阵的乘幂与开方矩阵的乘方运算符()矩阵的开方运算函数 sqrtm(A)【例 2.30】矩阵的乘幂与开方运算。A=1-3 3;3-5 3;6-6 4;A3 ans=28 -36 36 36 -44 36 72 -72 64第二章 MATLAB基础MATLAB基础及其应用教程 A1=sqrtm(A)A1=1.0000+0.7071i -1.0000+0.7071i 1.0000-0.7071i 1.0000-0.7071i -1.0000+2.1213i 1.0000-0.7071i 2.0000-1.4142i -2.0000+1.4142i 2.0000-0.0000i 8.矩阵的指数与对数矩阵指数运算函数 expm(A);对数运算函数 logm(A)。【例 2.31】矩阵的指数与对数运算。A=1-1 1;2-4 1;1-5 3 A=1 -1 1 2 -4 1 1 -5 3 第二章 MATLAB基础MATLAB基础及其应用教程 Ae=expm(A)Ae=1.3719 -3.7025 4.4810 0.3987 -2.3495 2.9241 -2.5254 -7.6138 9.5555 Ael=logm(Ae)Ael=1.0000 -1.0000 1.0000 2.0000 -4.0000 1.0000 1.0000 -5.0000 3.0000 第二章 MATLAB基础MATLAB基础及其应用教程9.矩阵的转置【例 2.32】矩阵转置运算。a=1:9 a=1 2 3 4 5 6 7 8 9 A=reshape(a,3,3)A=1 4 7 2 5 8 3 6 9 B=A B=1 2 3 4 5 6 7 8 9 第二章 MATLAB基础MATLAB基础及其应用教程10.矩阵的提取与翻转2.2.4 4 数组数组运运算算 运算法则是针对其中每一个元素的,讲究元素的一一对应,因而数组之间的加减乘除就直接在元素之间对应展开,而无需用到循环语句。优点是利用数组结构可以简化同类运算。注意:注意:点点运运算算点运算符有点运算符有.*、./、.和和.。两数组进行点运算是指它们的对应元素进行相关运两数组进行点运算是指它们的对应元素进行相关运算,要求两数组的维数相同。算,要求两数组的维数相同。第二章 MATLAB基础MATLAB基础及其应用教程数组和矩阵函数的通用形式 矩阵的开方、指数、对数运算使用的函数分别是 sqrtm()、expm()、logm(),对应数组操作的上述函数则是 sqrt()、exp()、log()。第二章 MATLAB基础MATLAB基础及其应用教程第二章 MATLAB基础MATLAB基础及其应用教程2.2.5 5 字符串字符串运运算算求字符串长度length()和size()