我有一个长度为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 :(得分:2)
计算平均四个并显示它的方法肯定是有效的。但是,这对于平滑的&#34;数据,对于具有少量高峰的数据不太好。
考虑一种情况,当您的FFT返回大多数小数字时,20个峰值超过平均值大约十次。在应用您的方法后,峰值将保持不变,但它们将超过平均值仅2.5倍。换句话说,直方图将变得比它应该更平滑。
解决此问题的一种方法是选择四个调整后数字的最大值。这样可以保持完整的峰值。
答案 1 :(得分:0)
下采样的问题非常复杂,以至于有关于它的研究论文: Downsampling Time Series for Visual Representation 。
如果您要进行质量下采样,请使用a library并选择最大三角三个存储桶方法。