如何使用DFT近似函数?

时间:2014-06-27 01:38:10

标签: java fft dft

我正在尝试实施类似于herehere的内容,具体来说,我希望能够执行以下操作,如下图所示:

enter image description here

也就是说,给定具有恒定时间间隔的N个离散点,我想创建一个收敛到这些点的函数,如图像中所示......

到目前为止,我所做的是:

  1. 导入jtransform
  2. 使用它

    private double[] doDFT(double[] data, int start, int end) {
        DoubleFFT_1D doubleFFT_1D = new DoubleFFT_1D(end-start);
        double[] array = new double[(end-start)*2];
        for (int i=0;i<end-start;i++) {
            array[i] = data[i+start];
            array[i+1] = data[i+start+1]; 
        }
        doubleFFT_1D.complexForward(array);
        return array;
    }
    
  3. 现在我卡住了,如何使用输出数组生成收敛到原始数据数组中的点的函数?

    只是为了清楚我想要的东西:例如在图像中输入到doDFT的数据数组是蓝线图,我想要的是产生一个函数f,它的图像是红线图。

1 个答案:

答案 0 :(得分:2)

您可能希望将复数输入的虚数组件设置为零,而不是下一点。

你想要的功能是正弦曲线。每个正弦波将具有FFT结果仓索引* Fs / N的频率。每个正弦波的幅度和相位将由与其FFT结果仓对应的复数值给出。

您可以从1开始对越来越多的这些正弦曲线求和,以获得收敛波形。