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);
Elapsed time is 6.047194 seconds.
Elapsed time is 0.001882 seconds.
Elapsed time is 29.840877 seconds.
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);
Elapsed time is 0.038530 seconds.
Elapsed time is 0.036335 seconds.
Elapsed time is 3.248792 seconds.
Elapsed time is 2.160705 seconds.
Elapsed time is 10.005085 seconds.
Elapsed time is 10.020719 seconds.
??? Error using ==> mpower
Out of memory. Type HELP MEMORY for your options.
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 (2021). mpower2 - A faster matrix power function. (https://www.mathworks.com/matlabcentral/fileexchange/25782-mpower2-a-faster-matrix-power-function), MATLAB Central File Exchange. Retrieved .
Well tested and useful.
@James: revenge for your informative feedback on his file.
@GAGAN: Is there a particular reason why you gave this submission such a low rating?
Gianni: Raising to a power with matrix multiplies is not mathematically defined for non-square matrices. Hence mpower2 (and MATLAB's own mpower) do not support this operation. For vectors, an operation that *is* supported in MATLAB is the element-wise power using the .^ operator.
super... but only with square matrices as far as I understant
can it work also with vectors ?
Inspired: matrix power
Find the treasures in MATLAB Central and discover how the community can help you!Start Hunting!