MATLAB Answers

Forming a block diagonal matrix of one certain matrix?

3 views (last 30 days)
diadalina
diadalina on 13 Jan 2020
Edited: Matt J on 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 Comments

diadalina
diadalina on 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 on 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?

Sign in to comment.

Answers (1)

Matt J
Matt J on 13 Jan 2020
Edited: Matt J on 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

  0 Comments

Sign in to comment.

Sign in to answer this question.

Tags


Translated by