How to assign a matrix instead of scalar in another matrix at specified locations with or without kronecker product?
1 visualizzazione (ultimi 30 giorni)
Mostra commenti meno recenti
Udit Srivastava
il 6 Lug 2017
Commentato: Guillaume
il 6 Lug 2017
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).
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/165823/image.png)
Any thoughts about how this could be done?
Thank you.
0 Commenti
Risposta accettata
Guillaume
il 6 Lug 2017
Modificato: Guillaume
il 6 Lug 2017
elems = {F, G, zeros(size(F))};
result = cell2mat(elems(min(toeplitz(1:size(F, 1)), 3)))
2 Commenti
Guillaume
il 6 Lug 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}
Più risposte (0)
Vedere anche
Categorie
Scopri di più su Operating on Diagonal Matrices in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!