我正在用 C# 开发一个具有频谱图绘制功能的应用程序。
在我的第一次尝试中,我使用了 MathNet.Numerics,现在我继续使用 alglib 进行开发。当我从一个更改为另一个时,我注意到它们的输出不同。Mathnet 默认使用某种校正,alglib 似乎忽略了这种校正。我不是很喜欢信号处理,也是编程的新手,我不知道到底有什么区别。
在我的情况下,MathNet 默认输出(原始幅度)值范围从 ~0.1 到 ~274。使用 alglib,我得到的值范围从 ~0.2 到 ~6220。
我发现 MathNet Fourier.Forward 使用默认缩放选项。这里说,FourierOptions.Default 是“通用;对称缩放和共同指数(在 Maple 中使用)。” https://numerics.mathdotnet.com/api/MathNet.Numerics.IntegralTransforms/FourierOptions.htm 如果我使用 FourierOptions.NoScaling,则输出与 alglib 产生的相同。
在 MathNet 中,我使用了 Fourier.Forward 函数: https : //numerics.mathdotnet.com/api/MathNet.Numerics.IntegralTransforms/Fourier.htm#Forward 对于 alglib,我使用了 fftr1d 函数:https://www.alglib .net/translator/man/manual.csharp.html#sub_fftr1d
- 他们的计算有什么区别?
- 我可以使用什么函数将 alglib 输出幅度转换为 MathNet 的输出幅度,反之亦然?
- 在什么情况下我应该使用这些不同的“比例”?它们究竟是为了什么?
请分享你的知识。提前致谢!