matlab 第三章 数值数组及向量化运算
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
9
0
9
0
• 对向量的第15个元素赋值,在赋值之前向量的第11~15个元素 不存在,但是在赋值之后,将自动创建这些元素,并且为没 有明确赋值的元素赋默认值0,这就是MATLAB的数据自动 扩充和初始化机制。
第三章 数值数组及向量化运算
3.2.3 索引
二、矩阵元素的访问 • 访问矩阵的元素也需要使用矩阵元素的索引, 不过具有两种方式: • 第一种方式是使用矩阵元素的行列全下标形式; • 第二种方法是使用矩阵元素的单下标形式。
第三章 数值数组及向量化运算
数组运算:无论对数组施加什么运算(包括函 数),总认为是对数组中每个元素平等的实 施同样的操作 • 设计数组和数组运算的目的:
– 使程序简单、易读;更接近数学公式 – 提高程序向量化程度,提高计算效率,节省系 统开销
第三章 数值数组及向量化运算 • 绘制函数 在0≤x≤1时的曲线 x=0:0.1:1 %定义自变量的采样点取值数组 y=x.*exp(-x)%利用数组运算计算各自变量采样点上的函数 值 plot(x,y),xlabel('x'),ylabel('y'),title('y=x* exp(-x)') %绘图
第三章 数值数组及向量化运算
>> B = [1:3;4:6;7:9] B= 1 2 3 4 5 6 7 8 9
第三章 数值数组及向量化运算
二、数组编辑器
第一种,首先选择工作空间浏览器中的变量,运行数组编辑器, 同时在编辑器中加载变量。 第二种方法是在工作空间浏览器中直接双击变量,也可以运行 数组编辑器,同时在编辑器中加载变量。 第三种方法就是通过工作空间浏览器中的快捷菜单命令Open 来完成同样的工作。 第四种方法是直接在MATLAB命令行窗口中键入如下指令: >>openvar A 打开数组A的编辑器。
第三章 数值数组及向量化运算
四、向量
• 从编程语言的角度上看,向量其实就是一维数 组,然而从数学的角度上看,向量就是1×N 或者N×1的矩阵,即行向量或列向量, MATLAB的基本运算单位就是矩阵和向量, 而M语言本身就是以向量化运算为基础的编程 语言。
第三章 数值数组及向量化运算
五、矩阵
• 在MATLAB中,矩阵的概念就是线性代数中 定义的矩阵的概念——矩阵是用一对圆括号或 者方括号括起来,符合一定规则的数学对象。
第三章 数值数组及向量化运算
二、表达式
表达式 • 构成:变量、数值、函数、操作符。 • 续行:行末以三个点结束。…表示下行为续行。 • 每行最多为4096个字符。 • 行末加; 抑制结果的显示。
第三章 数值数组及向量化运算
三、数组
• 数组是有序数据的集合,在大多数编程语言中,数 组的每一个成员(元素)都属于同一种数据类型,它们 使用同一个数组名称和不同的下标来惟一确定数组 中的成员(元素)。其中,下标是指数组元素在数组中 的序号。 • 对于MATLAB而言,大多数数据类型的数组每一个 元素都是同一个数据类型的元素,而对于其特殊的 元胞数组则不然。和一般的编程语言类似,M语言的 数组也有一维、二维和多维数组的区别。而在 MATLAB中一般不存在数组的数组,除非在M语言 中使用Java数据对象。
第三章 数值数组及向量化运算
>> % 创建矩阵 >> A = 1:25; >> A = reshape(A,5,5) A= 1 6 11 16 21 2 7 12 17 22 3 8 13 18 23 4 9 14 19 24 5 10 15 20 25 >> %访问矩阵的第三行第一列元素 >> A(3,1)或A(3) ans = 3
第三章 数值数组及向量化运算
第三章 数值数组及向量化运算
3.1 概述 3.2 数值数组的创建和寻访
3.3 基本运算
3.4 “非数”和“空数组” 3.5 关系操作和逻辑操作
第三章 数值数组及向量化运算
3.1 概述
• 所谓变量——就是指在程序运行过程中需要改变数 值的量,每一个变量都具有一个名字,变量将在内 存中占据一定的空间,以便在程序运行的过程中保 存其数值。对变量的命名有相应的要求:变量必须 以字母开头,后面可以是字母、数字或者下划线的 组合。 • 所谓常量——就是在程序运行的过程中不需要改变 数值的量,常量也具有相应的名字,其定义方法和 变量一样,在MATLAB中提供了一些常用的常数作 为常量。 • 变量 不需事先定义,自动建立。
第三章 数值数组及向量化运算
3.2.3 索引
• 访问向量元素的结果是创建新的向量。 • 访问向量的元素直接给出元素在向量中的序号, 元素的序号不仅可以是单一的整数,还可以是 元素序号组成的向量,如例子2-8中的各种操 作。 • 关键字end在访问向量元素时,表示向量中最 后一个元素的序号。 • 访问向量元素时,序号的数值必须介于数值 1~end之间。
第三章 数值数组及向量化运算
一、变量
1、变量的特点 • 新变量:自动建立变量并分配存储空间。 • 旧变量:更新其内容,有必要时重新分配存储空间。 2、变量的构成 • 字母、数字和下划线。以字母开头,最长为63个字符,区分 大小写。 3、固定变量 • ans—没有定义变量名时,系统默认变量名为ans。 • eps—容许误差,用于决定奇异性和秩时。 • pi—π。 • inf—无穷大,1/0—inf。 • NaN 不定值,inf/inf 0/0运算产生
第三章 数值数组及向量化运算 2、对向量的元素进行赋值
>> %对向量的第三个元素赋值 >> A(3) = -3 A= 1 2 -3 4 5 6 7 8 >> %对向量中不存在的数据赋值 >> A(15) = -15 A= Columns 1 through 10 1 2 -3 4 5 6 7 8 Columns 11 through 15 0 0 0 0 -15
第三章 数值数组及向量化运算
3.2.3 索引
• • • • • • • • • • • • >> %访问向量的第一、三、五个元素 >> A([1:2:5]) ans = 1 3 5 >> %访问向量的最后四个元素 >> A([end-3:end]) ans = 7 8 9 0 >> %重复访问向量中的元素 >> A([1:5,5: -1:1]) ans = 1 2 3 4 5 5 4 3 2 1
a(1,3) a(7)
a(2,4) a(11)
图. 矩阵的元素
第三章 数值数组及向量化运算
3.2.3 索引
一、向量元素的访问 1、访问向量中的元素 访问向量的元素只要使用相应元素的索引即可 A = [1 2 3 4 5 6 7 8 9 0] >> %访问向量的第三个元素 >> A(3) ans = 3 >> %访问向量的第一、三、七个元素 >> A([1 3 7]) ans = 1 3 7
第三章 数值数组及向量化运算
三、使用函数linspace和logspace • 函数linspace是用来创建线性间隔向量的函数,函数 linspace的基本语法为:x = linspace(x1,x2,n) • 其中* x1为向量的第一个元素,x2为向量的最后一个 元素,n为向量具有的元素个数,函数将根据n的数 值平均计算元素之间的间隔,间隔的计算公式为;* 若在表达式中忽略参数n,则系统默认地将向量设置 为100个元素。 • x = linspace(1,2,5) • x= • 1.0000 1.2500 1.5000 1.7500 2.0000
第三章 数值数组及向量化运算
3.2 数值数组的创建和寻访
3.2.1 创建向量
一.利用逐个输入元素的方法在MATLAB中创建向量 • >> x = [1 3 pi 3+5i] 二.利用冒号运算符创建向量 • >> x = 1:10 • >> x = 1:0.01:1.1 • 利用冒号运算符创建向量的基本语法如下:X = J:INC:K。其中 • * J为向量的第一个元素,而K为向量的最后一个元素,INC为向量元素递 增的步长; • * J、INC和K之间必须用“:”间隔; • * 若在表达式中忽略INC(如例子2-2所示),则默认的递增步长为1; • * INC可以为正数也可以为负数,若INC为正数,则必须J<K,若INC为负 数,则必须J>K,否则创建的为空向量。
第三章 数值数组及向量化运算
>> %获取ห้องสมุดไป่ตู้阵的子矩阵 >> I = [1 3 5];J = [2 4]; >> A(I,J) ans = 6 16 8 18 10 20
第三章 数值数组及向量化运算
3.3 基本运算
3.3.1 矩阵生成函数
MATLAB的矩阵生成函数
函 数 zeros ones eye rand randn diag tril triu pascal magic 说 产生元素全为 0 的矩阵 产生元素全为 1 的矩阵 产生单位矩阵 产生均匀分布的随机数矩阵,数值范围(0,1) 产生均值为 0,方差为 1 的正态分布随机数矩阵 获取矩阵的对角线元素,也可生成对角矩阵 产生下三角矩阵 产生上三角矩阵 产生帕斯卡矩阵 产生幻方阵 明
注意: MATLAB的矩阵元 素的排列以列元素 优先,这一点同 FORTRAN语言的二 维数组元素的排列 方法一致,与C语言 的二维数组元素的 排列不同,C语言的 二维数组元素排列 以行元素优先。
第三章 数值数组及向量化运算
使用索引访问矩阵元素的方法
矩阵元素的访问 A(i,j) A(I,J) A(i,:) A(:,j) A(:) A(l) A(L) 说 明 访问矩阵 A 的第 i 行第 j 列上的元素,其中 i 和 j 为标量 访问由向量 I 和 J 指定的矩阵 A 中的元素 访问矩阵 A 中第 i 行的所有元素 访问矩阵 A 中第 j 列的所有元素 访问矩阵 A 的所有元素,将矩阵看作一个向量 使用单下标的方式访问矩阵元素,其中 l 为标量 访问由向量 L 指定的矩阵 A 的元素,向量 L 中的元素为矩阵 元素的单下标数值
• 第一句定义自变量数组:0为起点,每隔0.1取一个点,直到1。 得到1×11的数组
• 第二句中,指数函数exp(-x)对x每个元素求值,结果也是 1×11的数组 • 数组乘是两个数组对应元素相乘,得到y也是1×11的数组 • 连续函数必须在相应区间上采样才能进行数值计算
第三章 数值数组及向量化运算
第三章 数值数组及向量化运算
访问矩阵的元素 >> %创建矩阵 >> A = magic(5) A= 17 24 1 8 15 23 5 7 14 16 4 6 13 20 22 10 12 19 21 3 11 18 25 2 9 >> %使用全下标的形式访问元素 >> A(2,4) ans = 14 >> %使用单下标的形式访问元素 >> A(17) ans = 14
第三章 数值数组及向量化运算
3.2.2 二维数组的创建
输入矩阵的方法 • (1)输入元素列表 • (2)从外部数据文件中读取矩阵 • (3)利用MATLAB内部函数产生矩阵 • (4)用户自己编写M文件产生矩阵
第三章 数值数组及向量化运算
一、直接输入法 格式约定 • (1)矩阵的行中元素以空格或逗号间隔; • (2)矩阵的行间用分号或回车间隔 ; • (3)整个元素列表用方括号括起来。 整个矩阵的元素必须在“[]”中键入; 矩阵的元素行与行之间需要使用分号“;”间 隔,也可以在需要分行的地方用回车键间隔; 矩阵的元素之间可以使用逗号“,”或者空格 间隔。
第三章 数值数组及向量化运算
>> % 访问矩阵第三行的所有元素 >> A(3,:) ans = 3 8 13 18 23 >> %访问矩阵第四列的所有元素 >> A(:,4) ans = 16 17 18 19 20 >> %访问矩阵的最后一行元素 >> A(end,:) ans = 5 10 15 20 25
第三章 数值数组及向量化运算
• 函数logspace被用来创建对数空间的向量,该 函数的基本语法为x = logspace(x1,x2,n) • 其中:该函数创建的向量第一个元素值为x1, 而最后一个元素的数值为x2,n为向量的元素 个数,元素彼此之间的间隔按照对数空间的间 隔设置; • 若在表达式中忽略参数n,则参数默认地将向 量设置为50个元素。 • >> x = logspace(1,3,3) • x= • 10 100 1000