通过在给定参数K的原始元素之间插入零来扩展矩阵

时间:2014-05-07 09:59:58

标签: matlab matrix expand

假设我有一个大小为A的矩阵3-by-3

A = [a11, a12, a13; a21, a22, a23; a31, a32, a33];

然后我指定一个参数K,说K是2,那么我想要的是让A成为

a11  0  0  a12  0 0  a13  0  0
 0   0  0   0   0 0   0   0  0
 0   0  0   0   0 0   0   0  0
a21  0  0  a22  0 0  a23  0  0
 0   0  0   0   0 0   0   0  0
 0   0  0   0   0 0   0   0  0
a31  0  0  a32  0 0  a33  0  0
 0   0  0   0   0 0   0   0  0
 0   0  0   0   0 0   0   0  0

其中,我在原始元素之间插入K个零行和零列。

在MATLAB中有没有官方函数?

2 个答案:

答案 0 :(得分:2)

对于方阵,A

<强>代码

%%// Parameter
K = 3; 

[x1,y1] = meshgrid(0:size(A,1)-1,0:size(A,1)-1)

x1 = bsxfun(@times,x1,K)+1
y1 = bsxfun(@times,y1,K)+1

Anew = zeros(size(A)*K)
Anew(sub2ind(size(Anew),y1(:),x1(:)))=A

答案 1 :(得分:2)

两种替代方法

索引: initalise out为零,然后使用索引填写所需的元素

out=zeros(size(A)*(K+1));
out(1:K+1:end,1:K+1:end)=A

Kronecker张量产品: 生成一个矩阵以将每个元素乘以,然后使用kron函数

temp=zeros(K+1),temp(1)=1
out=kron(A,temp)