【问题标题】:Normalize vector by zero将向量归一化为零
【发布时间】:2013-04-20 19:14:16
【问题描述】:

我正在设计一个新的传感器,所以我有一个测量值向量和一个真值向量。为了表示错误,它只是measured - truth。由于事实有很多变化,我想代表归一化错误。我最初的想法是error./truth 得到百分比错误,但在很多情况下我的真值为零!谁能想到一种更好的方法来表示标准化数据,同时避免被零除?我正在使用 Matlab,尽管这个问题也与语言无关。

PS,如果您认为它更适合,请随时将其推送到另一个 stackexchange

【问题讨论】:

    标签: math language-agnostic normalization divide-by-zero


    【解决方案1】:

    为每个向量尝试error = (measured-truth)/norm2(truth)

    norm2() 是一种宽容的规范。

    norm2(x) =SQRT( SUM( x[i]^2, i=1..N ) )
    

    这只能失败是truth 的所有值都为零。您可以通过向范数添加一个小的正数(如 1e-12)来缓解这种情况,或者在范数小于阈值时避免除法。

    【讨论】:

    • 所有这一切实际上就是将我所有的值按相同的数字缩放。我想以某种方式将每个测量点按对应的真实点进行缩放。
    • 好吧,如果你的真相点可以是0,你就不能总是得到你想要的。所以,试着花一些时间重新思考你真正需要什么......
    • @DavidK - 不要那样做。这将远非不稳定,并且误差估计将很遥远。最好根据标准值(典型值或 norm2() 或 max() 或任意值)对差异进行归一化。
    【解决方案2】:

    我建议您将结果与零(例如小于 10e-6)真值向量和非零真值向量分开。您不能以相同的方式处理它(因为您无法标准化真值向量),您应该定义在这种情况下要做什么。
    我不能建议你具体的东西,因为我不知道问题陈述,但你应该自己定义如何处理它。或者,如果您在这里发布您的问题,我希望我们可以帮助您。

    【讨论】:

      猜你喜欢
      • 2010-10-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-30
      • 1970-01-01
      • 2016-05-08
      • 2020-03-12
      • 1970-01-01
      相关资源
      最近更新 更多