matlab 2-1
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
MATLAB @SDU
21
第二节 数组运算(点运算)
• 数组运算:是指无论在数组上施加什么 数组运算: 运算( 、 、 或函数) 运算(+、-、×、÷或函数),总认为 那种运算对被运算数组中的每个元素 (Element)平等地实施同样的操作。 )平等地实施同样的操作。 • 当两个数组具有相同阶数时,进行加、 当两个数组具有相同阶数时,进行加、 除的点运算 点运算, 减、乘、除的点运算,其运算是按元素 对元素方式进行的。 对元素方式进行的。 • 例
MATLAB @SDU 6
一维数组的子数组寻访和赋值
• 例1:子数组的寻访(Address)。 :子数组的寻访( )。 • 例2:子数组的赋值(Assign)。 :子数组的赋值( )。
MATLAB @SDU
7
二维数组的创建
• 二维数组: 二维数组:
– 是由实数或复数排列成矩形而构成的。 是由实数或复数排列成矩形而构成的。 – 从数据结构上看,矩阵和二维数组没有什么 从数据结构上看, 区别。当二维数组带有线性变换时, 区别。当二维数组带有线性变换时,该二维 数组就是矩阵。 数组就是矩阵。
• MATLAB有两个指令可实现以上表示方法 有两个指令可实现以上表示方法 间的转换: 间的转换:
– Sub2ind – Ind2sub 据全下标换算出单下标。 据全下标换算出单下标。 据单下标换算出全下标。 据单下标换算出全下标。
MATLAB @SDU
14
“逻辑1”标识
• 所谓“逻辑1”标识 法是:通过与 同样大 所谓“逻辑 标识 通过与A同样大 小的逻辑数组L中 逻辑值1”所在的位置 所在的位置, 小的逻辑数组 中“逻辑值 所在的位置, 指出A中元素的位置 中元素的位置。 指出 中元素的位置。 • L的元素或是 或是 ,它是“逻辑数组 的元素或是0或是 的元素或是 或是1,它是“ (Logical Array)”。是一种特殊的数据类 。 型。 • 例
MATLAB @SDU
4
第一节 数组与矩阵的创建
• 一维数组的创建 • 二维数组的创建 • 多(高)维数组的创建
MATLAB @SDU
5
一维数组的创建
(1)逐个元素输入法 )
x=[2 pi/2 sqrt(3) 3+5i]
(2)冒号生成法 )
通过“步长”设定,生成一维“ 通过“步长”设定,生成一维“行”数组的方法。 数组的方法。 通用格式: 通用格式:x=a:inc:b
MATLAB @SDU 22
2. 数组乘除(.∗,./,.\) a.∗b —— a,b两数组必须有相同的行 和列两数组相应元素相乘。
MATLAB @SDU
20
多维数组的标识
• 数组的维数(Dimension)和ndims指令 数组的维数( ) 指令
– 指令 指令ndims(A)可直接给出数组 的维数。 可直接给出数组A的维数 可直接给出数组 的维数。
• 数组的大小(Size)和size指令 数组的大小( ) 指令
– 不管 数组的维数是多少,size(A)可给出 各 不管A数组的维数是多少 数组的维数是多少, 可给出A各 可给出 维的大小,而指令length(A)可给出所有维中 维的大小,而指令 可给出所有维中 的最大长度。 的最大长度。即length(A)等价于 等价于 max(size(A))。 。
否则取1matlabsdu40特殊数据判断指令特殊数据判断指令指令含义指令含义isemptyisnanx对应x中非数nan元素的位置取1其余均为0isfinitex对应x中有限大小元素的位置取1其余均为0isprime对应x中质数元素的位置取1其余均为0isinfx对应x中无穷大小元素的位置取1其余均为0isrealx对应x中实数元素的位置取1其余均为0isletterx对应x中英文字母的元素位置取1其余均为0isspace对应x中空格的元素位置取1其余均为0matlabsdu41数据类型判断指令数据类型判断指令指令含义指令含义isaxname输入宗量name是指具体数据类型的英文名称
MATLAB @SDU
15
二维数组的子数组寻访和赋值
• 子数组寻访和赋值格式汇总表 • 不同赋值方式示例
MATLAB @SDU
16
子数组寻访和赋值格式汇总表
子数组寻访和赋 值 A(r,c) A(r,:) A(:,c) A(:) A(s) A(L) A(r,c)=Sa A(:)=D(:) A(s)=Sa 使 用 说 明 它由A 它由A的“r指定行”和“c指定列”上的元素组成 指定行” 指定列” 它由A 它由A的“r指定行”和“全部列”上的元素组成 指定行” 全部列” 它由A 它由A的“全部行”和“c指定列”上的元素组成 全部行” 指定列” “单下标元素”寻访。它由A的各列按自左到右的次序,首尾相接而生成“一 单下标元素”寻访。它由A的各列按自左到右的次序,首尾相接而生成“ 维长列” 维长列”数组 “单下标”寻访。生成“s指定的”一维数组。S若是“行数组”(或“列数 单下标”寻访。生成“ 指定的”一维数组。 若是“行数组” ),则A(s)就是长度相同的 行数组” 就是长度相同的“ 列数组” 组”),则A(s)就是长度相同的“行数组”(或“列数组”) 寻访。 “逻辑1”寻访。生成“一维”列数组:由与A同样大小的“逻辑数组”L中的 逻辑1 寻访 生成“一维”列数组:由与A同样大小的“逻辑数组” 元素选出A 单下标”次序排成长列组成。 “1”元素选出A的对应元素;按“单下标”次序排成长列组成。 元素选出 的对应元素; 以“双下标”方式,对子数组A(r,c)进行赋值;Sa的“行宽、列长”必须与 双下标”方式,对子数组A(r,c)进行赋值;Sa的 行宽、列长” A(r,c)进行赋值 A(r,c)的 行宽、列长” A(r,c)的“行宽、列长”相同 全元素赋值方式。结果:保持A 行宽、列长”不变。条件: 全元素赋值方式。结果:保持A的“行宽、列长”不变。条件:A、D两个数组 的总元素相等, 行宽、列长” 的总元素相等,但“行宽、列长”不一定相同 的部分元素重新赋值。结果:保持A 行宽、列长” 按“单下标”方式,对A的部分元素重新赋值。结果:保持A的“行宽、列长” 单下标”方式, MATLAB @SDU 不变。条件: 单下标数组的长度必须与“一维数组” Sa的长度相等 但是 的长度相等,但是s 不变。条件:s单下标数组的长度必须与“一维数组” Sa的长度相等,17 s、 Sa不一定同是 行数组” 不一定同是“ 列数组” Sa不一定同是“行数组”或“列数组”
• “全下标”标识 全下标” • “单下标”标识 单下标” • “逻辑1”标识 逻辑 标识
MATLAB @SDU
11
“全下标”标识
• “全下标”标识法:即指出是“第几行, 全下标”标识法:即指出是“第几行, 第几列”的元素。 第几列”的元素。 • 优点:几何概念清楚,引述简单。 优点:几何概念清楚,引述简单。 • 对于二维数组来说, “全下标”标识由两 对于二维数组来说, 全下标” 个下标组成 行下标,列下标。 组成: 个下标组成:行下标,列下标。 • 例:矩阵A=[ 1 2 3 4 5 矩阵
– 使计算程序简单、易读,使程序指令更接近于教科书 使计算程序简单、易读, 上的数学计算公式; 上的数学计算公式; – 提高程序的向量化程度,提高计算效率,节省计算机 提高程序的向量化程度,提高计算效率, 开销。 开销。
• 例:
绘制函数y = xe − x在0 ≤ x ≤ 1时的曲线。
MATLAB @SDU
(3)定数线性采样法 )
在设定的“总点数” 在设定的“总点数”下,均匀采样生成一维“行”数组。 均匀采样生成一维“ 数组。 通用格式: 通用格式:x=linspace(a,b,n) [说明 该指令生成(1 ×n)数组,其作用与 说明]该指令生成 说明 该指令生成( )数组,其作用与x=a:(ba)/(n-1):b同。 同
MATLAB @SDU 13
• “单下标”与“全下标”的转换关系: 单下标” 全下标” 转换关系:
– 以(m×n)的二维数组 为例,若“全下标”元 的二维数组A为例 全下标” × 的二维数组 为例, 素位置是“ 行 那么相应的“ 素位置是“第r行,第c列”,那么相应的“单 列 下标” 下标”为l=(c-1) ×m+r。 。
• “一维编号”: 一维编号”
先设想把二维数组的所有列,按先左后右的次 先设想把二维数组的所有列, 首尾相接排成“一维长列” 然后, 序、首尾相接排成“一维长列”;然后,自上 往下对元素位置进行编号。 往下对元素位置进行编号。
• 例:矩阵 矩阵A=[ 1 2 3 4 5
6 7 8 9 10 11 12 13 14 15 ] 则 A(2)=6, A(5)=7 , A(8)= 8 ,A(12)= 14
子数组与下标寻址举例
1
2
3
4
5
A=
1 2 3
4 8
1
10
6
1
11
6 4 1 5 0
16
2
21
2
1.2 7 5
8
9 12 7 13 4 14
17
25 22 11 23 56 24 10 25
A(4:5,2:3) A([9 14;10 15])
18
7.2 3 0 23
4
18
A(1:5,5) A(:,5) A(21:25)
3
数组、矩阵的基本运算
• MATLAB语言最基本的特点在于矩阵运算, 语言最基本的特点在于矩阵运算, 语言最基本的特点在于矩阵运算 绝大多数的变量和数据都可看成为矩阵变 量和矩阵数据。 量和矩阵数据。 • 应用 应用MATLAB语言编程时,尤其要注意矩 语言编程时, 注意矩 语言编程时 尤其要注意 阵的阶数和向量的维数问题。 阵的阶数和向量的维数问题。 • 标量可看作 ×1阶的矩阵。 标量可看作1× 阶的矩阵 阶的矩阵。
A(3,1) A(3)
4 5
0.5 9
19
5
83 10 1315
20
MATLAB @SDU
多(高)维数组的定义
• 数组的第一维称为“行(Row)”,第二 数组的第一维称为“ ) 维称为“ 维称为“列(Column)”,第三维称为 ) 第四维称为“ “页(Page)”,第四维称为“箱 ) (Box)”,…… )
MATLAB @SDU
19
多(高)维数组的创建
• 创建多维数组最常用的四种方法: 创建多维数组最常用的四种方法: 方法
– 直接通过全下标元素赋值方式创建多维数组; 直接通过全下标元素赋值方式创建多维数组; – 由若干同样大小的低维数组组合成多维数组; 由若干同样大小的低维数组组合成多维数组; – 由函数 由函数ones,zeros,rand,randn直接创建标 直接创建标 维数组; 准多维数组; – 借助 借助cat,repmat,reshape等函数构作多维数 等函数构作多 等函数构作 组。 例
第二章 MATLAB 数值计算
MATLAB @SDU
1
outline
• MATLAB 距阵计算初步 • MATLAB 数值计算
MATLAB @SDU
2
引导
• 数组:是指由一组实数或复数排成的长方阵列 数组: (Array)。 )。 • 数组运算:是指无论在数组上施加什么运算(+、 数组运算:是指无论在数组上施加什么运算( 、 -、×、÷或函数),总认为那种运算对被运算 、 或函数),总认为那种运算对被运算 ), 数组中的每个元素( 数组中的每个元素(Element)平等地实施同样 ) 的操作。 的操作。 • MATLAB精心设计数组和数组运算的目的在于: 精心设计数组和数组运算的目的在于: 精心设计数组和数组运算的目的在于
• 实例
MATLAB @SDU
9
利用M文件创建和保存数组
• 对于今后经常需要调用的数组,尤其是比 对于今后经常需要调用的数组, 较大而复杂的数组,为它专门建立一个M 较大而复杂的数组,为它专门建立一个 文件是值得的。 文件是值得的。 • M文件的创建过程 文件的创建过程
MATLAB @SDU
10
二维数组元素的标识(编号)
6 7 8 9 10 11 12 13 14 15 ] 则 A(2,3)= 8 , A(3,2)= 12 , , A(3,5)= 15 , A(1,5)= 5 , ,
MATLAB @SDU 12
“单下标”标识
• “单下标(Linear Index)”标识: 标识: 单下标 标识
就是“ 就是“只用一个下标来指明元素在数组中的位 置”。
• 直接输入法 • 利用M文件创建和保存数组 利用 文件创建和保存数组
MATLAB @SDU
8
直接输入法
• 对于较小数组,从键盘上直接输入最方便。 对于较小数组,从键盘上直接输入最方便。 • 二维数组必须有以下三个要素: 二维数组必须有以下三个要素: 三个要素
整个输入数组必须以方括号“ 为其首尾; 整个输入数组必须以方括号“[ ]”为其首尾; 为其首尾 数组的行与行之间必须用分号“ 数组的行与行之间必须用分号“;”或回车键 隔离; 【 Enter 】隔离; 数组元素必须由逗号“ 或空格分隔。 数组元素必须由逗号“,”或空格分隔。