Matlab教程Ch2(矩阵与数组)
- 格式:ppt
- 大小:806.50 KB
- 文档页数:22
实验二矩阵和数组的操作一、实验环境计算机MATLAB软件二、实验目的1.掌握矩阵和数组的一般操作,包括创建、保存、修改和调用等。
2.学习矩阵和数组的加减运算与乘法、3.掌握对数组中元素的寻访与赋值,会对数组进行一般的操作。
三、实验内容与步骤1.用三种方法创建一个3X3矩阵,然后利用矩阵编辑器,将其扩充为4X5矩阵,并保存,试着调用它。
程序如下(1)直接输入法>> A=[3,2,1;4,5,6;7,8,9]A =3 2 14 5 67 8 9(2)利用MA TLAB提供的函数创建一个3X3的矩阵>> A=rand(3,3)A =0.4103 0.3529 0.13890.8936 0.8132 0.20280.0579 0.0099 0.1987(3)利用MA TLAB提供的“Matrix Editor”完成输入>> A=1A =1在矩阵编辑器中得如此矩阵1 0 00 0 00 0 0该成4X5 矩阵后如下1 0 0 0 00 0 0 0 00 0 0 0 00 0 0 0 0修改元素后为1 2 3 4 50 9 8 7 611 12 13 14 1510 19 18 17 16对文件进行保存使用save data 命令,用load data 命令刻把保存在文件的矩阵读到MATLAB的工作区的内存来2、建立一个等差数列,然后由它产生一个对角阵。
操作如下>> a=linspace(0,1.5,5)a =0 0.3750 0.7500 1.1250 1.5000>> B=diag(a)B =0 0 0 0 00 0.3750 0 0 00 0 0.7500 0 00 0 0 1.1250 00 0 0 0 1.50003、利用MATLAB的函数inv(A)求方阵A的逆矩阵。
操作如下>> A=[1,2;5,6]A =1 25 6>> B=inv(A)B =-1.5000 0.50001.2500 -0.2500四、练习1、创建一个5X5矩阵,提取主对角线以上的部分>> B=rand(5,5)B =0.0971 0.0344 0.1869 0.7547 0.11900.8235 0.4387 0.4898 0.2760 0.49840.6948 0.3816 0.4456 0.6797 0.95970.3171 0.7655 0.6463 0.6551 0.34040.9502 0.7952 0.7094 0.1626 0.5853 >> U=triu(B)U =0.0971 0.0344 0.1869 0.7547 0.11900 0.4387 0.4898 0.2760 0.49840 0 0.4456 0.6797 0.95970 0 0 0.6551 0.34040 0 0 0 0.5853 2、A=rand(3,3),B=magic(3,3),C=rand(3,4),计算AXBXC >> A=rand(3,3)A =0.1493 0.2543 0.92930.2575 0.8143 0.35000.8407 0.2435 0.1966>> B=magic(3)B =8 1 63 5 74 9 2>> C=rand(3,4)C =0.2511 0.3517 0.5497 0.75720.6160 0.8308 0.9172 0.75370.4733 0.5853 0.2858 0.3804>> A.*B.*C??? Error using ==> timesMatrix dimensions must agree.>> A*B*Cans =9.5982 12.7780 13.3892 13.39619.8497 12.9393 12.3754 13.12937.8080 10.2588 10.0835 11.84363.创建一个3X3的矩阵,并求其转置,逆矩阵>> D=rand(3,3)D = 0.5678 0.5308 0.12990.0759 0.7792 0.56880.0540 0.9340 0.4694>> E=conj(D)'E =0.5678 0.0759 0.05400.5308 0.7792 0.93400.1299 0.5688 0.4694>> F=inv(D)F =1.7826 1.3763 -2.16120.0529 -2.7944 3.3717-0.3102 5.4022 -4.33034、用两种方法求Ax=b的解(A为随机矩阵,b为四阶列向量)。
一Matlab矩阵运算与数组运算实验目的:1.理解矩阵及数组概念.2.掌握Matlab对矩阵及数组的操作命令.实验内容:1.矩阵与数组的输入.对于较小较简单的矩阵,从键盘上直接输入矩阵是最常用的数值矩阵创建方法.用这种方法输入矩阵时注意以下三点:(1)整个输入矩阵以方括号“[ ]”为其首尾;(2)矩阵的元素必须以逗号“,”或空格分隔;(3)矩阵的行与行之间必须用分号“;”或回车键隔离.例1:下面的指令可以建立一个3行4列的矩阵a.a=[1 2 3 4;5 6 7 8;9 10 11 12]↵(下面是屏幕的显示结果)a =1 2 3 45 6 7 89 10 11 12注:分号“;”有三个作用:(1)在“[ ]”方括号内时它是矩阵行间的分隔符.(2)它可用作指令与指令间的分隔符.(3)当它存在于赋值指令后,该指令执行后的结果将不显示在屏幕上.例如,输入指令:b=[1 2 0 0;0 1 0 0;1 1 1 1];矩阵b将不显示,但b已存放在Matlab 的工作内存中,可随时被以后的指令所调用或显示.例如,输入指令:b↵结果为:b =1 2 0 00 1 0 01 1 1 1数值矩阵的创建还可由其他方法实现.如:利用Matlab函数和语句创建数值矩阵;利用m文件创建数值矩阵;从其他文件获取数值矩阵.有兴趣的读者可参阅其他参考书.数组可以看成特殊的矩阵,即1行n列的矩阵,数组的输入可以采用上面矩阵的输入方法.例2:输入以下指令以建立数组c.c=[1 2 3 4 5 6 7 8]↵c =1 2 3 4 5 6 7 8另外还有两种方法输入数组.请看下面两个例子.例3:在0和2中间每隔0.1一个数据建立数组d.解:输入指令:d=0:0.1:2↵d =Columns 1 through 70 0.1000 0.2000 0.3000 0.4000 0.5000 0.6000Columns 8 through 140.7000 0.8000 0.9000 1.0000 1.1000 1.2000 1.3000Columns 15 through 211.4000 1.5000 1.6000 1.7000 1.8000 1.90002.0000例4:在0和2之间等分地插入一些分点,建立具有10个数据点的数组e . 解:输入指令:e=linspace(0,2,10) ↵e =Columns 1 through 70 0.2222 0.4444 0.6667 0.8889 1.1111 1.3333 Columns 8 through 101.5556 1.77782.0000注:linspace(a ,b ,n)将建立从a 到b 有n 个数据点的数组.2.常用矩阵的生成.Matlab 为方便编程和运算,提供了一些常用矩阵的生成指令:eye(n) n n ⨯单位矩阵ones(n) n n ⨯全1矩阵zeros(n) n n ⨯零矩阵eye(m ,n) n m ⨯标准型矩阵ones(m ,n) n m ⨯全1矩阵zeros(m ,n) n m ⨯零矩阵eye(size(A)) 与A 同型的标准型矩阵ones(size(A)) 与A 同型的全1矩阵zeros(size(A)) 与A 同型的零矩阵注:其中指令size(A)给出矩阵A 的行数和列数.例5:生成以下矩阵.(1)33⨯零矩阵.(2)63⨯全1矩阵.(3)与例1中矩阵a 同型的标准型矩阵.解:输入下面指令:d=zeros(3) ↵d =0 0 00 0 00 0 0e=ones(3,6) ↵e =1 1 1 1 1 11 1 1 1 1 11 1 1 1 1 1f=eye(size(a)) ↵f =1 0 0 00 1 0 00 0 1 03.矩阵元素的标识.矩阵的元素、子矩阵可以通过标量、向量、冒号的标识来援引和赋值.(1)矩阵元素的标识方式A(ni ,nj).ni ,nj 都是标量.若它们不是整数,则在调用格式中会自动圆整到最临近整数.ni 指定元素的行位置,nj 指定元素的列位置.(2)子矩阵的序号向量标识方式A(v ,w).v,w是向量,v,w中的任意一个可以是冒号“:”,表示取全部行(在v位置)或全部列(在w位置).v,w中所用序号必须大于等于1且小于等于矩阵的行列数.例6:元素和矩阵的标识a=[1 2 3 4;5 6 7 8;9 10 11 12]↵a =1 2 3 45 6 7 89 10 11 12a24=a(2,4)↵a24 =8a1=a([1,2],[2,3,4])↵a1 =2 3 46 7 8a2=a([1,2],[2,3,1])↵a2 =2 3 16 7 5a3=a([3,1],:)↵a3 =9 10 11 121 2 3 4a([1,3],[2,4])=zeros(2)↵a =1 0 3 05 6 7 89 0 11 04.矩阵运算和数组运算.矩阵运算的指令和意义如下:A' 矩阵A的共轭转置矩阵,当A是实矩阵时,A' 是A的转置矩阵.A+B 两个同型矩阵A与B相加.A-B 两个同型矩阵A与B相减.A*B 矩阵A与矩阵B相乘,要求A的列数等于B的行数.s+B 标量和矩阵相加(Matlab约定的特殊运算,等于s加B的每一个分量).s-B B-s 标量和矩阵相减(Matlab约定的特殊运算,含意同上).s*A 数与矩阵A相乘.例7:a=[1 2 3;4 5 6]↵a =1 2 34 5 6b=[-1 0 1;3 1 2]↵b =-1 0 13 1 2a'↵ans =1 42 53 6a+b↵ans =0 2 47 6 8a-b↵ans =2 2 21 4 41+a↵ans =2 3 45 6 7a-1ans =0 1 23 4 52*b↵ans =-2 0 26 2 4c=[2 4;1 3;0 1]↵c = 2 41 30 1a*c↵ans = 4 1313 37数组可以看成特殊矩阵即一行n列的矩阵,矩阵运算的指令和含意同样适用于数组运算.如果在运算符前加“.”,其意义将有所不同.A.*B 同维数组或同型矩阵对应元素相乘.A./B A的元素被B的元素对应除.A.^n A的每个元素n次方.p.^A 以p为底,分别以A的元素为指数求幂.例8:a=[1 2 3;4 5 6]↵a =1 2 34 5 6b=[-1 0 1;3 1 2]↵b =-1 0 13 1 2a.*b↵ans =-1 0 312 5 12a./b↵Warning: Divide by zero.ans =-1.0000 Inf 3.00001.3333 5.0000 3.0000a.^2↵ans =1 4 916 25 362.^a↵ans =2 4 816 32 64二矩阵与线性方程组实验目的:1.掌握Matlab求矩阵的秩命令.2.掌握Matlab求方阵的行列式命令.3.理解逆矩阵概念,掌握Matlab求逆矩阵命令.4.会用Matlab求解线性方程组.实验内容:1.矩阵的秩.指令rank(A)将给出矩阵A的秩.例1:a=[3 2 -1 -3 -2;2 -1 3 1 -3;7 0 5 -1 -8]↵a =3 2 -1 -3 -22 -13 1 -37 0 5 -1 -8rank(a)↵ans =22.方阵的行列式.指令det(A)给出方阵A的行列式.例2:b=[1 2 3 4;2 3 4 1;3 4 1 2;4 1 2 3];det(b)↵ans =160det(b')↵ans =160c=b;c(:,1)=2*b(:,1);det(c)↵ans =320det(b(:,[3 2 1 4]))↵ans =-160d=b;d(2,:);det(d)↵ans =160注:在这里我们实际上验证了行列式的性质.你能否给出上例运算结果的一个解释?3.逆矩阵.指令inv(A)给出方阵A的逆矩阵,如果A不可逆,则inv(A)给出的矩阵的元素都是Inf.例3:设123221343A⎛⎫⎪= ⎪⎪⎝⎭,求A的逆矩阵.解:输入指令:A=[1 2 3;2 2 1;3 4 3]; B=inv(A)↵B =1.0000 3.0000 -2.0000-1.5000 -3.0000 2.50001.0000 1.0000 -1.0000还可以用伴随矩阵求逆矩阵,打开m文件编辑器,建立一个名为company-m的M-文件文件内容为:function y=company-m(x)[n,m]=size(x);y=[];for j=1:n;a=[];for i=1:n;x1=det(x([1:i-1,i+1:n],[1:j-1,j+1:n]))*(-1)^(i+j);a=[a,x1];endy=[y;a];end利用该函数可以求出一个矩阵的伴随矩阵.输入命令:C=1/det(A)*company-m(A)↵C =1.0000 3.0000 -2.0000-1.5000 -3.0000 2.50001.0000 1.0000 -1.0000利用初等变换也可以求逆矩阵,构造n行2n列的矩阵(A E),并进行行初等变换,当把A变为单位矩阵时,E就变成了A的逆矩阵.利用Matlab命令rref可以求出矩阵的行简化阶梯形.输入命令:D=[A,eye(3)]↵D =1 2 3 1 0 02 2 1 0 1 03 4 3 0 0 1rref(D)↵ans =1.0000 0 0 1.0000 3.0000 -2.00000 1.0000 0 -1.5000 -3.0000 2.50000 0 1.0000 1.0000 1.0000 -1.0000m n⨯线性方程组AX B=的求解是通过矩阵的除法来完成的,\X A B=,当m n=且A可逆时,给出唯一解.这时矩阵除\A B相当于()inv A B*;当n m>时,矩阵除给出方程的最小二乘意义下的解;当n m<时,矩阵除给出方程的最小范数解.例4:12341234123134212121x x x xx x x xx x xx x x-++=⎧⎪+-+=⎪⎨++=⎪⎪+-=⎩求解方程组:解:输入命令:a=[1 -1 1 2;1 1 -2 1;1 1 1 0;1 0 1 -1];b=[1;1;2;1];x=a\b↵x =0.83330.75000.41670.2500或者输入命令:z=inv(a)*b ↵z =0.83330.75000.41670.2500例5:解方程组:⎪⎩⎪⎨⎧=-++-=-++-=--++8343242222543215432154321x x x x x x x x x x x x x x x解:方程的个数和未知数不相等,用消去法,将增广矩阵化为行简化阶梯形,如果系数矩阵的秩不等于增广矩阵的秩,则方程组无解;如果系数矩阵的秩等于增广矩阵的秩,则方程组有解,方程组的解就是行简化阶梯形所对应的方程组的解.输入命令:a=[2 1 1 -1 -2 2;1 -1 2 1 -1 4;2 -3 4 3 -1 8];rref(a) ↵ans =1 0 0 0 0 00 1 0 -1 -1 00 0 1 0 -1 2从结果看出,4x ,5x 为自由未知量,方程组的解为:01=x542x x x +=532x x +=例6:解方程组:⎪⎪⎩⎪⎪⎨⎧=+--=--=-+-=+--0320030432142143214321x x x x x x x x x x x x x x x解:输入命令:a=[1 -1 -1 1;1 -1 1 -3;1 -1 0 -1;1 -1 -2 3];rref(a) ↵ans =1 -1 0 -10 0 1 -20 0 0 00 0 0 0由结果看出,2x ,4x 为自由未知量,方程组的解为:421x x x +=432x x =。
MATLAB 矩阵与数组:定义、用法及应用案例MATLAB 矩阵与数组:定义、用法及应用案例 .................................................................... 目录11.2. 3. 数组(Array )..........................................................................................................21.1 数组的定义........................................................................................................21.2 数组的基本用法................................................................................................2数组的逻辑运算.......................................................................................................34.4.3 矩阵运算和操作................................................................................................64.4 矩阵索引和切片................................................................................................64.5 应用案例............................................................................................................三维数组...................................................................................................................4矩阵(Matrix )........................................................................................................64.1 矩阵的定义........................................................................................................64.2 矩阵的创建........................................................................................................675.数组和矩阵的区别...................................................................................................75.1 维度....................................................................................................................75.2 操作....................................................................................................................75.3 创建....................................................................................................................85.4 索引和切片........................................................................................................85.5 应用.. (8)在MATLAB中,矩阵和数组是基础的数据结构,用于存储和处理多维数值数据。
matlab 中数组与矩阵的联系与区别概述说明1. 引言1.1 概述在编程领域中,数组和矩阵是经常被使用的数据结构。
它们是存储和处理大量数据的重要工具。
而MATLAB作为一种数值计算和科学绘图的高级编程语言,也提供了强大的数组和矩阵操作功能。
本文将从概述、结构和目的三个方面对数组与矩阵之间的联系与区别进行详细说明。
通过对这两种数据结构进行全面比较和分析,我们可以更好地理解它们在MATLAB中的应用,并为相关领域的研究人员提供参考。
1.2 文章结构本文主要分为五个部分来探讨数组与矩阵之间的联系与区别。
首先,在引言部分,我们会对整篇文章做一个简单介绍,说明文章涉及到的内容以及目标。
然后,在第二部分,我们将深入探讨数组和矩阵的概念,并对它们之间的联系与区别进行详细描述。
接着,在第三部分,我们将介绍几种特殊类型的数组和矩阵,并探讨它们在MATLAB中的应用情况。
在第四部分,我们将比较数组和矩阵操作方法的差异,并分析它们对常用运算符的影响。
最后,在结论部分,我们将总结数组与矩阵之间的联系与区别,并说明它们在不同领域中的应用情况。
1.3 目的本文的目标是详细介绍和阐述MATLAB中数组和矩阵之间的联系与区别。
通过全面比较和分析这两种数据结构,我们旨在为读者提供更清晰的认识和理解。
同时,我们还希望通过具体实例和应用场景说明这些概念在实践中的重要性。
无论是初学者还是专业人士,都可以通过本文更好地理解并运用数组和矩阵相关的操作方法。
以上就是“1. 引言”部分内容,给出了文章整体概述、结构和目标。
2. 数组与矩阵的联系与区别2.1 数组概述数组是一种数据结构,可以用来存储相同类型的多个元素。
在Matlab中,数组可以有多个维度,也可以是多维的。
每个元素在数组中都有一个唯一的位置,该位置称为索引。
2.2 矩阵概述矩阵是特定类型的数组,其中包含行和列两个维度。
因此,矩阵是一个二维数组。
在Matlab中,矩阵可以用于表示线性方程组、向量空间以及其他数学和科学问题。
matlab矩阵运算和数组运算作者:佚名教程来源:网络点击数: 1368 更新时间:2010-5-3矩阵运算和数组运算是Matlab的数值运算中的两大类运算。
矩阵运算是按矩阵运算法则进行的运算;数组运算无论是何种运算操作都是对元素逐个进行。
矩阵运算和数组运算指令对照汇总矩阵运算指令指令含义数组运算指令指令含义A' 矩阵转置 A.+B 对应元素相加A+B 矩阵相加 A.-B 对应元素相减A-B 矩阵相减 A.*B 同维数组对应元素相乘s+B 标量加矩阵s.*A A的每个元素乘ss-B,B-s 标量矩阵相减 A./B A的元素被B的对应元素除A*B 矩阵相乘 B.\A 同上A/B A右除B s./B, B.\s s 分别被B的元素除B\A A左除B A.^n A的每个元素自乘n 次inv(A) 矩阵求逆log(A) 对A的每个元素求对数A^n 矩阵的n次幂sqrt(A) 对A的每个元素求平方根f(A) 求A的各个元素的函数值例:a=[1 2 3; 4 5 6; 7 8 9];b=[1 2 3; 3 2 1;1 4 5];c=[1 1 1;2 3 1;1 0 2];d=a*c^2+bd =32 31 3682 79 82128 129 1343.4 矩阵函数和数组函数3.4.1 基本数组函数数组函数是对各个元素的函数设计的。
f(.)基本函数表函数名称功能函数名称功能sin 正弦acosh 反双曲余弦cos 余弦atanh 反双曲正切tan 正切acoth 反双曲余切cot 余切asech 反双曲正割sec 正割acsch 反双曲余割csc 余割fix 朝零方向取整asin 反正弦ceil 朝正无穷大方向取整acos 反余弦floor 朝负无穷大方向取整atan 反正切round 四舍五入到整数atan2 四象反正切rem 除后取余数acot 反余切sign 符号函数asec 反正割abs 绝对值acsc 反余割angle 复数相角sinh 双曲正弦imag 复数虚部cosh 双曲余弦real 复数实部tanh 双曲正切conj 复数共轭coth 双曲余切log10 常用对数sech 双曲正割log 自然对数csch 双曲余割exp 指数asinh 反双曲正弦aqrt 平方根f(.)特殊函数表函数名称功能函数名称功能bessel 第一、第二类Bessel函数erf 误差函数beta Beta函数eerfinv 逆误差函数gamma Gamma函数ellipk 第一、第二类全椭圆积分rat 有理近似ellipj Jacobi椭圆函数3.4.2 基本矩阵函数基本矩阵函数指令函数指令指令含义函数指令指令含义cond(A) 矩阵的条件数(最大奇异值除以最小奇异值)svd(A) 矩阵的奇异值分解det(A) 方阵的行列式trace(A) 矩阵的迹dot(A,B) 矩阵的点积expm(A) 矩阵指数eig(A) 矩阵的特征值expm1(A) 用Pade近似求norm(A,1) 矩阵1-范数expm2(A) 用Taylor级数近似求,精度稍差,但对任何方阵适用norm(A) 矩阵的2-范数expm3(A) 用矩阵分解求,仅当独立调整向量数目等于秩时适用norm(A,inf) 矩阵的无穷范数logm(A) 矩阵对数ln(A)norm(A,'fro') 矩阵的f-范数(全部奇异值平方和的正平方根)sqrtm(A) 平方根矩阵rank(A) 矩阵的秩(非零奇异值的个数)rcond(A) 矩阵的倒条件数funm(A,'fn') A阵的一般矩阵函数例:注意观察奇异值与矩阵各性质的关系a=magic(5);s=svd(a)'d=det(a),t=trace(a),rk=rank(a),c=cond(a)n1=norm(a,1),n2=norm(a),ninf=norm(a,inf),nf=norm(a,'fro')s =65.0000 22.5471 21.6874 13.4036 11.9008d =5070000t =65rk =5c =5.4618n1 =65n2 =65.0000ninf =65nf =74.33033.5 线性方程组的直接解法线性方程组Ax=b,A是的系数矩阵1) 当n=m且非奇异时,此方程称为“恰定”方程(Properly Determined Equation)2) 当n>m时,此方程称为“超定”方程(Overdetermined Equation)3) 当n<m时,此方程称为“欠定”方程(Underdetermined Equation)3.5.1 矩阵逆和除法解恰定方程组(1)采用求逆运算:x=inv(A)*b(2)采用左除运算:x=A\b说明:1、由于MATLAB 遵循IEEE算法,所以即使A阵奇异,该运算也照样进行。