numpy fft returns 绘图时的原始频率
numpy fft returns orginal frequency when plotting
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
df = pd.read_csv('signal180_single.csv', sep=',', header=None)
x = df.values
length = len(x)
# frequency 0.02s
fs = 50.0
t = np.arange(0, length/fs,1.0/fs)
xF = np.fft.fft(x)
N = len(xF)
xF = xF[0:N/2]
# plot frequencys from 0 to fs, with num = N/2
fr = np.linspace(0,fs,N/2)
plt.figure()
plt.subplot(211)
plt.plot(t,x)
plt.subplot(212)
plt.plot(fr, abs(xF))
plt.show()
我正在将 180000 个浮点值从文件写入一个数组。
这些值以 50Hz 采样,并包含 2Hz 的正弦波。
然后我在上图中绘制频率 window。
我想在下图 window 中绘制频率的频率幽灵,但我得到的值与上图 window 中的值相同。
谁能看出错误在哪里?
当我绘制公式 x = np.sin(10*t) + np.cos(3*t) 时,我得到了频率。但当我从文件或数组中读取窦时则不然。
行
x = df.values
returns 180000 x 1 数组。每个值都单独存储的地方。在这种情况下,将行替换为:
x = df.values.ravel()
并且您的脚本将起作用。
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
df = pd.read_csv('signal180_single.csv', sep=',', header=None)
x = df.values
length = len(x)
# frequency 0.02s
fs = 50.0
t = np.arange(0, length/fs,1.0/fs)
xF = np.fft.fft(x)
N = len(xF)
xF = xF[0:N/2]
# plot frequencys from 0 to fs, with num = N/2
fr = np.linspace(0,fs,N/2)
plt.figure()
plt.subplot(211)
plt.plot(t,x)
plt.subplot(212)
plt.plot(fr, abs(xF))
plt.show()
我正在将 180000 个浮点值从文件写入一个数组。 这些值以 50Hz 采样,并包含 2Hz 的正弦波。
然后我在上图中绘制频率 window。 我想在下图 window 中绘制频率的频率幽灵,但我得到的值与上图 window 中的值相同。 谁能看出错误在哪里?
当我绘制公式 x = np.sin(10*t) + np.cos(3*t) 时,我得到了频率。但当我从文件或数组中读取窦时则不然。
行
x = df.values
returns 180000 x 1 数组。每个值都单独存储的地方。在这种情况下,将行替换为:
x = df.values.ravel()
并且您的脚本将起作用。