傅立叶级数数据与 numpy 的拟合:fft 与编码

2024-02-24

假设我有一些数据 y,我想对其进行傅立叶级数拟合。对此post https://stackoverflow.com/questions/4258106/how-to-calculate-a-fourier-series-in-numpy,解决方案由Mermoz使用级数的复杂格式并“用黎曼和计算系数”。在这另一post https://dsp.stackexchange.com/questions/40780/how-to-get-the-fourier-series-using-pythons-tt-fft/49233,通过FFT得到级数,并写出一个例子。

我尝试实现这两种方法(下面的图像和代码 - 请注意,每次运行代码时,由于使用numpy.随机.正常)但我想知道为什么我得到不同的结果 - 黎曼方法似乎“错误地转移”,而 FFT 方法似乎“挤压”。我也不确定我对该系列的周期“tau”的定义。我很感谢您的关注。

我在 Windows 7 上使用 Spyder 和 Python 3.7.1

Example https://i.stack.imgur.com/bjJ6T.png

import matplotlib.pyplot as plt
import numpy as np

# Assume x (independent variable) and y are the data.
# Arbitrary numerical values for question purposes:
start = 0
stop = 4
mean = 1
sigma = 2
N = 200
terms = 30 # number of terms for the Fourier series

x = np.linspace(start,stop,N,endpoint=True) 
y = np.random.normal(mean, sigma, len(x))

# Fourier series
tau = (max(x)-min(x)) # assume that signal length = 1 period (tau)

# From ref 1
def cn(n):
    c = y*np.exp(-1j*2*n*np.pi*x/tau)
    return c.sum()/c.size
def f(x, Nh):
    f = np.array([2*cn(i)*np.exp(1j*2*i*np.pi*x/tau) for i in range(1,Nh+1)])
    return f.sum()
y_Fourier_1 = np.array([f(t,terms).real for t in x])

# From ref 2
Y = np.fft.fft(y)
np.put(Y, range(terms+1, len(y)), 0.0) # zero-ing coefficients above "terms"
y_Fourier_2 = np.fft.ifft(Y)

# Visualization
f, ax = plt.subplots()
ax.plot(x,y, color='lightblue', label = 'artificial data')
ax.plot(x, y_Fourier_1, label = ("'Riemann' series fit (%d terms)" % terms))
ax.plot(x,y_Fourier_2, label = ("'FFT' series fit (%d terms)" % terms))
ax.grid(True, color='dimgray', linestyle='--', linewidth=0.5)
ax.set_axisbelow(True)
ax.set_ylabel('y')
ax.set_xlabel('x')
ax.legend()

执行两个小的修改足以使总和与 np.fft 的输出几乎相似。FFTW 库确实计算了这些总和 http://www.fftw.org/fftw3_doc/The-1d-Discrete-Fourier-Transform-_0028DFT_0029.html#The-1d-Discrete-Fourier-Transform-_0028DFT_0029.

1) 信号的平均值,c[0]应计入:

f = np.array([2*cn(i)*np.exp(1j*2*i*np.pi*x/tau) for i in range(0,Nh+1)]) # here : 0, not 1

2) 输出必须按比例缩放。

y_Fourier_1=y_Fourier_1*0.5

enter image description here The output seems "squeezed" because the high frequency components have been filtered. Indeed, the high frequency oscillations of the input have been cleared and the output looks like a moving average.

Here, tau实际上定义为stop-start:它对应于帧的长度。这是信号的预期周期。

如果帧与信号的周期不对应,您可以通过将信号与其自身进行卷积并找到第一个最大值来猜测其周期。看从 FFT 中查找信号的周期 https://stackoverflow.com/questions/49531952/find-period-of-a-signal-out-of-the-fft/49545394#49545394然而,它不太可能与由生成的数据集正常工作numpy.random.normal: 这是一加性高斯白噪声 https://en.wikipedia.org/wiki/Additive_white_Gaussian_noise。由于它具有恒定的功率谱密度,因此很难将其描述为周期性的!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

傅立叶级数数据与 numpy 的拟合:fft 与编码 的相关文章

  • 使用特定的类/函数预加载 Jupyter Notebook

    我想预加载一个笔记本 其中包含我在另一个文件中定义的特定类 函数 更具体地说 我想用 python 来做到这一点 比如加载一个配置文件 包含所有相关的类 函数 目前 我正在使用 python 生成笔记本并在服务器上自动启动它们 因为不同的
  • 在 django ORM 中查询时如何将 char 转换为整数?

    最近开始使用 Django ORM 我想执行这个查询 select student id from students where student id like 97318 order by CAST student id as UNSIG
  • Pandas 日期时间格式

    是否可以用零后缀表示 pd to datetime 似乎零被删除了 print pd to datetime 2000 07 26 14 21 00 00000 format Y m d H M S f 结果是 2000 07 26 14
  • 将 python2.7 与 Emacs 24.3 和 python-mode.el 一起使用

    我是 Emacs 新手 我正在尝试设置我的 python 环境 到目前为止 我已经了解到在 python 缓冲区中使用 python mode el C c C c将当前缓冲区的内容加载到交互式 python shell 中 显然使用了什么
  • 独立滚动矩阵的行

    我有一个矩阵 准确地说 是 2d numpy ndarray A np array 4 0 0 1 2 3 0 0 5 我想滚动每一行A根据另一个数组中的滚动值独立地 r np array 2 0 1 也就是说 我想这样做 print np
  • Python 2:SMTPServerDisconnected:连接意外关闭

    我在用 Python 发送电子邮件时遇到一个小问题 me my email address you recipient s email address me email protected cdn cgi l email protectio
  • 从Python中的字典列表中查找特定值

    我的字典列表中有以下数据 data I versicolor 0 Sepal Length 7 9 I setosa 0 I virginica 1 I versicolor 0 I setosa 1 I virginica 0 Sepal
  • Python,将函数的输出重定向到文件中

    我正在尝试将函数的输出存储到Python中的文件中 我想做的是这样的 def test print This is a Test file open Log a file write test file close 但是当我这样做时 我收到
  • 如何通过 TLS 1.2 运行 django runserver

    我正在本地 Mac OS X 机器上测试 Stripe 订单 我正在实现这段代码 stripe api key settings STRIPE SECRET order stripe Order create currency usd em
  • pyspark 将 twitter json 流式传输到 DF

    我正在从事集成工作spark streaming with twitter using pythonAPI 我看到的大多数示例或代码片段和博客是他们从Twitter JSON文件进行最终处理 但根据我的用例 我需要所有字段twitter J
  • 仅第一个加载的 Django 站点有效

    我最近向 stackoverflow 提交了一个问题 标题为使用mod wsgi在apache上多次请求后Django无限加载 https stackoverflow com questions 71705909 django infini
  • 如何使用原始 SQL 查询实现搜索功能

    我正在创建一个由 CS50 的网络系列指导的应用程序 这要求我仅使用原始 SQL 查询而不是 ORM 我正在尝试创建一个搜索功能 用户可以在其中查找存储在数据库中的书籍列表 我希望他们能够查询 书籍 表中的 ISBN 标题 作者列 目前 它
  • 如何断言 Unittest 上的可迭代对象不为空?

    向服务提交查询后 我会收到一本字典或一个列表 我想确保它不为空 我使用Python 2 7 我很惊讶没有任何assertEmpty方法为unittest TestCase类实例 现有的替代方案看起来并不正确 self assertTrue
  • Pandas 将多行列数据帧转换为单行多列数据帧

    我的数据框如下 code df Car measurements Before After amb temp 30 268212 26 627491 engine temp 41 812730 39 254255 engine eff 15
  • 如何在 pygtk 中创建新信号

    我创建了一个 python 对象 但我想在它上面发送信号 我让它继承自 gobject GObject 但似乎没有任何方法可以在我的对象上创建新信号 您还可以在类定义中定义信号 class MyGObjectClass gobject GO
  • 如何解决 PDFBox 没有 unicode 映射错误?

    我有一个现有的 PDF 文件 我想使用 python 脚本将其转换为 Excel 文件 目前正在使用PDFBox 但是存在多个类似以下错误 org apache pdfbox pdmodel font PDType0Font toUnico
  • 实现 XGboost 自定义目标函数

    我正在尝试使用 XGboost 实现自定义目标函数 在 R 中 但我也使用 python 所以有关 python 的任何反馈也很好 我创建了一个返回梯度和粗麻布的函数 它工作正常 但是当我尝试运行 xgb train 时它不起作用 然后 我
  • 模拟pytest中的异常终止

    我的多线程应用程序遇到了一个错误 主线程的任何异常终止 例如 未捕获的异常或某些信号 都会导致其他线程之一死锁 并阻止进程干净退出 我解决了这个问题 但我想添加一个测试来防止回归 但是 我不知道如何在 pytest 中模拟异常终止 如果我只
  • 在 JavaScript 函数的 Django 模板中转义字符串参数

    我有一个 JavaScript 函数 它返回一组对象 return Func id name 例如 我在传递包含引号的字符串时遇到问题 Dr Seuss ABC BOOk 是无效语法 I tried name safe 但无济于事 有什么解
  • 使用随机放置的 NaN 创建示例 numpy 数组

    出于测试目的 我想创建一个M by Nnumpy 数组与c随机放置的 NaN import numpy as np M 10 N 5 c 15 A np random randn M N A mask np nan 我在创建时遇到问题mas

随机推荐

  • 如何从 Pandas 数据框中删除行列表?

    我有一个数据框 df gt gt gt df sales discount net sales cogs STK ID RPT Date 600141 20060331 2 709 NaN 2 709 2 245 20060630 6 59
  • 同一函数的模板化版本和非模板化版本是否被视为重载?

    一个非常正式的问题 这被认为是过载吗 删除模板与仅重载参数有根本不同吗 template
  • 为客户端付费专区处理 isAccessibleForFree

    试图理解Google 付费内容指南 https developers google com search docs data types paywalled content 我的网站是这样工作的 没有付费订阅的用户每周将获得几次免费阅读 有
  • Django:添加之前检查对象是否已经存在

    如何检查对象是否已存在 并仅在存在时添加它not已经存在 这是代码 如果 follow role 已经存在 我不想在数据库中添加两次 我首先要如何检查 也许可以使用 get 但是如果 get 没有返回任何内容 Django 会抱怨吗 cur
  • 有“pip bundle”的不错的替代品吗?

    I use pip bundle对于我的生产系统 今天我收到了以下令人沮丧的消息 Due to lack of interest and maintenance pip bundle and support for installing f
  • Ubuntu 10.04 64 位上的 Android 开发使用哪个 JDK?

    Ubuntu 10 04 64 位作为 Android 开发环境看起来很有前途 我现在已经启动并运行了它 但我陷入了以下决策点 Synaptic 包管理器有 默认jdk 标准 Java 或 Java 兼容开发套件 sun com 有两个 J
  • C# 类型系统健全且可判定吗?

    我知道Java的类型系统是不健全的 它无法对语义上合法的构造进行类型检查 并且无法确定 它无法对某些构造进行类型检查 例如 如果您将以下代码片段复制 粘贴到类中并编译它 编译器将崩溃并显示StackOverflowException 多么贴
  • 当我使用“pip install mysql-connector”时,“无法找到 Protobuf include 目录”

    当我尝试使用 pip install mysql connector 加载时出现此错误 我也尝试过 pip install Protobuf 但没有解决方案 Python architecture 64 bit Python ARCH 64
  • React-native:node_modules\@react-native-community\masked-view 中缺少 index.js 文件

    我在构建反应本机应用程序时收到以下错误 react native community masked view and react navigation stack是最新的 但不确定为什么在构建时没有解决这个包 error Error Whi
  • 如何使用 matplotlib/python 绘制 ROC 曲线 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我想绘制一条 ROC 曲线python with matplotlib并想像这样展示它 假设我们有 0 0 到 1 0 的预测y sc
  • 静态存储持续时间初始化

    在 C 中 静态存储持续时间对象以未指定的顺序初始化 同一编译单元中的除外 代码如下 include
  • jQuery Mobile 谷歌通用分析

    我很高兴使用这个最佳实践http roughlybrilliant com jquery mobile best practices 7 http roughlybrilliant com jquery mobile best practi
  • 定时器中断是否独立于系统处于内核模式还是用户模式?

    在Linux单处理器系统中 定时器中断是否与系统处于内核模式还是用户模式无关 当系统处于内核模式时 定时器中断有什么不同的行为吗 简单的答案是 硬件时钟中断服务例程的执行和动态定时器处理程序的调度都不受硬件时钟中断之前系统所处模式的影响 原
  • 如何观察服务类中的实时数据

    我想将从 API 获得的一些记录插入到我的数据库中 我正在使用服务类来执行此过程 我试图在服务类中使用实时数据的概念 但它要求我的服务类是生命周期所有者 我一直在思考如何让我的服务类观察者实时数据的变化 任何帮助都会很好 如果您的服务不应受
  • Haskell 中类似 OO 的接口实现

    尽管有这个标题 我不会仅仅询问 OO 世界和 Haskell 之间的翻译 但我想不出更好的标题 此讨论类似于但不等于this one https stackoverflow com questions 5474171 oo interfac
  • 按位运算如何提高 Asm.js 的性能?

    在 Asm js 定义的第一行有一个基于 Asm js 的代码示例 它解释了按位运算有助于获得更快的 JS 代码 HEAP32 p gt gt 2 0 or x y 0 我的问题是 这个操作如何提高性能 在 Asm js 或 Emscrip
  • Drools 知识库 已弃用

    我正在将 Drools 规则引擎集成到我的应用程序中 我发现的 99 的入门示例如下 KnowledgeBuilder kbuilder KnowledgeBuilderFactory newKnowledgeBuilder kbuilde
  • 如何验证 WTForms 中的日期字段

    在我的 Flask 应用程序中 我有一个 WTForm 其中有两个日期选择器 分别用于 开始日期 和 结束日期 验证 结束日期 不早于 开始日期 的最佳方法是什么 from flask wtf import FlaskForm from w
  • .NET 自定义事件组织帮助

    作为 C 的新手 我最近一直在研究自定义事件 虽然我认为我现在了解设置自定义事件所需的基本部分 但我无法确定where每件作品都属于 具体来说 这就是我正在尝试做的事情 我有一个表示内部数据结构布局的树控件 当数据在树中重新排列 通过拖放
  • 傅立叶级数数据与 numpy 的拟合:fft 与编码

    假设我有一些数据 y 我想对其进行傅立叶级数拟合 对此post https stackoverflow com questions 4258106 how to calculate a fourier series in numpy 解决方