⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 f_med_filter.c

📁 数字滤波算法; 中间位置算法 算术平均值算法
💻 C
字号:
void  F_Med_Filter(double *ArrayData,int PointNum,int FilterSignal)
{ 
    double  MedAry[6],FAData[4000],TValue;
    int i,j,k,jj;
    if(FilterSignal==4)
      TValue = 3;
    else if(FilterSignal==2)
      TValue = 200;
    else
      TValue = 50;
      
      //中位置滤波算法
    for(i=0;i<PointNum - 2;i++)
    {
        for(j=i-2;j<=i+2;j++)
        {
           if(j>=0&&j<PointNum)
              MedAry[j-i+2] = *(ArrayData+j);
           else
              MedAry[j-i+2] = *(ArrayData+i);
        }
        for(jj=0;jj<2;jj++)
        {
           k=F_GetArrayMinValueDPos(MedAry,0,5);
           MedAry[k] = 999999.99;
        }
        k=F_GetArrayMinValueDPos(MedAry,0,5);

        if(*(ArrayData+i)<=TValue)  //保持尖峰
           *(ArrayData+i) = MedAry[k];
    }
    
    
    //算术平均算法
    	double MedAry[10];Total;Aver
     for(i=0;i<PointNum - 4;i++)
    {
        for(j=i-4;j<=i+4;j++)
        {
           if(j>=0&&j<PointNum)
              MedAry[j-i+4] = *(ArrayData+j);
           else
              MedAry[j-i+4] = *(ArrayData+i);
        }
        Total = 0;
        for(jj=0;jj<10;jj++)
        {
          Total = Total + MedAry[jj];
        }
        Aver = Total/9;

        if(*(ArrayData+i)<=TValue)  //保持尖峰
           *(ArrayData+i) = Aver;
    }
  
 
    
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -