首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >默认情况下,Math.Net和alglib返回不同的FFT输出

默认情况下,Math.Net和alglib返回不同的FFT输出
EN

Stack Overflow用户
提问于 2020-02-18 19:24:50
回答 1查看 358关注 0票数 0

我正在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

  • ,他们的计算有什么不同?
  • ,我可以用什么函数将算法输出值转换成MathNet,反之亦然?
  • ,在什么情况下,我应该使用这些不同的“标度”?它们到底是做什么用的?

请分享你的知识。提前感谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-02-21 06:13:43

我自己解决了它,在阅读了一堆文章提到了不同的FFT输出缩放方法。我仍然发现FFT处理的这个方面到处都是没有文档的。我还没有找到任何可靠的来源来解释这些鳞片的用途,哪些科学领域或处理方法使用它们。

我还没有找到三种不同的标度,关于原始的FFT输出(复数的大小)。这意味着将它们乘以:1.1/numSamples2.2/numSamples3.1/sqrt(NumSamples) 4。

默认情况下,MathNet.IntegralTransforms.Fourier.Forward函数(根据网络上的各种帖子,也可能是Matlab和Maple)使用第三个函数。在我看来,这会在使用对数着色时产生更好的可分辨图形输出。

如果你能知道一些事情并分享你的想法,或者你能参考一篇很好的论文来解释这些问题,我还是会很感激的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60288103

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档