Как сохранить выходные матрицы в большой диагональной матрице - PullRequest
0 голосов
/ 23 апреля 2020
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, но это не сработало. Может кто-нибудь помочь мне здесь с этим?

...