如何检测单元格数组中的空单元格?我知道删除空单元格的命令是a(1) = []
,但我似乎无法让MATLAB自动检测哪些单元格为空。
背景:
我使用a=cell(1,53)
预先分配了一个单元阵列。
然后我使用if exist(filename(i))
和textscan来检查文件,并将其读入。结果,当filename(i)
不存在时,会产生一个空单元格,然后我们移动到下一个文件。
当我读完所有文件后,我想删除a
的空单元格。我试过了if a(i)==[]
答案 0 :(得分:55)
使用CELLFUN
%# find empty cells
emptyCells = cellfun(@isempty,a);
%# remove empty cells
a(emptyCells) = [];
注意:a(i)==[]
无效。如果您想知道第i个单元格是否为空,则必须使用大括号来访问单元格的内容。此外,==[]
评估为空,而不是true
/ false
,因此您应该使用命令isempty
。简而言之:a(i)==[]
应改写为isempty(a{i})
。
答案 1 :(得分:0)
以上提到的所有答案都是错误的,因为在我使用它们的情况下,它们删除了空单元格,然后我的单元格数组的所有元素都以行方式排列,而不是保留它们的实际形状。实际上,在使用这种方法后,您的单元数组元素往往是行单元格向量。
我发现这种方法在我的情况下正常工作。
来源:Pagerfanta
的方法:
{{1}}