double medium(double num1,double num2,double num3) //中位数
{
double array1[3]={num1,num2,num3},a,med;
int i,j;
for (i=0;i<2;i++){
for (j=0;j<2-i;j++){
if (array1[j]>array1[j+1]){
a=array1[j];
array1[j]=array1[j+1];
array1[j+1]=a;
}
}
}
med=array1[1];
return med;
}
int main()
{
double init[]={1.8,1.5,1.1,0.5,0.9,1.1,1.4,1.8,2.3,2.8,2.4,2.1,1.6,1.4,1.1};
int length=sizeof(init)/sizeof(init[0]),i;
double process1[length],process2[length];
for (i=0;i<length;i++){
if (i==0 || i==length-1){
process1[i]=init[i];
process2[i]=init[i];
}
else{
process1[i]=(init[i-1]+init[i]+init[i+1])/3;
process2[i]=medium(init[i-1],init[i],init[i+1]);
}
}
printf("均值平滑滤波为:");
for (i=0;i<length;i++){
printf("%.2f",process1[i]);
if (i!=length-1){
printf(",");
}
else{
printf("\n");
}
}
printf("中值滤波为:");
for (i=0;i<length;i++){
printf("%.2f",process2[i]);
if (i!=length-1){
printf(",");
}
}
return 0;
}