擅长:python、mysql、java
<p>绘制数据是一个很好的验证的第一步。这里我用直线连接的点作了规则的绘图。这些线很有用,因为它们为您提供了下采样数据所在位置的指南,还强调了下采样数据缺少的内容。(也可以只显示原始数据的线条,但是线条,就像干图一样,太混乱了,imho。)</p>
<p><a href="https://i.stack.imgur.com/Ag9H7.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/Ag9H7.png" alt="enter image description here"/></a></p>
<pre><code>import numpy as np
import matplotlib.pyplot as plt # For ploting
from scipy import signal
fs = 100 # sample rate
rsample=43 # downsample frequency
fTwo=13 # frequency of the signal
x = np.arange(fs, dtype=float)
y = np.sin(2*np.pi*fTwo * (x/fs))
print y
f_res = signal.resample(y, rsample)
xnew = np.linspace(0, 100, f_res.size, endpoint=False)
#
# ##############################
#
plt.figure()
plt.plot(x, y, 'o')
plt.plot(xnew, f_res, 'or')
plt.show()
</code></pre>
<p>注意事项:</p>
<p>如果你想做一个通用的算法,使用非舍入的数字,否则你很容易引入错误,即使是倍数也不会出现。类似地,如果需要放大以进行验证,请转到一些随机的地方,例如,不只是开始。你知道吗</p>
<p>请注意,我将<code>fTwo</code>更改为显著小于样本数。不知何故,如果你想弄清楚的话,你至少需要一个以上的数据点。你知道吗</p>
<p>我还删除了用于计算<code>y</code>的循环:通常,在使用numpy时,应该尝试将计算矢量化。你知道吗</p>