小编x1h*_*g1x的帖子

为什么在Matlab.*运算符在某些情况下比标量更快?

请考虑以下代码:

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

performance matlab

5
推荐指数
1
解决办法
557
查看次数

标签 统计

matlab ×1

performance ×1