Using kron to create a large matrix

I wrote this code to create a block tridiagonal matrix with I (I is the identity matrix) on the sub-diagoanls and A as the square matrix on the main diagonal.
How do I repeat this process so that I can have the 11 A's on the main diagonal and 10 I's on the subdiagonals. So eventually, i get a larger tridiagonal matrix.
A = [-4 2 0;1 -4 1;0 2 -4]; %main diagonal
B = [0 1 0; 0 0 1; 0 0 0]; %sub-diagonal
W = kron(eye(3),A) + kron(B,eye(3))+ kron(B',eye(3))

2 Comments

I'm unclear on what result you want, in particular what the 11 B's refers to. As far as I can tell there's only one B.
Sorry, I typed the question wrongly.
The code gives me 3 A's on the main diagonal and two I's on the subdiagonals which gives me a tridiagonal matrix but I want a larger matrix with 11 A's on the main diagonal and 10 I's on the subdiagonals. So eventually I get a larger tridiagonal matrix.

Sign in to comment.

 Accepted Answer

Andrei Bobrov
Andrei Bobrov on 24 Apr 2019
n = 11;
A = [-4 2 0;1 -4 1;0 2 -4]; %main diagonal
m = size(A,1);
mn = m*n;
o1 = ones(mn,1);
out = full(spdiags([o1,repmat(spdiags(A),n,1),o1],[-3,-1:1,3],mn,mn));

More Answers (0)

Categories

Find more on Linear Algebra in Help Center and File Exchange

Tags

No tags entered yet.

Asked:

SA
on 24 Apr 2019

Commented:

SA
on 24 Apr 2019

Community Treasure Hunt

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

Start Hunting!