ant*_*ony 20 python matlab numpy numpy-broadcasting
我试图找到一些方法从Matlab中的3*(一个大数字)矩阵的每一列中减去一个3号向量.当然我可以使用一个循环,但我试图找到一些更有效的解决方案,有点像numpy广播.哦,我不能使用repmat,因为我没有足够的内存来使用它(因为它创建了另一个3*(一个大数字)矩阵)...
这可能吗?
Jac*_*cob 18
由于像即时加速(JITA)这样的编译器优化,MATLAB中的循环也不错.等大多数时候,我注意到,在当前的MATLAB版本环路的解决方案是远快于复杂的(尽管,酷:d)单行.
bsxfun可能会做的伎俩,但根据我的经验,它往往有内存问题,但不如说repmat.
所以语法是:
AA = bsxfun(@minus,A,b)b矢量在哪里,A是你的大矩阵
但我恳请你介绍一下loopy版本,然后决定!最有可能的是,由于内存限制,您可能没有选择:)
Nat*_*ith 13
其他答案有点过时--Matlab R2016b似乎已将广播作为标准功能添加.该博客文章中的一个示例与该问题相符:
>> A = ones(2) + [1 5]'
A =
2 2
6 6
Run Code Online (Sandbox Code Playgroud)