为什么不直接用 FFT 看看哪个峰值最高呢?
下面的代码生成示例数据:

然后对其进行 FFT:

产生:
X总和:0.9999999999999987 Y总和:0.9999999999999994 Z总和:0.9999999999999989
X 最大值:0.17213933316891214 Y 最大值:0.2080419608439683 Z 最大值:0.7112824350827284
根据您的数据,这可能足以选择最正弦的数据。
Python代码仅在下面
import numpy
import matplotlib.pyplot as plt
import scipy.signal as sig
from scipy.fft import fft
import random
def get_noise(N):
noise = []
for i in range(N):
noise.append(random.gauss(0,1))
return noise
def normalize(x):
return [x_1/sum(numpy.abs(x)) for x_1 in x]
N = 1000
b, a = sig.butter(3, 0.25)
n1 = get_noise(N)
n2 = get_noise(N)
n3 = get_noise(N)
x = normalize(sig.lfilter(b,a, n1))
y = normalize(sig.lfilter(b,a, n2))
t = [ t*0.05 for t in range(N) ]
z = normalize(sig.lfilter(b,a, n3) + numpy.sin(t))
figure, axis = plt.subplots(3, 1)
axis[0].plot(x)
axis[1].plot(y)
axis[2].plot(z)
plt.figure(2)
plt.plot(numpy.abs(fft(x)))
plt.plot(numpy.abs(fft(y)))
plt.plot(numpy.abs(fft(z)))
print("X sum: " + str(sum(numpy.abs(x))) + " Y sum:" + str(sum(numpy.abs(y))) + " Z sum:"+ str(sum(numpy.abs(z))))
print("X max: " + str(max(numpy.abs(fft(x)))) + " Y max:" + str(max(numpy.abs(fft(y)))) + " Z max:"+ str(max(numpy.abs(fft(z)))))