删除空单元格而不更改行数
Remove empty cells without changing the number of rows
我有一个 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。有人可以帮忙吗?
如果你知道最后四列都是空的,就收缩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));
这将 trim 最大空列数。
我有一个 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。有人可以帮忙吗?
如果你知道最后四列都是空的,就收缩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));
这将 trim 最大空列数。