Vectorized exponentiation

徘徊边缘 提交于 2019-12-20 04:47:39

问题


I have two vectors, X of bases and N of exponents. I want to get the matrix of all values e = xn for each x in X and n in N.

For example, the following input:

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

should produce:

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

Is there a way to get this without looping (just like you can get all values of x×n by using the column by row product)?


回答1:


Use bsxfun:

bsxfun(@power, X, N)

This assumes that X is a column vector and N is a row vector. If you want to guarantee that, use the following syntax which is more robust:

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



回答2:


This is probably a bit sloppier than the bsxfun answer, but you could use meshgrid:

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

This assumes both X and N are row vectors. If both are column vectors then it becomes:

E = X.^(meshgrid(N))


来源:https://stackoverflow.com/questions/16881849/vectorized-exponentiation

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!