Using kron to create a large matrix

2 次查看(过去 30 天)
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 个评论
Guillaume
Guillaume 2019-4-24
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.
SA
SA 2019-4-24
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.

请先登录,再进行评论。

采纳的回答

Andrei Bobrov
Andrei Bobrov 2019-4-24
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));

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Logical 的更多信息

标签

尚未输入任何标签。

Community Treasure Hunt

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

Start Hunting!

Translated by