Octave/Matlab 与 Scipy 中的周期图

2023-11-25

我正在使用 scipy 将一些 matlab 代码移植到 python 中,但遇到了以下行:

Matlab/倍频程代码

[Pxx, f] = periodogram(x, [], 512, 5)

Python代码

f, Pxx = signal.periodogram(x, 5, nfft=512)

问题是我对相同的数据得到不同的输出。更具体地说,Pxx向量是不同的。我尝试了不同的 signal.periodogram 窗口,但没有运气(似乎默认 scypy 的 boxcar 窗口与默认 matlab 的矩形窗口相同)另一个奇怪的行为是,在 python 中,Pxx 的第一个元素始终为 0,无论数据是什么输入是。

我错过了什么吗?任何建议将不胜感激!


带有实际数据的简单 Matlab/Octave 代码:http://pastebin.com/czNeyUjs
简单的Python+scipy代码和实际数据:http://pastebin.com/zPLGBTpn


在研究了 Octave 和 scipy 的周期图源代码后,我发现它们使用不同的算法来计算功率谱密度估计。 Octave(和 MATLAB)use FFT,而 scipy 的周期图使用韦尔奇方法.

正如@georgesl 所提到的,输出看起来非常相似,但仍然有所不同。出于移植原因,这一点至关重要。最后,我简单地编写了一个小函数来计算 PSD 估计,使用FFT,现在输出是相同的。根据timeit经过测试,它的工作速度快了约 50%(在 10.000 次迭代的循环中,速度为 1.9006 秒 vs 2.9176 秒)。我认为这是因为 FFT 在 scipy 的实现中比 Welch 更快,只是更快。

感谢所有表现出兴趣的人。

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

Octave/Matlab 与 Scipy 中的周期图 的相关文章

随机推荐

  • 使用 python urllib2 在http标头中传递会话cookie?

    我正在尝试编写一个简单的脚本来登录维基百科并使用 Mediawiki api 在我的用户页面上执行一些操作 但是 我似乎从未通过第一个登录请求 从此页面 https en wikipedia org wiki Wikipedia Creat
  • 删除字符串数组中重复项的最佳算法

    今天在学校老师要求我们实现一个重复删除算法 没那么难 大家想出了下面的解决方案 伪代码 for i from 1 to n 1 for j from i 1 to n if v i v j then remove v v j remove
  • Java 9 中已弃用 Observer。我们应该使用什么来代替它?

    Java 9 出来了 Observer已被弃用 这是为什么 这是否意味着我们不应该再实现观察者模式 很高兴知道什么是更好的选择 这是为什么 这是否意味着我们不应该再实现观察者模式 先回答后半部分 YES 这确实意味着你不应该实施Observ
  • 有人可以解释这个懒惰的斐波那契解决方案吗?

    这是代码 fibs 0 1 zipWith fibs drop 1 fibs 评估时 fibs是斐波那契数列的无限列表 我不明白的是列表是如何连接的 zipWith返回一个列表 因此压缩fibs会产生这样的结果 0 1 1 1 2 1 2
  • 属性不可用:8.0 之前的 iOS 版本上的第一个基线布局属性

    我得到以下信息warning in 代码6 1 属性不可用 iOS 版本上的第一个基线布局属性 8 0之前 我想 这也是造成我iOS 7 x构建到crash 发现问题了 此新限制已添加到 iOS 8 0 中 并且以前的版本不支持 要消除此警
  • 使用 flatMap 将地图列表转换为地图

    我如何合并List
  • 从数据表中删除重复项的最佳方法是什么?

    我检查了整个网站并在网上搜索 但无法找到解决此问题的简单方法 我有一个大约有 20 列和 10K 行的数据表 我需要根据 4 个关键列删除此数据表中的重复行 Net 没有一个函数可以做到这一点吗 最接近我正在寻找的函数是 datatable
  • 如何处理 sencha touch 应用程序上的设备后退按钮

    在 Sencha touch 中 如果我使用导航视图 我可以获得后退按钮 这很好 但是如果用户点击设备后退按钮怎么办 直接退出应用程序 根据我的要求 它不应退出应用程序 它必须返回到上一个屏幕 我该怎么做 您可以像这样处理硬件后退按钮 if
  • Qt中有没有办法禁止计算机进入睡眠状态?

    我正在编写一个 Qt 应用程序 它执行一些繁重的计算 但在 Mac 上 也可能在 Windows 上 但我目前无法检查这一点 一旦计算机进入睡眠模式 执行就会停止 我想要一种即使屏幕进入屏幕保护程序或空白时也能继续执行的方法 显然 您可以要
  • 有没有办法在 iOS 设备的 Mobile Safari 上使用 window.onbeforeunload ?

    看起来 Apple 已禁用 iOS 设备 iPhone iPad iPod Touch 的 window onbeforeunload 事件 不幸的是 我找不到任何文档来说明为什么此事件在 Mobile Safari 中不起作用 有谁知道这
  • 如何避免锚点()标签点击时页面刷新?

    我正在创建一个动态网站 我的问题是当我点击以下标签时 a class s inte href Interesante a 页面刷新 如何避免页面刷新 您想要完成的是更新一些兴趣计数器而不刷新页面 您应该使用 AJAX
  • 在 python 中初始化项目布局?

    假设一个程序员有以下问题 他想开始一个新的Python项目 他需要样板文件的基本布局 例如测试目录 源目录 setuptools 脚本等 他如何使用单个命令创建所有这些内容和布局 例如 粘贴 正如其中一个答案中所建议的 为您提供这项服务 p
  • java.lang.IllegalStateException:CameraX 尚未初始化

    我正在关注这个关于 CameraX 的 Google Codelab 当我开始添加相机预览的部分时 我会这样做 val previewConfig PreviewConfig Builder apply setTargetAspectRat
  • 正则表达式匹配除字母和数字之外的所有字符

    我想清除所有上传文件的文件名 我想删除除句点 字母和数字之外的所有字符 我不擅长正则表达式 所以我想我会在这里问 有人可以告诉我如何将它们组合在一起吗 我正在使用 PHP newfilename preg replace a zA Z0 9
  • onbeforeprint 和 onafterprint 在 Chrome 和 IE 中不起作用?

    我在我的项目中使用打印 使用 HTML 和 javascript 在 mozilla 中 onbeforeprint 和 onafterprint 工作正常 但在 chrome 中不起作用 Chrome 的有效方法是检查 window 中的
  • Pandas DataFrame 烛台图中的重叠日期

    我有一个 pandas 数据框输出如下 Open High Low Close 2016 06 01 69 60 70 20 69 44 69 76 2016 06 02 70 00 70 15 69 45 69 54 2016 06 03
  • 使用 FragmentPagerAdapter 的循环 ViewPager

    我想实现一个 ViewPager 它使用 Fragments 并可以以曲线运动方式滑动 例如页面 ABCA 我读过几篇关于如何完成此操作的帖子 例如返回有多少元素的假计数 并将位置设置在中间的开头 如何创建圆形viewpager 这些似乎都
  • SQLAlchemy 中的事务线程安全吗?

    我正在使用 SQLAlchemy 的表达式语言而不是它的 orm 开发一个 Web 应用程序 我想在我的应用程序中使用多个线程 但我不确定线程 安全 我在用文档的这一部分建立连接 我认为这是线程安全的 因为我在每个请求中引用了特定的连接 这
  • 如何使用 Android Facebook sdk 从 Facebook 获取好友列表? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 我在 Facebook 上创建了一个应用程序 并实现了实施 Facebook SDK 的一些第一步 这就是我想要做的 从 Facebook 获取朋友
  • Octave/Matlab 与 Scipy 中的周期图

    我正在使用 scipy 将一些 matlab 代码移植到 python 中 但遇到了以下行 Matlab 倍频程代码 Pxx f periodogram x 512 5 Python代码 f Pxx signal periodogram x