我试图在高级搜索中找到这个问题的答案,但却找不到答案。我可能已经错过了,在这种情况下,道歉。
我想这是个简单的问题,但我很难解决。我有一个单元格数组,每个单元格包含一个双倍数组。首先,我需要知道哪个单元格的数组长度最长。一旦知道了这一点,就需要复制其他单元格的数组元素,以匹配最长单元格的长度。
例如:
resp = {1 3 2 6 4}
我不知道resp{1}还是resp{2}是否更大。
我想要的输出是一个新的单元格数组resp_new = {1 3 2 6 4}。也就是说,添加resp{2}它自己的元素(可能是随机的)来匹配resp{1}的长度。
到目前为止,我所作的总结如下:
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
发布于 2014-04-22 00:50:39
这应该可以做到:
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)。
结果:
>> Responses{:}
ans =
1 3 2 6 4
ans =
4 2 5 5 2https://stackoverflow.com/questions/23208178
复制相似问题