C++关于平滑滤波的一种算法

  • Post author:
  • Post category:其他


#include <iostream>

using namespace std;

double in[16] = {0.0,1.0,2.0,3.0,4.0,5.0,6.0,7.0,8.0,9.0,10.0,11.0,87.0,78.0,3.0,3.0};

int n,i,l,x;

double temp;

void SmoothCurve(double* inArray,int inSize,double* outArray,int outSize,int windowSize)

{



temp=0;



i=0;



double* windows=new double[windowSize];



while(i<inSize)



{



x=0;



if(i<inSize-windowSize+1)



{



for(n=0;n<windowSize;n++)



{



windows[n]=inArray[n+i];



temp=windows[x]+temp;



x++;



}



outArray[i]=temp/windowSize;



}



i++;





temp=0;



}



delete[] windows;

}

int main()

{






double outArray[13]={0};



SmoothCurve(in,16,outArray,13,4);



for(int i=0;i<13;i++)cout<<outArray[i]<<“\t\t”;//\t为制表符,目的为隔开一点东西



cout<<std::endl;



/*temp=0;



i=0;



while(i<16)



{



x=0;



if(i<13)



{



for(n=0;n<4;n++)



{



windows[n]=in[n+i];



temp=windows[x]+temp;



x++;



}



cout <<temp/4 <<endl;



}



i++;






temp=0;



}*/



char response;



cin >> response;



return 0;

}