C++实现一维数组的移动均值滤波

📅 2026/7/15 15:58:55
C++实现一维数组的移动均值滤波
C实现一维数组的移动均值滤波(Moving Average Filter)移动平均滤波是一种简单的滤波方法其核心思想是用数据序列中的若干个连续数据的平均值来代替该范围内的原始数据。这样可以减少噪声的影响同时保留数据的趋势。移动平均滤波的步骤如下确定滤波窗口大小即要取多少个数据进行平均将窗口对准数据序列的第一个数据点计算该窗口内数据的平均值并将该平均值放置于窗口中心的位置移动窗口计算下一个数据点的平均值重复步骤2。C完整代码为#includeiostream#includeiomanip#includemath.husingnamespacestd;intmain(){inti0,j0;doubletemp0.0;doubledata[]{1,2.2,3,4,5.1,6,7,8,8.9,10,11,12,13.2,14,15,16,17.1,17.9,19,20};doubledata_temp[]{1,2.2,3,4,5.1,6,7,8,8.9,10,11,12,13.2,14,15,16,17.1,17.9,19,20};intsizesizeof(data)/sizeof(data[0]);// 移动平均滤波intkill3;intNum1;for(i(kill-1)/2;i(size-(kill-1)/2);i){Num1;tempdata[i];for(j1;j(kill/2);j){tempdata_temp[ij];tempdata_temp[i-j];Num2;}data[i]temp/Num;}for(i0;i(kill-1)/2;i){temp0;Num0;for(j0;ji1;j){tempdata_temp[j];Num;}data[i]temp/Num;}for(i(size-(kill-1)/2);isize;i){temp0;Num0;for(j0;jsize-i1;j){tempdata_temp[ij];Num;}data[i]temp/(Num-1);}for(i0;isize;i)coutdata[i]endl;return0;}