Ваша матричная запись не имеет большого смысла, особенно в MATLAB, поскольку вы пишете:
[1 1] + [1 1] + [1 1] = [1 1 ; 1 1 ; 1 1]
Это равенство неверно, так как LHS имеет размер [1 2]
, а RHS имеет размер [3 2]
. Если бы вы могли лучше объяснить это, мы могли бы попробовать более общий код.
Чтобы решить приведенный вами пример:
B = [1 1
1 1
1 1];
s = 2;
L = 4;
c = [B ; zeros(size(B))];
C = zeros(L+s,L*s);
for ii=1:L
C(:,2*ii-1:2*ii) = circshift(c,ii-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
Однако, вероятно, есть лучшее однострочное решение, избегающее for-l oop.