我有一个包含两列和几行的单元格数组。 当我使用
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]
关于matlab - 在 MATLAB 中删除 2,n 元胞数组中的空单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42808595/