分享
分享赚钱 收藏 举报 版权申诉 / 103

类型MATLAB矩阵及运算.ppt

  • 上传人:jmydc
  • 文档编号:8646957
  • 上传时间:2019-07-07
  • 格式:PPT
  • 页数:103
  • 大小:1.26MB
  • 配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    MATLAB矩阵及运算.ppt
    资源描述:

    1、第二章 矩阵及其运算 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.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表

    2、达式,表达式的组成: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

    3、-4.5E33 (科学表示法),2e3.4 e后面不允许小数形式,2.1.2 变量,变量的命名规则:1)变量名、函数名对字母的大、小写敏感。2)变量名由字母、数字和下划线构成。第一个字母必须是英文字母。 3)有字符个数限制(版本5.0 :最多31个字符),2.1.2 变量,MATLAB系统默认变量 (注意大小写!) i 或 j : 虚单元 正确:5+7j 错误:5j7 pi : 圆周率 ans : 计算机结果的缺省变量名 eps : 机器的零阈值 2.2204e-016 Inf 或 inf : 正无穷大 NaN 或 nan : 不定值(即无效数据),重点,可以表示“无穷大”、“不定值”,说明m

    4、atlab容错性强,运算优先级:算术运算符关系运算符逻辑运算符 圆括号可以改变其顺序!,2.1.3 操作符,MATLAB操作符包括:算术运算关系运算逻辑运算位运算其他操作符,重点,一)算术运算符, :加法 :减法 * :矩阵乘法(叉乘) .* :矩阵元素乘法 / :矩阵右除法 ./ :矩阵元素右除法 :矩阵左除法 . :矩阵元素左除法, :矩阵指数 . :矩阵元素指数 :复共轭转置 . :非共轭转置,二)逻辑运算符,针对元素& :逻辑与 :逻辑非 | :逻辑或 xor :逻辑异或,三)关系运算符,针对元素:大于 = :大于等于 = :等于 = :不等于,2.1.4 函数,MATLAB的函数从来

    5、源上看,可以分为三类: 1)MATLAB的内部函数 2)MATLAB工具箱中的函数 3)用户自定义函数 用户使用中,感觉不到三类的区别!,1)函数可嵌套,(象积木一样搭建) 例如: x=sqrt(log(z),2)函数可多输入,例如: x=max(z , y),3)函数可多输出,重点,y向量中最大的值,最大值的位置,y矩阵中每一列最大的值,最大值的位置,注意:输入矩阵类型不同, 则执行的操作不同。,因为matlab函数太多,所以要养成使用help命令,得到有关函数的具体用法:例:help max,2.1.4 函数,2.1表达式,表达式 (即语句):将变量、数值、函数用操作符连接起来,就构成了表

    6、达式 。例如:a=(10j+sqrt(10)/2; 注释 行末的“;”用于抑制结果在屏幕上显示例如: 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 ,

    7、通过直接输入元素的方式产生矩阵,输入方法一: 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提供的函数产

    8、生矩阵,2、随机数矩阵的产生随机数的产生常常用在控制系统仿真以及信号分析,是一个非常重要的手段。MATLAB提供了很好的随机数产生函数:rand()randn(),通过MATLAB提供的函数产生矩阵,1)产生0,1之间的均匀分布的随机数:,重点,通过MATLAB提供的函数产生随机矩阵,2)产生元素在m,n间分布的随机数:,重点,通过MATLAB提供的函数产生随机矩阵,3)产生均值为0,方差为1的标准正态分布随机数:,重点,问题:为什么这5个随机数相加均值不等于0?该函数是产生了随机数,但是可能个数为10000或更多,均值为0。该函数仅仅是从中抽取了几个显示给用户。,通过MATLAB提供的函数产

    9、生随机矩阵,4)产生均值为m,方差为q2的正态分布随机数:,通过MATLAB提供的函数产生随机矩阵,3、对角矩阵的产生第一步: 给出对角线上的元素,放在一个向量V中。第二步: 用函数 A=diag(V); 可产生相应的对角矩阵。,通过MATLAB提供的函数产生矩阵,4、用其它函数也可间接产生用户想要的矩阵,通过MATLAB提供的函数产生矩阵,通过用户编写M文件的方式产生矩阵,例: A,B,C矩阵是用户自定义的大矩阵,经常要用到,就应编写一个M文件保存。要使用这些矩阵时,执行所在M文件。演示,旋转重新排列复制,翻转拼接行列删除,2.2 矩阵的产生与操作,重点,矩阵的操作,1)矩阵的旋转,矩阵元素

    10、的排列旋转90度:B=rot90(A) 逆时针旋转90度,2)矩阵的重新排列,将矩阵的元素重新排列:reshape(矩阵,行数,列数),按原矩阵的列顺序,重点,3)矩阵的复制,将矩阵元素复制: repmat(原矩阵,行复制数,列复制数),重点,4)矩阵的翻转,fliplr( ) 将矩阵左右镜像翻转 flipud( ) 将矩阵上下镜像翻转 A = 9 6 8 42 4 7 0 c1 = fliplr(A)4 8 6 90 7 4 2 C2 = flipud(A)2 4 7 09 6 8 4,5)矩阵的拼接,通过连接符 ,可将小矩阵拼接成大矩阵 注意: 横拼接: , 纵拼接: ;,重点,6)矩阵的

    11、行列删除,利用空矩阵“ ”可从矩阵中删除指定的行或列,重点,思考:size( ),2.3 矩阵的基本运算,复习线性代数基础知识: 1)加、减法:同尺寸矩阵 A+B=(aij+bij) mn 2)数乘:设Amn,则kA=(kaij)mn。 3)矩阵乘法:设Amk,Bkn矩阵A的列数要等于矩阵B的行数则AB=Cmn cij=ai1b1j+ai2b2j+ 矩阵乘法不满足交换律,即一般ABBA。,复习线性代数基础知识:4)转置:把矩阵的行换成列(Amn)= Anm5)逆阵: 对n阶方阵A(必须是方阵) ,如果有一个n阶方阵B,使得: AB=BA=E则称: 方阵A是可逆的,方阵B是为A的逆阵,记为B=A

    12、-1,2.3 矩阵的基本运算,选择矩阵元素 a(i,j)表示矩阵a的第i行第j列的元素。 a(i,:)表示矩阵a的第i行所有列的元素,重点,2.3 矩阵的基本运算,矩阵元素的运算 :加法 :减法 .* :矩阵元素乘法(点乘) ./ :矩阵元素右除法 . :矩阵元素左除法 . :矩阵元素指数 :复共轭转置 . :非共轭转置,矩阵的运算* :矩阵乘法(叉乘) / :矩阵右除法 :矩阵左除法,1、算术运算,重点,加、减对应的矩阵元素相运算,点乘元素对元素乘法 叉乘矩阵对矩阵乘法 对比举例,矩阵的右除、左除,MATLAB的基本处理单元是复数矩阵(标量是一个1*1的矩阵)。而在线性代数理论中没有除法运算

    13、。所以定义了除法为乘法的逆运算。 注意:因为矩阵乘法不满足交换律,即一般A*BB*A,所以除法要考虑“右除”、“左除”。,重点,矩阵的右除、左除,Matlab右除法表示形式:C=A/B 或 C=A * i n v ( B ),Matlab左除法表示形式:C=AB 或 C=i n v ( A ) * B,注意:只有行列式不为0的方阵才存在逆阵!,则在MATLAB中运行结果:,重点,矩阵元素的右除、左除,分析: K/NK*inv(N) 因为N不是方阵,没有逆阵,所以报告错误。 KNinv(K)*N 因为K的逆阵尺寸22,N的尺寸23,所以结果矩阵23。,则MATLAB中A.B的结果:,矩阵元素的指

    14、数运算,%复共轭转置 %非共轭转置 .,矩阵元素的复共轭转置和非共轭转置,2、关系运算, : 大于 = : 大于等于= : 等于 = : 不等于 注意: 两个矩阵的尺寸应相同 分别比较对应位置上的元素 比较结果为1或0,重点,2、关系运算,3、逻辑运算,运算符: & : 逻辑与 : 逻辑非 | : 逻辑或 输入非0,被看作“逻辑真”,重点,逻辑运算函数,MATLAB给出了许多非常方便的函数供用户对数据的条件进行检测。灵活应用这些函数,可大大提高编程效率。 xor() 对矩阵元素进行逻辑异或 all( ) 测试矩阵中是否全为非零元素 any( ) 测试矩阵中是否含有非零元素 find( ) 找出

    15、矩阵中非零元素及其下标 isnan(x) 测试矩阵是否含有无效元素,1)异或函数 C=xor(A,B),例: A0 0 pi eps; % eps0 B0 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中的非

    16、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( ) 测出向量长度 si

    17、ze( ) 测出矩阵大小 det( ) 求矩阵对应的行列式,重点,length 功能:求向量长度 格式:nlength(x) 当x为向量时,它等于向量的长度。当X是矩阵时,可得到X的最长维尺寸。,X5,7,9,0; nlength(X) 思考:n?,X5,7,1;9,11,0; nlength(X) 思考:n?,Xrand(5,12,3); nlength(X) 思考:n?,size 功能:求阵列维大小,xrand(2,4,8) ; d= size(x) msize(x,2) 思考:d? m?,d=2 4 8 m=4,x1,2,40,8,92,3,71,4,2 ; d= size(x) msi

    18、ze(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,等价为

    19、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的数组

    20、;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);%读入图像数据

    21、 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中的各种滤镜功能,关键是数学算法!比如:如何将图片左右镜像翻转显示?如何提高图片的亮度?如何对图片去

    22、噪?,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):符号的作用是: 例子 等价为

    23、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); 余弦函数和双曲余弦函数:Y=cos(X); Y=cosh(X); 3)反正弦函数和

    24、反双曲正弦函数: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*a

    25、tan2(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 取整和求余函数,四舍五入取整函数 y=round(x) 2)符号函数 y=sign(x);,2.6.4 取整和求余函数,3)取余函数 z=mod(x,y); x:被

    26、除数; 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,-

    27、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)间随机分布的105矩阵a,然后统计a中大于0.6且小于0.7的元素个数number,如果number小于10,向用户报告“符合条件的元素太少!”。,参考程序 : a=rand(10,5);N=a0.6&a0.7number=sum(sum(N)if number10disp(符合条件的元素太少!)end,END,Y=sin(X),Y=sinh(X),Y=exp(X),Y=log(X),

    展开阅读全文
    提示  道客多多所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:MATLAB矩阵及运算.ppt
    链接地址:https://www.docduoduo.com/p-8646957.html
    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    道客多多用户QQ群:832276834  微博官方号:道客多多官方   知乎号:道客多多

    Copyright© 2025 道客多多 docduoduo.com 网站版权所有世界地图

    经营许可证编号:粤ICP备2021046453号    营业执照商标

    1.png 2.png 3.png 4.png 5.png 6.png 7.png 8.png 9.png 10.png



    收起
    展开