MATLAB中文论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 578|回复: 10|关注: 0

[已解决] 如何重复向量(数组)元素?

[复制链接]

新手

34 麦片

财富积分


050


46

主题

211

帖子

0

最佳答案
  • 关注者: 1
本帖最后由 深蓝孩童 于 2017-1-11 20:28 编辑

比如我有向量
x = [0 1 1 1 0]';
y = [2,4,2,1,3]';
想生成的 z 向量如下:
z = [0 0 1 1 1 1 1 1 1 0 0 0 ]'
也就是将 x 向量的元素按对应 y 向量的元素进行重复。
先谢谢了!

MATLAB 基础讨论
版块优秀回答者

5

主题

921

帖子

214

最佳答案
  • 关注者: 30
发表于 2017-1-11 19:44:58 | 显示全部楼层
2015a后的版本可以:
  1. repelem(x,y)
复制代码
多看帮助文档
说明你的matlab版本

新手

34 麦片

财富积分


050


46

主题

211

帖子

0

最佳答案
  • 关注者: 1
 楼主| 发表于 2017-1-11 20:03:59 | 显示全部楼层
深蓝孩童 发表于 2017-1-11 19:44
2015a后的版本可以:

你好,我的版本没有这个函数,可以将这个函数的程序发给我吗?谢谢了!

论坛优秀回答者

权威

4474 麦片

财富积分



5

主题

5857

帖子

1024

最佳答案
  • 关注者: 225
发表于 2017-1-11 20:09:01 | 显示全部楼层 |此回复为最佳答案
老版本可以这样
  1. x = [0 1 1 1 0]'
  2. y = [2,4,2,1,3]'
  3. z=cell2mat(arrayfun(@(k) repmat(x(k),1,y(k)),1:5,'un',0))
复制代码

新手

20 麦片

财富积分


050


0

主题

41

帖子

3

最佳答案
  • 关注者: 2
发表于 2017-1-11 20:13:36 | 显示全部楼层
本帖最后由 xuguangyue2001 于 2017-1-11 20:27 编辑

学习中...

MATLAB 基础讨论
版块优秀回答者

5

主题

921

帖子

214

最佳答案
  • 关注者: 30
发表于 2017-1-11 20:13:49 | 显示全部楼层
shufessm 发表于 2017-1-11 20:03
你好,我的版本没有这个函数,可以将这个函数的程序发给我吗?谢谢了! ...

repelem.m (369 Bytes, 下载次数: 8)
多看帮助文档
说明你的matlab版本

新手

34 麦片

财富积分


050


46

主题

211

帖子

0

最佳答案
  • 关注者: 1
 楼主| 发表于 2017-1-11 20:17:50 | 显示全部楼层

用不了:(

新手

34 麦片

财富积分


050


46

主题

211

帖子

0

最佳答案
  • 关注者: 1
 楼主| 发表于 2017-1-11 20:18:29 | 显示全部楼层
xuguangyue2001 发表于 2017-1-11 20:13
2015a 之前的版本可以用 repmat

x = [0 1 1 1 0]';

你这个方法太一般了!

论坛优秀回答者

24

主题

1万

帖子

1630

最佳答案
  • 关注者: 579
发表于 2017-1-12 03:00:27 | 显示全部楼层
可以写个类似repelem功能的向量化实现:

>> z = x(cumsum(circshift(accumarray(cumsum(y),1),1)))

新手

34 麦片

财富积分


050


46

主题

211

帖子

0

最佳答案
  • 关注者: 1
 楼主| 发表于 2017-1-16 09:44:19 | 显示全部楼层
winner245 发表于 2017-1-12 03:00
可以写个类似repelem功能的向量化实现:

>> z = x(cumsum(circshift(accumarray(cumsum(y),1),1))) ...

哈哈,早点回复就选你的作为最佳答案了!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐上一条 /3 下一条

联系我们|版权保护|小黑屋|Archiver|手机版|MATLAB中文论坛 ( 苏ICP备08100737号

GMT+8, 2017-5-24 19:30 , Processed in 0.286882 second(s), 91 queries , XCache On.

Powered by Discuz! X3.3

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表