【问题标题】:Percentage difference between two signals [closed]两个信号之间的百分比差异[关闭]
【发布时间】:2014-02-10 17:26:19
【问题描述】:

对于我认为是一个简单的问题,提前道歉,但我不知道如何做到这一点。

我有两个信号类型相同但传感器类型不同,下图可以让你大致了解我得到的一些数据:

我只是想计算两个信号之间的平均百分比差异。到目前为止,我尝试过的方法已经计算出惊人的结果,大约有 200% 的差异。我的尝试如下:

  for i = 1:length(data)
      per(i) = abs((var1(i)-var2(i))/((var1(i)+var2(i))/2)) * 100;
  end

我认为这种方法的问题在于,我只是在计算所讨论的两个直接点 (i) 之间的差异,而不是在所有数据的大规模上。

任何帮助将不胜感激。

【问题讨论】:

  • 这个问题似乎是题外话,因为它是关于 DSP 并且属于 dsp.stackexchange.com
  • 问题不在于实现(尽管您不需要循环来执行您正在执行的操作)。您能给出您希望使用的确切数学公式吗?
  • @Jigg,不,这就是我要问的。我一直在环顾四周,觉得可以使用 RMS,但我再次不确定是否实施它。谢谢。
  • 接近 0,您将获得巨大的错误级别,这会影响您的整个计算。这实际上不是软件编程的问题。这是一个首先定义您要解决的问题的问题。

标签: matlab signals signal-processing percentage


【解决方案1】:

如果您追求的是均方根误差,那么您的公式就是错误的。我建议改用这段代码:

RMSE = sqrt(mean((var1-var2).^2)); 

这将为您提供加速度单位的 RMSE。

【讨论】:

    【解决方案2】:

    确实,这不是 Matlab 问题,而是如何计算的问题。我会给出一个简短的回答,因为我认为我现在需要同样的时间来感叹或写下我对这个问题的看法。

    我建议使用另一个不是您的百分比的指标。

    此外,我认为您不必为绘图中的每个点计算该指标并为每个样本单独观察它。相反,您可以计算一个指标来描述整个两个信号的偏差。

    例如,您可以计算平方误差的总和(可能除以样本数...):

    sum((data1-data2).^2)/length(data1)
    

    其中 data1 和 data2 是包含您的两个信号的两个数组。

    误差越小,两个信号之间的差异就越小。是的,这个比例不会限制在 0...100%

    对于均方根误差,您必须将其放入 sqrt(...)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-11-23
      • 1970-01-01
      • 1970-01-01
      • 2021-11-24
      • 1970-01-01
      • 1970-01-01
      • 2014-08-07
      相关资源
      最近更新 更多