我正在C#中开发一个具有谱图绘制功能的应用程序。
对于我的第一次尝试,我使用了MathNet.Numerics,现在我正在继续使用alglib进行开发。当我从一个改变到另一个,我注意到他们的输出是不同的。Mathnet在默认情况下使用某种更正,而算法库似乎忽略了这一点。我并不是真正喜欢信号处理,也是一个编程新手,我也搞不清楚到底是什么区别。
在我的例子中,MathNet的默认输出(原始幅度)值在~0.1到~274之间。在算法库中,我得到的值从0.2到6220不等。
我发现MathNet Fourier.Forward使用默认的缩放选项。这里说的是,FourierOptions.Default是“通用的;对称的缩放和公共指数(用在Maple中)”,如果我使用FourierOptions.NoScaling,输出与算法库产生的输出相同。
在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。
,
请分享你的知识。提前感谢!
发布于 2020-02-21 06:13:43
我自己解决了它,在阅读了一堆文章提到了不同的FFT输出缩放方法。我仍然发现FFT处理的这个方面到处都是没有文档的。我还没有找到任何可靠的来源来解释这些鳞片的用途,哪些科学领域或处理方法使用它们。
我还没有找到三种不同的标度,关于原始的FFT输出(复数的大小)。这意味着将它们乘以:1.1/numSamples2.2/numSamples3.1/sqrt(NumSamples) 4。
默认情况下,MathNet.IntegralTransforms.Fourier.Forward函数(根据网络上的各种帖子,也可能是Matlab和Maple)使用第三个函数。在我看来,这会在使用对数着色时产生更好的可分辨图形输出。
如果你能知道一些事情并分享你的想法,或者你能参考一篇很好的论文来解释这些问题,我还是会很感激的。
https://stackoverflow.com/questions/60288103
复制相似问题