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

时间:2013-09-11 12:08:56

标签: matlab cell-array

我在MATLAB中有一个单元格数组,比如cell_arr,它有零条目以及非零单元格条目。例如:

cell_arr = {0, 0, 0, 0, 0, {1x3 cell}, {1x3 cell}, {1x3 cell}, {1x3 cell}};

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

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

2 个答案:

答案 0 :(得分:8)

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

试试这个:

idxZeros = cellfun(@(c)(isequal(c,0)), cell_arr);
cell_arr(idxZeros) = [];

答案 1 :(得分:0)

cell_arr(cellfun(@(x) ~x(1),cell_arr(:,1)),:) = []

如果有效,请告诉我。