连接单元格
Concatenate cells
我有一个像这样的 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})
,但这似乎不起作用。有人可以帮忙吗?
像这样的东西就可以完成工作:
% 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
我在 arrayfun
ra(m) 页面中,所以,我的 50 Cents MATLAB:
result = arrayfun(@(x) [M{:,x}], 1:12, 'UniformOutput', false);
如果所有单元格的内容都具有相同的大小,如您的示例所示,您可以将所有内容连接成一个矩阵,然后转换为元胞数组:
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
我有一个像这样的 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})
,但这似乎不起作用。有人可以帮忙吗?
像这样的东西就可以完成工作:
% 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
我在 arrayfun
ra(m) 页面中,所以,我的 50 Cents MATLAB:
result = arrayfun(@(x) [M{:,x}], 1:12, 'UniformOutput', false);
如果所有单元格的内容都具有相同的大小,如您的示例所示,您可以将所有内容连接成一个矩阵,然后转换为元胞数组:
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