我注意到很多关于堆栈和溢出的MATLAB问题的好答案经常使用函数bsxfun
。为什么?
动机:在bsxfun
的MATLAB文档中,提供了以下示例:
A = magic(5);
A = bsxfun(@minus, A, mean(A))
当然,我们可以使用以下命令执行相同的操作:
A = A - (ones(size(A, 1), 1) * mean(A));
事实上,一个简单的速度测试表明,第二种方法大约快20%。那么为什么要使用第一种方法呢?我猜在某些情况下,使用bsxfun
会比使用“手动”方法快得多。我真的很有兴趣看到这种情况的例子,并解释为什么它更快。
同样,这个问题的最后一个元素,同样来自MATLAB的bsxfun
文档:"C = bsxfun( fun,A,B)将由函数句柄fun指定的逐个元素的二进制操作应用于数组A和B,并启用单例扩展。“短语“启用单例扩展”是什么意思?
https://stackoverflow.com/questions/12951453
复制相似问题