新聞中心

EEPW首頁 > 牛人業話含羞草myhanxiucao > 千算萬算,不如FFT變換

含羞草myhanxiucao前段時間,小外甥女家里出了一件大事。

本文引用地址:http://sharethedeen.com/article/201912/408433.htm

不知道是不是要進入青春期的緣故,本來成績挺好的小外甥女成績開始不明所以地直線下降,大姐和大姐夫很是著急,幾番談心下來,卻也覺察不出十二歲的小家伙有啥異常。

含羞草myhanxiucao是自己借口平時工作太忙,從來不輔導孩子做作業的緣故嗎?大姐心虛地捫心自問,可是轉念一想,之前也不曾輔導過的呀。是大姐夫成天不著家,四十來歲了還整天玩心不退,絲毫不管女兒的原因?應該也不是,這么多年不都這么過來了嗎?于是,大姐更是丈二和尚摸不著頭腦了。

直到有一天,大姐夫偷偷看了女兒的手機,上了她的QQ,才算是破了案。原來,有一個混賬小屁孩對自己的乖乖女發起了凌厲的愛情攻勢,這個十來歲的臭小子是女兒的同班同學,不知道從哪里學來的花言巧語,在QQ上面添油加醋加表情地向女兒表白,從女兒的回復來看,兩人似乎確立了“戀愛關系”。

看了不大會兒,大姐夫就血氣上涌,難以自持了,“他竟敢。。。”。憤懣不已的大姐夫叫來大姐商量了一通之后,兩人一致認為:

問題出在這萬惡的手機上!

然后他們拿出了針鋒相對的解決方案:跟那個小男孩家長談一談,嚴令他停止騷擾自己的女兒,同時最重要的,沒收女兒的手機!

不瞞各位,我聽說了這件雷人的事情之后,很是為外甥女感到悲哀。這兩口子的思路真的是很奇葩,出了這么大的事,不從根上找問題(父母是孩子的根),不怪自己嫌麻煩以及成天不著家不管孩子,反而怪罪“無善亦無惡,自性本無體”的手機!明明是自己不愿意付出時間和精力去關心孩子,卻把罪魁禍首栽在手機頭上。但是,手機何罪之有哉?

沒收手機當然很容易,但是,這樣就撲滅了女兒愛情的小火苗了嗎?解決方案固然簡單易行,但是能真正解決問題嗎?說白了,這是典型的避重就輕,為了回避繁難,故意對真相視而不見,是一種赤裸裸的自我欺騙!

含羞草myhanxiucao但是且慢,我們這些工程師在日常的工作中好像也是這么一個毛病。面對一個難題,明明知道病根在哪里,正確的解決方案應該是怎么樣的,但是因為害怕繁難,總是妄想著從枝節上縫縫補補,企圖通過簡單的方法蒙混過關。但是,萬法皆空因果不空,或遲或早,還是得跳進躲不掉的坑。

灑家就曾經歷過類似的事情。

1

說起來,這也是好幾年前的事情了。

當時的灑家三十出頭,意氣風發,一邊懷著熱騰騰的赤子之心報效國家,一邊帶著繞指的柔情掙錢養家。在公司任勞任怨的灑家,領導不給發錢只是一個勁兒地猛夸,還把大把的工作向我的肩上壓。這不,一個藍牙音頻設備的活就向我砸過來了呀!

在這個變化無窮的無情世界中,有情的人類通過發現規律、掌握規律指導自己征服世界、改造世界的實踐。其中有一條“二八定律”,特別反映了人類社會的運行規則。

含羞草myhanxiucao比如說,這個世界上80%的財富都掌握在20%的人手中,再比如,大部分人類組織中,都是20%的高手承擔著80%的實質性工作,大多數工作也是先花20%的時間完成其中的80%,然后再用80%的時間完成剩下20%的工作。

灑家這次也是這樣,不管它五五二十五,一頓操作猛如虎,不管它三七二十一,早點干完早休息,一個來月下來,這個藍牙音頻設備貌似就要快完工了。

直到我卡在了剩下20%的工作里。

2

光陰消漲,一身風霜,任誰來到這世上,都要跌跌撞撞。鮮衣怒馬,仗劍天涯,有時候一塊豆腐也會撞得你頭暈眼花。

含羞草myhanxiucao灑家撞上的這塊豆腐,是對聲音信號的采集與分析。

簡單來說吧,灑家這個音頻設備上有麥克風和喇叭,出廠前要對麥克風進行診斷,以確保它能正確地拾取聲音。大家都知道,人耳能聽到的聲音頻率區間是[20,20k]Hz,灑家就設計了一個方案,來判斷麥克風的有效性。

含羞草myhanxiucao具體過程為:產生一個1kHz的正弦信號,通過喇叭播放出來,麥克風拾取了聲音后,在芯片內部以一定的采樣頻率進行ADC轉換,然后,通過這些ADC數據判斷麥克風能不能正確地拾取聲音。

含羞草myhanxiucao熟悉信號與系統分析的同學們都知道,判斷一個固定頻率的正弦信號,最好的方式就是對時間域的信號進行傅里葉變換,然后在頻率域里做判斷,找出最大的頻率分量是不是1kHz,而且遠遠超過其它頻率分量就可以了。

含羞草myhanxiucao但是,人又是一個無比感性的動物,之于一往無前永不回頭的時間,我們愛恨交織,時而發出逝者如斯夫的慨嘆,時而感受著它的溫柔和歲月靜好的恬淡。

含羞草myhanxiucao所以,即便到了工程應用中,一開始也是寧可在熟悉的時間域里頭打轉轉。當然,更重要的一點是:信號與系統分析掌握起來比較難,上班多年,灑家早已經把相關的知識還給老師了:)

3

其實無論是在時間域里還是在頻率域里做分析,面臨的第一個問題便是聲音信號采集的問題。這部分倒也簡單,所選處理器支持聲音信號的采樣,采它!

至于采樣率的選擇,學過香農定理的同學肯定會搶答出來:聲音最高頻率20kHz,采樣率要大于最高頻率的兩倍,選擇44.1kHz準沒錯。

但是,藝高人膽大的灑家卻沒有這樣選,原因也很簡單,咱輸出的聲音信號是1kHz,選擇那么高的采樣率太消耗RAM資源了,灑家一拍腦門,選擇了8kHz。

含羞草myhanxiucao采樣之后的信號就是數字信號了,怎么處理呢?灑家帶著模糊的記憶想了想傅里葉變換,有些摸不著頭腦,于是便從時域下手了。

灑家是這樣想的:8kHz采樣率,每采八個點,便是一個周期了。每隔八個點判斷一下數據是否大致相等就可以了唄。

但是這么試了若干個周期,發現判斷結果時靈時不靈。灑家沉思片刻,便找到了答案。

在這個五濁的世界中,沒有任何一件事物是盡善盡美的,聲音信號也是如此。

含羞草myhanxiucao從喇叭輸出到空氣中的傳播,到麥克風的拾取,再到電路板上ADC采集電路中的干擾,本來純潔無瑕的聲音已經背負了太多的噪聲!

咋辦?灑家再度沉思片刻,又找到了取巧的辦法。

將采樣率提高,進行過采樣,比如提高到48kHz,然后每6個點進行平均值濾波,把噪聲濾除掉,然后將這6個點求出的平均值視為一個點,再按照上面的方法判斷。

這么試了好多個周期,雖然有時還是判斷失敗,但是效果確實好多了!

4

過采樣+平均值濾波確實有效,但還不是足夠有效,咋辦?

含羞草myhanxiucao通過傅里葉變換,在頻率域內分析當然是最有效的方案,但是這些知識都忘光了,又學不動咋辦?當我調侃著向領導匯報困難時,領導也帶著令人捉摸不定的微笑對我調侃道:干不出來,不給你發工作,到時你咋辦?

含羞草myhanxiucao咋辦,咋辦,領導的一句話把我逼上了梁山!

笨拙的人啊跌跌撞撞,總想投機取巧耍花槍,卻不曾想,誰的罪誰受誰的福誰享,不從根上解決問題,你能逃過“因果”的劍拔弩張?

當我真的把目光轉向傅里葉變換時,才發現問題比我想得要簡單。因為,在MCU中進行離散傅里葉變換,有快速運算算法,就是半個世紀前就問世的含羞草myhanxiucao,而這部分已經有了很成熟的代碼實現,匯編版本的,C版本的,C++版本的不一而足。

含羞草myhanxiucao這些代碼看不懂也沒關系,您可以先去測個智商,看看是不是沒到180:)

實際上,灑家也沒大看懂,把之前采集到的數據輸入到已有的算法庫里就行了。

在這里唯一要注意的一點是,含羞草myhanxiucao進行的是占位運算,即輸入時間域信號,輸出頻率域信號,輸出數據直接存在了輸入數據的地址空間上。作判斷時,也很簡單,只需要知道哪個數據對應著1kHz的頻率分量就可以了。

就以我這個應用為例,8kHz采樣率,采了128個點做運算,經過FFT運算之后,第一個數據便是8kHz/128,第二個數據是16kHz/128,。。。相應地,第16個數據便是1kHz頻率分量的幅值。

就這樣,搞清楚了DFT和FFT的原理之后,問題輕松解決了!

后記

含羞草myhanxiucao根據灑家多年的觀察,國內的電子工程師普遍動手能力強,但是理論基礎差。本該掌握電子電路、電磁場、信號處理這三大類課程的電子信息類專業工程師,在日常的實踐中,只會拿著電子電路這一板斧揮舞,大家伙都把后兩部分尤其是信號處理自覺地屏蔽掉了。

含羞草myhanxiucao究其原因,還是因為從難度上來比較,電子電路更容易掌握一些而已。電磁場和信號處理都涉及到數學物理這些比較燒腦的學科,大部分工程師為了挽救自己不斷后移的發際線,都自動自覺地把它們忘卻了。

但是,問題就在那里,不來也不去,沒有多方位全面的知識點以及對待問題的多個視角,你就很難從根上把問題解決掉。

再者,從本質上看,知識沒有難易之分,難不難存乎一心,只要下心學,還有學不會的?



關鍵詞: FFT 信號分析
分享給小伙伴們:

評論


相關推薦

技術專區

關閉