如果今天要做以下的事情
3
y=Σ (x^n) x=[1,2,3,4]
n=1
y希望出来也要是1*4的矩阵 对应上面的x
这类的问题原本的Matlab的话不用for loop最快的方法应该是
x=[1,2,3,4]; n=[1;2;3];
y = sum(bsxfun(@power,x,n),1);
这样出来是y=[3,14,39,84]
但是自从R2016b版本以后 Matlab内建的operator变超强
x.^n这种东西即使x和n的维度不一样也可以合法了
所以以下简洁的方法就可以取代上面的bsxfun:
x=[1,2,3,4]; n=[1;2;3];
y = sum(x.^n,1);
出来答案也是一样y=[3,14,39,84]
真的是不错
不过这样不小心维度写错结果也能跑的可能性增强了
有可能会debug半天 明明就可以跑但是结果是错的
最后发现维度搞错这样...orz
不过code真的可以简洁很多就是
作者: callisto2 2017-09-28 09:28:00
正式名称叫 Implicit Expansion, data size 小的话会比 bsxfun 快, data size 大的话速度就没差别了.