请考虑以下代码:
a=rand(10000); b=rand(10000);
tic; 2*(a<b); toc;
tic; 2.*(a<b); toc;
Run Code Online (Sandbox Code Playgroud)
结果是:
Elapsed time is 0.938957 seconds.
Elapsed time is 0.426517 seconds.
Run Code Online (Sandbox Code Playgroud)
为什么第二种情况比第一种情况快两倍?
编辑:我使用矩阵的任何大小获得相同的结果,无论你测试它的顺序如何
(a<b).*3.56 vs (a<b)*3.56
Run Code Online (Sandbox Code Playgroud)
例如,但不是
(a.*b)*2 vs (a.*b).*2
Run Code Online (Sandbox Code Playgroud)
要么
(a*b)*2 vs (a*b).*2
Run Code Online (Sandbox Code Playgroud)
似乎有一个与逻辑数组的链接,因为我有相同的结果
(a&b)*2 vs (a&b).*2
Run Code Online (Sandbox Code Playgroud)
电脑:R2015b,Windows 10 x64