我有一个带有两个列和几行的细胞。当我使用
时data = data(~cellfun('isempty', data))
它去除空单元格,并创建一个单元格数组现在的前两个行现在在一行中。我要他们仍然分为两行。我该怎么做?
要清楚:
data{i, 1} = subdata_1
data{i, 2} = subdata_2
其中subdata_1
和2是进一步的单元格数组。因此,单元格数组data
将包含两个列和几行,每个单元格是另一个单元格数组。一些行将是空的[]
当我删除这些空细胞时,data
将不再包含两个列和几行,但只有1列。我该如何保留 N x 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]