【问题标题】:Removing extreme values from a Matrix in MATLAB从 MATLAB 中的矩阵中删除极值
【发布时间】:2014-08-18 11:07:20
【问题描述】:

我有一个包含 x-y 数据点的矩阵:

A= [x1 , y1; x2 , y2; x3 , y3]

并且我想删除它们的 y 值高于平均值的选定点(行)。

我该怎么做?

谢谢你, 罗恩

【问题讨论】:

    标签: matlab matrix outliers


    【解决方案1】:

    这是您似乎需要的:

    A(abs(A(:,2)-mean(A(:,2)))>treshold,:) = []
    

    如果你愿意,你可以让门槛像

    1.234*std(A(:,2))
    

    【讨论】:

    • @Divakar 谢谢,已修复!
    • @Divakar 我不明白你的意思。标准偏差独立于(移入)平均值std(1:5)std(6:10) 相同。基于标准偏差乘以常数的阈值似乎是一个非常自然的解决方案。
    【解决方案2】:
    A(A(:,2) > mean(A(:,2) + ScaleFactor*std(A(:,2)),:) = [];
    

    ScaleFactor 将取决于您的标准是什么..

    【讨论】:

    • 这不起作用,因为 OP 说“偏差”,即高于或低于
    • std 是怎么进来的?
    • 还是不行。您只考虑“上面”的情况,而不是“下面”的情况
    • 另外,您想删除行,而不是列。必须是A(whatevs, :) = [];
    • @lakesh 一件事是偏差(差异),另一件事是标准偏差(std
    猜你喜欢
    • 2012-06-17
    • 1970-01-01
    • 1970-01-01
    • 2021-08-23
    • 1970-01-01
    • 1970-01-01
    • 2014-10-21
    • 2014-02-09
    • 1970-01-01
    相关资源
    最近更新 更多