2014-10-01 36 views
2

我有一個長度爲4096的數組它包含計算出的FFT的結果。 結果應顯示在窗口長度爲1024的情況下 如何將值從4096減少到1024並且結果保持正確。如何降低數組中的值?

這是一個好方法嗎?

int index = 0; 
for(int i = 0; i < 1024; i++){ 
        A = 0; 
        windowOffset = oldLength/1024; ---> 4096/1024 = 4 
        while(windowOffset > 0){  
         A += oldArray[index]; 
         windowOffset --; 
         index++      -----> index will go to 4096 
        } 
        newArray[i] =A/(blockSize/1024); ---- summ of 4 values/4 

       } 
+0

確保數組的限制 – 2014-10-01 09:49:27

+0

限制是可以的,但我需要知道的是下采樣的好方法。只是。 新值=(舊值[1] +舊值[2] +舊值[3] +舊值[1])/ 4 – vragolan 2014-10-01 09:52:07

回答

1

您的計算四個平均值並顯示它的方法當然是有效的。然而,這對於「平滑」數據是有利的,對於具有少量高峯的數據不太好。

考慮一種情況,當你的FFT返回大多數是小數字時,20個峯值超過平均值大約十倍。在應用您的方法後,峯值將保持不變,但它們只會超過平均值2.5倍。換句話說,直方圖會變得比本應該更平滑。

解決此問題的一種方法是選取四個調整數字的最大值。這會讓你完整保留峯。

+0

就是這樣!謝謝。我發現每個間隔的最大值,並繪製好:) – vragolan 2014-10-01 10:13:58