两个信号之间的百分比差异

信息处理 matlab 离散信号 信号分析
2022-02-08 23:02:13

提前为我想象的一个简单问题道歉,但是我不知道该怎么做。

我有两个相同类型但传感器类型不同的信号,下图将让您了解我获得的一些数据:

在此处输入图像描述

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

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

我相信这种方法的问题是我只是在计算两个直接点之间的差异(i),而不是在所有数据的大范围内。

任何帮助将不胜感激。

4个回答

至少您应该按序列的长度对其进行标准化。但是你想做的是一件非常标准的事情。我不确定百分比差异的真正含义。您可能应该使用的是诸如均方根误差之类的东西:

R小号=1ñn=0ñ-1(X(n)-是的(n))2

在哪里X(n)是的(n)是你的两个序列。

除了已经给出的 RMSE 解释之外,另一种视觉上明显的解释“百分比差异”的方法是通过标准欧几里得范数。这两个信号,假设它们在区间内被均匀采样,可以被认为是两个不同的向量n维空间,它们指向非常相似的方向。因此,可以将百分比差异解释为

d=|v1-v2|2|v1||v2|,
这可以通过

dot(var1-var2, var1-var2)/sqrt(dot(var1,var1)*dot(var2,var2))

您正在计算两条曲线之间的相对误差,当您的曲线符号相反时,两条曲线之间的差异可能甚至大于曲线的幅度。mean(per)这可能就是你达到200的原因。

就像@Eric 说的,RMSE 更有意义,Matlab 实现是

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

我和你的情况相似,我选择了平均绝对百分比误差http://en.wikipedia.org/wiki/Mean_absolute_percentage_error

一种pe=1n|一世-s一世一世|
在哪里一世s一世分别是测量值和模拟值。

您可以将其实现Rmape = mean((m+s)/m)wheremsare 具有值的数组。

如果您想在特定点查看地图,只需使用

一种pe一世=|一世-s一世一世|

我喜欢这个,因为你可以分析错误如何随着时间的推移而变化。

我使用了两种错误度量。我使用了后者,因为在我的问题中,域是我模型的一个参数,我想看看我的模型对于参数的不同值有多好。

免责声明:我从事计算机科学,因此我不是数学家也不是统计学家......