Java中的信号处理库? [关闭]

2024-03-24

我想计算时间序列的功率谱密度;进行一些带通、低通和高通滤波;也许还有其他一些基本的东西。

有没有一个不错的开源 Java 库可以做到这一点?

我已经搜索了一些但没有成功(例如,谷歌搜索“功率谱密度java”或“信号处理java”并点击链接,在Apache Commons、Sourceforge、java.net等中查找)。

有很多小程序、书籍、教程、商业产品等等,都不能满足我的需求。

更新: 我发现org.apache.commons.math.transform http://commons.apache.org/proper/commons-math/userguide/transform.html为傅里叶变换。这并没有实现功率谱密度、带通等,但它是一些东西。


我的第一个建议是不要使用 Java 进行 DSP 实现。我的第二个建议是用 Java 自己实现简单的 DSP 实现。


为什么不使用Java:

在过去的 10 多年里,我在编写 DSP 代码方面拥有丰富的经验……而且几乎没有 DSP 代码是用 Java 编写的……所以当我犹豫是否要阅读有关某人想要用 Java 实现 DSP 的文章时请原谅我。

如果你要做不平凡的DSP那么你不应该使用Java。用 Java 实现 DSP 之所以如此痛苦,是因为所有好的 DSP 实现都使用低级内存管理技巧、指针(大量的指针)、大型原始数据数组等。

为什么使用Java:

如果你正在做简单的DSP开发你自己的 Java 实现。像 PSD 和滤波这样的简单 DSP 东西都相对容易实现(实现简单,但速度不会很快),因为网上有太多的实现示例和详细记录的理论。

就我而言,我在 Java 中实现了一次 PSD 函数,因为我在 Java GUI 中绘制 PSD 图形,因此最简单的方法是在 Java 中降低性能并在 Java GUI 中计算 PSD,然后绘制它。


如何实现 PSD:

PSD 通常只是以 dB 为单位显示的 FFT 幅度。有许多来自学术、商业和开源的示例展示了如何计算 FFT 的幅度(以 dB 为单位)。例如Apache 有一个 Java 实现,可以为您提供 FFT http://commons.apache.org/proper/commons-math/userguide/transform.html输出,然后您只需转换为幅度和 dB。 FFT 之后的任何内容都应根据您的需要/想要进行定制。


如何实现低通、带通滤波:

我认为最简单的实现(不是计算效率最高的)是使用 FIR 滤波器并进行时域卷积。

卷积非常容易实现,它是两个嵌套的 for 循环,并且网上有数百万个示例代码。

如果您对滤波器设计一无所知,FIR 滤波器将是棘手的部分。最简单的方法是使用 Matlab 生成 FIR 滤波器,然后将系数复制到 java 中。我建议使用 Matlab 中的 firpmord() 和 firpm()。在阻带中实现 -30 至 -50 dB 衰减,在通带中实现 3 dB 纹波。

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

Java中的信号处理库? [关闭] 的相关文章

  • 使用比较器对对象进行排序给出空指针

    我正在尝试对包含 3 张卡的 ArrayList 进行排序 我正在用比较器来做这件事 这是否太过分了 Card getRank 返回 2 到 14 之间的整数 我完全不知道哪里出了问题 我之前已经成功完成了这个 并与我的其他代码进行了比较
  • 如何在 Groovy 中的 JSON Converter 方法中保留字母大小写?

    我正在尝试将 groovy 对象解析为 JSON 属性名称不遵循正确的驼峰式大小写形式 class Client String Name Date Birthdate 当我使用这个时 Client client new Client Nam
  • 匿名内部类显示不正确的修饰符

    据我了解 以下代码应该打印true作为输出 但是 当我运行这段代码时 它正在打印false 来自 Java 文档15 9 5 匿名类 https docs oracle com javase specs jls se8 html jls 1
  • 如何在流中收集到TreeMap中?

    我有两个Collectors groupingBy在流中 我需要收集所有信息TreeMap 我的代码 Map
  • java.sql.SQLException: ORA-01005: 给定的密码为空;登录被拒绝

    我在尝试连接到数据库时遇到以下异常 java sql SQLException ORA 01005 null password given logon denied at oracle jdbc driver T4CTTIoer proce
  • 黄瓜与 Micronaut

    我正在尝试将 Cucumber 与 Micronaut 一起使用 但当我尝试将其与 Cucumber 一起使用时 MicronautTest 注释根本不起作用 未注入 theApple 请参阅下面的代码 如果我在没有黄瓜的情况下运行它就可以
  • 可以向 @ManyToMany Hibernate 额外表添加额外字段吗?

    我有这两类 表 Entity Table name course public class Course Id Column name courseid private String courseId Column name coursen
  • 从继承的受保护 Java 字段创建公共访问器

    我怎样才能完成以下工作 class Foo extends javax swing undo UndoManager increase visibility works for method override def editToBeUnd
  • 将二进制数据的 byte[] 转换为 String

    我有二进制格式的数据 hex 80 3b c8 87 0a 89 我需要将其转换为字符串 以便通过 Jackcess 将二进制数据保存在 MS Access 数据库中 我知道 我不打算在 Java 中使用 String 来存储二进制数据 但
  • 可以混合使用 JVM 语言吗?即:Groovy 和 Clojure

    我知道你可以轻松地混合groovy java clojure java 无论什么JvmLang java 这是否也意味着我也可以让 clojure 和 groovy 代码进行交互 如果我使用 Grails 或 jRoR 我也可以在该环境中使
  • 在 Java 5 及更高版本中迭代 java.util.Map 的所有键/值对的最简单方法是什么?

    在 Java 5 及更高版本中迭代 java util Map 的所有键 值对的最简单方法是什么 假设K是您的密钥类型 并且V是你的值类型 for Map Entry
  • Java 中意外的负数

    import java util public class Prac9FibonacciNumbers public static void main String args int x new int 100 x 0 1 x 1 1 fo
  • 如何减少 JSF 中的 javax.faces.ViewState

    减少 JSF 中视图状态隐藏字段大小的最佳方法是什么 我注意到我的视图状态约为 40k 这会在每次请求和响应时下降到客户端并返回到服务器 特别是到达服务器时 这对用户来说会显着减慢 我的环境 JSF 1 2 MyFaces Tomcat T
  • 如何在 Spring Boot 中创建 Apache POI Excel 视图配置

    当我想使用 Spring Boot Web 将数据导出到 Excel 时遇到问题 我使用 Thymeleaf 作为模板引擎 由 Spring Boot 自动配置 但是当我在附加配置中添加 XmlViewResolver 时 由 XmlVie
  • 获取证书链

    我正在 Java 中使用 X509 证书 给定一个证书 是否可以在签名层次结构中找到所有其他证书 直到找到根证书 我有一个证书文件 带有 cer扩展名 我想提取父签名证书 我想继续查找该证书的父证书 直到获得最终的自签名根证书 我已经检查了
  • 相当于 C# 中 Java 的“ByteBuffer.putType()”

    我正在尝试通过从 Java 移植代码来格式化 C 中的字节数组 在 Java 中 使用方法 buf putInt value buf putShort buf putDouble 等等 但我不知道如何将其移植到 C 我尝试过 MemoryS
  • Android应用程序中的模式输入

    我想知道是否有其他替代方案可以替代 Android 上平庸的 EditText 密码输入 是否有 API 或开源代码可以集成到我的应用程序中 类似于锁屏图案解锁 Intent 可能会返回哈希值 数字 字符串或代表用户输入的模式的任何内容 我
  • 如何正确使用Google Calendar API Events.Insert命令?

    所以我一直使用REST方法来调用Google的API 我需要将事件插入到我拥有 ID 的特定日历中 这是我发送的 POST 请求 地址 https www googleapis com calendar v3 calendars https
  • 按字母顺序对对象的 ArrayList 进行排序

    我必须创建一个方法来排序数组列表根据电子邮件按字母顺序排列对象 然后打印排序后的数组 我在排序时遇到麻烦的部分 我已经研究过并尝试使用Collections sort vehiclearray 但这对我不起作用 我是因为我需要一个叫做比较器
  • 在Java的System.out中以表格格式输出

    我正在从数据库获取结果 并希望将数据作为 Java 标准输出中的表输出 我尝试过使用 t 但我想要的第一列的长度变化很大 有没有办法将其显示在类似输出的漂亮表格中 Use System out format http java sun co

随机推荐