我有一个矩阵B
我想获得一个矩阵C
维度的(L+k)*m
by L*n
. L
and k
是输入值。B0 , B1 , ... , Bk
有尺寸m
by n
.
例如 :
如果我有一个矩阵B = [1 1 ; 1 1 ; 1 1]
with B0 = [1 1]
, B1 = [1 1]
and B2 = [1 1]
,以及每个B0 , B1 , B2
维度的1
by 2
with k = 2
and L = 4
.
然后矩阵C
获得的由下式给出C = [1 1 0 0 0 0 0 0 ; 1 1 1 1 0 0 0 0 ; 1 1 1 1 1 1 0 0 ; 0 0 1 1 1 1 1 1 ; 0 0 0 0 1 1 1 1 ; 0 0 0 0 0 0 1 1]
和维度6
by 8
.
我想将我的程序推广到任何大小的矩阵B
.
我的程序解决了这个问题B = [1 1 ; 1 1 ; 1 1]
with m = 1
, n = 2
, k = 2
and L = 4
.
我的代码:
clc;
clear;
k = 2;
L = 4;
B = [1 1 ; 1 1 ; 1 1];
B0 = [1 1];
B1 = [1 1];
B2 = [1 1];
m = size(B0,1);
n = size(B0,2);
c = [B ; zeros(size(B))];
C = zeros((L+k)*m,L*n);
for i = 1:L
C(:,2*i-1:2*i) = circshift(c,i-1,1);
end
结果 :C =
1 1 0 0 0 0 0 0
1 1 1 1 0 0 0 0
1 1 1 1 1 1 0 0
0 0 1 1 1 1 1 1
0 0 0 0 1 1 1 1
0 0 0 0 0 0 1 1
我很难概括任何给定的矩阵B
并且对于任何值k
and L
.
有什么建议么?