Matlab中如何扩展矩阵,其他部分补零?

一、使用官方命令 blkdiag

在matlab中搜索:help blkdiag
下面是其官方事例:
Construct block diagonal matrix from input arguments

Syntax

out = blkdiag(a,b,c,d,...)

Description

out = blkdiag(a,b,c,d,...), where a, b, c, d, ... are matrices, outputs a block diagonal matrix of the form

The input matrices do not have to be square, nor do they have to be of equal size.即:输入的矩阵可以不是方阵
例如:

blkdiag (rand(2),ones(3))

ans =

0.9649    0.9706         0         0         0
0.1576    0.9572         0         0         0
     0         0    1.0000    1.0000    1.0000
     0         0    1.0000    1.0000    1.0000
     0         0    1.0000    1.0000    1.0000

二、使用其他命令

目的:在B的后面补零
例如:A=[1 1 1 1
1 1 1 1
1 1 1 1
1 1 1 1]
B= [2 2
2 2]
补零之后变成:
B=[2 2 0 0
2 2 0 0
0 0 0 0
0 0 0 0]

在matlab命令框中输入以下命令:

A=[1 1 1 1
1 1 1 1
1 1 1 1
1 1 1 1]

B=[2 2
2 2]

A =

 1     1     1     1
 1     1     1     1
 1     1     1     1
 1     1     1     1

B =

 2     2
 2     2

C=zeros(4,4)

C =

 0     0     0     0
 0     0     0     0
 0     0     0     0
 0     0     0     0

C(1:2,1:2)=B

C =

 2     2     0     0
 2     2     0     0
 0     0     0     0
 0     0     0     0

B=C

B =

 2     2     0     0
 2     2     0     0
 0     0     0     0
 0     0     0     0

更简单的一条指令:

B=[2 2
2 2]

B =

 2     2
 2     2

B(4,4)=0

B =

 2     2     0     0
 2     2     0     0
 0     0     0     0
 0     0     0     0
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。