Exponentiation of Matrix Columns by different Powers

3 ビュー (過去 30 日間)
John
John 2015 年 7 月 6 日
回答済み: James Tursa 2015 年 7 月 6 日
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.
  1 件のコメント
John
John 2015 年 7 月 6 日
Figured it out.
C = A.^repmat(b, M, 1);

サインインしてコメントする。

採用された回答

Brendan Hamm
Brendan Hamm 2015 年 7 月 6 日
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;

その他の回答 (1 件)

James Tursa
James Tursa 2015 年 7 月 6 日
C = bsxfun(@power,A,b);

カテゴリ

Help Center および File ExchangeMATLAB についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by