在Matlab中筛选表格

7

我该如何在Matlab中轻松过滤表格?例如,我想要过滤表格并仅保留第5列中值大于30的行。这个怎么做?

1个回答

9
你可以像使用普通逻辑索引一样做到这一点。
tbl = table(rand(10,1), rand(10,1), 'VariableNames', {'a', 'b'});

     a          b   
  _______    _______

  0.64432    0.20774
  0.37861    0.30125
  0.81158    0.47092
  0.53283    0.23049
  0.35073    0.84431
    0.939    0.19476
  0.87594    0.22592
  0.55016    0.17071
  0.62248    0.22766
  0.58704     0.4357

现在我们获取所有列中,其中列a大于0.5的行(tbl.a > 0.5)。
tbl(tbl.a > 0.5,:)

     a          b   
  _______    _______

  0.64432    0.20774
  0.81158    0.47092
  0.53283    0.23049
    0.939    0.19476
  0.87594    0.22592
  0.55016    0.17071
  0.62248    0.22766
  0.58704     0.4357

您还可以使用列索引来访问它。

tbl(tbl{:,1} > 0.5,:)

针对您的情况,应使用 tbl(tbl{:,5} > 30,:)
关于访问表格数据的更多信息在此处

1
感谢您的支持。看起来非常合乎逻辑,但是我再次遇到了以下错误:“类型为'cell'的输入参数未定义运算符'>'”。我知道在我的某一列中仍然有一个“cell”类型的输入。是否有一种方法可以提前传输整个表格,以便我可以应用过滤? - user3261573
其中一个列中包含单元数组,这可能会导致问题。你知道如何解决吗? - user3261573
@user3261573 那么第5列有单元格吗?你打算如何与30进行比较呢? - Suever
@user3261573 现在应该已经更新了。抱歉打错字了。 - Suever
当某些值的类型为单元格时,你该怎么办? - WJA
显示剩余6条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接