欧美性猛交xxxx免费看_牛牛在线视频国产免费_天堂草原电视剧在线观看免费_国产粉嫩高清在线观看_国产欧美日本亚洲精品一5区

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

滑動(dòng)窗口濾波器的原理與實(shí)現(xiàn)

CHANBAEK ? 來(lái)源:明解嵌入式 ? 作者:Sharemaker001 ? 2023-04-19 11:35 ? 次閱讀

前言

嵌入式開(kāi)發(fā)程序中涉及數(shù)據(jù)采樣如傳感器采樣,AD采樣等如果直接讀取信號(hào)后,將信號(hào)值直接參與后續(xù)邏輯處理,若程序無(wú)軟件濾波,會(huì)導(dǎo)致靜態(tài)或者動(dòng)態(tài)采樣時(shí):

1、信號(hào)曲線相對(duì)沒(méi)有那么平滑。

2、同時(shí)可能存在脈沖干擾導(dǎo)致邏輯判斷錯(cuò)誤。

在信號(hào)處理系統(tǒng)中,輸入信號(hào)通常含有各種噪聲和干擾。 為對(duì)信號(hào)進(jìn)行準(zhǔn)確的測(cè)量和控制,必須削弱或?yàn)V除被測(cè)信號(hào)中的噪聲和干擾。 因此在工程應(yīng)用需要使用軟件濾波,軟件濾波也稱數(shù)字濾波,是通過(guò)一定的算法削弱噪聲的影響。 在實(shí)際的開(kāi)發(fā)過(guò)程中使用了滑動(dòng)窗口濾波算法來(lái)對(duì)傳感器的數(shù)據(jù)采樣進(jìn)行濾波處理。

一、圖解滑動(dòng)窗口濾波器的原理

1、建立采樣窗口和濾波窗口,自定義各窗口長(zhǎng)度大小。

圖片

2、當(dāng)數(shù)據(jù)樣本點(diǎn)數(shù)未填滿采樣窗口,對(duì)采樣窗口內(nèi)的數(shù)據(jù)累加做平均值計(jì)算。

例如此時(shí)采樣窗口內(nèi)數(shù)據(jù)采樣點(diǎn)只有4個(gè),小于定義的采樣窗口長(zhǎng)度,則將4個(gè)值累加后再做平均值計(jì)算。

圖片

3、當(dāng)數(shù)據(jù)樣本點(diǎn)數(shù)已填滿采樣窗口,進(jìn)行冒泡排序后,去除n個(gè)最大值及最小值后,對(duì)濾波窗口內(nèi)的數(shù)據(jù)累加做平均值運(yùn)算。

例如此時(shí)采樣窗口內(nèi)數(shù)據(jù)采樣點(diǎn)有7個(gè),已填滿定義長(zhǎng)度大小的采樣窗口,則分別去除自定義的1個(gè)最大值和1個(gè)最小值后,對(duì)剩余濾波窗口內(nèi)的數(shù)據(jù)累加后再做平均值計(jì)算。

圖片

4、新的數(shù)據(jù)樣本到來(lái),移除采樣窗口中時(shí)間最早的點(diǎn)(FIFO),重復(fù)上述3操作。

圖片

二、滑動(dòng)窗口濾波器的特點(diǎn)

1、經(jīng)過(guò)濾波處理后,濾除了噪聲干擾,數(shù)據(jù)波動(dòng)穩(wěn)定平滑。

2、每采樣一個(gè)新數(shù)據(jù),就將最早采集的那個(gè)數(shù)據(jù)丟掉,因此每進(jìn)行一次采樣,就可計(jì)算出一個(gè)新的平均值,從而加快了數(shù)據(jù)處理的速度。

3、可以根據(jù)實(shí)時(shí)性的要求和需要濾波后數(shù)據(jù)的平滑度來(lái)設(shè)置采樣窗口和濾波窗口的大小。

4、當(dāng)采樣的數(shù)據(jù)量非常大時(shí),這時(shí)的采樣窗口會(huì)設(shè)置很大,那么窗口需要消耗一定的內(nèi)存空間。

5、當(dāng)采樣數(shù)據(jù)越多,數(shù)據(jù)實(shí)時(shí)性越差,當(dāng)數(shù)據(jù)突然發(fā)生較大變化時(shí),不能被立刻檢測(cè)到,無(wú)法及時(shí)處理突發(fā)事件。

三、滑動(dòng)窗口濾波器的C++代碼實(shí)現(xiàn)

1、基本思路

1、在工程根目錄下新建filter文件夾,將源文件filter.cpp和頭filter.h放在文件夾中供修改調(diào)用。

2、頭文件:

(1)定義濾波算法函數(shù)中的可修改宏值;

(2)聲明定義的濾波函數(shù)模板;

(3)使用extern的方式聲明實(shí)例化后的模板函數(shù)。

3、源文件:

(1)定義需要使用濾波算法的函數(shù)模板;

(2)在定義的函數(shù)模板后進(jìn)行函數(shù)實(shí)例化操作,通過(guò)這樣的方法實(shí)現(xiàn)具體的模板函數(shù)。

2、頭文件filter.h

#ifndef _FILTER_H_
#define _FILTER_H_


#define MAX_SENSOR_NUM 9   //使用濾波時(shí)的傳感器數(shù)量
#define MAX_DATA_NUM 9     //最大采樣點(diǎn)數(shù)量,即采樣窗口長(zhǎng)度
#define WINDOW_DATA_NUM 5  //濾波窗口長(zhǎng)度
//去除采樣窗口內(nèi)最大最小值的數(shù)量,這里去除兩個(gè)最大和兩個(gè)最小 
#define REMOVE_MAXMIN_NUM ((MAX_DATA_NUM - WINDOW_DATA_NUM)/2)  


//extern double m_dataList[MAX_SENSOR_NUM][MAX_DATA_NUM];


//聲明定義的函數(shù)模板
template<typename InType> InType Filter_SlidingWindowAvg(int index, InType data);
//使用extern的方式聲明實(shí)例化后的模板函數(shù),根據(jù)實(shí)際需要自定義數(shù)據(jù)類型
extern template short Filter_SlidingWindowAvg(int index, short data);
extern template unsigned int Filter_SlidingWindowAvg(int index, unsigned int data);


#endif

3、源文件filter.cpp

#include 
#include "Filter.h"


using namespace std;
//定義各個(gè)傳感器的數(shù)據(jù)采樣點(diǎn)列表
double m_dataList[MAX_SENSOR_NUM][MAX_DATA_NUM] = {0};
//滑窗均值濾波,使用函數(shù)模板可用于適配不同數(shù)據(jù)類型的采樣點(diǎn)
template<typename InType>
InType Filter_SlidingWindowAvg(int index, InType data)   
{
    static int dataNum[MAX_SENSOR_NUM] = {0}; //定義記錄傳感器的采樣點(diǎn)個(gè)數(shù)
    int i;
    double sum = 0;
    double out = 0;
    double array[MAX_DATA_NUM] = {0};

    //數(shù)據(jù)采樣點(diǎn)在采樣窗口內(nèi)移動(dòng),F(xiàn)IFO操作
    for(i = MAX_DATA_NUM - 2; i >= 0; i--)
        m_dataList[index][i+1] = m_dataList[index][i];

    m_dataList[index][0] = data;
    //數(shù)據(jù)采樣點(diǎn)數(shù)量小于采樣窗口長(zhǎng)度,對(duì)采樣窗口數(shù)據(jù)累加后進(jìn)行平均值運(yùn)算                                     
    if(dataNum[index] < MAX_DATA_NUM) 
    {
        dataNum[index]++;
        for(i = 0; i < dataNum[index]; i++)
        {
            sum += m_dataList[index][i];
        }
        out = sum / dataNum[index];
    }
    //數(shù)據(jù)采樣點(diǎn)已填滿采樣窗口,進(jìn)行排序后,去除n個(gè)最大值及最小值后,對(duì)濾波窗口內(nèi)的數(shù)據(jù)累加后進(jìn) 
    //行平均值運(yùn)算   
    else        
    {  
        for(i = 0; i < MAX_DATA_NUM; i++)
        {
            array[i] = m_dataList[index][i];
        }
        //利用C++標(biāo)準(zhǔn)庫(kù)的sort函數(shù)進(jìn)行排序,這里使用默認(rèn)的升序
        sort(array, array + MAX_DATA_NUM);

        int start = (MAX_DATA_NUM - WINDOW_DATA_NUM) / 2; //start = REMOVE_MAXMIN_NUM

        for(i = start; i < start + WINDOW_DATA_NUM; i++)
        {
            sum += array[i];
        }
        out = sum / WINDOW_DATA_NUM;
    }
    return out;
}


//對(duì)函數(shù)模板進(jìn)行函數(shù)實(shí)例化操作,根據(jù)實(shí)際需要自定義數(shù)據(jù)類型
template short Filter_SlidingWindowAvg(int index, short data);
template unsigned int Filter_SlidingWindowAvg(int index, unsigned int data);

四、滑動(dòng)窗口濾波器的C代碼實(shí)現(xiàn)

1、基本思路

1、在工程根目錄下新建filter文件夾,將頭filter.h和源文件filter.c放在文件夾中供修改調(diào)用。

2、頭文件:

(1)定義濾波算法函數(shù)中的可修改宏值;

(2)聲明定義的濾波算法函數(shù);

3、源文件:

(1)定義冒泡排序功能函數(shù);

(2)定義濾波算法功能函數(shù)。

2、頭文件filter.h

#ifndef _FILTER_H_
#define _FILTER_H_


#define MAX_SENSOR_NUM 9   //使用濾波時(shí)的傳感器數(shù)量
#define MAX_DATA_NUM 9     //最大采樣點(diǎn)數(shù)量,即采樣窗口長(zhǎng)度
#define WINDOW_DATA_NUM 5  //濾波窗口長(zhǎng)度
//去除采樣窗口內(nèi)最大最小值的數(shù)量,這里去除兩個(gè)最大和兩個(gè)最小 
#define REMOVE_MAXMIN_NUM ((MAX_DATA_NUM - WINDOW_DATA_NUM)/2)  


//extern double m_dataList[MAX_SENSOR_NUM][MAX_DATA_NUM];


//聲明定義的函數(shù)
double Filter_SlidingWindowAvg(int index, double data);


#endif

3、源文件filter.c

#include "Filter.h"


//定義各個(gè)傳感器的數(shù)據(jù)采樣點(diǎn)列表
double m_dataList[MAX_SENSOR_NUM][MAX_DATA_NUM] = {0};


//冒泡排序
void BubbleSort(int array[], int len)
{
    int temp;
    //外層循環(huán)控制排序的趟數(shù),n個(gè)元素排序需要循環(huán)n-1次
    for(int i=0; i

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 傳感器
    +關(guān)注

    關(guān)注

    2553

    文章

    51467

    瀏覽量

    756976
  • 嵌入式
    +關(guān)注

    關(guān)注

    5096

    文章

    19189

    瀏覽量

    308035
  • 濾波器
    +關(guān)注

    關(guān)注

    161

    文章

    7876

    瀏覽量

    179067
  • C++
    C++
    +關(guān)注

    關(guān)注

    22

    文章

    2114

    瀏覽量

    73895
  • AD采樣
    +關(guān)注

    關(guān)注

    0

    文章

    23

    瀏覽量

    16079
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    梳狀濾波器以及積分梳狀濾波器的FPGA實(shí)現(xiàn)

    作者:lee 在實(shí)現(xiàn)多級(jí)CIC濾波器前我們先來(lái)了解滑動(dòng)平均濾波器、微分、積分以及梳狀
    的頭像 發(fā)表于 11-21 09:57 ?5852次閱讀
    梳狀<b class='flag-5'>濾波器</b>以及積分梳狀<b class='flag-5'>濾波器</b>的FPGA<b class='flag-5'>實(shí)現(xiàn)</b>

    基于FPGA的多級(jí)CIC濾波器原理

    實(shí)現(xiàn)多級(jí)CIC濾波器前我們先來(lái)了解滑動(dòng)平均濾波器、微分、積分以及梳狀
    的頭像 發(fā)表于 12-03 11:55 ?5930次閱讀
    基于FPGA的多級(jí)CIC<b class='flag-5'>濾波器</b>原理

    數(shù)字濾波器的設(shè)計(jì)和實(shí)現(xiàn)

    濾波器設(shè)計(jì)是一個(gè)創(chuàng)建滿足指定濾波要求的濾波器參數(shù)的過(guò)程。濾波器實(shí)現(xiàn)包括濾波器結(jié)構(gòu)選擇和
    的頭像 發(fā)表于 10-31 10:38 ?1671次閱讀
    數(shù)字<b class='flag-5'>濾波器</b>的設(shè)計(jì)和<b class='flag-5'>實(shí)現(xiàn)</b>

    3*3窗口生成模塊,用于生成濾波滑動(dòng)窗口,得到窗口內(nèi)的所有元素?cái)?shù)據(jù)

    誰(shuí)有用Verilog寫(xiě)的3*3的模塊代碼,3*3窗口生成模塊,用于生成濾波滑動(dòng)窗口,得到窗口內(nèi)的所有元素?cái)?shù)據(jù)??煞穹窒硪幌拢x謝。誰(shuí)有代碼
    發(fā)表于 08-24 20:06

    有源濾波器中數(shù)字低通濾波器的設(shè)計(jì)及其DSP實(shí)現(xiàn)

    有源濾波器中數(shù)字低通濾波器的設(shè)計(jì)及其DSP實(shí)現(xiàn)摘要:介紹了基于瞬時(shí)無(wú)功功率理論的ip iq 諧波檢測(cè)方法及對(duì)低通濾波器的要求,分析討論了數(shù)字低通濾波
    發(fā)表于 05-13 17:19 ?90次下載

    滑動(dòng)濾波器型譜分析在極窄帶濾波中的應(yīng)用

    【摘 要】滑動(dòng)濾波器型譜分析是通過(guò)短時(shí)傅立葉變換來(lái)進(jìn)行實(shí)時(shí)譜分析的,本文詳細(xì)分析了其用作濾波器時(shí)的頻域特性。給出了極窄帶濾波器的具體
    發(fā)表于 05-22 20:46 ?1212次閱讀
    <b class='flag-5'>滑動(dòng)</b><b class='flag-5'>濾波器</b>型譜分析<b class='flag-5'>器</b>在極窄帶<b class='flag-5'>濾波</b>中的應(yīng)用

    詳細(xì)解析濾波器的定義,濾波器的特性,濾波器的工作原理,濾波器的分類,濾波器的典型電路原理圖

    濾波器的基礎(chǔ)是諧振電路,只要能構(gòu)成諧振電路組合就可實(shí)現(xiàn)濾波器。濾波器有4種基本原型,即低通濾波器、帶通
    發(fā)表于 05-03 16:20 ?1.8w次閱讀
    詳細(xì)解析<b class='flag-5'>濾波器</b>的定義,<b class='flag-5'>濾波器</b>的特性,<b class='flag-5'>濾波器</b>的工作原理,<b class='flag-5'>濾波器</b>的分類,<b class='flag-5'>濾波器</b>的典型電路原理圖

    通過(guò)滑動(dòng)平均濾波器解決數(shù)控系統(tǒng)加減速控制的跳變問(wèn)題

    本文通過(guò)在直線加減規(guī)劃之后,通過(guò)滑動(dòng)平均濾波器來(lái)解決加速度的跳變問(wèn)題,在不改變?cè)谐绦蚪Y(jié)構(gòu)的情況下,實(shí)現(xiàn)了和S形曲線等效的加減速效果。
    的頭像 發(fā)表于 04-29 08:30 ?4846次閱讀
    通過(guò)<b class='flag-5'>滑動(dòng)</b>平均<b class='flag-5'>濾波器</b>解決數(shù)控系統(tǒng)加減速控制的跳變問(wèn)題

    采用FPGA實(shí)現(xiàn)多級(jí)CIC濾波器的四倍抽取一

    實(shí)現(xiàn)多級(jí)CIC濾波器前我們先來(lái)了解滑動(dòng)平均濾波器、微分、積分以及梳狀
    發(fā)表于 06-22 10:35 ?3029次閱讀
    采用FPGA<b class='flag-5'>實(shí)現(xiàn)</b>多級(jí)CIC<b class='flag-5'>濾波器</b>的四倍抽取一

    高斯濾波器的原理和實(shí)現(xiàn)

    高斯濾波器是一種線性濾波器,能夠有效的抑制噪聲,平滑圖像。其作用原理和均值濾波器類似,都是取濾波器窗口內(nèi)的像素的均值作為輸出。
    發(fā)表于 09-01 11:09 ?8801次閱讀
    高斯<b class='flag-5'>濾波器</b>的原理和<b class='flag-5'>實(shí)現(xiàn)</b>

    空間濾波器matlab實(shí)現(xiàn)

    空間濾波器的調(diào)整取決于濾波器的類型,比如均值濾波器可以調(diào)整濾波器的大小,中值濾波器可以調(diào)整濾波器
    發(fā)表于 02-16 09:40 ?930次閱讀
    空間<b class='flag-5'>濾波器</b>matlab<b class='flag-5'>實(shí)現(xiàn)</b>

    高通濾波器和低通濾波器的關(guān)系

    高通濾波器和低通濾波器是互補(bǔ)的,它們可以組合使用,從而實(shí)現(xiàn)更復(fù)雜的濾波功能。例如,可以將高通濾波器和低通
    發(fā)表于 02-17 17:47 ?5116次閱讀

    腔體濾波器和介質(zhì)濾波器的區(qū)別

    腔體濾波器和介質(zhì)濾波器都是常見(jiàn)的微波濾波器,它們的主要區(qū)別在于工作原理和實(shí)現(xiàn)方式。
    發(fā)表于 02-27 11:44 ?4125次閱讀

    滑動(dòng)窗口算法技巧

    說(shuō)起滑動(dòng)窗口算法,很多讀者都會(huì)頭疼。這個(gè)算法技巧的思路非常簡(jiǎn)單,就是維護(hù)一個(gè)窗口,不斷滑動(dòng),然后更新答案么。LeetCode 上有起碼 10 道運(yùn)用
    的頭像 發(fā)表于 04-19 10:55 ?948次閱讀
    <b class='flag-5'>滑動(dòng)</b><b class='flag-5'>窗口</b>算法技巧

    emi濾波器是什么濾波器

    會(huì)對(duì)電子設(shè)備的正常工作產(chǎn)生影響,甚至導(dǎo)致設(shè)備損壞。因此,EMI濾波器在電子設(shè)備中具有非常重要的作用。 EMI濾波器的原理 EMI濾波器的基本原理是利用濾波器對(duì)電磁波進(jìn)行選擇性傳輸或阻斷
    的頭像 發(fā)表于 08-25 15:59 ?1293次閱讀