概述
- 傅里叶级数:在时域是一个周期且连续的函数,而在频域是一个非周期离散的函数。
- 傅里叶变换:我们接下去要讲的傅里叶变换,则是将一个时域非周期的连续信号,转换为一个在频域非周期的连续信号。
首先要来理解什么是频率 :
通用解释为 -----频率,是单位时间内完成周期性变化的次数,是描述周期运动频繁程度的量,常用符号f或ν表示,单位为秒分之一,Hz是频率的基本单位,通常是以1秒完成的动作次数。比如你1秒能吃3个馒头那就记作你吃馒头的频率是3Hz(3赫兹),比如你的眼皮1秒能跳动10次就记作你眼皮跳动10Hz(10赫兹)。
import numpy as np
import matplotlib.pyplot as plt
import numpy as np
fs = 100 # frequency: 100 Hz
Fs = 1000 # sampling frequency: 1000 Hz
dt = 1/Fs # sampling period
N = 2048
T = N * dt # span
t = np.linspace(0, T, N, endpoint = False) # time
data = np.cos(2 * np.pi * fs * t) + np.random.normal(scale = 0.2, size = len(t))
# data = np.random.randint(6, 10, 300) # 生成随机数
X = np.fft.fft(data) # Discrete Fourier Transform by fft
X = np.abs(X)
plt.plot(data[:100])
plt.show()
plt.plot(X)
plt.show()
print(1)
mean_X = np.mean(X)
distance = (X-mean_X) ** 2
mean_distance = np.mean(distance)
frequency = [i for i in range(len(distance)) if distance[i] > 0.8 * mean_distance]
length = len(X)
if len(frequency) > 2:
if frequency[0] == 0:
period = length // frequency[1] # length个点中,完成了frequency[1]个周期
if period >= 0.5 * length:
print("none")
print(period)
else:
period = length // frequency[1]
if period >= 0.5 * length:
print("none")
print(period)
else:
print("none")
最后
以上就是美满身影为你收集整理的傅里叶(四):傅立叶变换(FFT)求时间序列的周期的全部内容,希望文章能够帮你解决傅里叶(四):傅立叶变换(FFT)求时间序列的周期所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复