在MATLAB中去除2,n单元数组中的空单元

在MATLAB中去除2,n单元数组中的空单元,matlab,cell,Matlab,Cell,我有一个有两列和几行的数组。 当我使用 data = data(~cellfun('isempty', data)) 它删除空单元格并创建一个包含 前两行现在都在一行中。我希望他们 仍然是两排。我怎么能这样做 更清楚地说: data{i, 1} = subdata_1 data{i, 2} = subdata_2 其中子数据_1和2是进一步的单元数组。 因此,单元格数组data将包含两列和几行, 其中每个单元是另一个单元阵列。某些行将为空[] 当我删除这些空单元格时,数据将不再包含 两列

我有一个有两列和几行的数组。 当我使用

data = data(~cellfun('isempty', data)) 
它删除空单元格并创建一个包含 前两行现在都在一行中。我希望他们 仍然是两排。我怎么能这样做

更清楚地说:

data{i, 1} = subdata_1
data{i, 2} = subdata_2 
其中
子数据_1
和2是进一步的单元数组。 因此,单元格数组
data
将包含两列和几行, 其中每个单元是另一个单元阵列。某些行将为空
[]
当我删除这些空单元格时,
数据将不再包含
两列和几行,但只有一列。我怎样才能保住这个位子

nx2
数据单元阵列的结构

当您只从一行中删除一列时,结果将是一个向量,而不是一个
2xn
数组,因为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]

你的问题还不完全清楚。请更具体一点,试着贴一个例子。