c = input('c ');
g = input('g ');
syms Lambda_n
C = cell(c,1);
%replacement for the loop:
for i = 1:c
if i <= c-g
A=Lambda_n;
A(c+2-i,c+1-i)=0;
put_A_here=logical([zeros(i,1) eye(i)])
big=repmat(sym(0),size(put_A_here).*size(A));
big=insert_matrix(big,A,put_A_here);
else
A=Lambda_n;
A(c+2-i,c+1-i)=0;
put_A_here=logical([zeros(c-g,1) eye(c-g); zeros(1,c-g+1)])
big=repmat(sym(0),size(put_A_here).*size(A));
big=insert_matrix(big,A,put_A_here) ;
end
end
end
function out=insert_matrix(big,small,L)
out=big;
A=reshape(1:numel(small),size(small));
B=repmat({zeros(size(A))},size(L));
B(L)={A};
B=cell2mat(B);
B=B(:);
out(B~=0)=small(B(B~=0))
end
Я пытаюсь сохранить выходные матрицы в одной большой диагональной матрице. Это код, который я написал. Например, когда код выполняется для c = 2, g = 1, он даст две матрицы с именами «out» порядка 3 * 4 и 4 * 2. Поэтому я хочу хранить все матрицы «вне» в виде диагональной матрицы блоков. Я пытался использовать blkdiag, но это не сработало. Может кто-нибудь помочь мне здесь с этим?