From c251937f9ffa40ee636c7ed62a6e18a28fc45a68 Mon Sep 17 00:00:00 2001 From: chunyexixiaoyu <834670833@qq.com> Date: Wed, 18 Aug 2021 21:28:34 +0800 Subject: [PATCH] APP_Framework/Framework/:complete sliding window mean_filter --- .../mean_filter/sliding_window_mean_filter.c | 25 +++++++++++++++++++ .../mean_filter/sliding_window_mean_filter.h | 10 ++++++++ 2 files changed, 35 insertions(+) diff --git a/APP_Framework/Framework/knowing/filter/mean_filter/sliding_window_mean_filter.c b/APP_Framework/Framework/knowing/filter/mean_filter/sliding_window_mean_filter.c index 530aa633a..50c4ed954 100644 --- a/APP_Framework/Framework/knowing/filter/mean_filter/sliding_window_mean_filter.c +++ b/APP_Framework/Framework/knowing/filter/mean_filter/sliding_window_mean_filter.c @@ -1 +1,26 @@ #include +void SlidingWindowsMeanFliterInit(SlidingWindowsHander * hander,unsigned int window_len) +{ + hander->window_len = window_len; + hander->sumlast = 0; + InitQueue(&(hander->window_queue)); +} + +int SlidingWindowsMeanFliterFun(SlidingWindowsHander * hander,int newvalue) +{ + int headtemf = 0; + if(QueueLength(&(hander->window_queue)) < hander->window_len) + { + EnQueue(&(hander->window_queue),newvalue); + hander->sumlast = hander->sumlast + newvalue; + return (int)((hander->sumlast)/(QueueLength(&(hander->window_queue)))); + } + else + { + DeQueue(&(hander->window_queue),&headtemf); + hander->sumlast = hander->sumlast - headtemf + newvalue; + EnQueue(&(hander->window_queue),newvalue); + return (int)((hander->sumlast)/(hander->window_len)); + } + +} \ No newline at end of file diff --git a/APP_Framework/Framework/knowing/filter/mean_filter/sliding_window_mean_filter.h b/APP_Framework/Framework/knowing/filter/mean_filter/sliding_window_mean_filter.h index 62534d780..5943a95a8 100644 --- a/APP_Framework/Framework/knowing/filter/mean_filter/sliding_window_mean_filter.h +++ b/APP_Framework/Framework/knowing/filter/mean_filter/sliding_window_mean_filter.h @@ -2,4 +2,14 @@ #define _SLIDING_WINDOW_MEAN_FILTER_H #include +typedef struct +{ + SqQueue window_queue; + unsigned int window_len; //the window_len value must less than MAXSIZE 1024 + long long int sumlast; +}SlidingWindowsHander; + + +void SlidingWindowsMeanFliterInit(SlidingWindowsHander * hander,unsigned int window_len); +int SlidingWindowsMeanFliterFun(SlidingWindowsHander * hander,int newvalue); #endif \ No newline at end of file