小编Ale*_*lex的帖子

MATLAB的bsxfun最好吗?Python的numpy.einsum?

我有一个非常大的乘法和求和运算,我需要尽可能高效地实现.到目前为止我发现的最好的方法是bsxfun在MATLAB中,我将问题表述为:

L = 10000;
x = rand(4,1,L+1);
A_k = rand(4,4,L);
tic
for k = 2:L
    i = 2:k;
    x(:,1,k+1) = x(:,1,k+1)+sum(sum(bsxfun(@times,A_k(:,:,2:k),x(:,1,k+1-i)),2),3);
end
toc
Run Code Online (Sandbox Code Playgroud)

请注意,L在实践中会更大.有更快的方法吗?奇怪的是,我需要首先添加单例维度x然后再添加sum它,但我不能让它工作.

它仍然比我尝试的任何其他方法快得多,但对我们的应用程序来说还不够.我听说过有关Python函数numpy.einsum可能更有效的传言,但我想在我考虑移植代码之前先问这里.

我正在使用MATLAB R2017b.

python arrays matlab vectorization bsxfun

1
推荐指数
2
解决办法
560
查看次数

标签 统计

arrays ×1

bsxfun ×1

matlab ×1

python ×1

vectorization ×1