我正在Xcode中编写一个应用程序。它正在收集传感器数据(陀螺仪),然后通过FFTW进行转换。最终,我将结果保存在一个数组中。在应用程序中,我正在绘制图形,但是峰值太多了(请参见红色图形),我希望能够平滑它。
我的数组:
double magnitude[S];
...
magnitude[i]=sqrt((fft_result[i][0])*(fft_result[i][0])+ (fft_result[i][1])*(fft_result[i][1]) );
一个示例数组(30个样本,通常我使用256个样本): “0.9261901713034604”, “2.436272348237486”, “1.618854900218465”, “1.849221286218342”, “0.8495016887742839”, “0.5716796354304043”, “0.4229791869017677”, “0.3731843430827401”, “0.3254446111798023”, “0.2542702545675339”, “0.25237940627189”, “0.2273716541964159”, “0.2012780334451323”, “0.2116151847259499”, “0.1921943719520009”, “0.1982429400169304”, “0.18001770452247”, “0.1982429400169304”, “0.1921943719520009”, “0.2116151847259499”, “0.2012780334451323”, “0.2273716541964159”, “0.25237940627189”, “0.2542702545675339”, “0.3254446111798023”, “0.3731843430827401”, “0.4229791869017677”, “0.5716796354304043”, “0.8495016887742839”, “1.849221286218342”
如何对其进行过滤/平滑?高斯滤波怎么样?有什么开始的想法,甚至是给我一个示例代码?感谢您的帮助!
最好的祝福
约瑟夫
i +(1/2)
的索引(如果这些代表时间或位置而不仅仅是序数,则更有意义)。 - Scott Hunteri
处的值与时间i+1
处的值求平均值,实际上计算的是时间i
处的平滑值,这可以解释为您预期的时间i和i+1之间的值(因此,是i+(1/2)
)。 - Scott Hunterfor (i = 0; i<S-1; i++)
。 - josef