MATLAB程序设计电子教案第2课11



《MATLAB程序设计电子教案第2课11》由会员分享,可在线阅读,更多相关《MATLAB程序设计电子教案第2课11(60页珍藏版)》请在装配图网上搜索。
1、单击此处编辑母版标题样式,,*,*,单击此处编辑母版文本样式,,第二级,,第三级,,第四级,,第五级,,第2章 MATLAB 运算基础(1),单击此处编辑母版标题样式,,单击此处编辑母版文本样式,,第二级,,第三级,,第四级,,第五级,,*,MALAB 7.X程序设计,*,单击此处编辑母版标题样式,,单击此处编辑母版文本样式,,第二级,,第三级,,第四级,,第五级,,*,MALAB 7.X程序设计,*,MATLAB程序设计电子教案-第2课(1),,MATLAB程序设计电子教案-第2课(1)MATLAB程序设计电子教案-第2课(1)主要内容:,,①变量的定义及赋值;,,②数值数组、字符串数组、元
2、胞数组和构架数组等数据类型;,,③矩阵运算的定义和规则;,,主要内容:,,①变量的定义及赋值;,,②数值数组、字符串数组、元胞数组和构架数组等数据类型;,,③矩阵运算的定义和规则;,,④数组运算的定义和规则。,,2,,1),矩阵:,由,m×n,个数组成的排成,m,行,n,列的一个矩形的数表,其中,0×0,矩阵为空矩阵,([]),。数表中第,i(1,≤,i,≤,m),行第,j(1,≤,j,≤,n),列的数据称为矩阵元素,,,2),标量 :,1×1的矩阵,即为只含一个数的矩阵。,,3),向量:,1×n或n×1的矩阵,即只有一行的或者一列的矩阵。只有一行的矩阵称为行向量,只有一列的矩阵称为列向量。,
3、数表中第i(1≤i≤n,),个数据称为,向量,元素,。,,4),数组:,矩阵的延伸,一般指多维数组,其中标量、向量和矩阵都是数组的特例。,2.1 概述,2.1.1 数据术语,,3,2.1.2 数据类型,数据类型包括,数值型、字符串型、元胞型、构架型,等。数值型有单精度型、双精度型和整数型。整数型有uint8,uint16,uint32和uint64等无符号型和int8,int16,int32和int64等符号型整数。,,数值型数据可以用带小数点的形式和科学计数法表示,数值的表示范围是,1,0-309,~,10,+309,。,,-20,、、,2.88e-56(,表示×,10,-56,),、,7.
4、68e204(,表示×,10,204,),都是合法的数据表示。,。,,一般在计算时,采用双精度型,在输出时有多种数值显示格式可供选择。,,4,数值显示格式的设置通过,format,命令, 格式如下:,format short,,默认设置,以5位数字形式输出,,,format long,以15位十进制数形式输出,,format short e,以5位十进制数加指数形式输出,,format long e,以16位十进制数加指数形式输出,,format short g,,从format short和format short e,,中自动选择最佳输出形式,,5,format long g,,从fo
5、rmat long和format long e,,中自动选择最佳输出形式,,,format hex,以16位十六进制数形式输出,,format +,以正号、负号和零形式输出,,format bank,以两位小数形式输出,,format rat,以近似分数形式输出,,format loose,以稀疏格式(变量与执行结果之,,间有空行)输出,,format compact,以紧凑格式(变量与执行结果之,,间无空行)输出,,6,2.2 变量,,变量的命名规则为:,,1 变量名必须以字母开头,变量名的组成可以是任意字母、数字或者下划线,但不能含有空格和标点符号。,,2 关键字和函数名不能作为变量名。,
6、,3 变量名不能超过63个字符。,,4 变量名区分字母的大小写,即大小写敏感。,,大小写是否区分可以通过命令casesen on/off进行切换(如果不区分大小写,为casesen off ,否则为casesen on)。,,7,,变量的赋值通常有,两种形式,:,,,1 变量=表达式,,2 表达式,,其中表达式是用运算符将有关运算量连接起来的式子,其结果是一个数组。,,形式1中,,=,代表的是赋值操作,将表达式的值赋给MATLAB的变量;形式2中,将表达式的值赋给MATLAB的临时变量ans。,8,例2-1,在命令窗口输入下述语句,并按回车键执行,分别给变量a、b、c赋值:,a=1% a,为标
7、量,,b=[0 1] % b,为行向量,,c=[1 2;3 4;5 6] % c,为矩阵即二维数组,9,2.2.3 特殊变量,eps,,Realmax,最大的正实数1.7977e+308,,Realmin,,Pi,内建的π值,,i, j,虚数单位i=j=√-1,,Inf,∞,,NaN,无法定义一个数目,,Nargin,函数输入参数个数,,Nargout,函数输出参数个数,,Flops,浮点运算次数,10,,1 内存变量的显示与删除,,1)who,用于显示在MATLAB工作空间中已,,经驻留的变量名清单。,,2)whos,在给出变量名的同时,还给出它们,,的大小、所占字节数及数据类型等,,信息。
8、,,3)clear,删除MATLAB工作空间中的变量。注,,意,特殊变量不能被删除,。,,11,例2-2,,查询,例2-1中语句执行后,工作空间中 的变量情况。,Name Size Bytes Class,,a 1x1 8 double array,,b 1x2 16 double array,,c 3x2 48 double array,,Grand total is 10 elements using 72 byte
9、s,在命令窗口输入,执行结果为:,Your variables are:,,a b c,在命令窗口输入,执行结果为:,who,whos,12,2 工作空间浏览器,工作空间浏览器窗口用于,显示所有,MATLAB工作空间中的变量名、数据结构、类型、大小和字节数,也可以对变量进行观察、编辑、提取和保存。,13,3 内存变量文件,利用MAT文件可以把MATLAB工作空间中的一些有用变量长久地保留下来。MAT文件的生成和调入由save和load命令来完成,1) save的格式为:,,save 文件名 [变量名表] [-append][-ascii],,,功能:,把工作空间中的变量存入磁
10、盘。其中变量名表指出需存储的变量,append为数据填加方式,ascii为数据形式。,2) load的格式为:,,load 文件名 [变量名表] [-ascii],,功能:,磁盘上存储的mat数据文件取回到MATLAB工作空间中。参数含义同save。,,14,例2-3:,例2-1中语句执行后,在命令窗口 依次输入下述命令:,save,%,变量,a,,,b,和,c,保存在,Save mydata1.mat,%,变量,a,,,b,和,c,保存在,,,save mydata2.mat a,%,变量,a,保存在,,,save mydata3.mat a b,%,变量,a,和,b,保存
11、在,,,save mydata4.mat a b c,%,变量,a,,,b,和,c,保存在,,,15,2.3 数值数组,,1 赋值语句建立数组,,矩阵的建立可以通过赋值语句实现,赋值符号左边为变量名,右边为矩阵元素。矩阵元素应用方括号([])括住,元素可以是数值或表达式元素,表达式可以由数字、变量、运算符和函数等组成。,,矩阵同行内的元素间用逗号或空格隔开,行与行之间用分号或回车键隔开。,,16,例2-4,在命令窗口输入语句:,a=[1,2,3;4,5,6;7,8,9],按回车键,命令就被执行,在MATLAB命令窗中显示以下结果:,a =,,1 2 3,,4 5
12、 6,,7 8 9,如果在上述输入语句末尾加上分号,则在命令窗口不显示结果。,同理可以通过赋值语句建立向量。,17,例,2-5,在命令窗口输入语句:,,x=[-1.3 1+2+3 sqrt(5)],%sqrt,是求平方根函数,按回车键,指令被执行,MATLAB命令窗中显示以下结果:,x =,,18,例,2-6,,在命令窗口输入下述语句,建立复数数组:,,b=[1+2*i,2+3*i;2-i,3-2*i],执行结果为:,b =,,,,19,elfun,函数库中提供一系列复数函数:,real,复数的实数部分,,real(b),,,imag,复数的虚数部分,,imag(b),,
13、,abs,绝对值或模,,abs(b),,,angle,幅角,,angle(b),结果为弧度,,angle(b)*180/pi,结果为角度,,conj,共轭,,conj(b),,20,2 简捷表达式,等间隔向量赋值可以通过简捷表达式实现。下面介绍两种为等间隔向量赋值的方法:,1)两个冒号组成等增量语句,,格式:t =初值:增量:终值,,说明:,,,初值、增量和终值,分别表示开始值、步长和结束值。当增量可为负值,省略时则默认为增量为1;当增量省略或增量>0而初值>0时为空向量,当增量<0而初值<终值时也为空向量。,21,例2-7,简捷表达式建立向量和矩阵,t1=0:0.02:1,%,产生0≤t1≤
14、1之间的行向量,,,t2=5:-1:2,,%,产生5≤,t1≤2,之间的行向量,,,间隔为-1。,t4=2:-1:3,,%,建立空矩阵,t5=[1:2:5;1:3:7],%,建立矩阵,22,2)使用linspace和logspace函数生成向量,,linspace函数的格式:,linspace(a,b,n),,功能:,生成从a到b之间线性分布的n个元素的行向量。,logspace (a,b,n),,功能:,生成从10,a,到10,b,之间按对数等分的n个元素的行向量。,,logspace函数的格式:,23,例 2-8,用linspace和logspace函数生成向量,t1=linspace(0
15、,2*pi,5),%从0到2*pi等分,,成5个点,,linspace(1,8,8),,linspace(1,8,1),,t2=logspace(0,2,3),,%从1到100(即,,10,0,到10,2,)按对数等分成3个点,24,3 内建函数,,1) 通用特殊矩阵,函数库,elmat提供的常用的通用特殊矩阵,,生成函数,:,,zeros,,ones,,eye,,rand,25,2)用于专门学科的特殊矩阵,(1)魔方矩阵,,magic(n),,,功能:,魔方矩阵的元素由1到n×n 的自然数组成,其对角线上的元素为1;每行、每列及对角线上的元素之和均等于(n,3,+n)/2。魔方矩阵的每行、
16、每列及两条对角线上的元素和都相等。对于n阶魔方阵,其元素由1,2,3,…,n,2,共n,2,个整数组成。,26,例2-9,产生2阶和3阶魔方阵。,m1=magic(2),%,产生,2,阶魔方阵,,m2=magic(3),%,产生,3,阶魔方阵,27,(2) 范得蒙矩阵,,vander(V),生成以向量V为基础向量的范得蒙矩阵,矩阵元素最后一列全为1,倒数第二列为一个指定的向量,其他各列是其后列与倒数第二列的点乘积。可以用一个指定向量生成一个范得蒙矩阵。,28,例2-10,产生范得蒙矩阵。,v1=vander([1;2;3;5]),,v2=,vander(1:3),,v3=,vander(1:4
17、),29,(3)希尔伯特矩阵,hilb(n),生成n阶的希尔伯特矩阵,,invhilb(n),求n阶的希尔伯特矩阵的逆,例2-11,求4阶希尔伯特矩阵及其逆矩阵。,format rat,%,以有理形式输出,,H=,hilb,(4),,invH,=,invhilb,(4),30,(4)托普利兹矩阵,功能:,用向量x生成一个对称的托普利兹矩阵。矩阵元素除第一行第一列外,其他每个元素都与左上角的元素相同。,toeplitz,(x,y),,,功能:,生成一个以,x,为第一列,,y,为第一行的托普利兹矩阵。其中,x, y,均为向量,两者不必等长。,toeplitz,(x),31,例2-12,产生托普利兹
18、矩阵。,T1=toeplitz(1:4),,,T2=toeplitz(1:3,3:6),32,(5) 伴随矩阵,compan(p),,功能:,生成伴随矩阵,其中p是一个多项式的系数向量,高次幂系数排在前,低次幂排在后。,例2-13,为了求多项式的x,3,-7x+6的伴随矩阵,可使用语句:,,p=[1,0,-7,6];c=compan(p),33,(6) 帕斯卡矩阵,n阶帕斯卡矩阵的生成函数的格式:,,pascal(n),例2-14,求(x+y),4,的展开式。,,p1=pascal(4),,p1 =,,1 1 1 1,,1
19、 2 3 4,,1 3 6 10,,1 4 10 20,,由执行结果可知,矩阵次对角线上的元素1,4,6,4,1即为展开式的系数。,34,(,7),哈达玛矩阵,n阶哈达玛矩阵的生成函数的格式:,,hadamard(n),例2-15,求2阶和4阶的哈达玛矩阵。,,h1=hadamard(2),,h2=hadamard(4),35,4 通过,MAT数据文件加载矩阵,通过,load命令或选择菜单File→Impor
20、t Data命令加载MAT数据文件来创建矩阵。,5 在,M文件中创建矩阵,,M文件实际上是一种包含MATLAB代码的文本文件;通过在MATLAB命令窗口中运行M文件创建矩阵。,36,,1 向量的标识,,向量是由多个元素组成的,每个元素通过序号来标识。,例2-16,演示向量的标志和重新赋值。,,x=1:2:7; y=x';,,,y3=y(3),%,引用,y,的第三个元素,5,,y5=y(end),%,用,end,函数引用,y,的最后,,一个元素,7,,y(3)=10,%,对,y,的第三个元素重新赋值,37,2矩阵的标识,两种标识方式:,全下标方式,和,单下标方式,。,1) 全下标方式,,全下标
21、方式标识是指出行下标和列下标的方法标识,如一个m×n的矩阵a的第i(1≤i≤m)行第j(1≤j≤n)列的元素可表示为a(i,j)。,38,例2-17,演示矩阵元素的标识和扩充矩阵的 方法,a=[1 2;3 4;5 6];,,%,建立一个,2,×,3,的矩阵,,a12=a(1,2),,%引用a(1,2)的值,,a(3,3),,%引用a(3,3)的值,(3,3),,超出矩阵的大小,出错,,a(3,3)=9,,%扩充2×3的矩阵为3×3的,,矩阵,并给a(3,3)赋值,39,2) 单下标方式,根据,全下标,换算出单下标的函数sub2ind格式:,,,IND=sub2ind(siz,I
22、,J),,功能:,IND为返回的对应的单下标,siz为以矩阵行数和列数构成的两个元素的向量,I和J分别为矩阵的某一行号和列号。,根据,单下标,换算出全下标的函数ind2sub格式:,,,[I,J]=ind2sub(siz,IND),,功能:,I和J分别为返回的矩阵的某一行号和列号,siz为以矩阵行数和列数构成的两个元素的向量,IND为单下标。,40,例2-18,演示矩阵元素的全下标标识和单下标标识的转换。,[i,j]=ind2sub([3 3],5),,% 3,×,3,矩阵的第,5,个元素的全下标,ind=sub2ind([3 3],3,3),,,% 3,×,3,矩阵第三行、第三列元素的序号,
23、41,2.3.3 子数组,,子数组是从数组中取出一部分元素所构成的数组,通常可用全下标和单下标方式取子数组。,,1 向量的一般情况如下:,,A(i),数组A的第i个元素,,A(i:L:i+m),数组A的第i个-第i+m个(下标增量为L)元素,42,2 矩阵一般情况如下:,A(:,j),,数组A的第j列全部元素,,A(i,:),,数组A的第i行全部元素,,A(i,j),,数组A的第i行第j列的元素,,A(:,j:L:j+n),,数组A的第j列-第j+n列(下,,标增量为L)全部元素,,A(i:k:i+m,:),,数组A的第i行-第i+m行(下标,,增量为k)元素,,A(i:k:i+m,j:L:j
24、+n),,数组A的第i行-第i+m,,行(下标增量为k)并在第j列,,-第j+n列(下标增量为L)全,,部元素,43,例2-19,演示建立行向量并取子数组的方法。,a1=[1.1,-2.2,3.3,-4.4,5.5];,,a1(3),%,取,a1,的第三个元素,,a1([1 4]),%,取,a1,的第一个和第四个元素,,a1(1:2:5),%,取,a1,的第一个、第三个和第五,,个元素,等价语句为:,,,a1(1:2:end),44,例2-20,演示建立3×4的矩阵,并取子数组的方法,。,a=[1 2 3 4;5 6 7 8;9 10 11 12];,,a(1,:),,a(:,end),,a2
25、4=a(2,4),%,取,a,的第二行、第四列的元素,,a(1:2:4,:),,a(:,1:2:end),,a1=a([1,2],[2,3,4]),,a2=a([1,2],[2,3,1]),,a3=a([3,1],:),,a([1,3],[2,4])=zeros(2),,%,对,a([1,3],[2,4]),赋值,45,,数组的赋值大致有两种方式:,全元素方式,和,子数组方式,。,1 全元素方式,,全元素方式赋值的一般格式:,,a(:)=b,,,功能:,给矩阵a的所有元素赋值,矩阵b的元素总数必须等于矩阵a的元素总数,但行列数不一定相等。,46,例2-21,演示全元素方式赋值的方法,a=ze
26、ros(2,3); b=1:6; a(:)=b,执行结果如下:,a =,,1 3 5,,2 4 6,47,2 子数组方式,子数组方式赋值的一般格式1:,,,a(s)=b,,功能:,给矩阵a的部分元素赋值,s为单下标序号,b为向量,向量的元素个数必须等于数组a中s指定的元素个数。,子数组方式赋值的一般格式2:,,A(i:k:i+m,j:L:j+n)=b,,,功能:,给数组a的部分元素赋值,则数组b的行列数必须等于数组a的第i行-第i+m行(下标增量为k)并在第j列-第j+n列(下标增量为L)全部元素的行列数。,48,例2-22,演示子数组方式赋值方法。,,a=
27、zeros(2,3);a(5:6)=[2 3],,%给第5、6元素赋值,,如果对a不作初始化,a(5:6)=[2 3]的赋值情况有何变化?,,a=zeros(3,4);,,a(1:2,1:3)=[1 1 1;1 1 1],,,%给第一、二行元素赋值为全1,49,,数组元素的删除是简单地通过赋值为空(用[]表示)实现的。,,通过赋值为空,可以实现删除一行元素、一列元素、子数组和整个数组。,,,注意区分空矩阵和零矩阵:,,空矩阵是0×0的数组,而零矩阵是元素为零的m×n的数组。,50,例2-23,建立3×3的数组,实现数组元素的 删除。,a=[1 2 0;3 4 0;5 6 9];,
28、,,a(:,3)=[],%,删除第三列元素,,a(2,:)=[],%,删除第二行元素,,a(1)=[],%,删除一个元素,则矩阵变为行向量,,a=[],%,删除所有元素为空矩阵,51,2.3.6 多维数组,1 三维数组的建立,三维数组的建立方式和二维数组类似,大致有,三种方式:,,1) 通过全下标元素赋值方式创建,,2) 由生成函数直接创建,,3) 由生成函数ones,zeros,rand和randn等直接创建多维数组。,52,例2-24,演示全下标元素赋值方式建立 三维数组的方法。,b=[1 1;2 2];,%,先创建二维数组,,b(:,:,2)=5,%,扩展数组,53,例
29、2-25,演示生成函数ones、zeros、rand和randn直接创建多维数组的方法。,ones(2,3,4),54,函数cat的格式为:,,cat(维,p1,p2,……),,功能:,按指定行列数放置模块数组生成多维数组。参数维是指沿着第几维连接数组p1、p2等。,函数repmat的格式为:,,repmat(p,行 列 页 ……),,功能:,在总元素的数目不变的前提下重新确定数组的行列数来重组数组。,,其中第一个输入变量p是用来放置的模块数组,后面的变量行、列、页是要放在指定的各维。,,55,例2-26,演示cat和repmat函数的功能。,a=[1 2 ;3 4];b=[ 5 6;7 8]
30、;cat(1 ,a,b),,a=[1 2 ;3 4];b=[ 5 6;7 8];cat(2 ,a,b),56,a=[1 2 ;3 4];b=[ 5 6;7 8];cat(3 ,a,b),,repmat(magic(2), 2, 3),,( repmat(magic(2),[ 2, 3])结果同下),,repmat(5, 2, 3),57,2 多维数组的信息,,函数ndims的功能是直接给出数组的维数,,格式为,:,,ndims(p),,其中,p为数组。,函数,size,的功能是给出数组各维的大小,,格式为,:,,[,m,n,…]=size(p),,%,得出各维的大小,,,,m=size(p,x
31、),,%,得出某一维的大小,,,其中,,p,为多维数组;,m,为行数,,n,为列数…;当只有一个输出变量时,,x=1,返回第一维(行数),,x=2,返回第二维(列数),以此类推。,numel,的功能是给出数组的体积(元素的数目),,格式为,:,n =,numel,(,p,),,,其中,,p,为数组。,58,例2-27,演示,ndims,size和,numel函数的 功能。,x = ones(1,8);n = length(x),,%,建立任意的,1,×,8,的数组,x,,y=zeros(3,5);d=size(y),,%,建立任意的,3,×,5,的数组,y,,[m n]=size(y),,,ndims(y),numel(y),mm=size(y,1),nn=size(y,2),,z= rand(2,10,3);,,,%,建立任意的,2,×,10,×,3,的数组,y,,n = length(z),59,谢谢!,
- 温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。