China-pub.com 下载 第4章 创建新矩阵 在2.2节中讨论了矩阵的定义和分配。但是也还有可能要建立新的矩阵,例如通过函数返 回一个新的矩阵或者使用已存在的矩阵。 4.1建立新矩阵 建立1矩阵使用ones命令,这种矩阵的元素全部都是1。相应的建立0矩阵使用zeros命令, 这种矩阵的元素全部都是0。单位矩阵的对角线元素全部是1,而其他元素全部是0。建立单位 矩阵使用eye命令。在矩阵乘方运算中,n阶的单位矩阵就相对应于在标量运算中的数字1。 命令集32 1矩阵、零矩阵和单位矩阵 ones(n) 建立一个n×n的1矩阵。 ones(m,n,···,p) 建立一个m×n×…×p的1矩阵。 ones(size(A)) 建立一个和矩阵A同样大小的1矩阵。 zeros(n) 建立一个n×n的0矩阵。 zeros(m,n,···,p) 建立一个mXn…Xp的0矩阵。 zeros(size(A)) 建立一个和矩阵A同样大小的0矩阵。 eye(n) 建立一个nXn的单位矩阵。注意ye命令只能用来建立二维矩阵。 eye(m,n) 建立一个mXn的单位矩阵。注意ye命令只能用来建立二维矩阵。 eye(size(A)) 建立一个和矩阵A同样大小的单位矩阵。 ■例4.1 命令组: OneMatrix ones(3,4,2) ZeroMatrix zeros(size(OneMatrix)) Identity =eye(2) Identity23 =eye(2,3) Identity32 eye(3,2) 运行上述命令后在屏幕上会得到以下结果: OneMatrix(:,:,1)= 1 1 1 1 1 1 1 1 OneMatrix(:,:,2)= 1 1 1 1 1 1 ZeroMatrix(:,:,1)=
下载 第4章 创建新矩阵 在2 . 2节中讨论了矩阵的定义和分配。但是也还有可能要建立新的矩阵,例如通过函数返 回一个新的矩阵或者使用已存在的矩阵。 4.1 建立新矩阵 建立1矩阵使用o n e s命令,这种矩阵的元素全部都是1。相应的建立0矩阵使用z e r o s命令, 这种矩阵的元素全部都是 0。单位矩阵的对角线元素全部是 1,而其他元素全部是0。建立单位 矩阵使用e y e命令。在矩阵乘方运算中,n阶的单位矩阵就相对应于在标量运算中的数字 1。 命令集3 2 1矩阵、零矩阵和单位矩阵 o n e s ( n ) 建立一个n×n的1矩阵。 o n e s ( m , n ,. . ., p ) 建立一个m×n×. . . ×p的1矩阵。 o n e s ( s i z e ( A ) ) 建立一个和矩阵A同样大小的1矩阵。 z e r o s ( n ) 建立一个n×n的0矩阵。 z e r o s ( m , n ,. . ., p ) 建立一个m×n . . . ×p的0矩阵。 z e r o s ( s i z e ( A ) ) 建立一个和矩阵A同样大小的0矩阵。 e y e ( n ) 建立一个n×n 的单位矩阵。注意e y e命令只能用来建立二维矩阵。 eye(m, n) 建立一个m×n 的单位矩阵。注意e y e命令只能用来建立二维矩阵。 e y e ( s i z e ( A ) ) 建立一个和矩阵A同样大小的单位矩阵。 ■ 例4 . 1 命令组: 运行上述命令后在屏幕上会得到以下结果:
China-pub.com 第4章创建新矩阵 51 下载 Q 0 0 0 0 0 0 0 ZeroMatrix(:,:,2)= 0 0 0 0 0 0 0 0 0 0 0 0 Identity 1 0 0 1 Identity23 1 0 0 O 1 0 Identity32 1 0 0 0 0 ■ 矩阵中的所有元素都是随机数,这样的矩阵称为随机矩阵。可以用xand命令来产生在0 ~I之间均匀分布的随机数。也可以用MATLAB中的candn命令来产生服从零均值、单位方差 正态分布的随机数。 命令集33 随机数和随机矩阵 rand 产生在0一1之间均匀分布的随机数:每调用一次给一个新的数值。 rand +irand 产生一个复数随机数。 rand(n) 产生一个n×n的矩阵,其元素为0~1之间均匀分布的随机数。 rand(m,n,···,p) 产生一个m×n×,×p的矩阵,其元素为0~1之间均匀分布的 随机数。 rand 产生零均值、单位方差的正态分布随机数。 randn(n) 产生一个X的矩阵,其元素为零均值、单位方差的正态分布随机数。 randn(m,n,.·,p)产生一个mXnX…Xp的矩阵,其元素为零均值、单位方差的 正态分布随机数。 MATLAB5使用一种新的随机数发生器,可以设置几个随机数的种子。它能够产生在闭 区间[25,1一2-5习上所有的浮点数。理论上它能够产生2492≌10449多个不重复的数。而 MATLAB4中的随机数发生器只能使用一个随机数的种子。 命令集34 随机数种子 rand(“state') 返回一个B5个元素的向量,其中包含随机状态发生器的当前状态。 rand(‘state',s) 设置随机种子发生器的状态为S
矩阵中的所有元素都是随机数,这样的矩阵称为随机矩阵。可以用 r a n d命令来产生在 0 ~1之间均匀分布的随机数。也可以用 M AT L A B中的r a n d n命令来产生服从零均值、单位方差 正态分布的随机数。 命令集3 3 随机数和随机矩阵 r a n d 产生在0~1之间均匀分布的随机数;每调用一次给一个新的数值。 rand + i*r a n d 产生一个复数随机数。 r a n d ( n ) 产生一个n×n的矩阵,其元素为0~1之间均匀分布的随机数。 r a n d ( m , n ,. . ., p ) 产生一个m×n×. . .×p的矩阵,其元素为 0~1之间均匀分布的 随机数。 r a n d 产生零均值、单位方差的正态分布随机数。 r a n d n ( n ) 产生一个n×n的矩阵,其元素为零均值、单位方差的正态分布随机数。 r a n d n ( m , n ,. . ., p ) 产生一个m×n×. . .×p的矩阵,其元素为零均值、单位方差的 正态分布随机数。 M ATLAB 5使用一种新的随机数发生器,可以设置几个随机数的种子。它能够产生在闭 区间 [ 2 -5 3, 1 -2 -5 3]上所有的浮点数。理论上它能够产生 2 1 4 9 2≌1 04 4 9多个不重复的数。而 M ATLAB 4中的随机数发生器只能使用一个随机数的种子。 命令集3 4 随机数种子 r a n d (‘s t a t e’) 返回一个有3 5个元素的向量,其中包含随机状态发生器的当前状态。 r a n d (‘s t a t e’, s ) 设置随机种子发生器的状态为 s。 第4章 创建新矩阵 5 1 下载 ■
52 MATLAB5手册 China-pub.coM 下载 rand(‘state',0) 设置随机种子发生器为它的原始状态。 rand('state',j) 设置随机种子发生器为它的第种状态,为整数。 rand(state', 使用c1ock命令(见命令集15),使得随机种子发生器在每个不 sum(100*clock)) 同时刻都设置为一种不同的状态。 rand('seed',arg) 使用MATLAB4中的随机种子发生器,见帮助可以得到更多 的信息。 randn('state') 返回一个有两个元素的向量,其中包含正态随机种子发生器 的状态。 randn(state',arg)根据arg设置正态随机种子发生器,见rand。 ■例4.2 ()例如,随机种子发生器可以给出以下的结果。这里只列出了这个状态向量(35个元素) 中的前五个元素的值。 astate rand('state');astate(1:5),Random rand(2,3) ans 0.6923 0.1646 0.5676 0.3609 0.8557 Random▣ 0.4565 0.8214 0.6154 0.0185 0.4447 0.7919 (b)为了避免总是从相同的随机种子开始而得到相同的随机数序列,可以使用MATLAB中 的clock函数。 rand('state',sum(100*clock));R rand('state');R(1:5) ans 0.8010 0.4701 0.5052 0.0707 0.4643 c1ock命令定义在2.5节中。 ■ 在MATLAB中还有利用已存在的矩阵建立新矩阵的命令。假设矩阵A是mXn的矩阵,x是 一个有n个元素的向量。用命令集35中的命令diag来生成一个新的矩阵。 命令集35 从已存在的矩阵中生成新的矩阵(一) diag(A) 生成一个由矩阵A主对角线元素组成的列向量。主对角线总是从矩 阵左上角开始。对于方阵来说它结束于矩阵的右下角
r a n d (‘s t a t e’, 0 ) 设置随机种子发生器为它的原始状态。 r a n d (‘s t a t e’, j) 设置随机种子发生器为它的第 j种状态,j为整数。 r a n d (‘s t a t e’, 使用c l o c k命令(见命令集15),使得随机种子发生器在每个不 s u m ( 1 0 0*c l o c k ) ) 同时刻都设置为一种不同的状态。 r a n d (‘s e e d’,a r g) 使用M ATLAB 4中的随机种子发生器,见帮助可以得到更多 的信息。 r a n d n (‘s t a t e’) 返回一个有两个元素的向量,其中包含正态随机种子发生器 的状态。 r a n d n (‘s t a t e’, a r g ) 根据a r g设置正态随机种子发生器,见 r a n d。 ■ 例4 . 2 (a) 例如,随机种子发生器可以给出以下的结果。这里只列出了这个状态向量 ( 3 5个元素) 中的前五个元素的值。 ( b )为了避免总是从相同的随机种子开始而得到相同的随机数序列,可以使用 M AT L A B中 的c l o c k函数。 c l o c k命令定义在2 . 5节中。 在M AT L A B中还有利用已存在的矩阵建立新矩阵的命令。假设矩阵 A是m×n的矩阵,x是 一个有n个元素的向量。用命令集3 5中的命令d i a g来生成一个新的矩阵。 命令集3 5 从已存在的矩阵中生成新的矩阵 (一) d i a g ( A ) 生成一个由矩阵 A主对角线元素组成的列向量。主对角线总是从矩 阵左上角开始。对于方阵来说它结束于矩阵的右下角。 5 2 M ATLAB 5 手册 下载 ■
China-bub.coM 第4章创建新矩阵 53 下载 diag(x) 生成一个n维的方阵,它的主对角线元素值取自向量x,其余元素的 值都为0。 diag(A,k) 生成一个由矩阵A第k条对角线的元素组成的列向量。k=0为主对角 线:k<0为下第k对角线:>0为上第k对角线。 diag(x,k) 生成一个(n+abs(k)X(n+abs(k)维的矩阵,该矩阵的第k条对角线元 素取自向量x,其余元素都为零。关于参数k可参考上个命令。 ■例4.3 假设: 1 3 4 5 6 7 8 A 9 1011 12 x=(-5-10-15) 13 1415 16 (a)命令diag element=diag(A)给出: diag_element 1 6 11 16 (b)Diag_matrix=diag(diag(A))返▣: Diag_matrix 1 0 0 0 0 6 0 0 0 0 11 0 0 0 0 16 (c)命令Dmatrixx=diag(x)或者Dmatrixx=diag(x')给出: Dmatrixx -5 0 0 0-10 0 0 0-15 (d如果输入superDiagElement=diag(A,2),那么输出: superDiagElement 3 8 (e)NewMatrix=diag(diag(A,2))返▣: NewMatrix 30 08 注意,该矩阵的大小由命令diag(A,2生成的向量决定。 (f0 SuperDiagonalMatrix=diag(diag(A,2返回2列矩阵:
d i a g ( x ) 生成一个n维的方阵,它的主对角线元素值取自向量 x,其余元素的 值都为0。 d i a g ( A , k ) 生成一个由矩阵 A第k条对角线的元素组成的列向量。 k= 0为主对角 线;k< 0为下第k对角线;k> 0为上第k对角线。 d i a g ( x , k ) 生成一个(n+ a b s (k) )×(n+ a b s (k) )维的矩阵,该矩阵的第 k条对角线元 素取自向量x,其余元素都为零。关于参数 k可参考上个命令。 ■ 例4 . 3 假设: (a) 命令d i a g _ e l e m e n t = d i a g ( A )给出: (b) D i a g _ m a t r i x = d i a g ( d i a g ( A ) )返回: (c) 命令D m a t r i x x = d i a g ( x )或者D m a t r i x x = d i a g ( x ’ ) 给出: (d) 如果输入s u p e r D i a g E l e m e n t = d i a g ( A , 2 ),那么输出: superDiagElement = 3 8 (e) N e w M a t r i x = d i a g ( d i a g ( A , 2 ) )返回: NewMatrix = 3 0 0 8 注意,该矩阵的大小由命令 diag(A, 2)生成的向量决定。 (f) SuperDiagonalMatrix =diag(diag(A,2),2) 返回下列矩阵: 第4章 创建新矩阵 5 3 下载
54 MATLAB5手册 China-pub.com 下载 SuperDiagonalMatrix 0 0 3 0 0 0 0 8 0 0 0 0 0 0 0 0 矩阵A的上第2对角线的长度为2,因此建立的矩阵大小为4×4。 ■ 在MATLAB中使用命令triu和tril来建立三角矩阵。 命令集36 从已存在的矩阵中生成新的矩阵(二) triu(A) 生成一个和A大小相同的上三角矩阵。该矩阵的主对角线及以上元 素取自A中相应元素,其余元素都为零。 triu(A,k) 生成一个和4大小相同的上三角矩阵。该矩阵的第涤对角线及以上元素取 自A中相应元素,其余元素都为零。命全riu(A,O)等同于命triu(A)。 tril(A) 生成一个和A大小相同的下三角矩阵。该矩阵的主对角线及以下元 素取自A中相应元素,其余元素都为零。 tril(A,k) 生成一个和A大小相同的下三角矩阵。该矩阵的第k条对角线及以下 元素取自A中相应元素,负数k表示主对角线下的对角线。其余元素 都为零。命令tri1(A,0)等同于命令tr11(A)。 对于每一个方阵A都有下列关系: A=triu(A)+tril(A)-diag(diag(A)) 严格的上三角矩阵A应该使用triu(A,1)来定义:而严格的下三角矩阵A则用tri1(A,一 1)来定义。因此,对于每一个方阵A都有下列关系: A=triu(A,1)tril(A71)diag(diag (A)) 当通过迭代的方法来求解线性方程系统(例如Gauss-.Seidel,.Jacobi或者Successive Over Relaxation(SOR)时,以这种方式来分解矩阵是很重要的。 ■例4.4 假设: 9 876 B= 130 -471 9 (a)UpperTriangular =triu: UpperTriangular 9 7 6 0 3 0 0 1 (b)LowerTriangular=tri1l,)返回: LowerTriangular 0 0 0 0 10 0 -4 7 0
矩阵A的上第2对角线的长度为2,因此建立的矩阵大小为4×4。 在M AT L A B中使用命令t r i u和t r i l来建立三角矩阵。 命令集3 6 从已存在的矩阵中生成新的矩阵 (二) t r i u ( A ) 生成一个和 A大小相同的上三角矩阵。该矩阵的主对角线及以上元 素取自A中相应元素,其余元素都为零。 t r i u ( A , k ) 生成一个和A大小相同的上三角矩阵。该矩阵的第k条对角线及以上元素取 自A中相应元素,其余元素都为零。命令t r i u ( A , 0 )等同于命令t r i u ( A )。 t r i l ( A ) 生成一个和 A大小相同的下三角矩阵。该矩阵的主对角线及以下元 素取自A中相应元素,其余元素都为零。 t r i l ( A , k ) 生成一个和A大小相同的下三角矩阵。该矩阵的第 k条对角线及以下 元素取自A中相应元素,负数k表示主对角线下的对角线。其余元素 都为零。命令t r i l ( A , 0 )等同于命令t r i l ( A )。 对于每一个方阵A都有下列关系: A=triu(A) + tril(A) - diag(diag(A)) 严格的上三角矩阵A应该使用t r i u ( A , 1 )来定义;而严格的下三角矩阵A则用t r i l ( A ,- 1 )来定义。因此,对于每一个方阵A都有下列关系: A=triu(A, 1) + tril(A, -1) + diag(diag(A)) 当通过迭代的方法来求解线性方程系统 (例如Gauss-Seidel, Jacobi 或者Successive Over R e l a x a t i o n ( S O R ) )时,以这种方式来分解矩阵是很重要的。 ■ 例4 . 4 假设: (a) UpperTriangular =triu(B) 返回: (b) LowerTriangular =tril(B, -1 )返回: 5 4 M ATLAB 5 手册 下载 ■