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

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

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

給大家介紹一種信號(hào)波峰波谷的檢測方法

FPGA之家 ? 來源:最后一個(gè)bug ? 作者:bug菌 ? 2022-07-15 09:11 ? 次閱讀

1、聊一聊

其實(shí)每個(gè)人在無助的時(shí)候都需要一句"Cry On My Shoulder!" 今天跟大家介紹一種波峰波谷的檢測方法,不是很難,不過能夠凸顯數(shù)學(xué)在編程算法中的重要作用。

2、正文部分

波峰波谷用處

對(duì)于信號(hào)波峰波谷識(shí)別在嵌入式領(lǐng)域應(yīng)該是非常廣泛的,因?yàn)榇蟛糠值男盘?hào)都處于一種時(shí)變的狀態(tài),信號(hào)在時(shí)域上處于一種類似于正弦波的波動(dòng)狀態(tài)。

比如計(jì)步軟件就是通過IMU模塊所采集的變化的波形狀態(tài)來識(shí)別波峰波谷,最終估算你所走過步數(shù);

poYBAGLQvuuAQc30AACT_VSdTeQ646.jpg

上圖顯示了一個(gè)典型的x-, y-和z-測量模式,對(duì)應(yīng)于一個(gè)跑步者的垂直,向前和側(cè)面加速度。無論如何佩戴計(jì)步器,至少有一個(gè)軸會(huì)有相對(duì)較大的周期性加速度變化,因此通過檢測其波峰波谷等算法即可對(duì)于檢測步行或跑步的單位周期至關(guān)重要。

poYBAGLQvwWAJnfoAACQItOSEpc614.jpg

還有在電力系統(tǒng)中的交流電壓電流,我們需要通過檢測波峰波谷來確定電壓電流在交流周期中的最大最小值,從而動(dòng)態(tài)調(diào)節(jié)系統(tǒng)參數(shù)來達(dá)到自適應(yīng)的目的,所以波峰波谷的檢測是非常有用的。

比較法識(shí)別

常規(guī)的設(shè)計(jì)辦法為比較法 : 其中x表示當(dāng)前采樣點(diǎn)

波峰:f(x) > f(x?1) 且 f(x) > f(x+1)

波谷:f(x) < f(x?1) 且 f(x) < f(x+1) ?

然而這樣識(shí)別對(duì)于沒有什么噪聲,且每個(gè)采樣點(diǎn)為不同的信號(hào)來說還是合適的,但在嚴(yán)苛的環(huán)境中還需要構(gòu)造更多的判斷條件來進(jìn)行一些錯(cuò)誤判斷的規(guī)避,終究還是麻煩了一些,并且容易遺漏。

差分識(shí)別

在學(xué)生階段我們就學(xué)習(xí)了導(dǎo)數(shù)的概念,如果一個(gè)函數(shù)一階導(dǎo)數(shù)左右異號(hào),那分別就是波峰或者波谷。而對(duì)于數(shù)字信號(hào)的處理通過采樣都會(huì)變成離散信號(hào),信號(hào)對(duì)時(shí)間的微分在離散域內(nèi)即為差分。 在進(jìn)行波形識(shí)別之前數(shù)據(jù)采集是必不可少的,其中最重要的是采樣速率和精度,以便從采樣信號(hào)中不失真的恢復(fù)原連續(xù)信號(hào)。(香農(nóng)采樣) 采樣的過程中由于電子器件的雜訊等,數(shù)據(jù)難免會(huì)引入噪聲,為了簡化識(shí)別算法一般都會(huì)進(jìn)行濾波處理,比如一些平滑處理等,然后才開始波峰波谷識(shí)別。

A、識(shí)別算法過程

1、獲得采樣點(diǎn)序列

2、進(jìn)行差分處理

3、由于不在乎具體的差分幅值,把所有數(shù)據(jù)歸一到-1,0,1

poYBAGLQvzmANzzcAAAS3AiVbH8693.jpg

4、差分值為0的點(diǎn)即為相同點(diǎn),如果使用比較法則峰值檢測可能失效,便需要更多的條件,而這里我們直接把相同點(diǎn)0置為前一個(gè)非0即可規(guī)避該問題。

poYBAGLQv0mAEs3MAAAWVIO10bM790.jpg

5、最終Diff再次進(jìn)行差分,-2/+2即為波峰/波谷。

poYBAGLQv2WADrY9AACkzNnKljM736.jpg


B、參考代碼

  1#include
  2#include
  3#defineSAMPLE_MAX20
  4#definePV_MAX10
  5
  6floatSample[SAMPLE_MAX]={1,2,3,4,4,4,5,2,1,0,0,5,1,0,0,1,2,3,4,0};
  7floatSampleDiff[SAMPLE_MAX]={0};
  8
  9typedefstruct_tag_FindPV
 10{
 11intPos_Peak[PV_MAX];//波峰位置存儲(chǔ)
 12intPos_Valley[PV_MAX];//波谷位置存儲(chǔ)
 13intPcnt;//所識(shí)別的波峰計(jì)數(shù)
 14intVcnt;//所識(shí)別的波谷計(jì)數(shù)
 15}SFindPV;
 16
 17SFindPVstFindPV;
 18
 19/********************************************
 20*Fuction:initialFindPV
 21*Note:初始化相關(guān)數(shù)據(jù)
 22*******************************************/
 23voidinitialFindPV(void)
 24{
 25intIndex=0;
 26
 27for(Index=0;Index0)
 54SampleDiff[i]=1;
 55elseif(Sample[i+1]-Sample[i]=0)
 69SampleDiff[i]=1;
 70else
 71SampleDiff[i]=-1;
 72}
 73else
 74{
 75if(SampleDiff[i+1]>=0)
 76SampleDiff[i]=1;
 77else
 78SampleDiff[i]=-1;
 79}
 80
 81}
 82}
 83
 84//step3:對(duì)相鄰相等的點(diǎn)進(jìn)行領(lǐng)邊坡度處理
 85for(i=0;iPos_Peak[pFindPV->Pcnt]=i+1;
 90pFindPV->Pcnt++;
 91}
 92elseif(SampleDiff[i+1]-SampleDiff[i]==2)//波谷識(shí)別
 93{
 94pFindPV->Pos_Valley[pFindPV->Vcnt]=i+1;
 95pFindPV->Vcnt++;
 96}
 97}
 98}
 99
100/********************************************
101*Fuction:main
102*Note:模擬查找波峰波谷
103*******************************************/
104intmain(intargc,char*argv[]){
105
106inti=0;
107
108initialFindPV();
109
110FindPV(&stFindPV,Sample);
111
112printf("Peak
");
113for(i=0;i

pYYBAGLQv4iAHceZAAArVu74LYY266.jpg

2、最后

當(dāng)然在實(shí)際的項(xiàng)目中為了更加穩(wěn)定的識(shí)別波峰波谷可能會(huì)對(duì)波峰波谷的出現(xiàn)特點(diǎn)進(jìn)行限制,從而進(jìn)一步減少誤識(shí)別,也有許多人使用數(shù)據(jù)擬合的辦法來識(shí)別波峰波谷,那么識(shí)別的準(zhǔn)確度就與所擬合的函數(shù)有關(guān),通過數(shù)學(xué)方法對(duì)所擬合函數(shù)進(jìn)行波峰波谷的求解,最終得到信號(hào)的波峰波谷,不過這樣的擬合過程對(duì)平臺(tái)的處理能力提出了一定的要求。



審核編輯:劉清

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

    關(guān)注

    5052

    文章

    18912

    瀏覽量

    300809
  • 正弦波
    +關(guān)注

    關(guān)注

    11

    文章

    632

    瀏覽量

    55135
  • 計(jì)步器
    +關(guān)注

    關(guān)注

    4

    文章

    76

    瀏覽量

    19879

原文標(biāo)題:信號(hào)波峰波谷二階差分識(shí)別算法

文章出處:【微信號(hào):zhuyandz,微信公眾號(hào):FPGA之家】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    請(qǐng)問buf602輸出為什么波峰波谷凹進(jìn)去了?

    buf602輸出為什么波峰波谷凹進(jìn)去了
    發(fā)表于 08-09 08:22

    在labview中如何檢測定時(shí)長的波峰波谷..

    如圖中 為實(shí)時(shí)采集的信號(hào),只看藍(lán)色部分,紅色的線為當(dāng)前時(shí)間線,如何設(shè)置個(gè)如圖的黑色的時(shí)間窗,實(shí)時(shí)觀測前面10ms內(nèi)的數(shù)據(jù),用以檢測黑色時(shí)間段的 波峰
    發(fā)表于 06-23 09:44

    請(qǐng)問如何精確計(jì)算這個(gè)電路電源輸出的波峰波谷

    請(qǐng)問各位專家,如何精確計(jì)算這個(gè)電路電源輸出的波峰波谷,比較器搭建的電路類似遲滯比較器,,但是比較器正端沒有串聯(lián)電阻,無法按照遲滯比較器的公式計(jì)算。困惑了很久
    發(fā)表于 12-17 13:47

    請(qǐng)問如何解決ADC AD77xx數(shù)據(jù)采集出來正弦波波峰波谷缺陷問題?

    版主在逛其他網(wǎng)站的時(shí)候,看到個(gè)ADC AD77XX數(shù)據(jù)采集出來正弦波波峰波谷缺陷的問題 ,分享過來,供大家參考~ 也歡迎各位大俠就此問題展開討論 差分正弦波輸入到AD77xx 采集(
    發(fā)表于 01-18 14:15

    基于LabVIEW8.2的信號(hào)處理方法

    法[6]、小波變換法[7,8]、神經(jīng)網(wǎng)絡(luò)法[8]等。這些方法各有所長,但還沒有一種堪稱完美。在數(shù)據(jù)分析過程中,這些方法都要對(duì)時(shí)域內(nèi)包括噪聲在內(nèi)的所有信號(hào)樣本點(diǎn)進(jìn)行
    發(fā)表于 04-17 09:40

    在DSP平臺(tái)下對(duì)多路交流信號(hào)采樣時(shí)采用的一種異步采樣方法介紹

    本文介紹一種在DSP平臺(tái)下對(duì)多路交流信號(hào)采樣時(shí)采用的一種異步采樣方法。
    發(fā)表于 04-02 07:01

    大家介紹一種PCB設(shè)計(jì)復(fù)用方法

    本文介紹一種PCB設(shè)計(jì)復(fù)用方法,它是基于Mentor Graphics的印制電路板設(shè)計(jì)工具Board Station進(jìn)行的。
    發(fā)表于 05-06 07:10

    大家介紹一種軟件修正方法

    本文介紹一種三軸正交型傳感器正交性的軟件修正方法。
    發(fā)表于 05-07 06:53

    介紹一種按鍵檢測電路

    介紹一種按鍵檢測電路
    發(fā)表于 01-18 07:41

    【Labview】識(shí)別標(biāo)記波峰波谷

    查找波形的波峰波谷,在信號(hào)分析選板查找 Waveform Peak Detection 函數(shù)功能塊,該函數(shù)輸入波形輸出和相關(guān)配置參數(shù),第個(gè)輸出是最值的所在位置數(shù)組,第二個(gè)是輸出最值
    發(fā)表于 10-27 21:43

    一種基于BP網(wǎng)絡(luò)的信號(hào)動(dòng)態(tài)檢測方法

    本文闡述了BP 網(wǎng)絡(luò)在信號(hào)處理領(lǐng)域的基本原理、方法和模型。文中指出了傳統(tǒng)信號(hào)檢測方法的局限性,并利用BP 網(wǎng)絡(luò)強(qiáng)大的學(xué)習(xí)、并行運(yùn)算能力和非線
    發(fā)表于 08-06 08:51 ?19次下載

    一種用CPLD實(shí)現(xiàn)視頻信號(hào)運(yùn)動(dòng)檢測方法

    摘要: 介紹一種采用CPLD外加SRAM存儲(chǔ)芯片,對(duì)ITU601格式數(shù)字視頻信號(hào)進(jìn)行運(yùn)動(dòng)檢測方法。在此基礎(chǔ)上,給出了
    發(fā)表于 06-20 14:31 ?729次閱讀
    <b class='flag-5'>一種</b>用CPLD實(shí)現(xiàn)視頻<b class='flag-5'>信號(hào)</b>運(yùn)動(dòng)<b class='flag-5'>檢測</b>的<b class='flag-5'>方法</b>

    一種多點(diǎn)脈搏信號(hào)檢測方法

    一種多點(diǎn)脈搏信號(hào)檢測方法:
    發(fā)表于 03-30 15:41 ?22次下載
    <b class='flag-5'>一種</b>多點(diǎn)脈搏<b class='flag-5'>信號(hào)</b><b class='flag-5'>檢測</b><b class='flag-5'>方法</b>

    信號(hào)波峰波谷的用處與檢測方法及實(shí)戰(zhàn)

    對(duì)于信號(hào)波峰波谷識(shí)別在嵌入式領(lǐng)域應(yīng)該是非常廣泛的,因?yàn)榇蟛糠值?b class='flag-5'>信號(hào)都處于一種時(shí)變的狀態(tài),信號(hào)在時(shí)
    的頭像 發(fā)表于 03-21 11:16 ?6646次閱讀
    <b class='flag-5'>信號(hào)</b><b class='flag-5'>波峰</b><b class='flag-5'>波谷</b>的用處與<b class='flag-5'>檢測</b><b class='flag-5'>方法</b>及實(shí)戰(zhàn)

    概述信號(hào)波峰波谷二階差分識(shí)別算法

    1、聊聊 其實(shí)每個(gè)人在無助的時(shí)候都需要句"Cry On My Shoulder!" ? ? 今天跟大家介紹一種
    的頭像 發(fā)表于 05-08 13:49 ?3721次閱讀
    概述<b class='flag-5'>信號(hào)</b><b class='flag-5'>波峰</b><b class='flag-5'>波谷</b>二階差分識(shí)別算法