Matlab 从单元格数组中删除空单元格
Matlab remove empty cells from within cell array
我有一个像这样显示的元胞数组
lists =
{240x1 cell} {240x1 cell}
它包含字母字符串,而不是数字。
只有 200 个单元格有实际内容,所以我需要截断单元格以去除空单元格。
现在,lists(cellfun('isempty',lists)) = [];
不起作用,也不适用于 arrayfun
。将 'isempty'
更改为 @isempty
也不起作用。但是,如果我将列表的每个单元格分隔成一个单元格,就像这样 a = lists{1}
,cellfun
过程就可以工作。
请注意,我不是在为 240 个单元格中有 200 个具有内容的这种特定情况寻找解决方案。
FWY,列表是 textscan
吐出的数组的子集。问题是初始 textscan
输出中的某些列确实有 240 个内容单元格,因此 textscan
只是默认所有列的长度。
遍历单元格,我假设您不需要递归执行此操作。
for i = numel(list):-1:1
list{i}(cellfun(@isempty, list{i})) = [];
end
您需要调用 cellfun
两次,一次在 lists
上,一次在其元素上
cellfun(@(x) x(~cellfun('isempty', x)), lists, 'uni', 0)
我有一个像这样显示的元胞数组
lists =
{240x1 cell} {240x1 cell}
它包含字母字符串,而不是数字。
只有 200 个单元格有实际内容,所以我需要截断单元格以去除空单元格。
现在,lists(cellfun('isempty',lists)) = [];
不起作用,也不适用于 arrayfun
。将 'isempty'
更改为 @isempty
也不起作用。但是,如果我将列表的每个单元格分隔成一个单元格,就像这样 a = lists{1}
,cellfun
过程就可以工作。
请注意,我不是在为 240 个单元格中有 200 个具有内容的这种特定情况寻找解决方案。
FWY,列表是 textscan
吐出的数组的子集。问题是初始 textscan
输出中的某些列确实有 240 个内容单元格,因此 textscan
只是默认所有列的长度。
遍历单元格,我假设您不需要递归执行此操作。
for i = numel(list):-1:1
list{i}(cellfun(@isempty, list{i})) = [];
end
您需要调用 cellfun
两次,一次在 lists
上,一次在其元素上
cellfun(@(x) x(~cellfun('isempty', x)), lists, 'uni', 0)