【问题标题】:Filtering a table in Matlab在 Matlab 中过滤表格
【发布时间】:2016-03-09 16:51:16
【问题描述】:

如何在 Matlab 中轻松过滤表格?假设我想过滤一个表,并且只保留第 5 列中的值大于 30 的行。这是如何工作的?

【问题讨论】:

    标签: matlab filter


    【解决方案1】:

    您可以像 normal logical indexing 一样执行此操作。

    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
    

    您也可以使用列 index 访问它。

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

    对于您的情况,这将是 tbl(tbl{:,5} > 30,:)

    更多关于访问表数据here的信息。

    【讨论】:

    • 感谢您的支持。看起来超级合乎逻辑,但是,我再次收到以下错误:“未定义运算符'>'用于'cell'类型的输入参数”。我知道我的一列中仍然有一个“单元格”类型的输入。有没有办法预先转移整个表格以便我可以应用过滤?
    • @user3261573 你的实际表数据是什么样的?
    • 其中一列中有元胞数组。这可能会导致问题。你知道如何解决它吗?
    • @user3261573 所以是第 5 列有单元格?那么,您希望如何与 30 进行比较?
    • 不,它在另一列 - 不是被过滤的那一列。
    猜你喜欢
    • 2015-04-12
    • 1970-01-01
    • 2021-11-25
    • 1970-01-01
    • 2012-09-18
    • 2018-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多