第2章 MATLAB数据及其运算2.ppt_第1页
第2章 MATLAB数据及其运算2.ppt_第2页
第2章 MATLAB数据及其运算2.ppt_第3页
第2章 MATLAB数据及其运算2.ppt_第4页
第2章 MATLAB数据及其运算2.ppt_第5页
已阅读5页,还剩78页未读 继续免费阅读

下载本文档

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

文档简介

第2章MATLAB数据及其运算2 1MATLAB数据的特点2 2变量及其操作2 3MATLAB矩阵的表示2 4MATLAB数据的运算2 5字符串2 6结构数据和单元数据 1 MATLAB数据的特点 2 矩阵是MATLAB最基本 最重要的数据对象 MATLAB的大部分运算或命令都是在矩阵运算的意义下执行的 而且这种运算定义在复数域上 向量和单个数据都可以作为矩阵的特例来处理 MATLAB数据的特点 3 数值数据 双精度型 64b 8B double转换 单精度数 32b 4B single转换 带符号整数和无符号整数 字符数据 结构体 Structure 和单元 Cell 数据类型 Struct类型可直接对属性赋值 也可用函数struct定义 Cell类型可以是任何其他的数据类型 如数值 数组 矩阵 字符等 注意 数组与矩阵的区别 数组用 赋值 用 引用元素 但矩阵用 赋值 用 引用元素 逻辑型数据 在MATLAB中 以数值1 非零 表示 真 以数值0表示 假 MATLAB数据的特点 4 MATLAB数据的特点 5 变量及其操作 6 变量与赋值1 变量命名在MATLAB7 0中 变量名是以字母开头 后接字母 数字或下划线的字符序列 最多63个字符 在MATLAB中 变量名区分字母的大小写 标准函数名以及命令名必须用小写字母 变量及其操作 7 第一个字母必需是英文字母 字母间不可留空格 最多只能有31个字母 MATLAB会忽略多馀字母 在MATLAB第4版 则是19个字母 MATLAB在使用变数时 不需预先经过变数宣告 VariableDeclaration 的程序 而且所有数值变数均以预设的double资料型式储存 变量及其操作 8 2 赋值语句 1 变量 表达式 2 表达式其中表达式是用运算符将有关运算量连接起来的式子 其结果是一个矩阵 变量及其操作 9 例2 1计算表达式的值 并显示计算结果 在MATLAB命令窗口输入命令 x 5 cos 47 pi 180 1 sqrt 7 2 i 其中pi和i都是MATLAB预先定义的变量 分别代表代表圆周率 和虚数单位 变量及其操作 10 若要加入注解 Comments 可以使用百分比符号 例如 y 5 2 3 5 5 将运算结果储存在变数y 但不用显示于萤幕 z y 2 将运算结果储存在变数z 并显示于萤幕z 7 2900 预定义变量 11 在MATLAB工作空间中 还驻留几个由系统本身定义的变量 预定义变量有特定的含义 在使用时 应尽量避免对这些变量重新赋值 变量的管理 12 1 内存变量的显示与删除who和whos这两个命令用于显示在MATLAB工作空间中已经驻留的变量名清单 who命令只显示出驻留变量的名称 whos在给出变量名的同时 还给出它们的大小 所占字节数及数据类型等信息 13 clear命令用于删除MATLAB工作空间中的变量 MATLAB工作空间窗口专门用于内存变量的管理 在工作空间窗口中可以显示所有内存变量的属性 当选中某些变量后 再单击Delete按钮 就能删除这些变量 当选中某些变量后 再单击OpenSelection按钮 将进入变量编辑器 通过变量编辑器可以直接观察变量中的具体元素 也可修改变量中的具体元素 内存变量文件 14 利用MAT文件可以把当前MATLAB工作空间中的一些有用变量长久地保留下来 扩展名是 mat MAT文件的生成和装入由save和load命令来完成 常用格式为 save文件名 变量名表 append ascii load文件名 变量名表 ascii 内存变量文件 15 文件名可以带路径 但不需带扩展名 mat 命令隐含一定对 mat文件进行操作 变量名表中的变量个数不限 只要内存或文件中存在即可 变量名之间以空格分隔 当变量名表省略时 保存或装入全部变量 ascii选项使文件以ASCII格式处理 省略该选项时文件将以二进制格式处理 save命令中的 append选项控制将变量追加到MAT文件中 输出格式 Matlab的输出 Matlab以双精度执行所有的运算 运算结果可以在屏幕上输出 同时赋给指定变量 若无指定变量 则系统会自动将结果赋给变量 ans 输出格式可以通过format命令指定 format只改变变量的输出格式 但不会影响变量的值 16 各种format格式 17 MATLAB矩阵的表示 18 矩阵的建立1 直接输入法最简单的建立矩阵的方法是从键盘直接输入矩阵的元素 具体方法如下 将矩阵的元素用方括号括起来 按矩阵行的顺序输入各元素 同一行的各元素之间用空格或逗号分隔 不同行的元素之间用分号分隔 也可以用回车代替分号 MATLAB矩阵的表示 19 利用M文件建立矩阵对于比较大且比较复杂的矩阵 可以为它专门建立一个M文件 下面通过一个简单例子来说明如何利用M文件创建矩阵 MATLAB矩阵的表示 20 例2 2利用M文件建立MYMAT矩阵 1 启动有关编辑程序或MATLAB文本编辑器 并输入待建矩阵 2 把输入的内容以纯文本方式存盘 设文件名为mymatrix m 3 在MATLAB命令窗口中输入mymatrix 即运行该M文件 就会自动建立一个名为MYMAT的矩阵 可供以后使用 MATLAB矩阵的表示 21 建立大矩阵大矩阵可由方括号中的小矩阵或向量建立起来 例如 A 123 456 789 C A eye size A ones size A A 矩阵的直接排列输入 矩阵用方括号 括起 例 A 123 456 789 矩阵同一行中的元素之间用空格或逗号分隔 矩阵行与行之间用分号分开 直接输入法中 分号可以用回车代替 例 向量与矩阵运算 Matlab的操作对象是矩阵 22 矩阵元素可以是任何数值表达式 例 x 1 3 sqrt 3 1 2 3 4 5 矩阵元素赋值 矩阵元素的单独赋值 例 x 5 abs x 1 例 x 5 abs x 6 注 Matlab自动将向量x的长度扩展到5 并将未赋值部分置零 23 大矩阵可以把小矩阵作为其元素 矩阵元素赋值 如何在原矩阵的右边添加一列 24 a 12 34 b a 56 常见矩阵生成函数 25 冒号表达式 26 a b c 产生一个由等差序列组成的向量 a是首项 b是公差 c确定最后一项 若b 1 则b可以省略 例 x 3 2 1 冒号表达式 27 用linspace函数产生行向量 其调用格式为 linspace a b n 其中a和b是生成向量的第一个和最后一个元素 n是元素总数 显然 linspace a b n 与a b a n 1 b等价 矩阵的拆分 28 矩阵元素通过下标引用矩阵的元素 例如A 3 2 200采用矩阵元素的序号来引用矩阵元素 矩阵元素的序号就是相应元素在内存中的排列顺序 矩阵元素按列存储 先第一列 再第二列 依次类推 例如 A 1 2 3 4 5 6 A 3 ans 2序号 Index 与下标 Subscript 是一一对应的 以m n矩阵A为例 矩阵元素A i j 的序号为 j 1 m i 其相互转换关系也可利用sub2ind和ind2sub函数求得 冒号表达式 29 A 172418 222714 461320 size A length A ndims A sub2ind size A 3 2 ij ind2sub size A 6 B reshape A 4 3 A 矩阵的拆分 30 利用冒号表达式获得子矩阵A j 表示取A矩阵的第j列全部元素 A i 表示A矩阵第i行的全部元素 A i j 表示取A矩阵第i行 第j列的元素 A i i m 表示取A矩阵第i i m行的全部元素 A k k m 表示取A矩阵第k k m列的全部元素 A i i m k k m 表示取A矩阵第i i m行内 并在第k k m列中的所有元素 A 将矩阵A每一列元素堆叠起来 成为一个列向量 而这也是MATLAB变量的内部储存方式 可以用reshape实现此外 还可利用一般向量和end运算符来表示矩阵下标 从而获得子矩阵 end表示某一维的末尾元素下标 如何在原矩阵的右边添加一列 矩阵的拆分 31 如何在原矩阵的右边添加一列 a 12 34 a end 1 5 6 矩阵的拆分 32 矩阵的拆分 33 可以使用矩阵下标来进行矩阵的索引 Indexing A 4 5 2 3 取出矩阵A的第四 五行与二 三列所形成的部份矩阵A 914 1015 用一维下标的方式来达到同样目的用冒号 取出一整列或一整行A 5 取出矩阵A的第五列用end这个保留字来代表某一维度的最大值A end 矩阵A的最后一个列可以直接删除矩阵的某一整个列或行A 2 删除A矩阵的第二行A 245 删除A矩阵的第二 四 五列 矩阵的拆分 A 与A 的区别 如何得到由A的第一 三行和第一 二列组成的子矩阵 34 矩阵的拆分 35 利用空矩阵删除矩阵的元素在MATLAB中 定义 为空矩阵 给变量X赋空矩阵的语句为X 注意 X 与clearX不同 clear是将X从工作空间中删除 而空矩阵则存在于工作空间中 只是维数为0 MATLAB数据的运算 36 算术运算MATLAB的基本算术运算有 加 减 乘 右除 左除 乘方 注意 运算是在矩阵意义下进行的 单个数据的算术运算只是一种特例 MATLAB数据的运算 37 矩阵加减运算假定有两个矩阵A和B 则可以由A B和A B实现矩阵的加减运算 运算规则是 若A和B矩阵的维数相同 则可以执行矩阵的加减运算 A和B矩阵的相应元素相加减 如果A与B的维数不相同 则MATLAB将给出错误信息 提示用户两个矩阵的维数不匹配 MATLAB数据的运算 38 A 12345620 B 1324 C A BC 13375824 A 12321 5A 67876 MATLAB数据的运算 39 矩阵乘法假定有两个矩阵A和B 若A为m n矩阵 B为n p矩阵 则C A B为m p矩阵 A 1 2 B 3 4 5 C A BC 3456810A 123 442 B 2 AB 246884 MATLAB数据的运算 40 矩阵除法在MATLAB中 有两种矩阵除法运算 和 分别表示左除和右除 如果A矩阵是非奇异方阵 则A B和B A运算可以实现 A B等效于A的逆左乘B矩阵 也就是inv A B 而B A等效于A矩阵的逆右乘B矩阵 也就是B inv A n阶方阵A是非奇异矩阵的充要条件是方阵A可逆 对一个n行n列的非零矩阵A 如果存在一个矩阵B使AB BA I I是单位矩阵 则A为非奇异矩阵 一个矩阵非奇异当且仅当它的行列式不为零 MATLAB数据的运算 41 矩阵除法对于含有标量的运算 两种除法运算的结果相同 如3 4和4 3有相同的值 都等于0 75 又如 设a 10 5 25 则a 5 5 a 2 10005 0000 对于矩阵来说 左除和右除表示两种不同的除数矩阵和被除数矩阵的关系 对于矩阵运算 一般A B B A MATLAB数据的运算 42 a 1 2 3 4 2 6 7 4 9 b 4 3 2 7 5 1 12 7 92 c1 a bc1 0 5000 0 500044 50001 00000 000046 00000 50001 1667 44 8333c2 b ac2 0 1667 3 33332 5000 0 8333 7 66675 500012 833363 6667 36 5000 MATLAB数据的运算 43 矩阵的乘方一个矩阵的乘方运算可以表示成A x 要求A为方阵 x为标量 A 1 2 3 4 B A 2B 7101522 点运算 44 在MATLAB中 有一种特殊的运算 因为其运算符是在有关算术运算符前面加点 所以叫点运算 点运算符有 和 两矩阵进行点运算是指它们的对应元素进行相关运算 要求两矩阵的维参数相同 点与算术运算符之间不能有空格 参与运算的对象必须具有相同的形状 数与数组的点幂 x y 1 4 2 5 3 6 1 32 729 x 2 1 2 2 2 3 2 1 4 9 2 x 前面留个空格 例 x 123 y 456 2 x y Matlab中的所有标点符号必须在英文状态下输入 45 数与数组的点幂 46 A 1 2 3 B 4 5 6 C A B输出为 C 41018D B A输出为 D 4 002 50002 0000乘方运算 以符号 表示a 当x y均为向量时 z x y表示对应元素的乘方 b 当x为向量 y为标量时 z x y表示z i x i y c 当x为标量 y为向量时 z x y表示z i xy i MATLAB常用数学函数 47 MATLAB常用数学函数 48 MATLAB常用数学函数函数使用说明 1 三角函数以弧度为单位计算 2 abs函数可以求实数的绝对值 复数的模 字符串的ASCII码值 3 用于取整的函数有fix floor ceil round 4 rem与mod函数的区别 rem x y 和mod x y 要求x y必须为相同大小的实矩阵或为标量 Matlab几个取整函数的区别 49 Matlab取整函数有 fix floor ceil round fix 朝零方向取整 如fix 1 3 1 fix 1 3 1floor 朝负无穷方向取整 如floor 1 3 2 floor 1 3 1ceil 朝正无穷方向取整 如ceil 1 3 1 ceil 1 3 2 round 四舍五入到最近的整数 如round 1 3 1 round 1 52 2 round 1 3 1 round 1 52 2 Matlab几个取整函数的区别 50 关系运算 51 关系运算MATLAB提供了6种关系运算符 大于 大于或等于 等于 不等于 它们的含义不难理解 但要注意其书写方法与数学中的不等式符号不尽相同 关系运算 52 关系运算符的运算法则为 1 当两个比较量是标量时 直接比较两数的大小 若关系成立 关系表达式结果为1 否则为0 2 当参与比较的量是两个维数相同的矩阵时 比较是对两矩阵相同位置的元素按标量关系运算规则逐个进行 并给出元素比较结果 最终的关系运算的结果是一个维数与原矩阵相同的矩阵 它的元素由0或1组成 关系运算 53 3 当参与比较的一个是标量 而另一个是矩阵时 则把标量与矩阵的每一个元素按标量关系运算规则逐个比较 并给出元素比较结果 最终的关系运算的结果是一个维数与原矩阵相同的矩阵 它的元素由0或1组成 关系运算 54 例2 3建立5阶方阵A 判断A的元素是否能被3整除 A 24 35 13 22 63 23 39 47 80 80 90 41 80 29 10 45 57 85 62 21 37 19 31 88 76 P rem A 3 0其中 rem A 3 是矩阵A的每个元素除以3的余数矩阵 此时 0被扩展为与A同维数的零矩阵 P是进行等于 比较的结果矩阵 逻辑运算 55 逻辑运算MATLAB提供了3种逻辑运算符 与 或 和 非 逻辑运算的运算法则为 1 在逻辑运算中 确认非零元素为真 用1表示 零元素为假 用0表示 2 设参与逻辑运算的是两个标量a和b 那么 a ba b全为非零时 运算结果为1 否则为0 a ba b中只要有一个非零 运算结果为1 a当a是零时 运算结果为1 当a非零时 运算结果为0 逻辑运算 56 3 若参与逻辑运算的是两个同维矩阵 那么运算将对矩阵相同位置上的元素按标量规则逐个进行 最终运算结果是一个与原矩阵同维的矩阵 其元素由1或0组成 4 若参与逻辑运算的一个是标量 一个是矩阵 那么运算将在标量与矩阵中的每个元素之间按标量规则逐个进行 最终运算结果是一个与矩阵同维的矩阵 其元素由1或0组成 逻辑运算 57 5 逻辑非是单目运算符 也服从矩阵运算规则 6 在算术 关系 逻辑运算中 算术运算优先级最高 逻辑运算优先级最低 逻辑运算 58 例2 4在 0 3 区间 求y sin x 的值 要求 1 消去负半波 即 2 区间内的函数值置0 2 3 2 3 和 7 3 8 3 区间内取值均为sin 3 先根据自变量向量x产生函数值向量y 然后按要求对y进行处理 处理的思路有两个 一是从自变量着手进行处理 二是从函数值着手进行处理 逻辑运算 59 MATLAB还提供了一些关系与逻辑运算函数 逻辑运算 60 例2 5建立矩阵A 然后找出在 10 20 区间的元素的位置 1 建立矩阵A A 4 15 45 10 6 56 0 17 45 0 2 找出在 10 20 区间的元素的位置 find A 10 A 20 字符串 61 在MATLAB中 字符串是用单撇号括起来的字符序列 MATLAB将字符串当作一个行向量 每个元素对应一个字符 其标识方法和数值向量相同 也可以建立多行字符串矩阵 字符串 62 字符串是以ASCII码形式存储的 abs和double函数都可以用来获取字符串矩阵所对应的ASCII码数值矩阵 相反 char函数可以把ASCII码矩阵转换为字符串矩阵 字符串 63 sentence I vegotadate sentenceAscii double sentence 检查sentence的ASCII码sentence2 char sentenceAscii 将ASCII码转回字串形式sentenceAscii 7339118101321031111163297321009711610133sentence2 I vegotadate 字符串 64 例2 5建立一个字符串向量 然后对该向量做如下处理 1 取第1 5个字符组成的子字符串 2 将字符串倒过来重新排列 3 将字符串中的小写字母变成相应的大写字母 其余字符不变 4 统计字符串中小写字母的个数 字符串 65 命令如下 ch ABc123d4e56Fg9 subch ch 1 5 取子字符串revch ch end 1 1 将字符串倒排k find ch a 将小写字母变成相应的大写字母char ch length k 统计小写字母的个数 字符串 66 与字符串有关的另一个重要函数是eval 其调用格式为 eval t 其中t为字符串 它的作用是把字符串的内容作为对应的MATLAB语句来执行 字符串 67 clearall 清除所有变数fori 3 6eval x int2str i magic int2str i endwhosx NameSizeBytesClassx33x372doublearrayx44x4128doublearrayx55x5200doublearrayx66x6288doublearray 字符串 68 若字符串中含有单撇号 则该单撇号用两个单撇号表示 disp I amateacher 对于较长的字符串可以用字符串向量表示 即用 括起来f 70 c f 32 1 8 disp Roomtemperatureis num2str c degreeC 结构数据 69 结构矩阵的建立与引用结构矩阵的元素可以是不同的数据类型 它能将一组具有不同属性的数据纳入到一个统一的变量名下进行管理 建立一个结构矩阵可采用给结构成员赋值的办法 具体格式为 结构矩阵名 成员名 表达式其中表达式应理解为矩阵表达式 结构数据 70 结构矩阵的建立与引用 patient 1 name 张三丰 patient 1 billing 3838 00 patient 1 test 120170180 32065150 53079150 patient 2 name 李四 patient 2 billing 2424 00 patient 2 test 110575200 42080160 63055140 patientpatient 1 patient 1 namepatient 1 test 5 结构数据 71 结构成员的修改可以根据需要增加或删除结构的成员 例如要给结构矩阵a增加一个成员x4 可给a中任意一个元素增加成员x4 a 1 x4 410075 但其他成员均为空矩阵 可以使用赋值语句给它赋确定的值 要删除结构的成员 则可以使用rmfield函数来完成 例如 删除成员x4 a rmfield a x4 结构数据 72 关于结构的函数除了一般的结构数据的操作外 MATLAB还提供了部分函数来进行结构矩阵的操作 单元数据 73 单元矩阵的建立与引用建立单元矩阵和一般矩阵相似 只是矩阵元素用大括号括起来 可以用带有大括号下标的形式引用单元矩阵元素 例如b 3 3 单元矩阵的元素可以是结构或单元数据 可以使用celldisp函数来显示整个单元矩阵 如celldisp b 还可以删除单元矩阵中的某个元素 单元数据 74 将资料指定给某特定单元有两种方式 即单元索引 cellindexing 与内容索引 contentindexing 单元索引是先在等号左边以下标说明单元之位置 并且用一般标准的括符 括起来 如A 2 3 而等号之右边则必须将所要设定的内容利用大括等 括起来 表示该位置所设定的内容 例如产生一个2x2的单元阵列A A 1 1 345 157 354 A 1 2 冯丁树 A 2 1 2 3 11 A 2 2 5 4j A 3x3double 冯丁树 1x4double 5 0000 4 0000i 单元数据 75 产生一个单元阵列可以如一般的矩阵指定方式一样 将内容逐一填入 由于单元阵列 之内容格式可能不一 故任何资料均可存放 单元中若为矩阵 则仅以矩阵之大小及数值内容表示 要注意的是等号右边需用大括符 不能使用矩阵的中括符 而 表示为空集合 是一种合法的型式 若要知道其实际内容 可以使用celldisp指令 单元数据 76 若要知道单元实际内容 可以使用celldisp指令 celldisp A A 1 1 345157354A 2 1 25811A 1 2 冯丁树A 2 2 5 0000 4 0000i 单元数据 所有内容均可以列出 若要以图示表示此单元阵列之相关位置 亦可使用cellplot指令 这是一个绘图式指令 它会将各单元之元素用图表示出 但矩阵之内容仍不显示 cellplot A 77 单元数据 78 内容索引则是在等号左边以大括符定其位置 在

温馨提示

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

评论

0/150

提交评论