Matlab - 删除单元格数组中的零行

时间:2014-12-15 17:54:04

标签: arrays matlab cell zero cell-array

我有一个1x6的单元阵列。在单元格1-4和6中,我有一个包含字符串的5000x1单元阵列。在第五个单元格中,我有一个包含数字的5000x1单元阵列。好吧,我想在第五个单元格中删除我有0的行。为了确保,很明显:

字符串字符串字符串35字符串

字符串字符串字符串0字符串

字符串字符串字符串42字符串

字符串字符串字符串10字符串

字符串字符串字符串0字符串

我在论坛中发现了一个类似的问题1x2单元格,但我无法弄清楚如何在这个特定情况下做到这一点。

任何人都可以帮助我吗?

提前致谢。

1 个答案:

答案 0 :(得分:1)

假设您的单元格数组存储在变量c中。首先,我们可以使用逻辑运算确定元素5的哪一行不等于0

notZeros = (c{5} ~= 0);

然后,遍历元素并应用logical index来过滤掉零行:

for k = 1:6
  c{k} = c{k}(notZeros);
end

您也可以使用cellfun。它可能更慢但也可能更具可读性:

c = cellfun(@(c_el) c_el(notZeros),c,'UniformOutput',false);

" 'UniformOutput',false"是一个必需的选项,因为过滤器输出的矢量as understood by the function是一个非均匀的结果。