【问题标题】:Matlab - Remove zero rows in cell arrayMatlab - 删除单元格数组中的零行
【发布时间】:2014-12-15 17:54:03
【问题描述】:

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

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

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

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

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

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

我在 1x2 单元的论坛中发现了一个类似的问题,但我不知道在这种特定情况下如何做到这一点。

谁能帮帮我?

提前致谢。

【问题讨论】:

  • 对不起,我不明白你的例子,你能说清楚吗? string ... 35 string ... 到底是什么?它是您要从中删除 0 的第 5 个单元格吗?
  • 抱歉,在预览中似乎所有内容都已正确排序。我想删除第五个单元格中有 0 的行。字符串是正确解释数据所需的代码。因此,如果我有一个 0 元素,我也不需要这些代码。这更清楚了吗?

标签: arrays matlab cell zero cell-array


【解决方案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 是一个不均匀的结果。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-04-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-13
    • 2015-11-11
    • 2019-05-24
    • 2012-03-30
    相关资源
    最近更新 更多