删除空单元格而不更改行数

时间:2015-04-23 19:17:10

标签: matlab cells

我有一个 6x16单元格(称为 M ),有时最后4列中的所有单元格都是空的,如下所示:

[12 200 3 4] [45 24 1 26]...[] [] [] []
...
[47 31 54 40] [85 2 10 256]...[] [] [] []

如果我这样做

M=M(~cellfun('isempty',M));  

然后我最终得到72x1细胞。我想要移除空单元格,但单元格应该变为6x12。顺便说一下,在某些情况下,最后4列不是空的。在这种情况下,我想保留6x16。有人可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

如果您知道最后四列都是空的,只需签订合同M

M = M(:,1:end-4);

如果你不知道四个总是要排除的数字,你可以试试这个:

nCol = size(M,2);
mask = cell2mat(arrayfun(@(k) nCol - numel([M{k,:}]),1:size(M,1),'UniformOutput',false)');
M    = M(:,1:end-max(mask));

这将修剪为空的最大列数。