首页 > 其他分享 >傅里叶方法去周期

傅里叶方法去周期

时间:2024-02-24 09:03:26浏览次数:23  
标签:plt 周期 傅里叶 period length frequency np 方法 mean

#傅里叶方法算周期!!!带噪音的图像都能算.


import numpy as np
import matplotlib.pyplot as plt
import numpy as np
 
fs = 100  # frequency: 100  Hz        #======这个是cos函数的周期也就是我们最后要求的东西., cos频率100, 也就是周期1/100. 下面采样频率 1000, 所以一个cos周期包含10个采样点. 所以我们最后计算应该得到10!!!!!!!!!!!!!!!
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.5 * np.pi * fs * t) + np.random.normal(scale = 0.1, 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.subplot(2, 1, 1)
plt.plot(data[:100])  #==========只画出前100个点.


plt.subplot(2, 1, 2)
plt.plot(X)

 
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]  # 把X标准差数组里面大于他自己方差0.8倍的数据索引找出来.
 
length = len(X)
if len(frequency) > 0:
    if frequency[0] == 0:
        period = length // frequency[1]  # length个点中,完成了frequency[1]个周期
        if period >= 0.5 * length:
            print("none")
        print(period)
    else:
        period = length // frequency[0]     # length是总时间, frequcency是频率第一个高点.
        if period >= 0.5 * length: #周期大于长度一半的是不合法的!!!!!!!
            print("none")
        print(period)
else:
    print("none")
plt.savefig('傅里叶算周期4origin.png')

image

代码中frequency得到的就是那些高点. 也就是下面图片中的200多喝1700多.
第一个高点对应的大概是200多. 那就是周期性的频率.也就是采样到200多会重复一次. 所以周期8左右.

标签:plt,周期,傅里叶,period,length,frequency,np,方法,mean
From: https://www.cnblogs.com/zhangbo2008/p/18030703

相关文章

  • 《系统科学方法概论》第一章:开启系统科学之门
    这本书第一章所介绍的系统方法,为我揭示了一个全新的思维方式。它不同于传统的线性逻辑,而是强调了从宏观的角度去分析和理解问题。我认识到,每一个系统都是一个整体,其中的各个部分相互关联、相互影响,共同构成了一个动态变化的有机体。而系统方法正是这样一种工具,它可以帮助我们深入......
  • 《系统科学方法概论》第二章读后感
    系统工程方法是一种跨学科的方法论,它不仅仅局限于某一特定的领域,而是能够灵活地应用于解决现代社会中的各种复杂问题。这种方法的核心理念在于强调整体性,要求我们全面地考虑问题,而不仅仅是孤立地分析其中的某个部分。相互关联性则是要求我们认识到系统中的各个组成部分是相互影响......
  • 硬件控制方法
        1、在汇编语言中是用IN指令和OUT指令同外围设备进行输入输出操作的。2、用来识别外围设备的编号称为I/O地址或I/O端口号。  在C语言等高级编程语言开发的Windows应用中,大家几乎接触不到能直接控制硬件的指令,这是因为硬件的控制是Windows利用其操作系统提供的API......
  • C语言学习方法
    学习C语言是许多编程初学者的首选,https://www.fuligou8.com/noking/22013.html因为它是一种强大且广泛使用的编程语言。然而,对于那些刚开始学习C语言的人来说,掌握它可能会有一定的挑战。在本文中,我将分享一些学习C语言的方法,帮助你更轻松地掌握这门编程语言。  1.基础知识的......
  • 对于系统工程方法的认识(《系统科学方法概论》第二章)
    阅读《系统科学方法概论》第二章,我了解了系统工程方法的相关知识。包括:什么是系统工程-系统工程方法的内容-系统工程方法的原则。其中关于什么是系统工程,书中通过系统工程与一般工程的比对指出:系统工程相较于普通工程具有更高的复杂度,并且是定量化、最优化、程序化的工作特征,并且......
  • 《系统科学方法概论》第一章读后感
    第一章主要讲的是系统方法。首先,第一节以系统思想的发展史为主系统思想的发展史及人们对物质世界系统性认识的历史,而这个历史经历了古代,近代和现代三个发展时期。而其中的现代系统观念,主要分为活力论观点机械论观点和还原论观点以及机体系统论观点其次,第二节主要讲的什么是系统?首......
  • 布丁粉的制作方法
    作为一个资深的饮食达人,https://www.fuligou8.com/noking/22016.html我想分享一下我对布丁粉的看法。首先,布丁粉是一种非常受欢迎的甜点,它的独特口感和味道吸引了无数消费者。我个人非常喜欢布丁粉,因为它不仅美味可口,而且非常容易制作。1.什么是布丁粉?布丁粉是一种以淀粉和糖为......
  • 《系统科学方法概论》第三章读后感
    《系统科学方法概论》第三章主要讲的是信息方法。在第一节作者介绍了信息科学的简史,古代的通信方式和现代的通信方式,古代通信是适应当时生产、生活需要,在当时的科技条件下产生的,但随着人类社会交往活动的增加,古代通信方式日益暴露出一些缺点:(1)通信距离短,国际间、地区间通信受地......
  • 第4章 控制方法 笔记
    控制方法是一种特殊的系统方法,它强调通过调节系统的行为和性能来达到预期的目标。这种方法的核心是反馈机制,即通过收集系统的输出信息,并将其与预期目标进行比较,然后根据差异来调整系统的输入,从而实现系统的稳定和优化。在阅读过程中,我深入了解了控制方法的具体步骤和技巧。这些包......
  • 刘铁猛C#学习笔记4 方法详解
    方法的由来C++中用两个冒号访问命名空间如:std::cout<<"Hello,World!";“方法”是一个面向对象的概念,当一个函数作为类的成员出现时,就被称之为方法方法也可以称作“成员函数”C++中对类的声明放在.h文件中,而类的定义放在.cpp文件中c#中类的声明和定义是放在一起的 C+......