《MATLAB数组运算》PPT课件.ppt

上传人:za****8 文档编号:6143995 上传时间:2020-02-17 格式:PPT 页数:140 大小:974.50KB
返回 下载 相关 举报
《MATLAB数组运算》PPT课件.ppt_第1页
第1页 / 共140页
《MATLAB数组运算》PPT课件.ppt_第2页
第2页 / 共140页
《MATLAB数组运算》PPT课件.ppt_第3页
第3页 / 共140页
点击查看更多>>
资源描述
第二讲数值数组及其运算 数值数组和数组运算始终是MATLAB的核心 第二讲数值数组及其运算 2 1表达式2 2引导2 3一维数组的创建和寻访2 4二维数组的创建2 5二维数组元素的标识2 6二维数组的子数组寻访和赋值2 7执行数组运算的常用函数 第二讲数值数组及其运算 2 8数组运算和矩阵运算2 9标准数组生成函数和数组操作函数2 10数组构作技法综合2 11高维数组2 12 非数 和 空 数组2 13关系操作和逻辑操作 2 1表达式 MATLAB采用表达式语言形式 语句常用的形式 例 1 3 2 0 9 值存放在默认变量ans中a 1 3 2 0 9x rand 2 4 产生2 4大小的随机矩阵如果表达式过长 可分装在几行 行末加三个点 表示下一行是续行 z 3 1 x 2 exp x 2 y 1 2 10 x 5 x 3 y 5 exp x 2 y 2 1 3 exp x 1 2 y 2 2 1表达式 表达式的组成 1 数值2 变量3 操作符4 函数 2 1 1数值 在MATLAB中 所有的数都用浮点双精度类型来存储和运算 实矩阵的每个元素占8个字节 复矩阵的每个元素占16个字节 缺点 浪费内存 降低运算的速度 优点 省略了定义数据类型的语句 而且编程时无须考虑数据类型的匹配问题 减少了出错的可能 这种战略取得了成功 使人们不在编程细节上化精力 把注意力集中到科学计算的方法和建模合理性等大问题上 重点 2 1 1数值 MATLAB采用十进制表示形式合法的数值形式举例 3 990 001 19 5 1 6 8i7 8 6j 虚数 9 4e61 3e 3 4 5E33 科学表示法 2e3 4e后面不允许小数形式 2 1 2变量 变量的命名规则 1 变量名 函数名对字母的大 小写敏感 2 变量名由字母 数字和下划线构成 第一个字母必须是英文字母 3 有字符个数限制 版本5 0 最多31个字符 2 1 2变量 MATLAB系统默认变量 注意大小写 i或j 虚单元正确 5 7j错误 5 j7pi 圆周率ans 计算机结果的缺省变量名eps 机器的零阈值2 2204e 016Inf或inf 正无穷大NaN或nan 不定值 即无效数据 重点 可以表示 无穷大 不定值 说明matlab容错性强 运算优先级 算术运算符 关系运算符 逻辑运算符圆括号可以改变其顺序 2 1 3操作符 MATLAB操作符包括 算术运算关系运算逻辑运算位运算其他操作符 重点 一 算术运算符 加法 减法 矩阵乘法 叉乘 矩阵元素乘法 矩阵右除法 矩阵元素右除法 矩阵左除法 矩阵元素左除法 矩阵指数 矩阵元素指数 复共轭转置 非共轭转置 二 逻辑运算符 针对数组元素 逻辑与 逻辑非 逻辑或xor 逻辑异或 三 关系运算符 针对元素 大于 大于等于 等于 不等于 2 1 4函数 MATLAB的函数从来源上看 可以分为三类 1 MATLAB的内部函数2 MATLAB工具箱中的函数3 用户自定义函数用户使用中 感觉不到三类的区别 1 函数可嵌套 象积木一样搭建 例如 x sqrt log z 2 函数可多输入 例如 x max z y 3 函数可多输出 重点 y向量中最大的值 最大值的位置 y矩阵中每一列最大的值 最大值的位置 注意 输入矩阵类型不同 则执行的操作不同 因为matlab函数太多 所以要养成使用help命令 得到有关函数的具体用法 例 helpmax 2 1 4函数 2 1表达式 表达式 即语句 将变量 数值 函数用操作符连接起来 就构成了表达式 例如 a 10j sqrt 10 2 注释 行末的 用于抑制结果在屏幕上显示例如 sin a sin b a b 同在一行的表达式 必须用 分开 2 2引导 数组 由一组实数或复数排成的长方阵列 Array 一维的 行 或 列 二维的 矩形 三维的 若干矩形的堆叠 更高的任意维 2 2引导 数组运算 无论对数组施加什么运算 包括函数 总认为是对数组中每个元素平等的实施同样的操作设计数组和数组运算的目的 使程序简单 易读 更接近数学公式提高程序向量化程度 提高计算效率 节省系统开销 2 2引导 绘制函数在0 x 1时的曲线x 0 0 1 1 定义自变量的采样点取值数组y x exp x 利用数组运算计算各自变量采样点上的函数值plot x y xlabel x ylabel y title y x exp x 绘图第一句定义自变量数组 0为起点 每隔0 1取一个点 直到1 得到1 11的数组 2 2引导 第二句中 指数函数exp x 对x每个元素求值 结果也是1 11的数组数组乘使两个数组对应元素相乘 得到y也是1 11的数组连续函数必须在相应区间上采样才能进行数值计算 一维数组包括行向量和列向量 是所有元素排列在一行或一列的数组 创建行向量创建列向量由行向量转置为列向量 2 3二维数组的创建 A 1 4A 1234 B 1 2 4B 13 D linspace 1 4 5 D 1 00001 75002 50003 25004 0000 例 创建一维等差数组 A logspace 0 log10 32 6 A 1 00002 00004 00008 000016 000032 0000 例 创建一维等比数组 创建一维数组可能用到 方括号 逗号 空格 分号 冒号 函数linspace logspace以及转置符 2 3二维数组的创建 二维数组与矩阵二维数组是由实数或复数排列成矩形构成的从数据结构上看 矩阵和二维数组没有区别当二维数组带有线性变换含义时 就是矩阵 可通过输入每个元素的方式产生可以通过数据文件产生可以通过MATLAB提供的标准函数产生直接调用其他M文件 即可使用已有的矩阵变量 2 3二维数组的创建 数组的产生 2 3二维数组的创建 1 直接输入法二维数组三要素 整个数组必须以 为首尾数组行与行之间必须用 或回车隔离数组元素必须用 或空格分隔 2 3二维数组的创建 在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 在 内 是数组行分隔符 作为指令结束符 不显示执行结果 2 3二维数组的创建 复数数组的另一种输入方式M r 1 2 3 4 5 6 M i 11 12 13 14 15 16 CN M r i M i 由实部 虚部数组构成复数数组M r 123456M i 111213141516CN 1 0000 11 0000i2 0000 12 0000i3 0000 13 0000i4 0000 14 0000i5 0000 15 0000i6 0000 16 0000i 在 内 是数组元素分隔符 作为指令结束符 显示执行结果 2 3二维数组的创建 2 利用M文件创建和保存数组对于经常需要调用的数组尤其是比较大而复杂的数组值得为它专门建立一个M文件 通过数据文件产生矩阵 例如 我们已经得到一个数据文件 名为mydata dat 里面存放一个5 3的数组 则可用命令 loadmydata dat得到矩阵mydata 应用 可以和其它语言程序进行数据通信 举例 2 4二维数组元素的标识 1 全下标 标识经典教科书的标识法即指出是 第几行 第几列 的元素优点 几何概念清楚 引述简单 最常用 全下标 由两个下标组成 行下标 列下标 例如 A 2 5 2 4二维数组元素的标识 2 单下标 标识就是用一个下标来指明元素在数组中的位置对二维数组元素进行 一维编号 把二维数组所有列 按照先左后右的次序 首尾相接排成 一维长列 然后自上往下编号 单下标 与 全下标 转换关系 以 m n 的二维数组A为例 全下标元素位置是 第r行 第c列 改为单下标表示为a c 1 m r MATLAB有两个指令可实现此转换 Sub2ind据全下标算出单下标Ind2sub据单下标算出全下标 2 4二维数组元素的标识 3 逻辑1 标识常用问题 寻找数组中大于某值的元素找出数组中所有绝对值大于3的元素A zeros 2 5 预生成一个2 5全零数组A 4 5 运用 全元素 赋值法获得AL abs A 3 产生与A同维的 0 1 逻辑值数组islogical L 判断L是否逻辑值数组X A L 把L中逻辑值1对应的A元素取出 2 4二维数组元素的标识 A 4 2024 3 1135L 1000100001ans 1X 445L的元素是0或1 它是 逻辑数组 它是一种特殊的数据类型 逻辑1 标识法 通过与A同样大小的逻辑数组L中 1 的位置指示A中元素的位置 2 5二维数组的子数组寻访和赋值 A r c A的r行c列元素A r A的r行全部元素A c A的c列全部元素A A的 单下标全元素 寻访A s 单下标 寻访 生成 s指定的 一维数组 S是行数组 或列数组 则A s 就是长度相同的行数组 或列数组 A L 逻辑1 寻访 由与A同样大小的 逻辑数组 L中的 1 元素选出A的对应元素 2 5二维数组的子数组寻访和赋值 A r c Sa 双下标 方式赋值 Sa的 行宽 列长 必须与A r c 的 行宽 列长 相同 A D 全元素赋值 结果 保持A的 行宽 列长 不变 条件 A D辆数组的元素数相等 A s Sa 单下标 部分元素赋值 结果 保持A的 行宽 列长 不变 条件 s单下标数组长度必须与一维数组Sa的长度相等 但s Sa不一定同是 行数组 或 列数组 2 5二维数组的子数组寻访和赋值 A zeros 2 4 创建2 4的全零数组A 00000000A 1 8 全元素赋值方式A 13572468s 235 产生单下标数组行数组A s 由 单下标行数组 寻访产生A元素组成的行数组Sa 102030 Sa是长度为3的 列数组 A s Sa 单下标方式赋值 2 5二维数组的子数组寻访和赋值 ans 235Sa 102030A 12030710468A 23 ones 2 双下标赋值方式 把A的第2 3列元素全赋为1A 111710118 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 2 6标准数组生成函数和数组操作函数 1 标准数组生成函数diag产生对角形数组eye产生单位数组magic产生魔方数组 以上三数组高位不适用 只适用于二维以下 ones产生全1数组rand1 产生 0 1 之间的均匀分布的随机数 Randn产生均值为0 方差为1的标准正态分布随机数zeros产生全0数组 2 6标准数组生成函数和数组操作函数 标准数组产生的演示ones 1 2 产生长度为2的全1行数组ans 11randn state 0 把正态随机数发生器置0randn 2 3 产生2 3的正态随机阵ans 0 43260 1253 1 1465 1 66560 28771 1909D eye 3 产生3 3的单位阵D 100010001 2 产生元素在 m n 间分布的随机数 重点 通过MATLAB提供的函数产生随机矩阵 2 6标准数组生成函数和数组操作函数 diag D 取D阵的对角元ans 111diag diag D 内diag取D的对角元 外diag利用一维数组生成对角阵ans 100010001 对角矩阵的产生第一步 给出对角线上的元素 放在一个向量V中 第二步 用函数A diag V 可产生相应的对角矩阵 旋转重新排列复制 翻转拼接行列删除 2 6标准数组生成函数和数组操作函数 重点 数组的操作 1 数组的旋转 数组元素的排列旋转90度 B rot90 A 逆时针旋转90度 2 矩阵的重新排列 将矩阵的元素重新排列 reshape 矩阵 行数 列数 按原矩阵的列顺序 重点 A 0 3220 950 0680 1662 0 72070 13110 12520 9114 B A B 0 32200 72070 95000 13110 06800 12520 16620 9114 C reshape A 4 2 C 0 32200 06800 72070 12520 95000 16620 13110 9114 3 矩阵的复制 将矩阵元素复制 repmat 原矩阵 行复制数 列复制数 重点 A 12 34 A 1234 B repmat A 3 2 B 121234341212343412123434 4 矩阵的翻转 fliplr 将矩阵左右镜像翻转flipud 将矩阵上下镜像翻转A 9684 2470 c1 fliplr A 48690742C2 flipud A 24709684 5 矩阵的拼接 通过连接符 可将小矩阵拼接成大矩阵注意 横拼接 纵拼接 重点 2 6标准数组生成函数和数组操作函数 2 数组操作函数cat把相同大小的若干数组串接成高维diag提取对角元素 或生成对角阵flipud上下交换fliplr左右交换kronKronecker乘法以上指令只适用于二维数组 2 6标准数组生成函数和数组操作函数 repmat按指定的行数列数铺放模块数组reshape改变行数列数 元素数不变 2 7数组构作技法综合 1 数组的扩展赋值扩展法A reshape 1 9 3 3 创建3 3数组AA 147258369 2 7数组构作技法综合 A 5 5 111 扩展为5 5数组 扩展部分除 5 5 元素为111外 其余均为0A 147002580036900000000000111 2 7数组构作技法综合 A 6 222 标量对子数组赋值 扩展为5 6数组A 147002222580022236900222000002220000111222 2 7数组构作技法综合 AA 147002221470022225800222258002223690022236900222000002220000022200001112220000111222 指令repmat中 A为模块数组 1表示行方向上铺一块 2表示列方向上铺两块 多次寻访扩展法AA A 1 6 1 6 相当于指令repmat A 1 2 2 7数组构作技法综合 合成扩展法B ones 2 6 创建2 6全1数组B 111111111111 2 7数组构作技法综合 AB r A B 行数扩展合成AB r 147002222580022236900222000002220000111222111111111111 2 7数组构作技法综合 AB c A B 1 5 列数扩展合成AB c 1470022211258002221136900222110000022211000011122211两者的差别主要体现在 和 上 2 7数组构作技法综合 2 单下标寻访和reshape指令演示clear 清除内存变量A reshape 1 16 2 8 变一维数组成2 8数组A 13579111315246810121416 2 7数组构作技法综合 reshape A 4 4 变2 8数组为4 4数组ans 15913261014371115481216 2 7数组构作技法综合 s 13689111416 定义 单下标 数组A s 0 利用 单下标 数组对A的元素重新赋值A 00570013152400101200 3 通过冒号操作符裁剪数组冒号操作符实现裁剪功能时 其意义和冒号用于创建一维数组的意义是一样的 都是实现一个递变效果 一般的裁剪语法 B A a1 a2 a3 b1 b2 b3 表示提取数组A的a1 a2 a3 等行 b1 b2 b3 等列的元素组成子数组B A magic 8 A 64236160675795554121351501617474620214342244026273736303133323435292838392541232244451918484915145253111056858595462631 2 9数组构作技法综合 A 1 2 5 3 7 提取数组A的第1 3 5行 3到7列的所有元素ans 361606746202143423529283839 如果某一位置上不是用数字表示 而是用冒号代替 表示这一位置可以取得所有值 例如 A 2 提取数组A的第2行所有元素ans 955541213515016 A 3 2 7 提取数组A的第3 5 7列所有元素ans 360754135046214227363135283922451814531059463 A 321 658 提取指定行列元素 注意新提取元素的顺序ans 43212451131666057 A 50 60 单下标索引裁剪数组 提取第50到第60号元素ans 5042313918106357162433 4 数组元素删除通过部分的删除也可以实现数组的裁剪 但注意 进行删除时 索引结果必须是完整的行或列 而不能是数组内部的块或单元格 2 9数组构作技法综合 A 1 3 8 即把第1 4 7行所有元素裁剪A 38477918272946681726353713152433424442123324143312 A 356 A 38479294661737131533421234112 2 7数组构作技法综合 4 逻辑函数的运用演示randn state 1 R randn 3 6 创建正态随机阵R 0 86440 8735 1 10270 1684 0 5523 0 61490 0942 0 43800 3962 1 9654 0 8197 0 2546 0 8519 0 4297 0 9649 0 74431 1091 0 2698L abs R 1 5 不等式条件运算 结果给出逻辑数组L 000100111101010001 R L 0 逻辑1 对应的元素赋0值R 0 86440 8735 1 10270 0 5523 0 61490000 0 81970 0 85190 0 9649 0 74431 10910 2 7数组构作技法综合 s find R 0 利用find获得符合关系等式条件的元素 单下标 s 256810111718R s 111 利用 单下标 定位赋值R 0 86440 8735 1 1027111 0000 0 5523 0 6149111 0000111 0000111 0000111 0000 0 8197111 0000 0 8519111 0000 0 9649 0 74431 1091111 0000 2 7数组构作技法综合 ii jj find R 0 利用find获得符合关系等式条件的元素 双下标 disp ii disp jj 2232122312234466结果第一行表示元素行数 第二行表示元素列数 2 8执行数组运算的常用函数 1 基本算术运算MATLAB的基本算术运算有 加 减 乘 右除 左除 乘方 注意 运算是在矩阵意义下进行的 单个数据的算术运算只是一种特例 复习 线性代数 基础知识 1 加 减法 同尺寸矩阵A B aij bij m n2 数乘 设Am n 则kA kaij m n 3 矩阵乘法 设Am k Bk n矩阵A的列数要等于矩阵B的行数则AB Cm ncij ai1b1j ai2b2j 矩阵乘法不满足交换律 即一般AB BA 2 8执行数组运算的常用函数 复习线性代数基础知识 4 转置 把矩阵的行换成列 Am n An m5 逆阵 对n阶方阵A 必须是方阵 如果有一个n阶方阵B 使得 AB BA E则称 方阵A是可逆的 方阵B是为A的逆阵 记为B A 1 例 使用数组 数组运算 A magic 4 A 16231351110897612414151 C ones 4 2 C 11111111 B eye 4 B 1000010000100001 B Aans 15 2 3 13 5 10 10 8 9 7 5 12 4 14 150 B Aans 17231351210897712414152 A Cans 3434343434343434 C C ans 2222222222222222 C C 3ans 128128128128128128128128128128128128128128128128 矩阵的右除 左除 MATLAB的基本处理单元是复数矩阵 标量是一个1 1的矩阵 而在 线性代数 理论中没有除法运算 所以定义了除法为乘法的逆运算 注意 因为矩阵乘法不满足交换律 即一般A B B A 所以除法要考虑 右除 左除 矩阵除法A B相当于A inv B 或A pinv B A B相当于inv A B或pinv A B其中inv是数组求逆函数 仅适用于行列数相同的方形数组 线性代数中 称为方阵 A 356 214 256 A 356214256 B randn 3 B 0 43260 28771 1892 1 6656 1 1465 0 03760 12531 19090 3273 A Bans 4 9369 3 08030 04063 9586 2 4124 2 43894 7620 2 38060 7564 A inv B ans 4 9369 3 08030 04063 9586 2 4124 2 43894 7620 2 38060 7564 A Bans 0 5579 0 90320 86190 59020 57350 3559 0 28500 0216 0 5293 pinv A Bans 0 5579 0 90320 86190 59020 57350 3559 0 28500 0216 0 5293 2 点运算在MATLAB中 有一种特殊的运算 因为其运算符是在有关算术运算符前面加点 所以叫点运算 点运算符有 和 两矩阵进行点运算是指它们的对应元素进行相关运算 要求两矩阵的维参数相同 A magic 4 A 16231351110897612414151 B ones 4 4 eye 4 B 5111151111511115 A Bans 802313555108973012414155 B Aans 802313555108973012414155 B 3ans 125111112511111251111125 A Bans 0 31250 50000 33330 07690 20000 45450 10000 12500 11110 14290 83330 08330 25000 07140 06675 0000 A Bans 3 20002 00003 000013 00005 00002 200010 00008 00009 00007 00001 200012 00004 000014 000015 00000 2000 点乘 元素对元素乘法叉乘 矩阵对矩阵乘法对比举例 2 9数组运算 矩阵运算有明确 严格的数学规则数组运算是MATLAB定义的规则目的 数据管理方便 操作简单 指令形式自然 执行计算有效缺乏严谨的数学推理 本身仍在完善影响随MATLAB而扩大 2 9数组运算 运算指令对照A 非共轭转置A 共轭转置A n各元素n次幂A n方阵的n次幂A B对应元素相乘A B矩阵相乘A BA元素除以B元素A BA右除BB A同上B AA左除Bexp A 对各元素求幂expm A 矩阵指数log A 对各元素求对数logm A 矩阵对数sqrt A 对各元素求方根sqrtm A 矩阵平方根 2 9数组运算和矩阵运算 A s标量赋给A的每个元素A B对应元素关系运算A B对应元素逻辑运算数组 除 乘方 转置 运算符前的点不能遗漏 乘 除 乘方 三角和指数函数 时 两种运算有区别 关系运算和逻辑运算仅对数组进行 2 9数组运算和矩阵运算 两种不同转置的比较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 2 10关系操作和逻辑操作 MATLAB的约定 任何非0数认为是 逻辑真 只有0作为 逻辑假 关系表达式和逻辑表达式的计算结果是 逻辑数组 LogicalArray 1表示 真 0表示 假 逻辑数组是一种特殊的数值数组数值类的有关操作和函数同样适用 1 关系运算 大于 大于等于 等于 不等于注意 两个矩阵的尺寸应相同分别比较对应位置上的元素比较结果为1或0 重点 2 10关系操作和逻辑操作 2 10关系操作和逻辑操作 关系运算示例A 1 9 B 10 A r0 A 4 r1 A B 关系运算运用之一 求近似极限 修补图形缺口t 2 pi pi 10 2 pi 自变量数组中存在0值y sin t t 在t 0处 计算将产生NaNtt t t 0 eps 逻辑数组参与运算 使0元素被一个 机器零 小数代替 2 10关系操作和逻辑操作 yy sin tt tt 用数值可算的sin eps eps近似替代sin 0 0极限subplot 1 2 1 plot t y 使 1 2 幅子图中的第1幅成为当前图 绘制曲线axis 7 7 0 5 1 2 坐标控制指令 设定坐标范围xlabel t ylabel y title 残缺图形 坐标轴命名 书写图名subplot 1 2 2 plot tt yy 使 1 2 幅子图中的第2幅成为当前图 绘制曲线axis 7 7 0 5 1 2 xlabel t ylabel yy title 正确图形 2 10关系操作和逻辑操作 左图残缺 右图连续完整这是典型的处理极限的方法NaN在绘图中的一个用途 对曲线或曲面进行裁剪 2 逻辑运算 运算符 逻辑与 逻辑非 逻辑或输入非0 被看作 逻辑真 重点 2 10关系操作和逻辑操作 2 10关系操作和逻辑操作 例2 12 4 逻辑操作应用之一 逐段解析函数的计算和表现 本例演示削顶整流正弦半波的计算和图形绘制 t linspace 0 3 pi 500 y sin t 产生正弦波从自变量着手进行逐段处理z1 t2 pi y 利用关系逻辑运算 获得整流半波 即取图形小于pi或大于2pi的部分关系逻辑运算和数值运算w t pi 3 关系逻辑运算生成逻辑数组w 2 10关系操作和逻辑操作 w n w 逻辑操作生成逻辑数组w相反的逻辑数组w nz2 w sin pi 3 w n z1 通过逻辑数组 获得削顶整流半波subplot 1 3 1 plot t y r ylabel y subplot 1 3 2 plot t z1 r axis 010 11 subplot 1 3 3 plot t z2 b axis 010 11 2 10关系操作和逻辑操作 3 关系 逻辑函数MATLAB中能给出 逻辑数组 结果的函数 关系逻辑函数 工作状态函数特殊数据判断函数 数据类型判断函数等关系逻辑函数all A isequal A B any A xor A B 逻辑运算函数 MATLAB给出了许多非常方便的函数供用户对数据的条件进行检测 灵活应用这些函数 可大大提高编程效率 xor 对矩阵元素进行逻辑异或all 测试矩阵中是否全为非零元素any 测试矩阵中是否含有非零元素find 找出矩阵中非零元素及其下标isnan x 测试矩阵是否含有无效元素 1 异或函数C xor A B 重点 A rand 2 4 A 0 95010 60680 89130 45650 23110 48600 76210 0185 B A 0 5B 11100010 C A 0 9 C 01111111 xor B C ans 10011101 all B ans 0010 any B ans 1110 2 all x 1 函数作用在向量上时 判别向量的元素是否全部非0 2 函数作用在矩阵上时 判别矩阵的每列是否全部非0 函数的返回值为0 假 或1 真 重点 3 any x 1 函数作用在向量上时 判别向量是否有非0的元素2 函数作用在矩阵上时 判别矩阵的每列是否有非0的元素函数的返回值为0 假 或1 真 重点 4 find x 函数功能 找出矩阵x中的非0元素及其下标1 函数输出1个变量2 函数输出2个变量3 函数输出3个变量注意 按照竖列的搜索顺序 重点 函数输出1个变量时 返回值 非0元素的搜索次序 函数输出2个变量时 返回值 非0元素的行下标 列下标 函数输出3个变量时 返回值 行下标 列下标 非0元素值 5 isnan x 找出矩阵x中含有的Nan数据 无效数据的来源 0 0 Inf Inf 应用举例 每一列是一个采样样本 请删除含有无效数据的样本 1 找到无效数据的位置 2 进行数据的再处理 删除无效数据 重点 2 11高维数组 三维数组行 Row 列 Column 页 Page 行 一维 矩形面 二维 长方体 三维 高维数组 2 11高维数组 大于2维的矩阵称为高维矩阵 习惯上称三维矩阵的第一维为 行 第二维为 列 第三维为 页 访问矩阵A中第2页中的第三行第四列的元素 使用下标A 3 4 2 2 11高维数组 1 高维数组的创建常用的四种创建方法 直接 全下标 赋值由若干同样大小的低维数组组合由函数ones zeros rand randn创建由cat repmat reshape等函数构造 2 11高维数组 全下标 赋值法A 2 2 2 1 单元素赋值创建2 2 2数组B 2 5 3 1 3 子数组赋值创建2 5 3数组 2 11高维数组 低维数组组合成高维数组clear A ones 2 3 A 2 ones 2 3 2 A 3 ones 2 3 3有三个二维数组合成一个三位数组 2 11高维数组 由函数ones zeros rand randn创建rand state 1111 rand 2 4 3 产生均匀分布随机数组由cat repmat reshape构作cat 3 ones 2 3 ones 2 3 2 ones 2 3 3 Cat的第一个输入量表示串接方向的维号 本例中第一个输入量是3 表示 沿第3维方向串接 2 11高维数组 repmat ones 2 3 1 1 3 repmat的第一个输入量是被铺放的模块数组 第二个输入指定各维铺放的个数 指令中 1 1 3 表示 在行和列方向各铺一块 在页方向上铺3块reshape 1 12 2 2 3 reshape的第一个输入量是待重组的数组 后面的输入量是要生成数组的各维大小生成数组总元素数必须与待重组数组总元素数要相等元素放置顺序遵循单下标规则 2 11高维数组 2 高维数组的标识数组的维数 Dimension 行 列 数组 向量 维数为1矩阵的维数为2指令ndims A 可直接给出数组A的维数 2 11高维数组 数组的大小 Size 指令size A 给出A各维的大小 行数 列数 指令length A 给出所有维中的最大长度clear A reshape 1 24 2 3 4 dim A ndims A 测量A的维数size A size A 测量A的大小L A length A 求A的长度 2 11高维数组 dim A 3size A 234L A 4 2 12高维矩阵的应用 图像处理 1 真彩色位图文件的读入函数x imread test bmp 得到一个8位的m n 3的数组 x 1 为红色分量x 2 为绿色分量x 3 为蓝色分量因为在MATLAB中unit8型数据不能直接运算 所以如果需要运算的话 必须先转换数据类型 x double x 2 12高维矩阵的应用 图像处理 2 真彩色位图文件的写回函数imwrite x test bmp 3 真彩色位图显示函数imagesc x 图象处理通常是先读入图像文件 作了滤镜效果后 每一种滤镜都代表着一种数学处理方法 显示在屏幕上 如果保留则写回文件 思考 如何实现红色滤镜效果 clearall 先清空工作空间x imread 苹果1 bmp 读入图像数据figure 1 设置1号图形窗口imagesc x 显示苹果图像y double x 将unit8型转换为双精度型y 1 0 设置红色分量为0y uint8 y 转换为unit8型figure 2 设置2号图形窗口imagesc y 显示苹果图像 红色滤镜 去红色y 1 0 去绿色y 2 0 去蓝色y 3 0 思考 如何将图片旋转90度显示 本章总结 表达式1 数值2 变量 命名规则 默认变量 3 操作符 算术 关系 逻辑等 4 函数 分类 用法 总结 矩阵1 表示2 产生 直接输入 文件 系统函数产生 用户程序 3 操作 6种 矩阵运算 算术 关系 逻辑和常用函数 测试 生成 2 2 之间的均匀分布的随机数数组 其命令为 生成均值为5 方差为9的正态分布的随机数数组 其命令为 A 123 456 321 B A C A B C 1 已知A 1256 D diag A 1 D 测试 已知A 1 23 456 789 B 3 C A B 令C 2 2 8 则C 已知A eye 2 3 C A B reshape 1 6 3 2 则B C 编程 产生一个 0 1 间随机分布的10 5矩阵a 然后统计a中大于0 6且小于0 7的元素个数number 如果number小于10 向用户报告 符合条件的元素太少 参考程序 a rand 10 5 N a 0 6 a 0 7number sum sum N ifnumber 10disp 符合条件的元素太少 end 小结 掌握数值数组的创建和寻访方法理解数组运算和矩阵运算的含义熟悉标准数组生成函数和数组操作函数的运用熟悉两类特殊数组的应用了解关系运算和逻辑运算及应用 2 13字符串 字符串数组主要用于可视化编程内容 如界面设计和图形绘制 1 创建串数组必须将待建字符放在 单引号对 中 当串中本身包含单引号时 每个单引号符用 连续的两个单引号 表示 2 串数组的大小size指令可获得串数组的大小 串中的每一个字符 包括中英文字符 空格 标点都算一个元素 str DalianCity 注意 变量str实际上是一个1 11字符数组 因为字符数组中空格也算一个字符 whosstrNameSizeBytesClassstr1x1122chararrayGrandtotalis11elementsusing22bytes 字符串内的单引号是由两个连续的单引号来表示 字符串连接可以直接从数组连接中得到 u liuwenttoroom u liuwenttoroom v andsaid Thereisagoodnews v andsaid Thereisgoodnews w uv w liuwenttoroom andsaid Thereisagoodnews 如同矩阵 字符串可以有多行 但每行必须有相同的列 因此要用空格使所有行有相同长度 t IlikeMATLAB YouhateC Helikesnone t IlikeMATLABYouhateC Helikesnone 1字符串的操作 读数组元素的方法 t 1 5 ans k t 2 4 8 ans hate t 1 13 1 8 ans BALTAM 这是MATLAB的反向拼写 disp 显示一个向量或字符串而不显示它的变量名 disp str DalianCity strstr DalianCity 3 串数组的元素标识按从左至右的顺序依次用1 2 3 4 等标识元素在串中的位置 4 串数组的ASCII码指令abs和double可以显示串数组对应的ASCII码数值数组 指令char则可把ASCII码数值数组转换成串数组 字符串运算举例 1 创建串数组a Thisisanexample 2 串数组a的大小L length a 3 串数组的元素标识a14 a 1 4 提出一个子字符串ra a L 1 1 字符串的倒排4 串数组的ASCII码ascii a abs a 产生ASCII码char ascii a 把ASCII码变回字符串 字符串运算举例 例3 13 使字符串s中字母全部大写s DalianMaritimeUniversity ascii s abs s 获取ASCII码w find s a 小写改为大写 大小写字母ASCII值差32 char ascii s 把新的ASCII码翻成字符 lower 大写改为小写upper 小写改为大写
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!