Exponentiation of Matrix Columns by different Powers

5 views (last 30 days)
Given an MxN matrix A and a 1xN vector b, is there a concise way to raise each column of A to a corresponding power of the vector b? For example, if N = 4, the resulting matrix C would be computed as:
C = [A(:,1)^b(1) A(:,2)^b(2) A(:,3)^b(3) A(:,4)^b(4)];
However, when N becomes large, explicitly writing this formula is not feasible. Is there a way to write this without the use of a loop? Thank you for any feedback.

Accepted Answer

Brendan Hamm
Brendan Hamm on 6 Jul 2015
repmat can be used to create a matrix bExp of the same size as A where the rows are repeated.
bExp = repmat(b,size(A,1),1); % Expand b to be the size of A (assuming width are same)
C = A.^bExp;

More Answers (1)

James Tursa
James Tursa on 6 Jul 2015
C = bsxfun(@power,A,b);

Categories

Find more on Operators and Elementary Operations in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!