[Matlab]数组运算和矩阵运算
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
间的乘,除运算符为:".*","./"或".\". 1. 数组按元素相加,减 >> g=[1 2 3 4 5678 9 10 11 12] >> h=[1 1 1 1; 2 2 2 2; 3 3 3 3] >> g+h % 按元素相加 ans = 2345 7 8 9 10 12 13 14 15 >> ans-h % 按元素相减 ans = 1234 5678 9 10 11 12 >> 2*g-h % 混合运算 ans = 1357 8 10 12 14 15 17 19 21 2. 按元素乘 >> g.*h ans = 1234 10 12 14 16 27 30 33 36 3. 按元素除 数组间的除法运算符有两个,即左除:"./"和右除:".\",它们之间的关系是: a./b=b.\a
Baidu Nhomakorabea
Columns 1 through 3 1.0000 + 1.0000i 2.0000 + 2.0000i 3.0000 + 3.0000i Columns 4 through 5 4.0000 + 4.0000i 5.0000 + 5.0000i >> e=d' e= 1.0000 - 1.0000i 2.0000 - 2.0000i 3.0000 - 3.0000i 4.0000 - 4.0000i 5.0000 - 5.0000i 4.2.2 纯量 (标量) 和数组的四则运算 纯量和数组之间可以进行简单数学运算.如:加,减,乘,除及其混合运行. >> g=[1 2 3 4 5678 9 10 11 12] >> g=g-2 g= -1 0 1 2 3456 7 8 9 10 >> 2*g-1 ans = -3 -1 1 3 5 7 9 11 13 15 17 19 4.2.3 数组间的四则运算 在 MATLAB 中,数组间进行四则运算时,参与运算的数组必须具有相同的维数,加,减,乘,除运 算是按元素与元素的方式进行的.其中,数组间的加,减运算与矩阵的加,减运算要同,运算符 为:"+","-".但是,数组间的乘,除运算与矩阵间的乘,除运算完全不同,运算符号也有差别,数组
矩阵 B 的逆乘标量 s A.^n 数组 A 的每个元素的 n 次方 A^n A 为方阵时,矩阵 A 的 n 次方 A+B 数组对应元素的相加 A+B 矩阵相加 A-B 数组对应元素的相减 A-B 矩阵相减 A.*B 数组对应元素的相乘 A*B 内维相同矩阵的乘积 A./B A 的元素被 B 的对应元素除 A/B A 右除 B B.\A 一定与上相同 B\A A 左除 B(一般与右除不同) exp(A) 以 e 为底,分别以 A 的元素为指数,求幂 expm(A) A 的矩阵指数函数 log(A)
>> a=[1 2; 3 5; 2 6]; >> b=[2 4; 1 8; 9 0]; >> c=a+b c= 36 4 13 11 6 2. 矩阵的相乘 对于矩阵的乘法,从线性代数中,我们知道,要求进行相乘的两矩阵有相同的公共维.如: >> a=[1 2; 3 5; 2 6]; >> b=[2 4 1; 8 9 0]; >> c=a*b c= 18 22 1 46 57 3 52 62 2 设 A 矩阵为一个阶的矩阵,则要求与之相乘的 B 矩阵必须是一个阶,得到矩阵是阶的.即,只有 当第一个矩阵 (左矩阵) 的列数等于第二个矩阵 (右矩阵) 的行数时,两个矩阵的乘积才有 意义. 3. 矩阵的除法 对于矩阵的除法有两个运算符号,分别为左除符号"\"和右除符号"/".矩阵的右除运算速度要 慢一点,而左除运算可以避免奇异矩阵的影响. 对于方程,若此方程为超定的方程,则使用除法可以自动找到使的平方最小化的解.若此方程 为不定方程,则使用除法运算符至少求得的解至多有 rank(A) (矩阵 A 的秩)个非零元素,而且 求得的解是这种类型的解中范数最小的一个. >> a=[21 34 20; 5 78 20; 21 14 17; 34 31 38]; >> b=[10 20 30 40]'; >> x=b\a x= 0.7667 1.1867 0.8767
4.1 数组运算和矩阵运算 从外观形状和数据结构来看,二维数组和数学中的矩阵没有区别.但是,矩阵作为一种变换或 映射算符的体现,矩阵运算有着明确而严格的数学规则.而数组运算是 MATLAB 软件所定义 的规则,其目的是为了数据管理方面,操作简单,指令形式自然和执行计算有效.所以,在使用 MATLAB 时,特别要明确搞清数组运算和矩阵运算的区别.表 4.1.1 列出了两种运算指令形式 的实质内涵的异同. 4.1.1 数组运算和矩阵运算指令形式和实质内涵 数组运算 矩阵运算 指令 含义 指令 含义 A.' 非共轭转置 A' 共轭转置 A=s 把标量 s 赋给数组 A 的每个元素 s+B 把标量 s 分别与数组 B 的每个元素相加 s-B, B-s 标量 s 分别与数组 B 的元素之差 s.*A 标量 s 分别与数组 A 的元素之积 s*A 标量 s 分别与矩阵 A 的元素之积 s./B, B.\s 标量 s 分别被数组 B 的元素除 s*inv(B)
对 A 的各元素求对数 logm(A) A 的矩阵对数函数 sqrt(A) 对 A 的积各元素求平方根 sqrtm(A) A 的矩阵平方函数 从上面可以看到,数组运算的运算如:乘,除,乘方,转置,要加"点".所以,我们要特别注意在求"乘, 除,乘方,三角和指数函数"时,两种运算有着根本的区别.另外,在执行数组与数组运算时,参与 运算的数组必须同维,运算所得的结果数组也是总与原数组同维. 4.2 数组的基本运算 在 MATLAB 中,数组运算是针对多个数执行同样的计算而运用的.MATLAB 以一种非常直观 的方式来处理数组. 4.2.1 点转置和共轭转置 . ' —— 点转置.非共轭转置,相当于 conj(A'). >> a=1:5; >> b=a. ' b= 1 2 3 4 5 >> c=b. ' c= 12345 这表明对行向量的两次转置运算便得到原来的行向量. ' —— 共轭转置.对向量进行转置运算并对每个元素取其共轭.如: >> d=a+i*a d=
25 36 49 64 729 1000 1331 1728 >> g.^(h-1) ans = 1111 5678 81 100 121 144 4.2.5 数组的指数,对数和开方运算 在 MATLAB 中,所谓数组的运算实质是是数组内部每个元素的运算,因此,数组的指数,对数和 开方运算与标量的运算规则完全是一样的,运算符函数分别为:exp( ),log( ),sqrt( )等. >> a=[1 3 4;2 6 5;3 2 4]; >> c=exp(a) c= 2.7183 20.0855 54.5982 7.3891 403.4288 148.4132 20.0855 7.3891 54.5982 >> 数组的对数,开方运算与数组的指数运算,其方式完全一样,这里不详述. 4.3 向量运算 对于一行或一列的矩阵,为向量,MATLAB 有专门的函数来进行向量点积,叉积和混合积的运 算. 4.3.1 向量的点积运算 在高等数学中,我们知道,两向量的点积指两个向量在其中一个向量方向上的投影的乘积,通 常用来定义向量的长度.在 MATLAB 中,向量的点积用函数"dot"来实现,其调用格式如下: C=dot(A,B) —— 返回向量 A 与 B 的点积,结果存放于 C 中. C=dot(A,B, DIM) —— 返回向量 A 与 B 在维数为 DIM 的点积,结果存放于 C 中. >> A=[2 4 5 3 1]; >> B=[3 8 10 12 13]; >> C=dot(A,B) C=
>> g./h ans = 1.0000 2.0000 3.0000 4.0000 2.5000 3.0000 4.1000 4.0000 3.0000 3.3333 3.6667 4.0000 >> h.\g ans = 1.0000 2.0000 3.0000 4.0000 2.5000 3.0000 4.1000 4.0000 3.0000 3.3333 3.6667 4.0000 4.2.4 幂运算 在 MATLAB 中,数组的幂运算的运算为:".^",表示每一个元素进行幂运算. >> g.^2 % 数组 g 每个元素的平方 ans = 1 4 9 16 25 36 49 64 81 100 121 144 >> g.^(-1) % 数组 g 的每个元素的倒数 ans = 1.0000 0.5000 0.3333 0.2500 0.2000 0.1667 0.1429 0.1250 0.1111 0.1000 0.0909 0.0833 >> 2.^g % 以 g 的每个元素为指数对 2 进行乘方运算 ans = 2 4 8 16 32 64 128 256 512 1024 2048 4096 >> g.^h % 以 h 的每个元素为指数对 g 中相应元素进行乘方运算 ans = 1234
137 >> C=dot(A,B,4) C= 6 32 50 36 13 4.3.2 向量的叉积运算 在高等数学中,我们知道,两向量的叉积返回的是与两个向量组成的平面垂直的向量.在 MATLAB 中,向量的点积用函数"cross"来实现,其调用格式如下: C=cross(A,B) —— 返回向量 A 与 B 的叉积,即:,结果存放于 C 中. C=cross(A,B, DIM) —— 返回向量 A 与 B 在维数为 DIM 的叉积,结果存放于 C 中. >> A=[2 4 5]; >> B=[3 8 10]; >> C=cross(A,B) C= 0 -5 4 4.3.3 向量的混合运算 >> D=dot(A, cross(B,C)) D= 41 上例表明,首先进行的是向量 B 与 C 的叉积运算,然后再把叉积运算的结果与向量 A 进行点 积运算. 4.4 矩阵的基本运算 如果说 MATLAB 的最大特点是强大的矩阵运算功能,此话毫不为过.事实上,MATLAB 中所 有的计算都是以矩阵为基本单元进行的.MATLAB 对矩阵的运算功能最全面,也是最为强大 的.矩阵在形式上与构造方面是等同于前面所述的数组的,当其数学意义却是完全不同的. 矩阵的基本运算包括矩阵的四则运算,矩阵与标时的运算,矩阵的幂运算,指数运算,对数运算, 开方运算及以矩阵的逆运算,行列式运算等. 4.4.1 矩阵的四则运算 矩阵的四则运算与前面介绍的数组的四则运算基本相同.但也有一些差别. 1. 矩阵的加减 矩阵的加,减与数组的加,减是完全相同的,运算时要求两矩阵的大小完全相同.
上面方程是超定方程.要注意的:结果矩阵 x 是列向量形式.如果, >> a=[21 34 20 5; 78 20 21 14; 17 34 31 38]; >> b=[10 20 30]'; >> x=b\a x= 1.6286 1.2571 1.1071 1.0500 上面的方程为不定方程. 4. 矩阵与标量间的四则运算 矩阵与标量的四则运算和数组与标量间的四则运算完全相同,即矩阵中的每个元素与标量进 行加,减,乘,除四则运算.需要说明的是,当进行除法运算时,标量只能做除数. 5. 矩阵的幂运算 矩阵的幂运算与标量的幂运算不同.用符号"^",它不是对矩阵的每个元素进行幂运算,而是与 矩阵的某种分解有关. >> b=[21 34 20; 78 20 21; 17 34 31]; >> c=b^2 c= 3433 2074 1754 3555 3766 2631 3536 2312 2015 6. 矩阵的指数,对数运算与开方运算 矩阵的指数运算,对数运算与开方运算与数组相应的运算是不同的.它并不是对矩阵中的单个 元素的运算,而是对整个矩阵的运算.这些运算函数如下: expm, expm1, expm2, expm3 —— 指数运算函数; logm —— 对数运算函数; sqrtm —— 开方运算函数. >> a=[1 3 4; 2 6 5; 3 2 4]; >> c=expm(a) c= 1.0e+004 * 0.4668 0.7694 0.9200