【问题标题】:Array of expiremental data filtering实验数据过滤数组
【发布时间】:2013-11-15 08:14:49
【问题描述】:

我在过滤带有实验数据的数组时遇到问题 - 数据是长数组(双精度)。这个数组的索引只是时间(秒),值可以是负数或正数。问题是有时实验数据是完全错误的(( - 这是由于 到我们设备中的错误。此错误值与其他数组值非常不同。例如 前 100 秒的值等于 +75 +(小增量值)或 - 40 -(小增量值),但是在 3 秒期间的值是 +270(这是我上面说过的错误)。如何从数组中清除这些值?平均值计数可能不是最好的方法,因为如果我从数组中获取每个值来求和,那么这个错误数据会破坏整个统计数据(由于它的“权重”很大)。我已经绘制了这个数据 - 图片很清晰但是.. 如果这个错误是由白噪声引起的,那么我可以实现例如卡尔曼滤波器,但首先没有用于计算值的函数,其次这个错误不是白噪声。

【问题讨论】:

    标签: matlab math filtering


    【解决方案1】:

    假设我们大多数时候都有正确的价值观。如果信号是永久的(delta 很小),我们可以使用中值过滤数据:

    delta = 1e-3;
    a=[75 * ones(1,20) + rand(1,20) * delta, 270 * ones(1,3) + rand(1,3) * delta];
    m = median(a);
    filtered_a = a(m - 2 * delta < a & a < m + 2 * delta);
    

    【讨论】:

    • 感谢您的回答,此解决方案非常适合预定义数据。但我不知道下次什么值会出错。它可能是 270,但如果下一个实验结果将具有正确(常见)值 270 +- delta 并且错误值将是 2 +- delta 或 1000 +- delta,则此方法将不起作用(
    • 我重写了上面的答案。
    • 您能否再回答一个问题 - 如果我在每个时间段内只有 2 个数组值 - 存在,接下来我可以使用中值在 filters_a 中获取 m 值吗?跨度>
    • 您需要在数组的至少一半上拥有正确的数据值,并且它必须是永久性的。
    猜你喜欢
    • 2018-09-17
    • 2020-01-27
    • 1970-01-01
    • 2022-01-01
    • 2020-07-19
    • 2012-09-04
    • 1970-01-01
    • 2015-11-29
    • 2021-10-30
    相关资源
    最近更新 更多