我有一个像这样的6 x 12细胞(称为 M )
[1 1 1 1] [2 2 2 2] ... [12 12 12 12]
[13 13 13 13] [14 14 14 14] ... [24 24 24 24]
...
[61 61 61 61] [62 62 62 62] ... [72 72 72 72]
我想垂直连接,所以矩阵将成为1 x 12单元格,应该如下所示:
[1 1 1 1 13 13 13 13 ... 61 61 61 61] [ 2 2 2 2 14 14 14 14 14 ... 62 62 62 62] ...
...
我已尝试vertcat
,例如vertcat(M{1,1}, M{2,1})
,但这似乎不起作用。有人可以帮忙吗?
答案 0 :(得分:5)
如果所有细胞都是'内容具有相同大小,在您的示例中,您可以将所有内容连接到矩阵中,然后转换为单元格数组:
result = mat2cell(cell2mat(M.'), ones(1,size(M,2))).';
例如,
M = { [1 1 1 1] [2 2 2 2]
[13 13 13 13] [14 14 14 14]
[61 61 61 61] [62 62 62 62] };
这会产生
result{1} =
1 1 1 1 13 13 13 13 61 61 61 61
result{2} =
2 2 2 2 14 14 14 14 62 62 62 62
答案 1 :(得分:2)
我在arrayfun
ra(m)页面,所以,我的 50 Cent 的MATLAB:
result = arrayfun(@(x) [M{:,x}], 1:12, 'UniformOutput', false);
答案 2 :(得分:1)
这样的事情可以胜任:
% test data
M{1,1}=[1 1];M{1,2}=[2 2];
M{2,1}=[3 3];M{2,2}=[4 4];
M{3,1}=[5 5];M{3,2}=[6 6];
newcell=cell(1,size(M,2));
for ii=1:size(M,2)
newarray=[];
newarray=[newarray, M{:,ii}]; %catch next array and contatenate
newcell{ii}=newarray;
end