在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]
你的问题还不完全清楚。请更具体一点,试着贴一个例子。