matlab程序设计02_第1页
matlab程序设计02_第2页
matlab程序设计02_第3页
matlab程序设计02_第4页
matlab程序设计02_第5页
已阅读5页,还剩45页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Hefei University of TechnologyInstitute of Sound and Vibration ResearchMATLAB 程序设计程序设计_第二讲第二讲2上机时间安排上机时间安排日期(第几周)日期(第几周):9月月23日日 (第(第2周)周) 10月月14日(第日(第5周)周) 10月月21日(第日(第6周)周) 10月月28日(第日(第7周)周)时间时间:周三:周三 5、6、7、8节节地点地点:第五和第六机房:第五和第六机房注意注意: 带鞋套带鞋套3作业作业 已知三角形三边长度分别为已知三角形三边长度分别为1、2、 ,求长度,求长度为为1和和2的两条边的夹角

2、。的两条边的夹角。34本次课主要内容本次课主要内容 数据类型数据类型: : 整数、浮点数、逻辑型整数、浮点数、逻辑型 关系运算、逻辑运算关系运算、逻辑运算 数组:数组: 创建、寻址、查找、删减等创建、寻址、查找、删减等5数据类型数据类型6数据类型数据类型基本概念基本概念_二进制二进制 计算机只认识计算机只认识0 0与与1 1在计算机中,各种信息数据(如在计算机中,各种信息数据(如数值、符号、图形、图像、数值、符号、图形、图像、声音声音)的存储和表示都是采用)的存储和表示都是采用二进制形式二进制形式进行,其运算和处进行,其运算和处理也都是以二进制信息的运算和处理为基础。理也都是以二进制信息的运算

3、和处理为基础。? 计算机中计算机中, ,为什么要使用二进制数为什么要使用二进制数, ,而不使用人们已经习而不使用人们已经习惯的十进制数呢惯的十进制数呢? ?数据:数据:以器件的两种物理状态,如晶体管的以器件的两种物理状态,如晶体管的“通通”和和“断断”等来表示,这种器件只能表示二进制代码。因等来表示,这种器件只能表示二进制代码。因此,计算机处理的所有数据都要转换成二进制代码。此,计算机处理的所有数据都要转换成二进制代码。7数据类型数据类型二进制与十进制的转化二进制与十进制的转化二进制与十进制二进制与十进制0=01=12=103=114=1005=1016=1107=1118=10009=100

4、110=101011=101112=1100(1101)2 = 12+12+02+12 = (13)10 1、二进制数、二进制数11011转换成十进制数是(转换成十进制数是( )(A)25 (B)26 (C)27 (D)282、十进制数、十进制数23转换成二进制数是(转换成二进制数是( )(A)10011 (B)10101 (C)10111 (D)110118数据类型数据类型基本概念基本概念_单位单位位位(Bit)在计算机中,数在计算机中,数据的最小单位是据的最小单位是位,表示一个二位,表示一个二进制数码进制数码0或或1字节(字节(Byte)8个二进制位构成个二进制位构成1个个字节(字节(B)

5、,),1个字节个字节可以储存可以储存1个英文字个英文字母或半个汉字。字节母或半个汉字。字节是存储空间的基本计是存储空间的基本计量单位量单位换算关系:换算关系:1 B = 8 bit1 KB = 210 B =1024 B 1 MB = 1024 KB 1 GB = 1024 MB 9数据类型数据类型分类分类数组数组逻辑类逻辑类字符类字符类数值类数值类单元单元结构结构函数句柄函数句柄int8, uint8int16, uint16int32, uint32int64, uint64singledouble整数整数浮点数浮点数10数据类型数据类型浮点数浮点数MATLAB的浮点数分为单精度的浮点数分

6、为单精度(single)和双精度和双精度(double)。默认数据类型是:默认数据类型是:double,需要,需要64位存储空间位存储空间Single需要需要32位存储空间位存储空间直接输入变量值创建的是直接输入变量值创建的是double类型,创建类型,创建single类型需要用输类型需要用输入类型转化函数入类型转化函数.例:例:创建浮点数。创建浮点数。在命令窗口输入:在命令窗口输入:x=35; y= single(-26);a=class(x), b=class(y)运行结果运行结果:a =doubleb =single11数据类型数据类型浮点数浮点数浮点数的取值范围可用函数浮点数的取值范围

7、可用函数realmax和和realmin查看查看例:例:在命令窗口输入:在命令窗口输入:realmax(double), realmin(double)运行结果:运行结果:ans = 3.4028e+038ans = 1.1755e-03812数据类型数据类型整数整数有符号整数类型需要用有符号整数类型需要用1位来表示数据的正负,因此它的位来表示数据的正负,因此它的取值范围小于无符号整数类型。取值范围小于无符号整数类型。数据类型数据类型取值范围取值范围类型转化函数类型转化函数有符号有符号8位整数位整数int8有符号有符号16位整数位整数int16有符号有符号32位整数位整数int32有符号有符号

8、64位整数位整数int64无符号无符号8位整数位整数uint8无符号无符号16位整数位整数uint16无符号无符号32位整数位整数uint32无符号无符号64位整数位整数uint64772 2115152 2131312 2163632 21640 21320 21160 2180 2113数据类型数据类型整数整数如,如,int8的取值范围:的取值范围:772 21128+127uint8的取值范围:的取值范围:80 210+255int16的取值范围:的取值范围:15152 2132768+3276714数据类型数据类型整数整数注意整数中的数据溢出问题注意整数中的数据溢出问题思考下述程序的运

9、行结果思考下述程序的运行结果: :a=125;a=int8(a);b=a+2;c=b+2;15数据类型数据类型整数整数MATLAB的默认数据存储类型为的默认数据存储类型为double,利用类型转化函数,利用类型转化函数可将数据存储为整数类型,可将数据存储为整数类型,如果有小数部分,四舍五入处理如果有小数部分,四舍五入处理。例:例:整数类型的转化。整数类型的转化。在命令窗输入:在命令窗输入:x=7.503;int8(x)运行结果:运行结果:ans=816数据类型数据类型整数整数某个整数类型的变量某个整数类型的变量只能与该整数类型或只能与该整数类型或double类型类型的的变量进行算术运算,其结果

10、仍为该类型的整数。变量进行算术运算,其结果仍为该类型的整数。例:例:整数类型的算术运算。整数类型的算术运算。在命令窗输入:在命令窗输入:x=int16(2)*pi;class(x)运行结果:运行结果:x= 6ans= int1617数据类型数据类型整数整数整数之间的除法不一定得到整数,因此整数之间的除法不一定得到整数,因此MATLAB进行除法运进行除法运算时,首先将两个数视为双精度类型,然后将结果转化为相算时,首先将两个数视为双精度类型,然后将结果转化为相应的整形数据。应的整形数据。uint8(28-5)/uint8(int8(29) 思考下述程序的运行结果:思考下述程序的运行结果:这道题包含

11、三个知识点:这道题包含三个知识点:数据溢出、同类型整数才能运算,数据溢出、同类型整数才能运算,整数除法整数除法18数据类型判断函数数据类型判断函数命令命令操作操作whos x显示数据格式(显示数据格式(size、class等)等)class(x)显示数据类型显示数据类型isnumeric(x)判断判断x是否为数值类型是否为数值类型isa(x, integer)判断判断x是否为引号中指定的数值类是否为引号中指定的数值类型型(包括其它数值类型)包括其它数值类型)isreal(x)判断判断x是否为实数是否为实数例:例: a=int8(3); whos a运行结果:运行结果:Name Size Byt

12、es Class a 1x1 1 int8 19数据类型数据类型逻辑型数据逻辑型数据逻辑类型的变量有两种取值,逻辑类型的变量有两种取值,和和,分别用,分别用“1”和和“0”表示。表示。 创建逻辑变量的主要方式:创建逻辑变量的主要方式:(1) 通过输入通过输入“true”或或”false”直接创建直接创建(2) 通过关系运算或逻辑运算创建通过关系运算或逻辑运算创建(3) 通过通过MATLAB函数产生逻辑数据函数产生逻辑数据20数据类型数据类型逻辑型数据逻辑型数据例例1: 直接创建逻辑数组。直接创建逻辑数组。在命令窗输入:在命令窗输入:x=true, y=false运行结果:运行结果:x= 1y=

13、 0例例2: 通过通过MATLAB函数产生函数产生在命令窗输入:在命令窗输入:x=isreal(1+2i)运行结果:运行结果:x= 0在命令窗输入:在命令窗输入:class(x) 结果:结果: ans= logical21数据类型数据类型逻辑型数据逻辑型数据关系运算符关系运算符关系运算符能用来比较两个相同大小的数组,或用来比较一个数组关系运算符能用来比较两个相同大小的数组,或用来比较一个数组和一个标量。关系运算的结果是逻辑型数据,即为真或假。和一个标量。关系运算的结果是逻辑型数据,即为真或假。运算符运算符说明说明运算符运算符说明说明小于小于大于大于=大于或等于大于或等于=等于等于=不等于不等于

14、22数据类型数据类型逻辑型数据逻辑型数据关系运算举例:关系运算举例:(1)4 20(2)4 20(6)4 = 20(7)1= 20)(8)(4 = 20)(4 = 20)23数据类型数据类型逻辑型数据逻辑型数据逻辑运算逻辑运算作为逻辑运算的输入,作为逻辑运算的输入,MATLAB把任何非零数值当作真,而把任何非零数值当作真,而只把零当作假。只把零当作假。逻辑运算符逻辑运算符&与与&与,只适用于标量。与,只适用于标量。|或或|或,只适用于标量。或,只适用于标量。非非24数据类型数据类型逻辑型数据逻辑型数据操作符操作符示例示例功能描述功能描述&A&B与:与:A和和B对应元素都为非零时,则对应元素都为

15、非零时,则对应项为对应项为1;有一个为零的项则为;有一个为零的项则为0|A | B或:或:A和和B对应元素只要有一个为非对应元素只要有一个为非零,则对应项为零,则对应项为1;两个数组均为零;两个数组均为零时,则为时,则为0 A非:单目运算符,非:单目运算符,A是零时,则对应是零时,则对应项为项为1;A是非零是非零 时,则对应项为时,则对应项为0 逻辑运算符功能描述逻辑运算符功能描述25数据类型数据类型逻辑型数据逻辑型数据逻辑运算举例:逻辑运算举例: 2 & 3 13. (2 & 3) | (3 | 0) 2 & 0 14. (0 | 10) & (2 & 0 ) 0 & 50 15. ( 2)

16、 & (3 | 20) 0 & 0 3 | 0 3 | 20 0 | 0 0 | 10 2 100 10001. 026运算符优先级运算符优先级圆括号圆括号 ()转置转置 (.),共轭转置,共轭转置 (),乘方,乘方 (.),矩阵乘方,矩阵乘方 ()标量加法标量加法 (+)、减法、减法 (-)、取反、取反 ()乘法乘法 (.*),矩阵乘法,矩阵乘法 (*),右除,右除 (./),左除,左除 (.),矩阵右除,矩阵右除 (/),矩阵左除,矩阵左除 ()加法加法 (+),减法,减法 (-),逻辑非,逻辑非 ()小于小于 (),小于等于,小于等于 (),大于等于,大于等于 (=),等于,等于 (=)

17、,不等于,不等于 (=)数组逻辑与数组逻辑与 (&)数组逻辑或数组逻辑或 (|)逻辑与逻辑与 (&)逻辑或逻辑或 (|)优先级从高到低排列优先级从高到低排列27数组数组28数组数组基本概念基本概念 数组数组: 按行按行(row)和列和列(column)顺序排列的实数或复数的有顺序排列的实数或复数的有序集,被称为数组。序集,被称为数组。 元素和下标元素和下标:数组中的任何一个数都被称为这个数组的元素,:数组中的任何一个数都被称为这个数组的元素,由其所在的行和列标识,这个标识也称为数组元素的下标或由其所在的行和列标识,这个标识也称为数组元素的下标或索引。行标识、列标识均从索引。行标识、列标识均从1

18、开始;行标识从上到下递增;开始;行标识从上到下递增;列标识从左到右递增。列标识从左到右递增。 阶数阶数: 对对m行、行、n列的数组列的数组A,计为,计为mn阶数组阶数组A; Matlab将单个值视为将单个值视为11阶数组。阶数组。29数组数组基本概念基本概念数组数组A1112131415212223242531323334354142434445行行标标识识1234列列 标标 识识1 2 3 4 5双下标索引双下标索引方式:方式: A(3, 4)=34, 注意注意行下标在先,列下标在后行下标在先,列下标在后单下标索引单下标索引方式:方式: A(15)=34, 注意注意按列增加按列增加30数组数

19、组基本概念基本概念数组的分类数组的分类 一维数组,也称为向量一维数组,也称为向量(vector) ,包含包含: 行向量行向量(row vector)、列向量列向量(column vector) 二维数组二维数组(矩阵矩阵matrix)多维数组多维数组行向量行向量列向量列向量a(2,1)=3a(1,2)=2b(3)=3c(2)=2矩阵矩阵行向量行向量矩阵矩阵列向量列向量行向量行向量矩阵矩阵31数组数组创建创建 一维行向量的创建一维行向量的创建u 方法一:直接输入,使用方法一:直接输入,使用方括号方括号“ ”操作符操作符例:例:创建行向量创建行向量 a=1 3 pi 3+5i a=1 3 pi 3

20、+5*i 或或 a=1, 3, pi, 3+5*i 所有的向量元素必须在操作符所有的向量元素必须在操作符“ ”之内;之内;向量元素间用向量元素间用空格或英文的逗点空格或英文的逗点“,”分开。分开。32数组数组创建创建 一维行向量的创建一维行向量的创建u 方法二:使用冒号方法二:使用冒号“:”操作符操作符语法格式:语法格式:x=Start: Increment: EndStart表示向量表示向量x的第一个元素;的第一个元素;向量向量x的最后一个元素不能大于的最后一个元素不能大于End ;Increment可正可负,若负,则必须可正可负,若负,则必须StartEnd;若正,则必;若正,则必须须St

21、artb=1:10b=1 2 3 4 5 6 7 8 9 1033数组数组创建创建 一维行向量的创建一维行向量的创建例:例:键入并执行键入并执行c=1:2:10,d=1:2:9, e=15:-5:-10 c=1:2:10 c=1 3 5 7 9d=1:2:9d= 1 3 5 7 9 e=15:-5:-10 e= 15 10 5 0 -5 -10% 注意注意c c和和d d的生成语句不同之处的生成语句不同之处34数组数组创建创建 一维行向量的创建一维行向量的创建u 方法三:利用函数方法三:利用函数linspace语法格式:语法格式:x= linspace(x1, x2, n)该函数生成一个由该函

22、数生成一个由n个元素组成的行向量;个元素组成的行向量;x1为其第一个元素;为其第一个元素;x2为其最后一个元素;为其最后一个元素;x1、x2之间元素的间隔之间元素的间隔=(x2-x1)/(n-1)。如果忽略参数如果忽略参数n,则系统默认生成,则系统默认生成100个元素的行向量。个元素的行向量。例:例:键入并执行键入并执行x= linspace(1,2,5)x=1.0000 1.2500 1.5000 1.7500 2.000035数组数组创建创建 列向量的创建列向量的创建u 方法一:直接输入,使用方括号方法一:直接输入,使用方括号“ ”操作符,操作符,元素之元素之间使用使用分号间使用使用分号“

23、;”分割分割。例:例:键入并执行键入并执行x= 1; 2; 3 x=1 2 3u方法二:使用冒号操作符方法二:使用冒号操作符例:例:键入并执行键入并执行x= (1:3) % “ ”表示矩阵的转置表示矩阵的转置36数组数组创建创建 二维数组的创建二维数组的创建u 方法一:直接输入,使用方括号方法一:直接输入,使用方括号“ ”操作符。操作符。 行与行之间须用分号行与行之间须用分号“;” 间隔间隔 行内元素用空格或逗号行内元素用空格或逗号“,”间隔间隔例:例:键入并执行键入并执行a2=1 2 3;4 5 6;7 8 9 a2= 1 2 3 4 5 6 7 8 9例:例:键入并执行键入并执行a2=1:

24、3;4:6;7:9 %结果同上结果同上37数组数组创建创建 二维数组的创建二维数组的创建u 方法二:由向量构成二维数组方法二:由向量构成二维数组例:例:a=1 2 3; b=2 3 4; c=a;b;c1=a b;c= c1= 1 2 3 1 2 3 2 3 4 2 3 438数组数组创建创建 二维数组的创建二维数组的创建u 方法三:使用函数生成特殊形式的二维数组方法三:使用函数生成特殊形式的二维数组函函 数数说说 明明zeros产生元素全为产生元素全为0的数组的数组ones产生元素全为产生元素全为1的数组的数组eye产生单位数组产生单位数组rand产生均匀分布的随机数数组,数值范围(产生均匀

25、分布的随机数数组,数值范围(0,1)randn产生均值为产生均值为0,方差为,方差为1的正态分布随机数数组的正态分布随机数数组diag获取数组的对角线元素,也可生成对角数组获取数组的对角线元素,也可生成对角数组39数组数组创建创建 二维数组的创建二维数组的创建例:例: A=eye(3)A = 1 0 0 0 1 0 0 0 1 A=rand(3)A = 0.9501 0.4860 0.4565 0.2311 0.8913 0.0185 0.6068 0.7621 0.8214 A=zeros(3)A = 0 0 0 0 0 0 0 0 0 A=ones(2,3)A = 1 1 1 1 1 1

26、40数组数组创建创建 二维数组的创建二维数组的创建例:例: A=rand(3, 5)A = 0.4218 0.9595 0.8491 0.7577 0.6555 0.9157 0.6557 0.9340 0.7431 0.1712 0.7922 0.0357 0.6787 0.3922 0.7060 b=diag(A)b=0.42180.65570.6787 C=diag(b)C= 0.4218 0 0 0 0.6557 0 0 0 0.678741数组数组阶数转换阶数转换使用使用reshape函数可以实现数组的阶数转换,函数可以实现数组的阶数转换,其调用格式为:其调用格式为:B=reshap

27、e(A, m, n)例:例: a=-4:4 a= -4 -3 -2 -1 0 1 2 3 4 b=reshape(a, 3, 3) b= -4 -1 2 -3 0 3 -2 1 4F数组元素的排列顺序,从上到下按列排列,先排第一列,数组元素的排列顺序,从上到下按列排列,先排第一列,然后第二列,然后第二列,F要求要求数组的元素总数不变数组的元素总数不变。42数组数组元素寻址元素寻址 元素寻址方法元素寻址方法:使用下标:使用下标例:一维数组寻址例:一维数组寻址a=linspace(1,10,5)a = 1.0000 3.2500 5.5000 7.7500 10.0000a(3) %寻访寻访a的第

28、的第3个元素个元素ans = 5.5000a(1 2 5) %寻访寻访a的第的第1、2、5个元素组成的子数组个元素组成的子数组ans = 1.0000 3.2500 10.000043数组数组元素寻址元素寻址a(1:3) %寻访前寻访前3个元素组成的子数组个元素组成的子数组ans = 1.0000 3.2500 5.5000a(3:-1:1) %由前由前3个元素倒序构成的子数组个元素倒序构成的子数组ans = 5.5000 3.2500 1.0000a(3:end)ans = 5.5000 7.7500 10.0000a(3:end-1)ans = 5.5000 7.750044数组数组元素寻

29、址元素寻址a(1 2 3 5 5 3 2 1) ans = 1.0000 3.2500 5.5000 10.0000 10.0000 5.5000 3.2500 1.0000%数组元素可以被任意重复访问,构成长度大于原数组的数组元素可以被任意重复访问,构成长度大于原数组的新数组。新数组。a(6)? Index exceeds matrix dimensions.M下标值超出了数组的维数,导致错误下标值超出了数组的维数,导致错误a(2.1)? Subscript indices must either be real positive integers or logicals.M下标值只能取正整数或逻辑值下标值只能取正整数或逻辑值45数组数组元素寻址元素寻址例:二维数组寻址例:二维数组寻址 A=magic(4) A= 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1 A(2,3) ans= 10 A (1 3, 2 4) ans= 2 13 7 12 A(2,:) ans= 5 11 10 8 A(:, 3) ans= 3 10 6 15 A(3,1:2) ans=

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论