C# 通过零填充或欺骗提高fft分辨率

C# 通过零填充或欺骗提高fft分辨率,c#,fft,aforge,C#,Fft,Aforge,嗨,伙计们,我在寻找一种方法,以便将频率分辨率提高一倍或四倍,我发现了,并问了如下问题: 我用一个零填充一个数组,两个零之间的一个值将使我的频率分辨率加倍,而我的输出箱将与我的实际代码相差一半,因此,将我的零数量加倍,会使我的频率分辨率增加四倍吗 我认为可以提高频率分辨率的另一种方法是修改Aforge代码,直到昨天我发现这个区域时才知道这一点: private const int minLength = 2; private const int max

嗨,伙计们,我在寻找一种方法,以便将频率分辨率提高一倍或四倍,我发现了,并问了如下问题:

我用一个零填充一个数组,两个零之间的一个值将使我的频率分辨率加倍,而我的输出箱将与我的实际代码相差一半,因此,将我的零数量加倍,会使我的频率分辨率增加四倍吗

我认为可以提高频率分辨率的另一种方法是修改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值加倍或四倍,它不会因为位操作或其他操作而给我一个奇怪的结果或错误吗

我没有复制整个代码,因为我认为这不合适,但是如果你需要它,尽管你可以在哪里下载,请告诉我

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


提前感谢。

使用更长FFT的零填充数据并不能真正提高频率分辨率,因为它能够分离密集的频率峰值。它只是从相同分辨率的频谱中插入额外的点,以使频率图看起来更平滑,并且可能使一些插值的图点更接近感兴趣的频率

但零填充和高质量插值没有什么不同