Forming a block diagonal matrix of one certain matrix?

4 Ansichten (letzte 30 Tage)
diadalina
diadalina am 13 Jan. 2020
Bearbeitet: Matt J am 13 Jan. 2020
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
diadalina
diadalina am 13 Jan. 2020
mY matrix A shoud be like this
A=B C 0000
S B C 000
0 S B C 00
00 S B C 0
where B, C,S are matrices
Adam Danz
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?

Melden Sie sich an, um zu kommentieren.

Antworten (1)

Matt J
Matt J am 13 Jan. 2020
Bearbeitet: Matt J am 13 Jan. 2020
using interpMatrix (Download)
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

Kategorien

Mehr zu Creating and Concatenating Matrices finden Sie in Help Center und File Exchange

Tags

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by