Vectorization of matrices power
이전 댓글 표시
Hi all,
Let A a matrix n*n and let N an integer. I wish to create a matrix of power of the form AN = [I A A^2,...,A^N], where I=eye(n), without resorting to a "for" cycle. I have tried to take a look at several commands, including cumprod, kron, etc, and trying to combine them, but I failed. I made it only for the scalar case, i.e. n=1.
After that, I wish to create a matrix
AA = [I 0 0 0;A I 0 0;A^2 A I 0;A^3 A^2 A I]
without using any "for" cycle. I have noticed that the first column of AA is equal to AN' (if it may help). Any hints? Thanks.
댓글 수: 1
Matt J
2013년 11월 12일
It is doubtful that a for-loop is to be feared here. Surely you can't be doing this for N very large?
채택된 답변
추가 답변 (2개)
Sean de Wolski
2013년 11월 12일
This should give you the tools you need:
x = (1:3).^(1:3)
xm = tril(toeplitz(x))
Ubaldo Tiberi
2013년 11월 13일
0 개 추천
댓글 수: 1
but just by combining elementary Matlab operations such as blkdiag, kron, cumprod
If A is symmetric you might be able to. But I think a for-loop will be the most efficient, regardless. Are you sure you need to build these matrices explicitly? They contain a lot of redundant data. What are you planning to use them for?
카테고리
도움말 센터 및 File Exchange에서 Matrix Indexing에 대해 자세히 알아보기
제품
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!