矢量化取幂

时间:2013-06-02 10:22:34

标签: matlab octave exponentiation

我有两个向量,X个基数和N个指数。我想为e = xn中的xX中的n获取所有值N的矩阵。

例如,以下输入:

X = [2 3 4]'
N = [1 2 3]

应该产生:

ans = [2 4 8; 3 9 27; 4 16 64]

有没有办法在没有循环的情况下得到这个(就像你可以通过逐行产品得到x×n的所有值)?

2 个答案:

答案 0 :(得分:6)

使用bsxfun

bsxfun(@power, X, N)

这假设X是列向量而N是行向量。如果您想保证这一点,请使用以下更强大的语法:

bsxfun(@power, X(:), N(:).')

答案 1 :(得分:1)

这可能比bsxfun答案稍微麻烦一点,但您可以使用meshgrid

E = X.^(meshgrid(N)')

这假设XN都是行向量。如果两者都是列向量,则它变为:

E = X.^(meshgrid(N))