Forming a block diagonal matrix of one certain matrix?
4 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
I have a matrix A which is m*n. I want to create a block tridiagonal matrices of size n*m whose diagonals elements are the matrix A.
B=eye(3);
C=ones(2);
S=ones(2);
for i=1:numel(A)
A(i,i) =repmat(B,i,1)
A(i,i+1)=repmat(C,i,1)
A(i,i-1)=repmat(S,i,1)
end
can anyone help me to find the error
3 Kommentare
Adam Danz
am 13 Jan. 2020
If that's the example of A, then A cannot be a matrix. Is it a cell array or is the example misleading?
Antworten (1)
Matt J
am 13 Jan. 2020
Bearbeitet: Matt J
am 13 Jan. 2020
S=1*ones(2);
B=2*ones(2);
C=3*ones(2);
copies=4; %number of repetitions
L=flip( {S,B,C, zeros(size(B)) } );
idx=full(interpMatrix([1,2,3],2,copies,1))+1;
A=cell2mat(L(idx))
A =
2 2 3 3 0 0 0 0
2 2 3 3 0 0 0 0
1 1 2 2 3 3 0 0
1 1 2 2 3 3 0 0
0 0 1 1 2 2 3 3
0 0 1 1 2 2 3 3
0 0 0 0 1 1 2 2
0 0 0 0 1 1 2 2
0 Kommentare
Siehe auch
Kategorien
Mehr zu Creating and Concatenating Matrices finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!