Borrar filtros
Borrar filtros

How to assign a matrix instead of scalar in another matrix at specified locations with or without kronecker product?

1 visualización (últimos 30 días)
Hello all,
I have a tri-diagonal matrix F (n-by-n) and a diagonal matrix G(n-by-n). Now, I want to construct a matrix A(n^2-by-n^2) (with kronecker product or without it) with matrix F lying on main diagonal of A (A becomes a tri-diagonal matrix after this step) and putting G on the 2 adjacent diagonals (A becomes a penta-diagonal matrix after this step).
Any thoughts about how this could be done?
Thank you.

Respuesta aceptada

Guillaume
Guillaume el 6 de Jul. de 2017
Editada: Guillaume el 6 de Jul. de 2017
There may be something in gallery, otherwise this would work:
elems = {F, G, zeros(size(F))};
result = cell2mat(elems(min(toeplitz(1:size(F, 1)), 3)))
  2 comentarios
Guillaume
Guillaume el 6 de Jul. de 2017
The whole idea is to generate an indexing matrix that chooses between F, G, and the zeros. Therefore you only want indices between 1 and 3. My min(toeplitz(1:size(F, 1)), 3) is just one way of generating that indexing matrix. Other possibilities:
toeplitz(min(1:size(F, 1), 3))
toeplitz([1:3, repmat(3, size(F, 1)-2, 1))
gallery('tridiag', size(F, 1), 1, 2, 1) + 1 %with this one you have to change the order in elems to {0, G, F}

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Operating on Diagonal Matrices en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by