C ++中的Matlab希尔伯特变换

信息处理 matlab 希尔伯特变换
2022-01-28 23:11:04

我在 Stack Overflow 上问过这个问题,他们让我来这里。

首先,请原谅我在这个领域的无知,我是一名程序员,但一直陷入超出我专业知识(数学和信号处理)的境地。

我有一个需要移植到 C++ 程序的 Matlab 脚本(无需将 matlab 代码编译成 DLL)。它使用带一个参数的 hilbert() 函数。我试图找到一种在 C++ 中实现相同功能的方法(即有一个函数也只接受一个参数,并返回相同的值)。

我已经阅读了使用 FFT 和 IFFT 构建它的方法,但似乎无法获得像 Matlab 版本那样简单的东西。主要的是我需要它在 128*2000 矩阵上工作,而我在搜索中发现的任何内容都没有告诉我如何做到这一点。

我可以返回一个复杂的值,或者只是绝对值。集成到代码中越简单越好。

谢谢你。

1个回答

如果您的应用程序可以使用 LGPL 开源代码,您可以在 GNU Octave 源代码中重用 Remez 交换算法的代码。我在 www.ke5fx.com/dsplib.zip 有一个独立的库。查看函数 DSP_FIR_PM_Hilbert_transformer_design() 是否符合您的要求。

我的库实现的 FIR 滤波器是一维事务,因此如果您确实需要进行 2D 变换,可以说是练习。欢迎回馈 dsplib!