《MATLAB矩阵及运算》由会员分享,可在线阅读,更多相关《MATLAB矩阵及运算(103页珍藏版)》请在金锄头文库上搜索。
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.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表达式,表达式
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 -4.5E33 (科
3、学表示法),2e3.4 e后面不允许小数形式,2.1.2 变量,变量的命名规则:1)变量名、函数名对字母的大、小写敏感。2)变量名由字母、数字和下划线构成。第一个字母必须是英文字母。3)有字符个数限制(版本5.0 :最多31个字符),2.1.2 变量,MATLAB系统默认变量(注意大小写!)i 或 j : 虚单元 正确:5+7j 错误:5j7pi : 圆周率ans : 计算机结果的缺省变量名eps : 机器的零阈值 2.2204e-016 Inf 或 inf : 正无穷大 NaN 或 nan : 不定值(即无效数据),重点,可以表示“无穷大”、“不定值”,说明matlab容错性强,运算优先级:
4、算术运算符关系运算符逻辑运算符 圆括号可以改变其顺序!,2.1.3 操作符,MATLAB操作符包括: 算术运算 关系运算 逻辑运算 位运算 其他操作符,重点,一)算术运算符, :加法 :减法* :矩阵乘法(叉乘) .* :矩阵元素乘法/ :矩阵右除法./ :矩阵元素右除法 :矩阵左除法. :矩阵元素左除法, :矩阵指数. :矩阵元素指数 :复共轭转置 . :非共轭转置,二)逻辑运算符,针对元素& :逻辑与 :逻辑非| :逻辑或xor :逻辑异或,三)关系运算符,针对元素 :大于= :大于等于= :等于= :不等于,2.1.4 函数,MATLAB的函数从来源上看,可以分为三类:1)MATLAB的
5、内部函数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表达式,表达式 (即语句):将变量、数值、函数用操作符连接起来,就构成了表达式 。 例如:a=(10j+sqrt(10)/
6、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 ,通过直接输入元素的方式产生矩阵,输入方法一:a= 1
7、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、随机数矩阵的产生 随机数的产生常常用在控制系统仿真以
8、及信号分析,是一个非常重要的手段。MATLAB提供了很好的随机数产生函数: rand() randn(),通过MATLAB提供的函数产生矩阵,1)产生0,1之间的均匀分布的随机数:,重点,通过MATLAB提供的函数产生随机矩阵,2)产生元素在m,n间分布的随机数:,重点,通过MATLAB提供的函数产生随机矩阵,3)产生均值为0,方差为1的标准正态分布随机数:,重点,问题:为什么这5个随机数相加均值不等于0?该函数是产生了随机数,但是可能个数为10000或更多,均值为0。该函数仅仅是从中抽取了几个显示给用户。,通过MATLAB提供的函数产生随机矩阵,4)产生均值为m,方差为q2的正态分布随机数:
9、,通过MATLAB提供的函数产生随机矩阵,3、对角矩阵的产生 第一步: 给出对角线上的元素,放在一个向量V中。 第二步: 用函数 A=diag(V); 可产生相应的对角矩阵。,通过MATLAB提供的函数产生矩阵,4、用其它函数也可间接产生用户想要的矩阵,通过MATLAB提供的函数产生矩阵,通过用户编写M文件的方式产生矩阵,例: A,B,C矩阵是用户自定义的大矩阵,经常要用到,就应编写一个M文件保存。要使用这些矩阵时,执行所在M文件。演示,旋转重新排列复制,翻转拼接行列删除,2.2 矩阵的产生与操作,重点,矩阵的操作,1)矩阵的旋转,矩阵元素的排列旋转90度: B=rot90(A) 逆时针旋转9
10、0度,2)矩阵的重新排列,将矩阵的元素重新排列: reshape(矩阵,行数,列数),按原矩阵的列顺序,重点,3)矩阵的复制,将矩阵元素复制:repmat(原矩阵,行复制数,列复制数),重点,4)矩阵的翻转,fliplr( ) 将矩阵左右镜像翻转flipud( ) 将矩阵上下镜像翻转A = 9 6 8 4 2 4 7 0c1 = fliplr(A) 4 8 6 9 0 7 4 2C2 = flipud(A) 2 4 7 0 9 6 8 4,5)矩阵的拼接,通过连接符 ,可将小矩阵拼接成大矩阵注意: 横拼接: , 纵拼接: ;,重点,6)矩阵的行列删除,利用空矩阵“ ”可从矩阵中删除指定的行或列
11、,重点,思考:size( ),2.3 矩阵的基本运算,复习线性代数基础知识:1)加、减法:同尺寸矩阵 A+B=(aij+bij) mn2)数乘:设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-1,2.3 矩阵的基本运算,选择矩阵元素a
12、(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的结果:,矩阵元素的指数运算,%复共轭转置 %非共轭转置 .,矩阵元素的复共轭转置和非共轭转置,2、关系运算, : 大于 = : 大于等于 = : 等于 = : 不等于注意:两个矩阵的尺寸应相同分别比较对应位置上的元素 比较结果为1或0,重点,2、关系运算,3、逻辑运算,运算符:& : 逻辑与 : 逻辑非| : 逻辑或 输入非0,被看作“逻辑真”,重点,逻辑运算函数,MATLAB给出了许多非常方便的函数供用户对数据的条件进行检测。灵活应用这些函数,可大大提高编程效率。xor() 对矩阵元素进行逻辑异或all( ) 测试矩阵中是否全为非零元素 any( ) 测试矩阵中是否含有非零元素find( ) 找出矩阵中非零元素及其下标isnan(x) 测试矩阵是否含有无效元素,