【问题标题】:C# MathNet FFT DefinitionC# MathNet FFT 定义
【发布时间】:2017-10-04 04:08:03
【问题描述】:

我在从 MathNet 测试 FFT 时遇到一些问题: 这个想法是,如果我将 FFT 应用于高斯变量的特征函数,我应该找到高斯密度函数。

当我绘制 VectorFFT 时,该图看起来确实是一个密度函数,但在零时它没有值 1,它的值是 1.4689690914109。

缩放一定有问题。我在 Fourier.Inverse 中尝试了所有类型的 FourierOptions 以及 PI、2PI、sqrt(2PI) 的所有类型的除法/乘法,但没有给我密度函数中心的值 1。

另外,由于存在各种傅里叶变换及其逆变换的定义,我想知道哪个是由 MathNet 实现的,我在文档中找不到。

有什么想法吗?

public void DensityGaussian()
    {
        double eta = 0.1;   //step in discrete integral
        int pow2 = 256;     // N^2
        double mu = 0;      // centred gaussian
        double sigma = 1;   // with unitary variance

        //FFT
        double lambda = 2 * System.Math.PI / (pow2 * eta);
        double b = 0.5 * pow2 * lambda;

        Complex[] VectorToFFT = new Complex[pow2];
        for (int j = 0; j < pow2; j++)
        {
            double z = eta * j;

            if (z == 0) { z = 0.00000000000001; }

            VectorToFFT[j] = System.Numerics.Complex.Exp(new Complex(0, b * z));
            VectorToFFT[j] *= (System.Numerics.Complex.Exp(new Complex(
                              -sigma*sigma*z*z, mu * z))); //char function of gaussian
        }

        Fourier.Inverse(VectorToFFT, FourierOptions.NoScaling);

        //scaling
        for (int i = 0; i < pow2; i++)
        {
            VectorToFFT[i] /= (2 * System.Math.PI); //test
        }


        Console.WriteLine("Is density?");
        Assert.IsTrue(1 == 1);
    }

【问题讨论】:

  • FFT 实现了离散傅里叶变换。 DFT 与(连续)傅里叶变换不同。

标签: c# fft scaling probability-density mathnet-numerics


【解决方案1】:

Math.NET Numerics 支持所有常见的 DFT 定义,可通过 FourierOptions 标志枚举进行控制。它们本质上在指数和比例上有所不同。

FourierOptions docs 给出了一些关于选项如何影响有效定义的提示,主要是:

  • InverseExponent:在指数中使用负号(默认使用正号)。带有负号的突出实现是数字配方。
  • AsymmetricScaling/NoScaling:不是默认的对称缩放sqrt(1/N) 要么只在逆变换1/N 中缩放(如 Matlab),要么根本不缩放(如数值配方)。显然,无需缩放ifft(fft(x)) != x

也许Calculating a density from the characteristic function using fft in R 中的答案可以对特定用例有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-09-28
    • 1970-01-01
    • 2022-07-19
    • 2020-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多