📄 f_med_filter.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 + -