- 积分
- 46
- 注册时间
- 2007-4-28
- 仿真币
-
- 最后登录
- 1970-1-1
|
本帖最后由 qibbxxt 于 2010-9-16 10:19 编辑
之前在mathworks的官方网站上面看到有人发布一个如何随机生成一个矩阵,矩阵的元素要么是1要么是-1,我就对这个问题思考了一下,写了几种做法,并且从效率的角度判断,得出一些效率方面的结论。 | 序号 | 表达式 | 时间 | | 1 | floor(rand(m,n)*2)*2-1 | 0.000202611676683 | | 2 | fix(rand(m,n)*2)*2-1 | 0.000203352632381 | | 3 | randi([0,1],m,n)*2-1 | 0.000270219098047 | | 4 | round(rand(m,n))*2-1 | 0.000281978667666 | | 5 | randsrc(m,n,[1,-1;0.5,0.5]) | 0.000384587559915 | | 6 | bsxfun(@power,-1+zeros(m,n),randi([1,2],m,n)) | 0.000600111719102 | | 7 | for j=1:n
for k=1:m
B(k,j)=(-1)^(1-rand<0.5)
end
end | 0.001048428205005 | | 8 | accumarray(b,a',[],@(x)round(rand)*2-1) | 0.045509395803949 | | 9 | reshape(accumarray(a',a',[],@(x)round(rand)*2-1),m,n) | 0.045655019833399 |
我从中得出了一些经验结论(不一定对):
- 循环不一定是最慢的(小规模的时候)
- 内置函数由于考虑通用性,不一定最快
- 简洁和高效有时候是一回事,有时候不是一回事
附近中是测试的程序
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?注册
×
评分
-
1
查看全部评分
-
|