首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >复制细胞1的元素以匹配细胞2的长度

复制细胞1的元素以匹配细胞2的长度
EN

Stack Overflow用户
提问于 2014-04-22 00:15:00
回答 1查看 46关注 0票数 0

我试图在高级搜索中找到这个问题的答案,但却找不到答案。我可能已经错过了,在这种情况下,道歉。

我想这是个简单的问题,但我很难解决。我有一个单元格数组,每个单元格包含一个双倍数组。首先,我需要知道哪个单元格的数组长度最长。一旦知道了这一点,就需要复制其他单元格的数组元素,以匹配最长单元格的长度。

例如:

resp = {1 3 2 6 4}

我不知道resp{1}还是resp{2}是否更大。

我想要的输出是一个新的单元格数组resp_new = {1 3 2 6 4}。也就是说,添加resp{2}它自己的元素(可能是随机的)来匹配resp{1}的长度。

到目前为止,我所作的总结如下:

代码语言:javascript
复制
Responses = {[1 3 2 6 4] [4 2 5]};

% I could have something like this for finding the longest array of doubles in my cell array:
val=cellfun(@(x) numel(x),Responses);
longest=Responses(val==max(val));

% or something like this, returning only the lengths.
tmp = cellfun(@length,Responses);

我的问题是,我不知道如何在最短的数组中复制自己的元素,以匹配第二个数组的长度。

任何帮助都将不胜感激!谢谢,并致以最良好的问候。

Marc

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-04-22 00:50:39

这应该可以做到:

代码语言:javascript
复制
Responses = {[1 3 2 6 4] [4 2 5]}

sizeLongest = max(cellfun(@numel, Responses));
Responses = cellfun(@(x) [x x(randi(numel(x), 1, sizeLongest - numel(x)))], Responses, 'UniformOutput', false);

首先,它取最长序列的大小。然后,它使用cellfun,对于每个数组x,它将自己与来自自身的N随机元素连接在一起,其中是N = sizeLongest - numel(x)

结果:

代码语言:javascript
复制
>> Responses{:}
ans =

     1     3     2     6     4


ans =

     4     2     5     5     2
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23208178

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档