Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab 复制单元1的元素以匹配单元2的长度_Matlab_Cell Array - Fatal编程技术网

Matlab 复制单元1的元素以匹配单元2的长度

Matlab 复制单元1的元素以匹配单元2的长度,matlab,cell-array,Matlab,Cell Array,我试图在高级搜索中找到这个问题的答案,但没有找到。我可能错过了,在这种情况下,道歉 我想这是一个简单的问题,但我很难解决它。我有一个单元格数组,每个单元格包含一个双精度数组。首先,我需要知道哪个单元的数组长度最长。一旦知道这一点,就需要复制其他单元的数组元素,以匹配最长单元的长度 例如: resp={[1 3 2 6 4][4 2 5]} 我不知道resp{1}或resp{2}是否更大 我想要的输出是一个新的单元数组resp_new={[1 3 2 6 4][4 2 5]}。 也就是说,在res

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

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

例如:

resp={[1 3 2 6 4][4 2 5]}

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

我想要的输出是一个新的单元数组resp_new={[1 3 2 6 4][4 2 5]}。 也就是说,在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应该这样做:

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     2

太好了,非常非常感谢,非常快。另外,这正是我需要的。太快了…对不起,还需要修理。首先,我的matlab版本比较旧,不支持randperm(n,k),但只支持randperm(n)…而且,只有在n正确的情况下它才会工作,如果
n>numel(x)
,它就不会工作。你的Matlab上有
randi
吗?啊,是的,
randi
我有。太棒了!你让我开心。再次感谢:)!