How to assign a matrix instead of scalar in another matrix at specified locations with or without kronecker product?
1 次查看(过去 30 天)
显示 更早的评论
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.
0 个评论
采纳的回答
Guillaume
2017-7-6
编辑:Guillaume
2017-7-6
elems = {F, G, zeros(size(F))};
result = cell2mat(elems(min(toeplitz(1:size(F, 1)), 3)))
2 个评论
Guillaume
2017-7-6
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}
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Matrices and Arrays 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!