matlab 向量的复制,MATLAB:复制向量’n’次

本问题已经有最佳答案,请猛点这里访问。

我有一个向量,例如

vector = [1 2 3]

我想在自身内部重复n次,即如果n = 3,则最终结果为:

vector = [1 2 3 1 2 3 1 2 3]

对于任何n值,如何实现呢? 我知道我可以执行以下操作:

newvector = vector;

for i = 1 : n-1

newvector = [newvector vector];

end

不过,这似乎有点麻烦。 还有更有效的方法吗?

尝试

repmat([1 2 3],1,3)

我将让您检查repmat的文档。

这是比repmat或reshape快一个数量级的方法

进行此类操作的最佳方法之一是使用Tony's Trick。通常发现Repmat和Reshape比Tony的技巧要慢,因为它直接使用Matlabs固有的索引。为了回答您的问题,

假设您要像r=[1 2 3 1 2 3 1 2 3...]那样平铺行向量r=[1 2 3] N的时间,然后,

c=r'

cc=c(:,ones(N,1));

r_tiled = cc(:)';

对于大型N,此方法与reshape或repmat相比可节省大量时间。

编辑:回复@ Li-aung Yip的疑问

我进行了一个小型的Matlab测试,以检查repmat和tony's trick之间的速度差异

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值