我有一个有两列和几行的cellarray。 当我使用
data = data(~cellfun('isempty', data))
删除空单元格并创建一个单元格数组 前两行现在都在一行中。我想要他们 仍然是两排。我怎么能这样做?
更清楚:
data{i, 1} = subdata_1
data{i, 2} = subdata_2
其中subdata_1
和2是其他单元格数组。
所以单元格数组data
将包含两列和几行,
其中每个细胞是另一个细胞阵列。有些行为空[]
当我删除这些空单元格时,data
将不再包含
两列和几行,但只有一列。我怎么能保持
N x 2
数据单元阵列的结构?
答案 0 :(得分:2)
当您从一行中只删除一列时,结果将是一个向量而不是2 x N
数组,因为MATLAB无法确定维度。
a = [1, 2, 3; 4 5 6].';
size(a)
% 3 2
a = a(a ~= 4);
size(a)
% 5 1
您要做的是删除整行。现在确定哪些行取决于您期望的行为。
因此,如果我们设置一些示例数据:
data = {1, 2, []; [], 3, []}.';
% [1] []
% [2] [3]
% [] []
如果要删除任何具有空单元格的行
result = data(~any(cellfun('isempty', data), 2), :);
% [2] [3]
如果要删除包含所有空单元格的行
result = data(~all(cellfun('isempty', data), 2), :);
% [1] []
% [2] [3]