matlab中矩阵升幂生成阵列

matlab中矩阵升幂生成阵列,matlab,vectorization,Matlab,Vectorization,我需要创建一个三维数组,将矩阵的所有元素提升到向量给定的不同幂。有没有办法避免电源上出现环路 例如,如果A是标量,我可以 A = 2; b = 1:10; C = A.^b; A = [1, 2, 3]; b = 1:10; C = bsxfun(@power, A, (0:5)'); 如果A是向量,我可以 A = 2; b = 1:10; C = A.^b; A = [1, 2, 3]; b = 1:10; C = bsxfun(@power, A, (0:5)'); 如果A是矩阵,我

我需要创建一个三维数组,将矩阵的所有元素提升到向量给定的不同幂。有没有办法避免电源上出现环路

例如,如果A是标量,我可以

A = 2;
b = 1:10;
C = A.^b;
A = [1, 2, 3];
b = 1:10;
C = bsxfun(@power, A, (0:5)');
如果A是向量,我可以

A = 2;
b = 1:10;
C = A.^b;
A = [1, 2, 3];
b = 1:10;
C = bsxfun(@power, A, (0:5)');
如果A是矩阵,我该怎么办?

像这样试试

 % m & n being the dimensions of matrix A
 A = randi(9,[m n]);
 P = cat(3,1*ones(m,n),2*ones(m,n),3*ones(m,n));
 C = bsxfun(@power, A, P);

再次使用
bsxfun
,但将指数(
b
)排列在第三维:

A = [1, 2 3; 4 5 6];
b = 1:10;
C = bsxfun(@power, A, permute(b(:), [2 3 1]));
这将为您提供一个3D阵列作为结果(在本例中为2x3x10)


如果指数是连续值,则以下代码可能更快:

n = 10; %// compute powers with exponents 1, 2, ..., n
C = cumprod(repmat(A, [1 1 n]) ,3);