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).
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/165823/image.png)
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에서 Operating on Diagonal Matrices에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!