垂直连接单元格内容的一部分

时间:2014-03-12 13:25:01

标签: arrays matlab select concatenation cell-array

在MatLab中,我的60x1-cellarray中的所有细胞都含有10x1双倍。

我想垂直连接所有这些双打,除了每两个中的第一个数字。

我失败的尝试是:

CellArray={[1 2 3];[1 2 3];[1 2 3]}
ContacenatedCellArray = vertcat(CellArray{:,1}(2:end))

这显然不起作用因为CellArray{:,1}指的是多个单元格,因此(2:end)有点傻。

你有什么建议吗?

提前致谢!

4 个答案:

答案 0 :(得分:3)

为什么不用两行:

temp = vertcat(CellArray{:}); %// or cell2mat(CellArray)
temp2 = temp(:,2:end)';
ContacenatedCellArray = temp2(:);

答案 1 :(得分:2)

试试这个 -

%%// Vertically concatenated array
ContacenatedCellArray = cell2mat(CellArray); 

%%// Use the first index of every double array to remove those
ContacenatedCellArray(1:10:end)=[]; 

答案 2 :(得分:2)

好。我找到了一个解决方法。只需删除所有内容后删除第一个双倍。不漂亮,但它有效...

ContacenatedCellArray(1:length(CellArray{1,1}):end)=[];

感谢您的帮助!

答案 3 :(得分:0)

有这种单行解决方案,在连接之前进行选择

cell2mat(arrayfun(@(x) x{1}(2:end), CellArray, 'UniformOutput', 0))

输入&输出

CellArray={(1:4)';(1:4)';(1:4)'}

ans =

     2
     3
     4
     2
     3
     4
     2
     3
     4