《MATLAB矩阵及运算》PPT课件.ppt

上传人:san****019 文档编号:17287032 上传时间:2020-11-17 格式:PPT 页数:103 大小:1.26MB
返回 下载 相关 举报
《MATLAB矩阵及运算》PPT课件.ppt_第1页
第1页 / 共103页
《MATLAB矩阵及运算》PPT课件.ppt_第2页
第2页 / 共103页
《MATLAB矩阵及运算》PPT课件.ppt_第3页
第3页 / 共103页
点击查看更多>>
资源描述
第二章 矩阵及其运算 2.1 表达式(语句) 2.2 矩阵的产生与操作 2.3 矩阵的基本运算 2.4 高维矩阵 2.5 特殊符号 2.6 基本数学函数 2.1表达式 MATLAB采用 表达式语言形式, 语句常用的形式: 例 : 1.3+2*0.9 %值存放在默认变量 ans中 a=1.3+2*0.9 x=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 -99 0.001 .19 -5.1+6.8i 7.8-6j ( 虚数 ) 9.4e6 1.3e-3 -4.5E33 ( 科学表示法 ) 2e3.4 e后面不允许小数形式 2.1.2 变量 变量的命名规则: 1)变量名、函数名对字母的 大、小写敏感 。 2)变量名由 字母、数字和下划线 构成。第一个 字母 必须是英文字母 。 3)有字符个数限制(版本 5.0 :最多 31个字符) 2.1.2 变量 MATLAB系统默认变量 (注意大小写!) i 或 j : 虚单元 正确: 5+7j 错误: 5 j7 pi : 圆周率 ans : 计算机结果的缺省变量名 eps : 机器的零阈值 2.2204e-016 Inf 或 inf : 正无穷大 NaN 或 nan : 不定值(即无效数据) 重点 可以表示 无穷大 、 不定值 ,说明 matlab容错性强 运算优先级: 算术运算符 关系运算符 逻辑运算符 圆括号可以改变其顺序 ! 2.1.3 操作符 MATLAB操作符包括: 算术运算 关系运算 逻辑运算 位运算 其他操作符 重点 一 )算术运算符 :加法 :减法 * :矩阵乘法(叉乘) .* :矩阵元素乘法 / :矩阵右除法 ./ :矩阵元素右除法 :矩阵左除法 . :矩阵元素左除法 :矩阵指数 . :矩阵元素指数 :复共轭转置 . :非共轭转置 二)逻辑运算符 针对元素 注释 行末的 ; 用于 抑制 结果在屏幕上显示 例如 : sin(a), sin(b) , a+b 同在一行的表达式,必须用 , 分开 可通过 输入每个元素的方式 产生 可以通过 数据文件 产生 可以通过 MATLAB提供的 标准函数 产生 直接调用其他 M文件 ,即可使用 已有的矩阵变 量 2.2 矩阵的产生与操作 矩阵的产生: 在 MATLAB中, 矩阵 放在 中,行元素用 , 或 用空格分开,一行元素输入结束后,用 ; 或用回车 隔开。 如: a=1 4 6;5 8 9;6 3 2 当矩阵中某些元素之间数值连续时 如: a=1 2 3 4 5 可用冒号( :)操作符使输入简化 即 a= 1:5 通过直接输入元素的方式产生矩阵 输入方法一: a= 1 2 3 ; 5 6 7 输入方法二: a= 1 , 2 , 3 5 , 6 , 7 因为数值连续,所 以有方法三: a= 1:3 ; 5:7 举例: 通过数据文件产生矩阵 例如,我们已经得到一个数据文件,名为 mydata.dat,里面存放一个 5*3的数组,则可 用命令: load mydata.dat 得到矩阵 mydata。 应用:可以和其它语言程序进行数据通信。 举例: 通过 MATLAB提供的函数产生矩阵 用内部函数可生成一些特殊矩阵 (函数见书上 P50) 重点 1、单位矩阵( E方阵)和广义单位矩阵的 产生 重点 通过 MATLAB提供的函数产生矩阵 2、 随机数矩阵的产生 随机数的产生常常用在控制系统仿真以 及信号分析,是一个非常重要的手段。 MATLAB提供了很好的随机数产生函数: rand() randn() 通过 MATLAB提供的函数产生矩阵 1)产生 0, 1之间的均匀分布的随机数 : 重点 通过 MATLAB提供的函数产生随机矩阵 2)产生元素在 m, n间分布的随机数: 重点 通过 MATLAB提供的函数产生随机矩阵 3)产生均值为 0,方差为 1的标准正态分布随机数: 重点 问题:为什么这 5个随机数相加均值不等于 0? 该函数是产生了随机数,但是可能个数为 10000或更多,均值为 0。 该函数仅仅是从中抽取了几个显示给用户。 通过 MATLAB提供的函数产生随机矩阵 4)产生均值为 m,方差为 q2的正态分布随机数: 通过 MATLAB提供的函数产生随机矩阵 3、 对角矩阵的产生 第一步: 给出对角线上的元素,放在一个向量 V中。 第二步: 用函数 A=diag(V); 可产生相应的对角矩阵。 通过 MATLAB提供的函数产生矩阵 4、用其它函数也可间接产生用户想要的矩阵 通过 MATLAB提供的函数产生矩阵 通过用户编写 M文件的方式产生矩阵 例 : A, B, C矩阵是用户自定义的大矩阵,经常 要用到,就应编写一个 M文件保存。 要使用这些矩阵时,执行所在 M文件。 演示 旋转 重新排列 复制 翻转 拼接 行列删除 2.2 矩阵的产生与操作 重点 矩阵的操作 1)矩阵的旋转 矩阵元素的排列旋转 90度: B=rot90(A) 逆时针旋转 90度 2)矩阵的重新排列 将矩阵的元素重新排列: reshape(矩阵,行数,列数) 按原矩阵的列 顺序 重点 3)矩阵的复制 将矩阵元素复制: repmat(原矩阵 ,行复制数 ,列复制数 ) 重点 4)矩阵的翻转 fliplr( ) 将矩阵左右镜像翻转 flipud( ) 将矩阵上下镜像翻转 A = 9 6 8 4 2 4 7 0 c1 = fliplr(A) 4 8 6 9 0 7 4 2 C2 = flipud(A) 2 4 7 0 9 6 8 4 5)矩阵的拼接 通过连接符 ,可将小矩阵拼接成大矩阵 注意: 横拼接 : , 纵拼接 : ; 例 1 例 3 例 2 重点 6)矩阵的行列删除 利用空矩阵 可从矩阵中删除指定的行或列 重点 思考: size( ) 2.3 矩阵的基本运算 复习 线性代数 基础知识: 1)加、减法: 同尺寸矩阵 A+B=(aij+bij) m n 2)数乘:设 Am n,则 kA=(kaij)m n。 3)矩阵 乘法:设 Am k, Bk n 矩阵 A的列数要等于矩阵 B的行数 则 AB=Cm n cij=ai1b1j+ai2b2j+ 矩阵乘法不满足交换律,即一般 AB BA。 复习线性代数基础知识: 4)转置:把矩阵的行换成列 ( Am n) = An m 5)逆阵: 对 n阶 方阵 A( 必须是方阵 ) ,如果有一个 n阶方阵 B, 使得 : AB=BA=E 则称 : 方阵 A是可逆的, 方阵 B是为 A的逆阵, 记为 B=A-1 2.3 矩阵的基本运算 选择矩阵元素 a(i,j)表示矩阵 a的第 i行第 j列的元素。 a(i,: )表示矩阵 a的第 i行所有列的元素 例 1 例 3 重点 例 2 2.3 矩阵的基本运算 矩阵元素的运算 :加法 :减法 .* :矩阵元素乘法(点乘) ./ :矩阵元素右除法 . :矩阵元素左除法 . :矩阵元素指数 :复共轭转置 . :非共轭转置 矩阵的运算 * :矩阵乘法(叉乘) / :矩阵右除法 :矩阵左除法 1、算术运算 重点 加、减 对应的矩阵元素相运算 点乘 元素对元素乘法 叉乘 矩阵对矩阵乘法 对比举例 矩阵的右除、左除 MATLAB的基本处理单元是复数矩阵 (标量是一 个 1*1的矩阵 )。而在 线性代数 理论中没有除 法运算。所以定义了除法为乘法的逆运算。 注意:因为矩阵乘法不满足交换律,即一般 A*B B*A,所以除法要考虑 “ 右除 ” 、 “ 左除 ” 。 )视作推出: 则有如果: 左除推导: )视作推出: 则有如果: 右除推导: AABC ABCBAC BBAC BABBCABC B(* *B*,*B /A(* *,* 1 11 1 11 1*/ BABA BABA * 1 重点 矩阵的右除、左除 Matlab右除法表示形式: C=A/B 或 C=A * i n v ( B ) Matlab左除法表示形式: C=AB 或 C=i n v ( A ) * B 注意:只有行列式不为 0的方阵才存在逆阵! 则在 MATLAB中运行结果: 43 21 aa aa A 43 21 bb bb B 1 1 2 2 3 3 4 4 / . / . / a b a b A B B A a b a b AB abab abab BA /. / / . 4433 2211 重点 矩阵元素的右除、左除 分析: K/N K*inv(N) 因为 N不是方阵,没有 逆阵,所以报告错误。 KN inv(K)*N 因为 K的逆阵尺寸 2 2, N的尺寸 2 3,所以结 果矩阵 2 3。 则 MATLAB中 A.B的结果: 43 21 aa aa A 43 21 bb bb B 43 21 43 21. bb bb aa aa BA 矩阵元素的指数运算 %复共轭转置 %非共轭转置 . 矩阵元素的复共轭转置和非共轭转置 2、 关系运算 : 小于 : 大于 = : 大于等于 = : 等于 = : 不等于 注意: 两个矩阵的尺寸应相同 分别比较对应位置上的元素 比较结果为 1或 0 重点 2、 关系运算 00 10 98 03 15 40 BA B A 11 01 BA 3、逻辑运算 运算符: % eps0 B 0 2 4 1.2; C=xor(A,B) C= 0 1 0 0 重点 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) 进行数据的再处 理(删除无效数据 ) 重点 其他常见函数 sum() 对矩阵按列求和 或对向量求和 length( ) 测出向量长度 size( ) 测出矩阵大小 det( ) 求矩阵对应的行列式 重点 length 功能:求向量长度 格式: n length(x) 当 x为向量时,它等于向量的长度。当 X 是矩阵时,可得到 X的 最长维 尺寸。 X 5, 7, 9, 0; n length(X) 思考: n? X 5,7,1;9,11,0; n length(X) 思考: n? X rand(5, 12, 3); n length(X) 思考: n? size 功能:求阵列维大小 x rand(2,4,8) ; d= size(x) m size(x,2) 思考: d? m? d=2 4 8 m=4 x 1,2,4 0,8,9 2,3,7 1,4,2 ; d= size(x) m size(x,2) 思考: d? m? d=4 3 m=3 2.4 高维矩阵 大于 2维的矩阵称为高维矩阵。 习惯上称三维矩阵的第一维为 行 ,第二维 为 列 ,第三维为 页 。 访问矩阵 A中第 2页中的第三行第四列的元素, 使用下标 A( 3, 4, 2) 2.4.1 高维矩阵的产生 方法一:直接对高维 赋值 (注意:自动补零) 重点 2.4.1 高维矩阵的产生 方法二:用拼接函数 cat,用低维矩阵拼成高维矩阵 回忆:通过连接符 ,可将小二维矩阵拼接成大二维 矩阵。(,表示横拼接 ;表示纵拼接) 有相似功能的函数: cat(拼接模式 ,矩阵 1,矩阵 2) 拼接模式: 1 纵拼 2 横拼 3 层拼 重点 等价为 A;B 等价为 A,B 或 A B 利用 cat函数产生 2.4.1 高维矩阵的产生 方法三:用函数 reshape 例: A=1:18; reshape(A,2,3,3); 表示把向量 A中的 118的数 放在一个 2*3*3的矩阵中。 注意排列次序! 2.4.2 高维矩阵的标识 1、 函数: ndims( ) 得到多维矩阵的维数 2.4.2 高维矩阵的标识 2、 函数: size( ) 得到各维的尺寸 2.4.2 高维矩阵的标识 3、 函数: length( ) 得到向量的长度 或 得到矩阵的维数中 最大的那个 2.4.4 高维矩阵的应用 图像处理 1.真彩色位图文件的读入函数 x=imread( test.bmp ); 得到一个 8位的 m*n*3的数组; x(:,:,1):为红色分量 x(:,:,2): 为绿色分量 x(:,:,3): 为蓝色分量 因为在 MATLAB中 unit8型数据不能直接运算 ; 所以如果需要运算的话,必须先转换数据类型。 x=double(x); 2.4.4 高维矩阵的应用 图像处理 2.真彩色位图文件的写回函数 imwrite(x, test.bmp ); 3.真彩色位图显示函数 imagesc(x); 图象处理通常是先读入图像文件,作了滤镜效果后, (每一种滤镜都代表着一种数学处理方法),显示在屏幕 上,如果保留则写回文件。 思考:如何实现 红色滤镜效果 clear all %先清空工作空间 x=imread(苹果 1.bmp);%读入图像数据 figure(1);%设置 1号图形窗口 imagesc(x);%显示苹果图像 y=double(x);%将 unit8型转换为双精度型 y(:,:,1)=0;%设置红色分量为 0 y=uint8(y);%转换为 unit8型 figure(2);%设置 2号图形窗口 imagesc(y);%显示苹果图像 %去红色 y(:,:,1)=0 %去绿色 y(:,:,2)=0 %去蓝色 y(:,:,3)=0 思考:如何将图片旋转 90度显示? 感兴趣的同学可以尝试: 用 MATLAB可以自己实现 photoshop中 的各种滤镜功能,关键是数学算法! 比如:如何将图片左右镜像翻转显示? 如何提高图片的亮度? 如何对图片去噪? 2.5 特殊符号 1) 符号的作用是: a. 用来生成一个向量 /矩阵 例如: a= b, b+3; 2*b,6-b; b. 空矩阵(可以删除矩阵中不需要的部分) 例如: a(:,3)= ; a(3,:)= ; c. 可以作为多输出函数的输出变量的列表 例如: i, j, s =find(any(x); 重点 2.5 特殊符号 2) . 符号的作用是: a. 用来表示一个小数点 例如: a = 10. 32 ; b. 用来表示矩阵元素对元素的运算 例如: c = a . * b ; c. 可以用来对结构的域进行访问 例如: a . field; (面向对象) 重点 2.5 特殊符号 3) : 符号的作用是: 例子 等价为 A=1:4 A=1,2,3,4 A=1:0.5:4 A=1.0,1.5,2.0,2.5.3.0,3.5,4 A( 1,: ) A的第 1行的所有元素 A=( 1, :, 4 ) A的第 1行、第 4页上的所有元素 A(:) 将 A的所有元素排成列向量 4)% 符号的作用是:注释符 重点 P15:常用标点的功能 2.6 基本数学函数 基本数学函数是 MATLAB系统提供给用户进行 基本数学运算的函数。 基本数学函数均是对阵列中的 元素 作用。 2.6.1 三角函数 1)正弦函数和双曲正弦函数: Y=sin(X); Y=sinh(X); 2) 余弦函数和双曲余弦函数: Y=cos(X); Y=cosh(X); 3)反正弦函数和反双曲正弦函数: Y=asin(X); Y=asinh(X); 4)反余弦函数和反双曲余弦函数: Y=acos(X); Y=acosh(X); 重点 2.6.1 三角函数 5)正切函数和双曲正切函数: Y=tan(X); Y=tanh(X); 6)反正切函数和反双曲正切函数: Y=atan(X); Y=atanh(X); 其它三角函数请同学自己看书 2.6.2 指数和对数函数 1)指数函数 Y=exp(X);如果 x=a+jb,则 : 2)对数函数 自然对数: Y=log(X); 常用对数: Y=log10(X); 以 2为底的对数: Y=log2(X); 如果 x=a+jb,则: log(x)=log(abs(x)+j*atan2(b,a) 重点 2.6.2 指数和对数函数 4) 平方根函数 y=sqrt(x); 思考:复数的平方根 3) 以 2为指的函数: pow2是 log2的逆函数 , y=pow2(x)可得 到 2的 x次幂。 重点 2.6.3 复数函数 1)实数的绝对值和复数的模 y=abs(x) 2) 求相角函数 y=angle(x) 3) 复共轭函数 y=conj(x) 4)取实部函数 y=real(x) 取虚部函数 y=imag(x) 重点 2.6.4 取整和求余函数 1) 四舍五入取整函数 y=round(x) 2)符号函数 y=sign(x); 2.6.4 取整和求余函数 3)取余函数 z=mod(x,y); x:被除数; y:除数 z是 x/y后的余数 注意: x的元素可是小数,不能是复数 y的元素可是小数 本 章 总 结 表达式 1、数值 2、变量( 命名规则,默认变量 ) 3、操作符( 算术,关系,逻辑等 ) 4、函数( 分类,用法 ) 总 结 矩阵 1、表示 2、产生( 直接输入,文件,系统函数产生,用户程序 ) 3、操作( 6种 ) 矩阵运算 ( 算术,关系,逻辑和常用函数 ) 测试 生成 -2, 2之间的均匀分布的随机数数组 , 其 命令为: ; 生成均值为 5, 方差为 9的正态分布的随机数数 组 , 其命令为: 。 A=1 2 3;4 5 6;3 2 1; B=A ; C=A.*B; C(: , 1)=_ 已知 A=1 2 5 6; D=diag(A,-1); D= _。 测试 已知 A=1, 2, 3; 4, 5, 6; 7, 8, 9, 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=a0.6&a0.7 number=sum(sum(N) if number10 disp(符合条件的元素太少! ) end END Y=sin(X) Y=sinh(X) Y=exp(X) Y=log(X)
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


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


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

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


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