我有一个长度为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
}
您计算四个平均值并显示它的方法肯定是有效的。但是,这对于“平滑”数据很有用,而对于具有少量高峰值的数据则不太好。
考虑一种情况,当您的FFT返回的数字很少时,有20个峰值超过平均值大约十倍。应用您的方法后,峰会保留,但仅超过平均值2.5倍。换句话说,直方图将变得比原本应该平滑得多。
解决此问题的一种方法是选择四个调整数字的最大值。这样可以保留完整的峰。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句