2 回答

TA贡献1799条经验 获得超6个赞
您的问题的一种可能解决方案是Mean Squared Error (MSE)。给定两个信号a和b相同的尺寸的,MSE之间的差的逐元素平方的平均值a和b。代码如下所示(基于此):
import numpy as np
import matplotlib.pyplot as plt
a = np.array([10, 20, 10, 30, 20, 10, 28, 22, 10])
b = np.array([28, 22])
mse = np.ndarray((len(a) - len(b) + 1))
for i in range(c.size):
mse[i] = np.square(np.subtract(a[i:i+len(b)],b)).mean()
print(mse.argmin())
plt.plot(mse)

TA贡献1757条经验 获得超7个赞
您可以查看值的差异以检测相似性,而不是查看相关性。例如,您可以选择 a 中的每 2 个元素(如果 b 的长度为 2)并查看差异的绝对值:
import numpy as np
import matplotlib.pyplot as plt
signal_a = np.array([10, 20, 10, 30, 20, 10, 28, 22, 10])
signal_b = np.array([28, 22])
N2 = len(signal_b)
diffs = []
for i in range(len(signal_a) - len(signal_b) + 1):
diff_ab = signal_a[i:i+N2] - signal_b
diffs.append(sum(abs(diff_ab)))
print(diffs)
plt.plot(diffs)
并在 diffs 数组中找到最小值。您也可以使用差值的平方值代替 abs() 。
添加回答
举报