《MATLAB矩阵及运算.ppt》由会员分享,可在线阅读,更多相关《MATLAB矩阵及运算.ppt(103页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第二章第二章 矩阵及其运算矩阵及其运算2.1 2.1 表达式(语句)表达式(语句)2.2 2.2 矩阵的产生与操作矩阵的产生与操作2.3 2.3 矩阵的基本运算矩阵的基本运算2.4 2.4 高维矩阵高维矩阵2.5 2.5 特殊符号特殊符号2.6 2.6 基本数学函数基本数学函数2.1表达式MATLAB采用表达式语言形式,语句常用的形式:例:1.3+2*0.9%1.3+2*0.9%值存放在默认变量值存放在默认变量ansans中中 a=1.3+2*0.9a=1.3+2*0.9x=rand(2,4)%x=rand(2,4)%产生产生2*42*4大小的随机矩阵大小的随机矩阵如果表达式过长,可分装在几行
2、,行末加三个点,表示下一行是续行。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 8个字节,复矩阵的个字节,复矩阵的每个元素占每个元素占1616个字节)个字节)缺点:浪费内存、降低运算的速度。优点:省略了定义数据类型的语句,而且编程时无须考虑数据类型的匹配问题,减少了出错的可能。这种战略取得了成
3、功:使人们不在编程细节上化精力,把注意力集中到科学计算的方法和建模合理性等大问题上。重点重点重点重点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 变量MATLABMATLAB系统默认变量系统默认变量(注意大小写!)(注意大
4、小写!)i或或j:虚单元虚单元 正确:正确:5+7j 5+7j 错误:错误:5 5j7j7pi:圆周率圆周率ans:计算机结果的缺省变量名计算机结果的缺省变量名eps:机器的零阈值机器的零阈值 2.2204e-016 2.2204e-016 Inf或或inf:正无穷大正无穷大 NaN或或nan:不定值(即无效数据)不定值(即无效数据)重点重点重点重点可以表示可以表示“无穷大无穷大”、“不定值不定值”,说明,说明matlabmatlab容错性强容错性强运算优先级:算术运算符关系运算符逻辑运算符 圆括号可以改变其顺序!2.1.3 操作符MATLAB操作符包括:算术运算 关系运算 逻辑运算 位运算
5、其他操作符重点重点重点重点一)算术运算符:加法 :减法*:矩阵乘法(叉乘).*:矩阵元素乘法/:矩阵右除法./:矩阵元素右除法 :矩阵左除法.:矩阵元素左除法 :矩阵指数.:矩阵元素指数 :复共轭转置 .:非共轭转置二)逻辑运算符针对元素针对元素&:逻辑与:逻辑非|:逻辑或xor:逻辑异或三)关系运算符针对元素针对元素 :小于 :大于=:大于等于=:等于=:不等于2.1.4 函数 MATLAB的函数从来源上看,可以分为三类:1)MATLAB的内部函数2)MATLAB工具箱中的函数3)用户自定义函数用户使用中,感觉不到三类的区别!1)函数可嵌套(象积木一样搭建)例如:x=sqrt(log(z)2
6、)函数可多输入例如:x=max(z,y)3)函数可多输出重点重点重点重点y向量中最大的值向量中最大的值最大值的位置最大值的位置y矩阵中每一列最大的值矩阵中每一列最大的值最大值的位置最大值的位置注意:输入矩阵类型不同,注意:输入矩阵类型不同,则执行的操作不同。则执行的操作不同。因为因为matlab函数太多,所以要养成使用函数太多,所以要养成使用help命令,得到有关函数的具体用法:命令,得到有关函数的具体用法:例:例:helpmax2.1.4 函数2.1表达式表达式(即语句):将变量、数值、函数用操作符连接起来,就构成了表达式。例如例如:a=(10j+sqrt(10)/2;注释注释行末的“;”用
7、于抑制结果在屏幕上显示例如例如: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 输入方
8、法二:输入方法二: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、随机数矩阵的产生 随机数的
9、产生常常用在控制系统仿真以及信号分析,是一个非常重要的手段。MATLAB提供了很好的随机数产生函数:rand()randn()通过MATLAB提供的函数产生矩阵1)产生0,1之间的均匀分布的随机数:重点重点重点重点通过MATLAB提供的函数产生随机矩阵2)产生元素在m,n间分布的随机数:重点重点重点重点通过MATLAB提供的函数产生随机矩阵3)产生均值为0,方差为1的标准正态分布随机数:重点重点重点重点问题:为什么这问题:为什么这5个随机数相加均值不等于个随机数相加均值不等于0?该函数是产生了随机数,但是可能个数为该函数是产生了随机数,但是可能个数为10000或更多,均值为或更多,均值为0。该
10、。该函数仅仅是从中抽取了几个显示给用户。函数仅仅是从中抽取了几个显示给用户。通过MATLAB提供的函数产生随机矩阵4)产生均值为m,方差为q2的正态分布随机数:通过MATLAB提供的函数产生随机矩阵3、对角矩阵的产生 第一步:给出对角线上的元素,放在一个向量V中。第二步:用函数 A=diag(V);可产生相应的对角矩阵。通过MATLAB提供的函数产生矩阵4、用其它函数也可间接产生用户想要的矩阵、用其它函数也可间接产生用户想要的矩阵通过MATLAB提供的函数产生矩阵通过用户编写M文件的方式产生矩阵例例:A,B,C矩阵是用户自定义的大矩阵,经常矩阵是用户自定义的大矩阵,经常要用到,就应编写一个要用
11、到,就应编写一个M文件保存。文件保存。要使用这些矩阵时,执行所在要使用这些矩阵时,执行所在M文件。文件。演示演示旋转重新排列复制翻转拼接行列删除2.2 矩阵的产生与操作重点重点重点重点矩阵的操作1)矩阵的旋转矩阵元素的排列旋转矩阵元素的排列旋转9090度:度:B=rot90(A)B=rot90(A)逆时针旋转逆时针旋转9090度度2)矩阵的重新排列将矩阵的元素重新排列:reshape(矩阵,行数,列数)按原矩阵的列顺序重点重点重点重点3)矩阵的复制将矩阵元素复制:repmat(原矩阵,行复制数,列复制数)重点重点重点重点4)矩阵的翻转fliplr()将矩阵左右镜像翻转flipud()将矩阵上下
12、镜像翻转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 45)矩阵的拼接通过连接符,可将小矩阵拼接成大矩阵注意:横拼接:,纵拼接:;例例1例例3 例例2重点重点重点重点6)矩阵的行列删除利用空矩阵“”可从矩阵中删除指定的行或列重点重点重点重点思考:size()2.3 矩阵的基本运算复习线性代数基础知识:1)加、减法:加、减法:同尺寸矩阵同尺寸矩阵 A+B=(aij+bij)mn2)数乘:设数乘:设Amn,则,则kA=(kaij)mn。3)矩阵矩阵乘法:设乘法:设Amk,Bkn 矩阵矩阵A的列数要等于矩
13、阵的列数要等于矩阵B的行数的行数 则则AB=Cmncij=ai1b1j+ai2b2j+矩阵乘法不满足交换律,即一般矩阵乘法不满足交换律,即一般ABBA。复习线性代数基础知识:4)4)转置:把矩阵的行换成列转置:把矩阵的行换成列 (A Amnmn)=A Anmnm5 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 重点重点重点重点例例22.3 矩阵的基本运
14、算矩阵元素的运算:加法 :减法.*:矩阵元素乘法(点乘)./:矩阵元素右除法.:矩阵元素左除法.:矩阵元素指数 :复共轭转置 .:非共轭转置矩阵的运算*:矩阵乘法(叉乘)/:矩阵右除法 :矩阵左除法1、算术运算重点重点重点重点加、减对应的矩阵元素相运算点乘元素对元素乘法叉乘矩阵对矩阵乘法 对比举例对比举例矩阵的右除、左除MATLAB的基本处理单元是复数矩阵(标量是一个1*1的矩阵)。而在线性代数理论中没有除法运算。所以定义了除法为乘法的逆运算。注意:因为矩阵乘法不满足交换律,即一般注意:因为矩阵乘法不满足交换律,即一般A*BB*A,所以除法要考虑,所以除法要考虑“右除右除”、“左除左除”。重点
15、重点重点重点矩阵的右除、左除MatlabMatlab右除法表示形式:右除法表示形式:C=A/BC=A/B或或C=A*i n v(B)C=A*i n v(B)MatlabMatlab左除法表示形式:左除法表示形式:C=ABC=AB或或C=i n v(A)*BC=i n v(A)*B注意:只有行列式不为注意:只有行列式不为0 0的方阵才存在逆阵!的方阵才存在逆阵!则在MATLAB中运行结果:重点重点重点重点矩阵元素的右除、左除分析:K/NK*inv(N)因为N不是方阵,没有逆阵,所以报告错误。KNinv(K)*N因为K的逆阵尺寸22,N的尺寸23,所以结果矩阵23。则MATLAB中A.B的结果:矩
16、阵元素的指数运算%复共轭转置%非共轭转置 .矩阵元素的复共轭转置和非共轭转置2、关系运算 :小于 :大于 =:大于等于 =:等于 =:不等于注意:注意:两个矩阵的尺寸应相同分别比较对应位置上的元素 比较结果为1或0 重点重点重点重点2、关系运算3、逻辑运算运算符:&:逻辑与 :逻辑非|:逻辑或 输入非0,被看作“逻辑真”重点重点重点重点逻辑运算函数 MATLABMATLAB给出了许多非常方便的函数供用户给出了许多非常方便的函数供用户对数据的条件进行检测。灵活应用这些函数,对数据的条件进行检测。灵活应用这些函数,可大大提高编程效率。可大大提高编程效率。xor()对矩阵元素进行逻辑异或all()测
17、试矩阵中是否全为非零元素 any()测试矩阵中是否含有非零元素find()找出矩阵中非零元素及其下标isnan(x)测试矩阵是否含有无效元素1)异或函数异或函数C=xor(A,B)例:A0 0 pi eps;%eps0B0 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(
18、假)或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()对矩阵按
19、列求和 或对向量求和length()测出向量长度size()测出矩阵大小det()求矩阵对应的行列式重点重点重点重点l lengthength 功能:求向量长度格式: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?s sizeize功能:求阵列维大小 xrand(2,4,8);d=size(x)msize(x,2)思考:d?m?d=2 4 8m=4x1,2,4 0,8,9 2,3,7 1,4,
20、2;d=size(x)msize(x,2)思考:d?m?d=4 3 m=32.4 高维矩阵大于2维的矩阵称为高维矩阵。习惯上称三维矩阵的第一维为“行”,第二维为“列”,第三维为“页”。访问矩阵A中第2页中的第三行第四列的元素,使用下标 A(3,4,2)2.4.1 高维矩阵的产生 方法一:直接对高维赋值 (注意:自动补零)重点重点重点重点2.4.1 高维矩阵的产生方法二:用拼接函数cat,用低维矩阵拼成高维矩阵回忆:通过连接符,可将小二维矩阵拼接成大二维矩阵。(,表示横拼接 ;表示纵拼接)有相似功能的函数:cat(拼接模式,矩阵1,矩阵2)拼接模式:1 纵拼 2 横拼 3 层拼 重点重点重点重点
21、等价为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
22、*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);%读入图像数据f
23、igure(1);%设置1号图形窗口imagesc(x);%显示苹果图像y=double(x);%将unit8型转换为双精度型y(:,:,1)=0;%设置红色分量为0y=uint8(y);%转换为unit8型figure(2);%设置2号图形窗口imagesc(y);%显示苹果图像%去红色去红色去红色去红色y(:,:,1)=0y(:,:,1)=0%去绿色去绿色去绿色去绿色y(:,:,2)=0y(:,:,2)=0%去蓝色去蓝色去蓝色去蓝色y(:,:,3)=0y(:,:,3)=0 思考:如何将图片旋转思考:如何将图片旋转思考:如何将图片旋转思考:如何将图片旋转9090度显示?度显示?度显示?度显示
24、?感兴趣的同学可以尝试:感兴趣的同学可以尝试:用用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 特殊
25、符号2).符号的作用是:a.用来表示一个小数点 例如:a=10.32;b.用来表示矩阵元素对元素的运算 例如:c=a.*b;c.可以用来对结构的域进行访问 例如:a.field;(面向对象)重点重点重点重点2.5 特殊符号3):符号的作用是:例子 等价为A=1:4 A=1,2,3,4A=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系统提供给用户进行
26、基本数学运算的函数。基本数学函数均是对阵列中的元素元素作用。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)指数函数
27、 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)取
28、虚部函数 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之间的均匀分布的随机数数组,其命令为:;生成均值
29、为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)间随机分布的105矩阵a,然后统计a中大于0.6且小于0.7的元素个数number,如果number小于10,向用户报告“符合条件的元素太少!”。参考程序参考程序:a=rand(10,5);N=a0.6&a0.7number=sum(sum(N)if number10 disp(符合条件的元素太少!符合条件的元素太少!)endENDY=sin(X)Y=sinh(X)Y=exp(X)Y=log(X)