如何在MATLAB中删除单元格数组中的零条目?

San*_*hit 7 matlab cell-array

我在MATLAB中有一个单元数组,可以说它cell_arr有零条目以及非零单元条目.例如:

cell_arr = {0, 0, 0, 0, 0, {1x3 cell}, {1x3 cell}, {1x3 cell}, {1x3 cell}};
Run Code Online (Sandbox Code Playgroud)

有人可以告诉如何从cell_arr或删除这些零条目,以找到非零条目的索引?另外,我想避免for执行此作业的循环.

我已经尝试过find函数,但是,find函数不适用于单元格数组.我想知道是否存在执行此作业的单行语句/表达式?

Nic*_*ick 8

据我所知,没有单线功能.你必须结合一些功能.第一行在单元格数组中找到零,而第二行删除这些条目.请注意()括号iso {}以便删除.

试试这个:

idxZeros = cellfun(@(c)(isequal(c,0)), cell_arr);
cell_arr(idxZeros) = [];
Run Code Online (Sandbox Code Playgroud)

  • 使用函数`isequal(c,0)`避免使用两个测试`~iscell(c)&& c == 0` (4认同)