2014-06-27 62 views
1

進出口試圖實現類似discribed herehere,具體而言,我想能夠如下面的圖像中執行以下操作:如何使用DFT來近似函數?

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; 
    } 
    

和現在即時通訊卡,我如何使用輸出數組產生收斂點的原始數據數組中的作用?

只是爲了清除我想要的東西:例如在圖像中輸入到doDFT的數據數組是藍色的線圖,我想要的是產生一個函數f它的圖像是紅線圖。

+0

紅線似乎對應於信號的小頻率。你可以設置高頻率爲空(for(int i = 14; i francis

回答

2

您可能想要將複雜輸入的虛數分量設置爲零,而不是下一個點。

你想要的功能是sinusoids。每個正弦曲線將具有FFT結果庫索引* Fs/N的頻率。每個正弦曲線的幅度和相位將由與其FFT結果倉對應的複數值給出。

您可以總結越來越多的這些正弦波,從1開始,以獲得您的收斂波形。