在MatLab中,我的60x1-cellarray中的所有细胞都含有10x1双倍。
我想垂直连接所有这些双打,除了每两个中的第一个数字。
我失败的尝试是:
CellArray={[1 2 3];[1 2 3];[1 2 3]}
ContacenatedCellArray = vertcat(CellArray{:,1}(2:end))
这显然不起作用因为CellArray{:,1}
指的是多个单元格,因此(2:end)
有点傻。
你有什么建议吗?
提前致谢!
答案 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