我有一个1x6的单元阵列。在单元格1-4和6中,我有一个包含字符串的5000x1单元阵列。在第五个单元格中,我有一个包含数字的5000x1单元阵列。好吧,我想在第五个单元格中删除我有0的行。为了确保,很明显:
字符串字符串字符串35字符串
字符串字符串字符串0字符串
字符串字符串字符串42字符串
字符串字符串字符串10字符串
字符串字符串字符串0字符串
我在论坛中发现了一个类似的问题1x2单元格,但我无法弄清楚如何在这个特定情况下做到这一点。
任何人都可以帮助我吗?
提前致谢。
答案 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是一个非均匀的结果。