[已解决] 数组元素复制

[复制链接]
yueye1104 发表于 2015-10-30 09:57:22
a为1:47的数组,现需要将数组中每个元素复制10次,依次排列成1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2······,代码如下:
a = 1:47;
fun = @(x) repmat(x,1,10);
arrayfun(fun,a);
出现错误,Error using arrayfun
Non-scalar in Uniform output, at index 1, output 1.
Set 'UniformOutput' to false.求各位前辈看看怎么回事。

最佳答案


winner245 发表于 2015-10-30 10:20:20
yueye1104 发表于 2015-10-30 10:15
多谢提醒,其实还是自己对arrayfun函数用法不熟练,代码已改
a = 1:47;
fun = @(x) repmat(x,1,10);

其实要实现这个功能只需一条命令:

repelem(1:47,10)

4 条回复


winner245 发表于 2015-10-30 09:59:21
错误提示都告诉你了,为什么视而不见?

Set 'UniformOutput' to false.

yueye1104 发表于 2015-10-30 10:15:24
winner245 发表于 2015-10-30 09:59
错误提示都告诉你了,为什么视而不见?

Set 'UniformOutput' to false.

多谢提醒,其实还是自己对arrayfun函数用法不熟练,代码已改
a = 1:47;
fun = @(x) repmat(x,1,10);
b = zeros(1,length(a)*10);
b = arrayfun(fun,a,'UniformOutput',false);
b = cell2mat(b);

winner245 发表于 2015-10-30 10:20:20
yueye1104 发表于 2015-10-30 10:15
多谢提醒,其实还是自己对arrayfun函数用法不熟练,代码已改
a = 1:47;
fun = @(x) repmat(x,1,10);

其实要实现这个功能只需一条命令:

repelem(1:47,10)
回复此楼

yueye1104 发表于 2015-10-30 10:27:03
winner245 发表于 2015-10-30 10:20
其实要实现这个功能只需一条命令:

repelem(1:47,10)

学习了,谢谢这位前辈
您需要登录后才可以回帖 登录 | 注册

本版积分规则

相关帖子
相关文章
热门教程
站长推荐
快速回复 返回顶部 返回列表