简体   繁体   中英

Matrix power help/Matlab

I want to raise a matrix to a next matrix and subtrat one before taking the product.

eg

A = [2 3 5       
     2 3 0]

B = [2 2 1
     1 2 0]

so prod(A.^B-1) would be:

first row (2^2-1)*(3^2-1)*(5^1-1)=96

second row (2^1-1)*(3^2-1)=8

and we would have prod(A.^B-1) = 96, 81 . the trick also to skip past the zero, i keep getting zero or NaN, i think the zero is being calculated as well.

Is there a way to code this,

this is the code I have in mind

if A~=0 && B~=0
    prod(A.^B-1)
end

You could do it like this using logical indexing to replace instances where A.^B-1 is 0 :

A = [2 3 5;2 3 0];
B = [2 2 1;1 2 0];
C = A.^B-1;
C(C==0) = 1;  % Replace zeros with ones
D = prod(C,2) % Product across the columns

which returns

D =

    96
     8

provided that you remove the zeros, I don't think that you should get NaN unless your original matrices contain it. However, You can replace it in the same manner as well ( C(isnan(C)) = 1; ).

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM