通过零填充或欺骗Aforge增加fft分辨率

时间:2013-08-02 04:21:06

标签: c# fft aforge

大家好我正在寻找一种方法,以便将频率分辨率提高一倍或四倍,我发现THIS QUESTION并问了类似这样的事情:

“我认为零填充数组(两个零之间的一个值)会使我的频率分辨率加倍(我的输出分档将与实际代码相差一半),因此,将零的数量加倍,会使我的频率分辨率翻两番吗?

我认为我可以提高频率分辨率的另一种方法是修改Aforge代码,直到昨天我发现这个区域时才知道的事情:

    private const int       minLength   = 2;
    private const int       maxLength   = 16384;
    private const int       minBits     = 1;
    private const int       maxBits     = 14;
    private static int[][]  reversedBits = new int[maxBits][];
    private static Complex[,][] complexRotation = new Complex[maxBits, 2][];

如果我将maxLength和maxBits值加倍或四倍,它会不会因为位操作或其他操作而给我一个奇怪的结果或错误?

我没有复制整个代码,因为y认为这是不合适的,但是如果你需要它,请告诉我,尽管here is the website你可以下载它。

那么,最可靠和/或最有效的方式是什么?

提前致谢。

1 个答案:

答案 0 :(得分:0)

使用较长FFT的零填充数据并不能真正提高频率分辨率(如分隔紧密间隔的频率峰值的能力)。它只是插入来自相同分辨率光谱的附加点,以允许频率图看起来更平滑,并且可能使一些插值绘图点更接近感兴趣的频率。

但零填充与高质量插值没有区别。