Forming a block diagonal matrix of one certain matrix?
4 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
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 Commenti
Adam Danz
il 13 Gen 2020
If that's the example of A, then A cannot be a matrix. Is it a cell array or is the example misleading?
Risposte (1)
Matt J
il 13 Gen 2020
Modificato: Matt J
il 13 Gen 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 Commenti
Vedere anche
Categorie
Scopri di più su Creating and Concatenating Matrices in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!