Borrar filtros
Borrar filtros

Using kron to create a large matrix

2 visualizaciones (últimos 30 días)
SA
SA el 24 de Abr. de 2019
Comentada: SA el 24 de Abr. de 2019
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 comentarios
Guillaume
Guillaume el 24 de Abr. de 2019
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 el 24 de Abr. de 2019
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.

Iniciar sesión para comentar.

Respuesta aceptada

Andrei Bobrov
Andrei Bobrov el 24 de Abr. de 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));

Más respuestas (0)

Categorías

Más información sobre Logical en Help Center y File Exchange.

Etiquetas

Aún no se han introducido etiquetas.

Community Treasure Hunt

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

Start Hunting!

Translated by