中位值滤波程序,非常有用

更新时间:2023-05-15 18:20:01 阅读量: 实用文档 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

中位值滤波程序,非常有用

////////////////////////中位值滤波///////////////////////// #define N 11 //N值可根据实际情况调#define N 11 //N值可根据实际情况调整

char filter() { char value_buf[N]; char count,i,j,temp; for (count=0;count<N;count++) { value_buf[count]=get_ad(); //获取采样值 delay(); } for(j=0;j<N-1;j++) //采样值由小到大排列,排序采用冒泡法 { for(i=0;i<N-j;i++) { if(value_buf[i]>value_buf[i+1]) { temp=value_buf[i]; value_buf[i]=value_buf[i+1]; value_buf[i+1]=temp; } } } return value_buf[(N-1)/2]; //取中间值 } ///////////////////////算术平均滤波////////////////////// #define N 12 char filter() { int sum=0; for(count=0;count<N;count++) { sum+=get_ad(); delay(); } return (char)(sum/N); } ////////////////去极值平均滤波 //////////////////////

int sum=0; char filter() { char value_buf[N]; char count,i,j,temp; for(count=0;count<N;count++) { value_buf[count]=get_ad(); //获取采样值 delay(); } for(j=0;j<N-1;j++) //采样值由小到大排列,排序采用冒泡法 { for(i=0;i<N-j;i++) { if(value_buf[i]>value_buf[i+1]) { temp=value_buf[i]; value_buf[i]=value_buf[i+1]; value_buf[i+1]=temp; } } }

for(count=1;count<(N-1);count++) //去掉第一个和末一个数

{ sum+=value_buf[count]; delay(); } return (char)(sum/(N-2)); } /////////移动平均滤波(递推平均滤波)/////////// #define N 12 char value_buf[N]; char i=0; char filter() { char count;

int sum=0;

中位值滤波程序,非常有用

value_buf[i]=get_ad(); i++; if(i=N) { i=0; } for(count=0;count<N;count++) { sum+=value_buf[count]; } return (char)(sum/N) } //////////////////////加权平均滤波/////////////////////// #define N 12 char code jq[N]={1,2,3,4,5,6,7,8,9,10,11,12};//加权系数

char code sum_jq=1+2+3+4+5+6+7+8+9+10+11+12; char filter() { char count; char value_buf[N]; int sum=0; for(count=0;count<N;count++) { value_buf[count]=get_ad(); //获

取采样值

delay(); } for(count=0;count<N;count++) { sum+=value_buf[count]*jq[count]; } return (char)(sum/sum_jq); }

//本人自做的完整程序

#include<stdio.h> #include<malloc.h> int i=3,j,temp,len; int *a; int main()

{ while(1) { printf("你要排序的数的个数为:\nlen="); scanf("%d",&len); printf("请输入%d个待排序的数:(数与数之间用空格隔开)\n",len); a=(int *)malloc(len*sizeof(int)); for(i=0;i<len;i++) scanf ("%d,",&a[i]); for(j=0;j<len;j++)

for (i=0;i<len-j;i++) if (a[i]>a[i+1]) {

temp=a[i]; a[i]=a[i+1]; a[i+1]=temp; } printf("数据从小到大排序结果是:"); for(i=0;i<len;i++) printf("%d,",a[i]);

printf("\n"); } }

本文来源:https://www.bwwdw.com/article/fny4.html

Top