matlab数值数组及其运算.ppt_第1页
matlab数值数组及其运算.ppt_第2页
matlab数值数组及其运算.ppt_第3页
matlab数值数组及其运算.ppt_第4页
matlab数值数组及其运算.ppt_第5页
已阅读5页,还剩69页未读 继续免费阅读

下载本文档

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

文档简介

第三章数值数组及其运算 数值数组和数组运算始终是MATLAB的核心 最重要的一章 3 1数值运算的特点 数组 由一组实数或复数排成的长方阵列 Array 一维的 行 或 列 二维的 矩形 三维的 若干矩形的堆叠 更高的任意维 3 1数值运算的特点 数组运算 无论对数组施加什么运算 包括函数 总认为是对数组中每个元素平等的实施同样的操作设计数组和数组运算的目的 使程序简单 易读 更接近数学公式提高程序向量化程度 提高计算效率 节省系统开销 3 1数值运算的特点 绘制函数在0 x 1时的曲线x 0 0 1 1y x exp x plot x y xlabel x ylabel y title y x exp x 第一句定义自变量数组 0为起点 每隔0 1取一个点 直到1 得到1 11的数组第二句中 指数函数exp x 对x每个元素求值 结果也是1 11的数组数组乘是两个数组对应元素相乘 得到y也是1 11的数组连续函数必须在相应区间上采样才能进行数值计算 3 1数值运算的特点 3 2一维数组的创建和寻访 3 2 1一维数组的创建 1 冒号生成格式x a inc ba是第一个元素 inc是步长 缺省为1 若 b a 是inc的整数倍 则生成数组最后一个元素等于b 否则小于binc可取正数或负数 取正 ab 3 2 1一维数组的创建 例 冒号生成法演示x 1 6x 123456x 1 2 6x 135x 0 1 5x 0 1 2 3 4 5 3 2 1一维数组的创建 2 线性 对数 采样格式x linspace a b n a b是第一个和最后一个元素 n是采样点数等价于x a b a n 1 b格式x logspace a b n 3 2 1一维数组的创建 例 线性 对数生成法演示b1 linspace 1 10 5 b1 1 00003 25005 50007 750010 0000b2 logspace 0 3 4 b2 1101001000 3 2 1一维数组的创建 3 逐个元素输入x 2pi 2sqrt 3 3 5i 4 运用MATLAB函数生成法如rand zeros ones等以上均为行数组 列数组转置即可 3 2 1一维数组的创建 例 函数法生成数组 a ones 1 3 a 111 rand state 0 x rand 1 5 a1 0 95010 23110 60680 48600 8913 a1 a a2 111 补充 一维数组元素的寻访和赋值 1 数组元素的寻访 Address x 3 寻访数组x的第三个元素x 125 寻访数组x的第一 二 五个元素 组成子数组x 1 3 寻访前三个元素 组成子数组x 3 end 寻访从第三到最后的元素 组成子数组 x 3 1 1 由前三个元素倒排构成子数组x find x 0 5 由大于0 5的元素构成子数组 先找到大于0 5的元素下标再寻访x 12344321 对元素可以重复寻访 使所得数组长度允许大于原数组注意对数组的寻访不改变原数组的值 补充 一维数组元素的寻访和赋值 2 子数组的赋值 Assign x 3 0 第三个元素赋值为0 x 14 11 第一 四个元素都赋1保证被赋值的子数组长度与送入的数组长度相同 3 2 2二维数组的创建 1 直接输入法二维数组三要素 整个数组必须以 为首尾数组行与行之间必须用 或回车隔离数组元素必须用 或空格分隔 3 2 2二维数组的创建 在MATLAB环境下 用下面三条指令创建二维数组Ca 2 7358 b 33 79 这两条指令分别给变量a b赋值C 1 2 a i b b sqrt a sin pi 4 a 5 b 3 5 i 创建二维数组CC 1 00005 4716 0 4177i0 69090 70714 82443 5000 1 0000i 在 内 是数组行分隔符 作为指令结束符 不显示执行结果 3 2 2二维数组的创建 2 数组编辑器创建 3 2 2二维数组的创建 3 利用M文件创建和保存数组对于经常需要调用的数组 尤其是比较大而复杂的数组 值得为它专门建立一个M文件 4 利用MATLAB函数创建特殊数组表3 2 1 例3 2 5 上机验证diag产生对角形数组eye产生单位数组magic产生魔方数组 以上三类数组不适用于高维 只适用于二维以下 ones产生全1数组zeros产生全0数组rand产生均匀分布随机数组randn产生正态分布随机数组randn state 0 把正态随机数发生器置0 3 2 2二维数组的创建 3 2 2二维数组的创建 例 标准数组产生的演示ones 1 2 产生长度为2的全1行数组ans 11randn state 0 把正态随机数发生器置0A randn 2 3 产生2 3的正态随机阵A 0 43260 1253 1 1465 1 66560 28771 1909B eye 3 产生3 3的单位阵B 100010001 3 2 2二维数组的创建 C diag A 取A阵的对角元C 0 43260 2877D diag C 利用一维数组生成对角阵等同于指令D diag diag A D 0 4326000 2877 3 2 3二维数组元素的标识和寻访 1 全下标 标识 P113 经典教科书的标识法即指出是 第几行 第几列 的元素优点 几何概念清楚 引述简单 最常用 全下标 由两个下标组成 行下标 列下标A r c A的r行c列元素A r A的r行全部元素 按行排A c A的c列全部元素 按列排 3 2 3二维数组元素的标识和寻访 2 单下标 标识就是用一个下标来指明元素在数组中的位置对二维数组元素进行 一维编号 把二维数组所有列 按先左后右的次序 首尾相接排成 一维长列 然后自上往下编号A A的 单下标全元素 寻访A s 单下标 寻访 生成 s指定的 一维数组 s是行数组 或列数组 则A s 就是长度相同的行数组 或列数组 单下标 与 全下标 转换关系 以 m n 的二维数组A为例 全下标元素位置是 第r行 第c列 改为单下标表示为a c 1 m r MATLAB有两个指令可实现此转换 sub2ind据全下标算出单下标ind2sub据单下标算出全下标P113例3 2 6 重点 3 2 3二维数组元素的标识和寻访 3 2 3二维数组元素的标识和寻访 3 逻辑法 标识常用问题 寻找数组中符合条件的元素A L 逻辑1 寻访 由与A同样大小的 逻辑数组 L中的 1 元素选出A的对应元素 例 找出数组中所有绝对值大于3的元素A zeros 2 5 预生成一个2 5全零数组A 4 5 运用 全元素 赋值法获得AL abs A 3 产生与A同维的 0 1 逻辑值数组X A L 把L中逻辑值1对应的A元素取出 3 2 3二维数组元素的标识和寻访 A 4 2024 3 1135L 1000100001X 445L的元素是0或1 它是 逻辑数组 是一种特殊的数据类型 islogical L 判断L是否逻辑值数组 A r c Sa 双下标 方式赋值 Sa的 行宽 列长 必须与A r c 的 行宽 列长 相同 A D 全元素赋值 结果 保持A的 行宽 列长 不变 条件 A D两个数组的元素数相等 A s Sa 单下标 部分元素赋值 结果 保持A的 行宽 列长 不变 条件 s单下标数组长度必须与一维数组Sa的长度相等 但s Sa不一定同是 行数组 或 列数组 补充 二维数组的子数组赋值 例 A zeros 2 4 创建2 4的全零数组A 00000000A 1 8 全元素赋值方式A 13572468A 1 2 2 可以用哪个指令替代 ans 34 补充 二维数组的子数组赋值 A 2 3 5 由 单下标行数组 寻访A元素 组成行数组ans 如上个指令中的 变成 结果怎样 235Sa 102030 Sa是长度为3的 行数组 列数组也可以 A 2 3 5 Sa 单下标方式赋值A 12030710468A 23 ones 2 双下标赋值法 把A的2 3列元素全赋为1A 111710118 补充 二维数组的子数组赋值 补充 二维数组的子数组赋值 A 1 3 为空数组 表示把A的第1 3列去掉A 1718A 2 1 2 5 1 3 5 把等号右边的3个数字分别赋向A第二行的1 3 5个元素 位置不足的地方自动补0A 17000 18 30 5B A 1 2 2 1 1 3 5 B 100 1 3 5 1 3 5100 补充 二维数组的子数组赋值 A 3 end ans 000 30 5L A 3L 1011110111A L NaNA NaN7NaNNaNNaNNaN8NaNNaNNaN 2学时 3 2 4数组操作技法综合 数组操作函数 P115表3 2 3 rot90把数组逆时针旋转90度diag提取对角元素 或生成对角阵flipud上下交换fliplr左右交换repmat按指定的行数列数铺放模块数组reshape改变行数列数 元素数不变以上指令只适用于二维数组 reshape可用于三维 例 1 reshape的使用演示a 4 4A reshape a 3 3 把一维数组a重排成3 3的二维数组a 4 3 2 101234A 4 12 303 214 3 2 4数组操作技法综合 2 diag的使用演示b diag A 取A矩阵对角阵生成数组bB diag b 根据b数组生成B对角矩阵b 404B 400000004 3 2 4数组操作技法综合 A 4 12 303 214 3 repmat使用演示B1 repmat B 2 2 B1 400 400000000004004 400 400000000004004 3 2 4数组操作技法综合 B 400000004 3 2 4数组操作技法综合 4 flipud和fliplr使用演示A1 flipud A 上下对称交换A1 214 303 4 12A2 fliplr A 左右对称交换A2 2 1 430 341 2 A 4 12 303 214 5 数组的删除A1 1 3 删除A1的第1 3行 为空数组A1 30 3注意 只能整行整列的删除 6 rot90的使用演示D rot90 A2 2 逆时针旋转180度D 214 303 4 12 3 2 4数组操作技法综合 A1 214 303 4 12 A2 2 1 430 341 2 3 2 4数组操作技法综合 补充 7 数组的扩展 赋值扩展法 D 3 4 11 扩展为3 4数组 扩展部分除 3 4 元素为11外 其余均为0D 2140 3030 4 1211D 5 22 扩展为5 4数组D 2140 3030 4 1211000022222222 D 214 303 4 12 3 3数组运算 数组加 减 乘 除 幂函数的数组运算规则 函数f 对数组的运算相当于对数组的每一个元素作相同的函数运算A 1 4 6 2 B A 2加 减运算默认的都是数组运算大部分常用函数都可以执行数组运算 表3 3 1 3 3 2 3 3数组运算 矩阵运算有明确 严格的数学规则数组运算是MATLAB定义的规则目的 数据管理方便 操作简单 指令形式自然 执行计算有效缺乏严谨的数学推理 本身仍在完善影响随MATLAB而扩大 3 3数组运算 运算指令对照 表3 3 1 数组运算矩阵运算A 非共轭转置A 共轭转置A n各元素n次幂A n方阵的n次幂A B对应元素相乘A B矩阵相乘A BA元素除以B元素A BA右除B AB 1 B A同上B AB左除A B 1A exp A 对各元素求幂expm A 矩阵指数log A 对各元素求对数logm A 矩阵对数sqrt A 对各元素求方根sqrtm A 矩阵平方根 3 3数组运算 例 两种不同转置的比较clear A zeros 2 3 A 1 6 全元素赋值法A A 1 i 运用标量与数组乘产生复数矩阵A A A 数组转置 即非共轭转置A M A 矩阵转置 即共轭转置A 1 0000 1 0000i3 0000 3 0000i5 0000 5 0000i2 0000 2 0000i4 0000 4 0000i6 0000 6 0000iA A 1 0000 1 0000i2 0000 2 0000i3 0000 3 0000i4 0000 4 0000i5 0000 5 0000i6 0000 6 0000iA M 1 0000 1 0000i2 0000 2 0000i3 0000 3 0000i4 0000 4 0000i5 0000 5 0000i6 0000 6 0000i 例 两种不同乘的比较clear A 1 2 3 4 B 2 3 4 5 C A BD A BA 1234B 2345C 261220D 10132229 3 3数组运算 3 3数组运算 例 两种不同求平方根的比较clear B 4 9 16 25 B A sqrt B B M sqrtm B B 491625B A 2345B M 0 9421 0 9969i1 5572 0 3393i2 7683 0 6032i4 5756 0 2053i思考 要想由B A和B M还原B 应该怎么做 补充 高维数组 三维数组行 Row 列 Column 页 Page 行 一维 矩形面 二维 长方体 三维 补充 高维数组 例 生成三维数组 clear A reshape 1 12 2 2 3 A 1 1324A 2 5768A 3 9111012 补充 高维数组 dim A ndims A 测量A的维数size A size A 测量A的大小L A length A 求A的长度 求size中的最大值 dim A 3size A 223L A 3 3 4 非数 和 空 数组 3 4 1非数NaNIEEE规定0 0 0 都会产生非数NaN nan 的性质 传递性 NaN参与运算所得结果也是NaN没有 大小 概念 不能比较两个非数的大小 3 4 1非数NaN 非数的用途 真实记录0 0 0 运算的结果避免可能因上述运算造成的程序执行中断测量数据处理中 用来标识 野点 非正常点 在数据可视化中 用来裁剪图形 3 4 1非数NaN 非数的产生a 0 0 b 0 log 0 c inf inf非数的传递性0 a sin a 非数的属性判断class a 数据类型归属ans doubleisnan a 该指令唯一能正确判断是否非数ans 1 3 4 1非数NaN 例3 4 2 非数元素的寻访rand state 0 R rand 2 5 R 1 5 NaN R 2 3 NaN 产生一个均匀分布随机数组 其中元素 1 5 和元素 2 3 为非数元素R 0 95010 60680 89130 4565NaN0 23110 4860NaN0 01850 4447LR isnan R 对数组元素是否非数进行判断 找出非数元素的位置标识LR 0000100100 si find LR 非数的 单下标 si 69 ri ci find LR 直接确定全下标ri 21ci 35 ri ci ind2sub size R si 转换成 全下标 标识rj 21cj 35 disp 非数在二维数组R中的位置 disp 单下标时的第 int2str si 1 和第 int2str si 2 个元素 输出 全下标 标识非数在二维数组R中的位置单下标时的第6和第9个元素ind2sub单下标转换为全下标指令int2str数据转换为字符串指令 3 4 1非数NaN 3 4 2 空 数组 2 空 数组是MATLAB为操作和表述需要专门设计的一维 二维用 表示对于高维 只要某维或若干维长度为0空数组的用途 可以合理解释结果的含义用于赋值可以使数组变小 删除行或列 但不能改变数组的维数 3 4 2 空 数组 注意 空 数组不同于全零数组 空 数组不是 虚无 存在于工作空间判断是否 空 isempty不具备传递性 得 空 结果要谨慎解释 3 4 2 空 数组 例3 4 3 创建 空 数组的几种方法a b ones 2 0 c zeros 2 0 d eye 2 0 f rand 2 3 0 4 空 数组的属性class a 空 的数据类别ans doubleisnumeric a 是数值数组类吗ans 1isempty a 唯一可正确判断数组是否 空 的指令ans 1 3 4 2 空 数组 whicha 变量a是什么aisavariablendims a 数组a的维数ans 2size a a数组的大小ans 00 3 4 2 空 数组 例3 4 3 用于子数组的删除和大数组的大小收缩A reshape 4 5 2 5 创建一个数值数组AA 4 2024 3 1135A 2 4 删除A的第二 四列A 404 315A 1 删除A的第一行A 315 重点 3 5关系操作和逻辑操作 MATLAB的约定 任何非0数认为是 逻辑真 只有0作为 逻辑假 关系表达式和逻辑表达式的计算结果是 逻辑数组 LogicalArray 1表示 真 0表示 假 逻辑数组是一种特殊的数值数组数值类的有关操作和函数同样适用关系运算和逻辑运算仅对数组进行 3 5关系操作和逻辑操作 1 关系操作大于 大于等于 等于 不等于标量与数组比较 标量与每个元素比较两个数组比较 必须同维同大小 3 5关系操作和逻辑操作 例 关系运算示例 P128 A 1 9 B 10 A r0 A 4 r1 A B A 123456789B 987654321r0 111000000r1 000010000 3 5关系操作和逻辑操作 2 逻辑操作 P129 与 或 非xor与非标量与数组的逻辑运算在标量与每个元素之间进行数组之间的运算 要求数组同维同大小 3 5关系操作和逻辑操作 例 逻辑操作示例A 1 6 L1 A 3 判断A中哪些元素不大于3L2 A 3 A 6 判断A中哪些元素大于3小于6A 123456L1 111000L2 000110 3 5关系操作和逻辑操作 A B 2 3C xor A B A 123456B 2 10123C 001000 3 5关系操作和逻辑操作 3 例 常用逻辑函数演示 见书表3 5 3 clear A 1 2 0 3 0 0 A 120300all A 不含0元素 返回1ans 100any A 不是全0元素 返回1ans 110logical A 创建逻辑数组ans 110100 B true 2 3 B 111111islogical B ans 1c 河北工业大学 c 河北工业大学isletter c ans 111111 3 5关系操作和逻辑操作 3 5关系操作和逻

温馨提示

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

评论

0/150

提交评论