具有相同输入大小的快速和非常慢的 scipy.signal.resample

2023-12-12

根据文档scipy.signal.resample,速度应根据长度而变化of input:

如前所述,重新采样使用 FFT 变换,如果输入样本数量很大且为素数,则该变换可能会非常慢,请参阅 scipy.fftpack.fft。

但我的时间安排非常不同(因子 x14)使用相同的输入,并且所需输出大小只有很小的变化:

import numpy as np, time
from scipy.signal import resample

x = np.random.rand(262144, 2)
y = np.random.rand(262144, 2)

t0 = time.time()
resample(x, 233543, axis=0)
print time.time() - t0          # 2.9 seconds here

t0 = time.time()
resample(y, 220435, axis=0)
print time.time() - t0          # 40.9 seconds here!

问题:我可以对输入进行零填充,使其具有 2 的幂(以像往常一样加速 FFT 计算),但由于我的重采样因子是固定的,我不能同时使用 2 的幂作为输入大小和 2 的幂作为所需的输出大小.

如何加快速度scipy.signal.resample?

如果不可能,并且如果scipy.signal.resample的性能可能会有所不同so much因素很大,实际使用起来确实不太方便。那么它对于哪些应用有用呢?

注意:我的目标是音频重新采样(重新调整音调等)

编辑:最后是最好的解决方案使用这个.


文档字符串有些误导性地陈述了故事的一部分。重采样过程包括 FFT(输入大小)、零填充和逆 FFT(输出大小)。因此,不方便的输出大小会减慢速度,就像不方便的输入大小一样。

Cris Luengo 建议在空间域中使用直接插值,这样应该会更快。例如,ndimage.zoom使用它(默认情况下三次样条插值):

from scipy.ndimage import zoom
t0 = time.time()
zoom(y, (220435./262144., 1))   # maybe with prefilter=False ? up to you
print(time.time() - t0)         # about 200 times faster than resample

与重新采样的输出不同(毕竟是不同的方法),但对于平滑数据(与此处使用的随机输入不同),它们应该接近。

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

具有相同输入大小的快速和非常慢的 scipy.signal.resample 的相关文章

  • 傅里叶变换定理 matlab

    我目前正在尝试理解二维傅里叶位移定理 根据我到目前为止所了解到的情况 图像空间中的平移会导致相位差异 但不会导致频率空间中的幅度差异 我试图用一个小例子来演示这一点 但它只适用于行的移位 而不适用于列的移位 这是一个小演示 我只在这里显示幅
  • 添加反斜杠而不转义[重复]

    这个问题在这里已经有答案了 我需要逃离 字符串中的 字符 问题是每当我string string replace 结果是 添加额外的反斜杠来转义原始反斜杠 如何删除这个多余的反斜杠 结果 仅显示 实际上字符串是 gt gt gt str g
  • 如何在Redis中从hmset()切换到hset()?

    我收到弃用警告 即 Redis hmset 已弃用 请改用 Redis hset 但是 hset 采用第三个参数 我不知道是什么name应该是 info users 10 timestamp datetime utcnow strftime
  • 包含可变数据的正则表达式 - ply.lex

    我正在使用 python 模块ply lex编写一个词法分析器 我用正则表达式指定了一些标记 但现在我卡住了 我有一个list of Keywords谁应该是token data是一个包含大约 1000 个关键字的列表 这些关键字都应该被识
  • Python Subversion 包装器库

    在颠覆的文档 http svnbook red bean com en 1 7 svn developer usingapi html svn developer usingapi otherlangs有一个从 Python 使用 Subv
  • 使用 gin 索引和 sqlalchemy 返回排名搜索结果

    我为全文搜索设置了 GIN 索引 我想获取与搜索查询匹配的记录列表 按排名排序 记录与搜索查询的匹配程度 对于结果 我只需要记录及其列 不需要用于排序的实际排名值 我有以下查询 它运行良好并从我的 postgresql 数据库返回预期结果
  • 使用 string.whitespace 删除 Python 中的空格

    Python 的 string whitespace 很棒 gt gt gt string whitespace t n x0b x0c r 如何在不手动输入 t n 等正则表达式的情况下将其与字符串一起使用 例如 它应该能够转动 请不要伤
  • 通过傅里叶空间填充进行插值

    我最近尝试在 matlab 上实现一个在傅立叶域中使用零填充的插值方法的简单示例 但我无法正常工作 我总是有一个小的频移 在傅里叶空间中几乎不可见 但它在时空上产生了巨大的误差 由于傅里叶空间中的零填充似乎是一种常见 且快速 的插值方法 因
  • Seaborn 条形图条之间没有空格

    我使用下面的代码创建了一个 Seaborn 条形图 它来自https www machinelearningplus com plots top 50 matplotlib visualizations the master plots p
  • 如何判断Python对象是否是字符串?

    如何检查 Python 对象是否是字符串 常规字符串或 Unicode Python 2 Use isinstance obj basestring 对于要测试的对象obj Docs https docs python org 2 7 li
  • Django:通过外键将两个表连接到第三个表?

    我有三个型号 class A Model class B Model id IntegerField a ForeignKey A class C Model id IntegerField a ForeignKey A 我想要得到 B i
  • 鉴于我的代码是开源的并且我在服务器上运行,并且我接受近乎原始的代码,那么对我来说最糟糕的情况是什么?

    我正在研究几个案例 在这些案例中 接受近乎原始的代码会容易得多 所以 如果你不能使用 lambda 你能对表达式做的最糟糕的事情是什么 以及如何做 如果不能使用 import 那么对执行的代码最糟糕的情况是什么 如何使用 不能使用 X 扫描
  • 使用 PyQt5 拖放 QLabels

    我正在尝试使用 PyQt5 将 Qlabel 拖放到另一个 Qlabel 上 from PyQt5 QtWidgets import QApplication QWidget QToolTip QPushButton QMessageBox
  • 按工作日分组的熊猫 (M/T/W/T/F/S/S)

    我有一个 pandas 数据框 其中包含 YYYY MM DD arrival date 形式的时间序列 作为索引 我想按每个工作日 周一到周日 进行分组 以便计算其他日期列是平均值 中位数 标准差等 我最终应该只有七行 到目前为止我只知道
  • Python 中的数据可用性图表

    我想知道Python是否有一些东西可以绘制具有多个变量的时间序列的数据可用性 下面显示了一个示例 取自Visavail js 时间数据可用性图表 https github com flrs visavail 1 description 以下
  • 如何从 Python 脚本捕获 Curl 的输出

    我想使用curl查找有关网页的信息 但在Python中 到目前为止我有这个 os system curl head www google com 如果我运行它 它会打印出 HTTP 1 1 200 OK Date Sun 15 Apr 20
  • Python:ConfigParser.NoSectionError:没有部分:“TestInformation”

    我使用上面的代码收到 ConfigParser NoSectionError No section TestInformation 错误 def LoadTestInformation self config ConfigParser Co
  • 多行 x 刻度标签

    我正在尝试制作类似于此 Excel 示例的图 我想知道 x 刻度标签上是否有第二层 例如 5 年统计摘要 我知道我可以使用制作多行刻度标签 n但我希望能够独立地转换这两个级别 这很接近 fig plt figure figsize 8 4
  • 仅在满足条件时添加到字典

    我在用urllib urlencode构建 Web POST 参数 但是有一些值我只想在除None为他们而存在 apple green orange orange params urllib urlencode apple apple or
  • Python正则表达式:如何用不同的值替换出现的每个实例?

    假设我有这个字符串 s blah blah blah 使用Python正则表达式 如何用不同的值替换 blah 的每个实例 例如 我有一个值列表v 1 2 3 你可以使用re sub打回来 http docs python org libr

随机推荐

  • 为什么React-router在url改变时不重新渲染页面也不更新数据?

    我正在 React 中构建一个项目 该项目通过自定义挂钩从 API 检索数据 一旦检索到数据 它就会显示卡片 通过单击它们可以打开描述性页面 到这里一切都好 App js
  • 如何从 WebMatrix 2 Beta 中的 vsdoc 文件引用获取 JavaScript Intellisense?

    我将 JavaScript 文件从 Visual Studio 复制到新的 WebMatrix 2 Beta 项目 结果发现 vsdoc 文件没有用于 JavaScript Intellisense
  • Android背景隐藏子视图文本

    我有一个简单的 LinearLayout 当我添加安卓 背景对于 LinearLayout TextView不再可见 我不明白什么
  • PHP CSV 字符串到数组

    我正在尝试将 CSV 字符串解析为 PHP 中的数组 CSV 字符串具有以下属性 Delimiter Enclosure New line r n 示例内容 12345 Computers Acer 4 Varta 5 93 1 0 04
  • Oracle WITH 和 MATERIALIZE 提示充当函数的自主事务

    在 Oracle 12c 中 如果我在查询中调用在 WITH AS 部分中使用 MATERIALIZE 提示的函数 则该函数调用的行为类似于自治事务 DROP TABLE my table CREATE TABLE my table my
  • 使用 WPF 自定义控件库 (.NET Framework) 中普通 WPF 项目中的 App.xaml

    我有一个 WPF 项目App xaml 不是资源字典 带有一些材料设计的东西和一个 ViewModelLocator MVVM 如下所示
  • 如何在 JGit 中编写 git log --stat 命令

    我有以下 git 命令 git log stat 1000 all gt gitstat log 在 JGit 中可以实现这一点吗 如果是 在 JGit 中编写此代码的等效方法是什么 为了访问存储库的历史记录 JGit 提供了RevWalk
  • 使用 Python 每 64 个字符插入一个换行符

    使用 Python 我需要每 64 个字符向字符串中插入一个换行符 在 Perl 中这很简单 s 64 1 n 如何使用 Python 中的正则表达式来完成此操作 有没有更Pythonic的方法来做到这一点 与 Perl 中相同 但使用反斜
  • 调度 Redux 操作是否被视为昂贵?

    我已经使用 React Redux Typescript 堆栈有一段时间了 到目前为止我很喜欢它 然而 由于我对 Redux 还很陌生 所以我一直想知道这个特定的话题 调度 Redux 操作 和 thunk 是否被认为是昂贵的操作并且应该谨
  • struct 是 Racket 中的宏吗?

    我记得我在某处读到它不是宏 而是内置于核心语言中的 类似的事情 我不确定 因为我已经记不起我是从哪里读到的了 也是如此structRacket 中是否有宏 如果不是 为什么它被内置到核心语言中 一个宏 struct rkthas defin
  • PHP:使用 PDO 从 MySQL 数据库输出 utf8 时出现问题

    dbo new PDO mysql host localhost dbname database databaseuser databasepassword array PDO MYSQL ATTR INIT COMMAND gt SET
  • Oracle:模糊查找

    我正在加载一个表来查找员工表 但是 有时源文件和员工表中的名称不正确匹配 Employee table Employee Name Paul Jaymes Source File Paul James 我想要这个匹配 可能有什么解决办法 U
  • 小阵列最快的偏移读取

    为了速度 我想读取第 9 个寄存器中的值引用的 8 个寄存器之一 我认为执行此操作的最快方法是使用 3 个条件跳转 检查第 9 个中的 3 位 登记 这应该比使用偏移量执行此操作的标准方法具有更短的延迟 内存读取 但这仍然需要至少 6 个时
  • 如何将基类型列表转换为派生类型列表

    从派生类到基类 似乎存在许多相反的问题 但我的问题是如何将基类型列表转换为派生类型列表 public class MyBase public int A public class MyDerived MyBase public int B
  • 删除空格和句点

    我无法让这个正则表达式工作 4 182 ex number period 2 blank spaces 3 numbers blank space 2 characters 正则表达式语法应返回 4182 并删除句点 空格和字符 你能帮我吗
  • 从 ArrayList 中删除多个元素的快速算法

    假设 ArrayList 的大小为 n 就我而言 我经常需要从 ArrayList 中删除 1 到 n 个具有不同索引的元素 通过使用 VisualVM Profiler 我发现 ArrayList remove 花费了大约 90 的运行时
  • 如何在按客户分组中添加计数器

    他们是同一个专栏 Name Category A SL B SL C SL A SL A SL C SL 现在在我的脚本中 我将它们分组在类别中 但我想计算它们在查询中出现的次数 请看下面 Customer Line A 1 means i
  • 对sync_fetch_and_add_4的未定义引用

    每当我尝试使用 sync fetch and add在 64 位机器上使用 m32 时 我收到以下错误 而它在正常的 64 位机器上可以正常编译 我使用的是 gcc 编译器 4 1 2 这里可能存在什么问题以及解决方案是什么 replica
  • PDF 转文本工具还是 Java 库? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心以获得指导 我需要将 PDF 转换为普
  • 具有相同输入大小的快速和非常慢的 scipy.signal.resample

    根据文档scipy signal resample 速度应根据长度而变化of input 如前所述 重新采样使用 FFT 变换 如果输入样本数量很大且为素数 则该变换可能会非常慢 请参阅 scipy fftpack fft 但我的时间安排非