我才刚刚开始学习numpy.fft
,因此提前致歉。
我有一个包含1000个1和0的元素组成的数组,表示1000ms包含正误的脉冲输入。我想在此数组上执行rfft
。举一个简单的例子,我创建了这个数组,该数组在每个第3个元素上都有一个1,否则为0:
freq = 3
for j in range(0, 1000):
if freq != 0 and (((j + 1) % freq) == 0):
arr3hz.append(1)
else:
arr3hz.append(0)
我期望rfft
以某种方式给我3Hz,我使用了以下代码:
n = len(arr3hz)
d = 1 / 1000
hs = np.fft.rfft(arr3hz)
fs = np.fft.rfftfreq(n, d)
amps = np.absolute(hs)
for j in range(0, len(fs)):
fw.write("Freq: %d Amp: %f\n" % (fs[j], amps[j]))
在我的书面文件中,我仅看到随机幅度的随机频率元素,这是我无法理解的。我使用numpy.rfft
有什么问题?我也不确定如何将n
和d
用于此类数组。
答案 0 :(得分:3)
这里发生了一些事情。
您为n
和d
使用了正确的值。
通常,我发现绘制输出图形比打印输出值更有用。
import matplotlib.pyplot as plt
plt.plot(fs, amps)
请参见