擅长:python、mysql、java
<p>我建议使用来自<code>scipy.signal</code>模块的<a href="https://docs.scipy.org/doc/scipy/reference/generated/scipy.signal.find_peaks.html" rel="nofollow noreferrer">find_peaks</a>。<em>该函数采用一维数组,通过对相邻值的简单比较找到所有的局部极大值。可选地,可以通过指定峰值特性的条件来选择这些峰值的子集。</em></p>
<p>下面是一段代码片段,让您开始:</p>
<pre><code>import matplotlib.pyplot as plt
import numpy as np
from scipy.signal import find_peaks
Fs = 8000
f = 5
sample = 8000
x = np.arange(sample)
y = np.sin(2 * np.pi * f * x / Fs)
peaks = find_peaks(y)
plt.scatter(peaks[0], np.ones(f), c='red')
plt.plot(x, y)
plt.xlabel('sample(n)')
plt.ylabel('voltage(V)')
plt.show()
</code></pre>
<p><a href="https://i.stack.imgur.com/ncl3C.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/ncl3C.png" alt="enter image description here"/></a></p>
<p>你的最高标准:</p>
<pre><code>print(peaks[0])
[ 400 2000 3600 5200 6800]
</code></pre>