如何将单元格数组的第一个元素与另一个数组的所有元素组合在一起?

时间:2016-08-01 17:01:08

标签: matlab

我有两个(n,1)单元格数组。这两个都包含每个单元格内的1x8个单元阵列。

我需要:

1)将第一个数组的第一个元素与第二个数组的每个元素组合

2)将第一个数组的第二个元素与第二个数组的每个元素组合,依此类推。

然后将它们存储在第三个单元格数组中,如下所示:

{ {f_array1} {s_array1}; {f_array1} {s_array2}; {f_arrayN} {s_array2}; {f_arrayM} {s_arrayM};

我尝试了一些像这样的循环:

for l = 1:u(1,1)
    for m = 1:v(1,1)
        A{l} = {e{l},f{m}};
    end
end

但是只将一个元素与一个元素组合在一起。

任何sugestions?

1 个答案:

答案 0 :(得分:2)

我会在单元格数组上使用repmat将它们展开,然后简单地将它们连接起来。

f_array = {{{1} {1} {1} {1} {1} {1} {1} {1}},...
    {{2} {2} {2} {2} {2} {2} {2} {2}},...
    {{3} {3} {3} {3} {3} {3} {3} {3}}};
s_array = {{{4} {4} {4} {4} {4} {4} {4} {4}},...
    {{5} {5} {5} {5} {5} {5} {5} {5}},...
    {{6} {6} {6} {6} {6} {6} {6} {6}}};


f_expanded = repmat(f_array(:), numel(s_array), 1);
s_expanded = repmat(s_array(:), 1, numel(f_array)).';

output = num2cell(cat(2, f_expanded(:), s_expanded(:)), 2);