Matlab教程-第二章课件.ppt

上传人:小飞机 文档编号:1286354 上传时间:2022-11-04 格式:PPT 页数:66 大小:424.63KB
返回 下载 相关 举报
Matlab教程-第二章课件.ppt_第1页
第1页 / 共66页
Matlab教程-第二章课件.ppt_第2页
第2页 / 共66页
Matlab教程-第二章课件.ppt_第3页
第3页 / 共66页
Matlab教程-第二章课件.ppt_第4页
第4页 / 共66页
Matlab教程-第二章课件.ppt_第5页
第5页 / 共66页
点击查看更多>>
资源描述

《Matlab教程-第二章课件.ppt》由会员分享,可在线阅读,更多相关《Matlab教程-第二章课件.ppt(66页珍藏版)》请在三一办公上搜索。

1、第二章 数值数组及其运算,资源与信息学院宋炜,第二章 数值数组及其运算资源与信息学院,数值数组及其运算,本章系统阐述数组的创建、寻访数组运算和矩阵运算的区别实现数组运算的基本函数常用的标准数组生成函数和数组构作技法高维数组的创建、寻访和操作;非数NaN、空数组概念和应用;关系和逻辑操作,数值数组及其运算本章系统阐述,数值数组及其运算,数组是由一组实数或复数排成的长方阵列(Array).它可以是一维的行或列,可以是二维的矩形,也可以是三维的若干同维矩形的堆叠,甚至更高的任意维。所谓数组运算是指:无论在数组上施加什么运算,总认定那种运算对被运算数组中的每个元素(Element)平等地实施同样的操作

2、。,数值数组及其运算数组是由一组实数或复数排成的长方阵列(Arr,数值数组及其运算,Matlab精心设计数组和数组运算的目的在于:使计算程序简单、易读,使程序指令更接近于教科书上的数学计算公式提高程序的向量化程度,提高计算效率,节省计算机的开销,数值数组及其运算Matlab精心设计数组和数组运算的目的在于,数值数组及其运算,例题:绘制函数 在 时的曲线,数值数组及其运算例题:绘制函数,一维数组的创建和寻访,一维数组的创建逐个元素输入法冒号生成法x=a:inc:b定数线性采样法 x=linspace(a,b,n),一维数组的创建和寻访一维数组的创建,一维数组的创建和寻访,冒号生成法x=a:inc

3、:ba是数组的第一个元素;inc是采样点之间的间隔,既步长。若(b-a)是inc的整数倍,则所生成数组的最后一个元素等于b,否则小于b。a,inc,b之间必须用冒号“:”分隔。注意:该冒号必须在英文状态下产生。Inc可以省略Inc可以取正数或负数。但要注意:inc取正时要保证ab。,一维数组的创建和寻访冒号生成法x=a:inc:b,一维数组的创建和寻访,定数线性采样法 x=linspace(a,b,n)a、b分别是生成数组的第一个和最后一个元素n是采样点总数该指令生成(1*n)维数组与x=a:(b-a)/(n-1):b相同,一维数组的创建和寻访定数线性采样法 x=linspace(a,一维数组

4、的创建和寻访,一维数组的子数组寻访和赋值寻访什么样的子数组,取决于数组X(index)中下标index下标index本身可以是单个正整数,或正整数数组,但index中的每个元素的取值必须在闭区间1,end内。在此,end是指一维数组的长度,即最大下标。实例:exm022_1.m、exm022_2.m,一维数组的创建和寻访一维数组的子数组寻访和赋值,二维数组的创建,二维数组是实数或复数排列成矩形构成的。从数据结构上看,矩阵和二维数组没有什么区别。但二维数组带有线性变换含义时,该二维数组就是矩阵。,二维数组的创建二维数组是实数或复数排列成矩形构成的。,二维数组的创建,直接输入法(例2.3-1,例2

5、.3-2)整个输入数组必须以方括号“ ”为其首尾数组的行与行之间必须用分号“;”或回车键隔离数组元素必须有逗号“,”或空格分隔利用M文件创建和保存数组(例2.3-3),二维数组的创建直接输入法(例2.3-1,例2.3-2),二维数组的创建,利用M文件建立MYMAT矩阵启动有关编辑程序或MATLAB文本编辑器,并输入待建矩阵把输入的内容以纯文本方式存盘(设文件名为exm023_3.m)在MATLAB命令窗口中输入exm023_3,即运行该M文件,就会自动建立一个名为MYMAT的矩阵,可供以后使用,二维数组的创建 利用M文件建立MYMAT矩阵,二维数组的标识,“全下标” 标识在C语言里,数组类型的

6、声明:数据类型 标识符常量表达式1常量表达式2;数组元素的调用:数组名下标表达式1下标表达式2;在Matlab里:数组名(r,c) r指定行,c指定列,二维数组的标识“全下标” 标识,二维数组的标识,“单下标”标识“单下标(Linear Index)标识就是”只用一个下标来指明元素在数组中的位置“。这样首先要对二维数组的所有元素进行”一维编号“。即先设想把二维数组的所有列,按先左后右的次序、首尾相接排成”一维长列“;然后,自上往下对元素位置进行编号。“单下标”与”全下标”的转换关系:以(m*n)的二维数组A为例,若全下标元素位置时“第r行,第c列”,那么相应的“单下标”为l=(c-1)*m+r

7、。Sub2ind 据全下标换算出单下标Ind2sub 据单下标换算出全下标,二维数组的标识“单下标”标识,二维数组的标识,“逻辑1”标识(例2.4-1)L的元素或是0或是1,它是“逻辑数组”(Logical Array)。这种逻辑数组是一种特殊的数据类型(DataType)所谓“逻辑1”标识法是:通过与A同样大小的逻辑数组L中“逻辑值1”所在的位置,指示A中元素的位置。,二维数组的标识“逻辑1”标识(例2.4-1),二维数组的子数组寻访和赋值(例2.5-1),二维数组的子数组寻访和赋值(例2.5-1)子数组的使用说明A,二维数组的子数组寻访和赋值(例2.5-1),子数组的使用说明 A(s)“单

8、下标寻访。生成S指定的一维,数组运算和矩阵运算,MATLAB提供了许多数学函数,函数的自变量规定为矩阵变量,运算法则是将函数逐项作用于矩阵的元素上,因而运算的结果是一个与自变量同维数的矩阵。,数组运算和矩阵运算MATLAB提供了许多数学函数,函数的自变,执行数组运算的常用函数,函数数组运算规则的定义对于(m*n)数组函数f(.)的数组运算规则是指:,执行数组运算的常用函数函数数组运算规则的定义,数组运算和矩阵运算,数组运算和矩阵运算表2.6-1三角函数和双曲函数名称含义名称,数组运算和矩阵运算,表2.6-2指数函数名称含义名称含义名称含义exp指数log,数组运算和矩阵运算,表2.6-3复数函

9、数名称含义名称含义名称含义abs模,或绝对,数组运算和矩阵运算,数组运算和矩阵运算表2.6-4园整函数和求余函数名称含义名称,数组运算和矩阵运算,数组运算和矩阵运算表2.6-5坐标变换函数名称含义名称含义c,数组运算和矩阵运算,函数使用说明:(1) 三角函数以弧度为单位计算。(2) abs函数可以求实数的绝对值、复数的模、字符串的ASCII码值。(3) 用于取整的函数有fix、floor、ceil、round,要注意它们的区别。(4) rem与mod函数的区别。rem(x,y)和mod(x,y)要求x,y必须为相同大小的实矩阵或为标量。,数组运算和矩阵运算函数使用说明:(1) 三角函数以弧度为

10、单,数组运算和矩阵运算,数组运算和矩阵运算指令对照汇总,表2.7-1 两种运算指令形式 和实质内涵的异同表,数组运算和矩阵运算数组运算和矩阵运算指令对照汇总表2.7-1,数组运算和矩阵运算指令对照汇总,数组运算矩阵运算指令含义指令含义A.非共轭转置(相当于co,数组运算和矩阵运算指令对照汇总,数组运算矩阵运算指令含义指令含义A.nA的每个元素自乘n次,数组运算和矩阵运算指令对照汇总,数组运算矩阵运算指令含义指令含义A./BA的元素被B的对应元,数组运算和矩阵运算,数组“除、乘方、转置”运算符前的小黑点不能遗漏数组和数组运算,必须同维特别注意:在求“乘、除、乘方、三角和指数函数”时,两种运算的根

11、本区别关系运算和逻辑运算仅对数组进行,数组运算和矩阵运算数组“除、乘方、转置”运算符前的小黑点不能,标准数组生成函数和数组操作函数,标准数组生成函数(例2.8-1),标准数组生成函数和数组操作函数标准数组生成函数(例2.8-1,标准数组生成函数和数组操作函数,标准数组操作函数(例2.8-2),标准数组生成函数和数组操作函数标准数组操作函数(例2.8-2,数组构作技法综合,为了生成比较复杂的数组,也为了对已生成数组进行修改、扩展,Matlab提供了诸如反转、插入、提取、收缩、重组等操作。例2.9-1、 2.9-2、 2.9-3,数组构作技法综合为了生成比较复杂的数组,也为了对已生成数组进,高维数

12、组,对于二维数组,人们习惯的把第一维称为“行”(Row),把第二维称为“列”(Colum),至于第三维,称谓就很不统一,我们采用“页”Page来称呼。高维数组的创建直接通过“全下标”元素赋值方法方式创建高维数组;由若干同样大小的低维数组组合成高维数组;由函数ones,zeros,rand,randn直接创建标准的高维数组;借助Cat,repmat,reshape等函数构作高维数组。例题:2.10-1、2.10-2、2.10-3、2.10.4,高维数组对于二维数组,人们习惯的把第一维称为“行”(Row),高维数组,Cat指令第一个输入变量量填写的数字“表示串接方向的维号”。Repmat指令的第一

13、个输入变量是“模块数组”。第二个输入变量指定“各维方向”铺放“模块数组”的数目。Reshape的第一个输入宗量是“待重组”的数组;第二、三、四输入量是要生成的数组“行数、列数、页数”“将生成数组的总元素”必须与“待重组”数组的元素相等,高维数组Cat指令第一个输入变量量填写的数字“表示串接方向的,高维数组,高维数组的标识数组的维数(dimension)和ndims指令数组的大小(Size)和Size指令数组的长度指令(Length)可给出所有维中的最大长度。例题2.10-5,高维数组高维数组的标识,高维数组构作和操作函数汇总表2.10-1,高维数组,高维数组构作和操作函数汇总指令含义指令含义c

14、at把大小相同的,高维数组构作和操作函数汇总表2.10-1,高维数组,高维数组构作和操作函数汇总指令含义指令含义ones产生全1数,“孤维”的撤销和降维,例题:2.10-6,“孤维”的撤销和降维例题:2.10-6,赋“空阵”值的操作,例题:2.10-7,赋“空阵”值的操作例题:2.10-7,“非数”和“空”数组,非数NaN按IEEE规定,0/0,/,0等运算都会产生非数(Not a Number)。该非数在Matlab中用NaN或nan记述。NaN具有以下性质:NaN参与运算所的结果也是NaN,即具有传递性非数没有大小的概念,因此不能比较两个非数的大小非数的作用真实记述0/0, /,0运算的后

15、果避免可能因0/0, /,0运算而造成的程序执行中断在数据可视化中,用来裁剪图形例题:2.11-1、2.11-2,“非数”和“空”数组非数NaN,“非数”和“空”数组,“空”数组:空数组是Matlab为操作表述需要而专门设计的一种数组。空数组的功能:在没有“空”数组参与运算时,计算结果的“空”可以合理地解释“所得结果的含义”运用“空”数组对其他非空数组赋值,可以改变数组的大小,但不能改变数组的维数例题:2.11-3,“非数”和“空”数组“空”数组:空数组是Matlab为操作表,“非数”和“空”数组,不要把“空”数组与全零数组混淆,这是两个不同的概念;不要把“空”数组看成虚无,它确实存在,利用w

16、hich,who,whos,以及变量浏览器都可以验证它的存在。唯一能正确判断一个数组是否“空”数组的指令时isempty“空数组在运算中不具备传递性,对运算中出现的”空“结果,解释要慎重。,“非数”和“空”数组不要把“空”数组与全零数组混淆,这是两个,关系操作和逻辑操作,在程序流控制和逻辑、模糊逻辑推理中,都需要对一类是非问题作出“是真、是假”的回答。为此Matlab设计了关系操作、逻辑操作和一些相关函数。虽然其他程序语言中也有类似的关系、逻辑运算,但Matlab作为一种比较完善的科学计算环境,有其自身的特点。,关系操作和逻辑操作在程序流控制和逻辑、模糊逻辑推理中,都需要,关系操作和逻辑操作,

17、在所有关系表达式和逻辑表达式中,作为输入的任何非0数都被看作是“逻辑真”,而只有0才被认为是“逻辑假”所有关系表达式和逻辑表达式的计算结果,即输出,是一个由0和1组成的“逻辑数组(Logical Array)”。在此数组中的1表示“真”,0表示“假”。逻辑数组是一种特殊的数值数组。既然它归属“数值类”,那么与数值类有关的操作和函数对他也同样适用;但他又不同于普通的“数值”,它还表示着对事物的判断结论“真”与“假”。因此,他有自身的特殊用途。,关系操作和逻辑操作在所有关系表达式和逻辑表达式中,作为输入的,关系操作和逻辑操作,关系操作,关系操作和逻辑操作关系操作指令含义指令含义=大于等于,关系操作

18、,标量可以与任何维数组进行比较。比较在此标量与数组每个元素之间进行,因此比较结果将于被比数组同维。当比较量中没有标量时,关系符两端进行比较的数组必须维数相同。比较在两个数组相同位置上进行,因此比较结果将于被比数组同维。例题:2.12-1、2.12-2,关系操作标量可以与任何维数组进行比较。比较在此标量与数组每个,逻辑操作,标量可以和任何维数组进行逻辑运算。运算比较在标量与数组每个元素间进行,因此运算结果与参与运算的数组同维。当逻辑运算中没有标量时,参与运算的数组必须维数相同。运算在两个数组相同位置上进行,因此运算结果将于参与运算数组同维。例题:2.12-3、2.12-4,逻辑操作标量可以和任何

19、维数组进行逻辑运算。运算比较在标量与数,关系、逻辑函数,Matlab中能给出“逻辑数组”类型计算结果的函数有很多,包括:关系逻辑函数工作状态判断函数特殊数据判断函数数据类型判断函数,关系、逻辑函数Matlab中能给出“逻辑数组”类型计算结果的,关系、逻辑函数,关系、逻辑函数指令含义指令含义当向量A的元素全非0时,结果才,特殊数据判断指令,特殊数据判断指令指令含义指令含义isempty(x)X是空,,数据类型判断指令,数据类型判断指令指令含义指令含义isa(x,name)输,数据类型判断指令,数据类型判断指令指令含义指令含义 ischar(x)若x,字符串,在MATLAB中,字符串是用单撇号括起

20、来的字符序列。MATLAB将字符串当作一个行向量,每个元素对应一个字符,其标识方法和数值向量相同。也可以建立多行字符串矩阵。,字符串 在MATLAB中,字符串是用单撇号括起来的字符,字符串,既然字符串与数值是两种不同的数据类型,他们的创建方式就不同。数值变量是通过在指令窗中数字赋值创建的字符变量的创建方式是:在指令窗中,先把待建的字符放在单引号中,再按enter键,字符串既然字符串与数值是两种不同的数据类型,他们的创建方式就,字符串,字符串是以ASCII码形式存储的。abs和double函数都可以用来获取字符串矩阵所对应的ASCII码数值矩阵。相反,char函数可以把ASCII码矩阵转换为字符

21、串矩阵。,字符串 字符串是以ASCII码形式存储的。abs和doub,字符串,建立一个字符串向量,然后对该向量做如下处理:(1) 取第15个字符组成的子字符串。(2) 将字符串倒过来重新排列。(3) 将字符串中的小写字母变成相应的大写字母,其余字符不变。(4) 统计字符串中小写字母的个数。,字符串建立一个字符串向量,然后对该向量做如下处理:(1),字符串,命令如下:ch=ABc123d4e56Fg9;subch=ch(1:5) %取子字符串revch=ch(end:-1:1) %将字符串倒排k=find(ch=a %将小写字母变成相应的大写字母char(ch) length(k) %统计小写字

22、母的个数,字符串命令如下:ch=ABc123d4e56Fg9;,字符串,中文字符串数组 A=这是一个算例; A_s=size(A) A56=A(5 6) ASCII_A=double(A),字符串中文字符串数组,字符串,复杂串数组的创建在直接创建多行串数组时,关键是要保证同一串数组的各行字符数要相等。利用传操作函数创建多行串数组(例3.1-4)charStr2matStrvcat这三个函数创建多行串数组时,不必担心每行字符数是否相等。他们总会按最长行设置第二维的长度,其他行的尾部用空格填充。,字符串复杂串数组的创建,字符串,转换函数产生数码字符串(例3.1-5)Int2strNum2strMa

23、t2str,字符串转换函数产生数码字符串(例3.1-5),字符串,与字符串有关的另一个重要函数是eval,其调用格式为: eval(t)其中t为字符串。它的作用是把字符串的内容作为对应的MATLAB语句来执行。%exm031_5.m,字符串与字符串有关的另一个重要函数是eval,其调用格式为:,字符串,串转换函数,字符串串转换函数指令含义指令含义abs把串翻译成asciih,字符串,串转换函数,字符串串转换函数指令含义指令含义dec2bin十进制整数转换,字符串,例题:3.1-7与num2str,mat2str相比,fprintf,sprintf的转换格式更灵活Fprintf与sprintf的区别是,前者把转换结果书写与屏幕或指定文件,而后者则把转换的的结果存放于变量中与str2num相比,sscanf的转换能力也广泛的多,字符串例题:3.1-7,字符串,字符串操作函数(表3.1-2),字符串字符串操作函数(表3.1-2),

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号