mpower2 - A faster matrix power function.

버전 1.1.0.0 (3.27 KB) 작성자: James Tursa
mpower2 evaluates matrix to an integer power faster than the MATLAB built-in function mpower.
다운로드 수: 1.3K
업데이트 날짜: 2009/11/11

라이선스 보기

mpower2 evaluates matrix to an integer power faster than the MATLAB built-in function mpower. The speed improvement apparently comes from the fact that mpower does an unnecessary matrix multiply as part of the algorithm startup, whereas mpower2 only does necessary matrix multiplies. e.g.,

>> A = rand(2000);
>> tic;A^1;toc
Elapsed time is 6.047194 seconds.
>> tic;mpower2(A,1);toc
Elapsed time is 0.001882 seconds.
>> tic;A^16;toc
Elapsed time is 29.840877 seconds.
>> tic;mpower2(A,16);toc
Elapsed time is 23.714932 seconds.

For sparse matrices, mpower does not do the unnecessary matrix multiply. However, in this case mpower2 is apparently more memory efficient. e.g.,

>> A = sprand(5000,5000,.01);
>> tic;A^1;toc
Elapsed time is 0.038530 seconds.
>> tic;mpower2(A,1);toc
Elapsed time is 0.036335 seconds.
>> tic;A^2;toc
Elapsed time is 3.248792 seconds.
>> tic;mpower2(A,2);toc
Elapsed time is 2.160705 seconds.
>> tic;A^3;toc
Elapsed time is 10.005085 seconds.
>> tic;mpower2(A,3);toc
Elapsed time is 10.020719 seconds.
>> tic;A^4;toc
??? Error using ==> mpower
Out of memory. Type HELP MEMORY for your options.
>> tic;mpower2(A,4);toc
Elapsed time is 133.682037 seconds.

Y = mpower2(X,P), is X to the power P for integer P. The power is computed by repeated squaring. If the integer is negative, X is inverted first. X must be a square matrix.

Class support for inputs X, P:
float: double, single

Caution: Since mpower2 does not do the unnecessary startup matrix multiply that mpower does, the end result may not match mpower exactly. But the answer will be just as accurate.

인용 양식

James Tursa (2024). mpower2 - A faster matrix power function. (https://www.mathworks.com/matlabcentral/fileexchange/25782-mpower2-a-faster-matrix-power-function), MATLAB Central File Exchange. 검색됨 .

MATLAB 릴리스 호환 정보
개발 환경: R2007a
모든 릴리스와 호환
플랫폼 호환성
Windows macOS Linux
카테고리
Help CenterMATLAB Answers에서 Image Arithmetic에 대해 자세히 알아보기
도움

줌: matrix power

Community Treasure Hunt

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

Start Hunting!
버전 게시됨 릴리스 정보
1.1.0.0

Modified the code so that sparse matrix inputs will always result in a sparse matrix answer. Also added a few more special cases that are more efficient than the binary decomposition method.

1.0.0.0