matlab去除向量的重复点,在Matlab中重复向量的最有效方法

如果起始向量很长或者重复次数足够大(见下文),则底线

bsxfun比你要求的更快,否则矩阵乘法更有效.在两者之间,你已经问过它看起来像矩阵乘法重塑在效率上比在repmat中高出约3倍.我已经按照以下方式使用了

timeit,我创建了一个1e5元素的随机向量,并检查了创建100次重复所需的时间:

v=rand(1e5,1);

f1=@()repmat(v,[100,1])

f2=@() reshape(v*ones(1,100),[],1);

timeit(f1)

ans =

0.1675

timeit(f2)

ans =

0.0516

但是bsxfun甚至更快:

f3=@() reshape(bsxfun(@times,v,ones(1,100)),[],1)

timeit(f3)

ans =

0.0374

这是对这一观察的更仔细的研究:

给定一个向量是1000个元素长,重复10到1e5次会产生以下性能时间:

对于较小的重复次数,bsxfun和矩阵乘法之间几乎没有差别,但是当重复次数超过〜1e3时,bsxfun会清楚地获胜.

然而,仅使用具有相同重复范围的10个元素长向量,表明矩阵乘法更有效. bsxfun仅在10 ^ 5次重复后才开始变好,但即便如此,它只会快〜5%(未显示):

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值