您的位置 首页 ADAS

千算万算,不如FFT改换

前段时间,小外甥女家里出了一件大事。不知道是不是要进入青春期的缘故,本来成绩挺好的小外甥女成绩开始不明所以地直线下降,大姐和大姐夫很是着急,几番谈心下来,却也觉察不出十二岁的小家伙有啥异常。是自己借口

前段时刻,小外甥女家里出了一件大事。

不知道是不是要进入青春期的原因,原本成果挺好的小外甥女成果开端不明所以地直线下降,大姐和大姐夫很是着急,几番谈心下来,却也察觉不出十二岁的小家伙有啥反常。

是自己托言平常作业太忙,从来不教导孩子做作业的原因吗?大姐心虚地抚躬自问,可是转念一想,之前也不曾教导过的呀。是大姐夫成天不着家,四十来岁了还整天玩心不退,一点点不论女儿的原因?应该也不是,这么多年不都这么过来了吗?所以,大姐更是丈二和尚摸不着头脑了。

直到有一天,大姐夫悄悄看了女儿的手机,上了她的QQ,才算是破结案。原本,有一个混账小屁孩对自己的乖乖女发起了凌厉的爱情攻势,这个十来岁的臭小子是女儿的同班同学,不知道从哪里学来的甜言蜜语,在QQ上面添枝加叶加表情地向女儿表达,从女儿的回复来看,两人如同确立了“爱情联系”。

看了不大会儿,大姐夫就血气上涌,难以自我克制了,“他胆敢。。。”。愤激不已的大姐夫叫来大姐商量了一通之后,两人共同以为:

问题出在这万恶的手机上!

然后他们拿出了互不相让的处理计划:跟那个小男孩家长谈一谈,严令他中止打扰自己的女儿,一起最重要的,没收女儿的手机!

不瞒各位,我听说了这件雷人的作业之后,很是为外甥女感到悲痛。这两口子的思路真的是很奇葩,出了这么大的事,不从根上找问题(爸爸妈妈是孩子的根),不怪自己嫌费事以及成天不着家不论孩子,反而见怪“无善亦无恶,自性本无体”的手机!分明是自己不愿意支付时刻和精力去关怀孩子,却把元凶巨恶栽在手机头上。可是,手机何罪之有哉?

没收手机当然很简略,可是,这样就熄灭了女儿爱情的小火苗了吗?处理计划当然简略易行,可是能真实处理问题吗?说白了,这是典型的避实就虚,为了逃避烦难,成心对本相视若无睹,是一种光秃秃的自我诈骗!

可是且慢,咱们这些工程师在日常的作业中如同也是这么一个缺点。面对一个难题,分明知道病根在哪里,正确的处理计划应该是怎样样的,可是由于惧怕烦难,总是妄想着从枝节上缝缝补补,妄图通过简略的办法蒙混过关。可是,万法皆空因果不空,或迟或早,仍是得跳进躲不掉的坑。

洒家就曾经历过相似的作业。

1

说起来,这也是好几年前的作业了。

其时的洒家三十出面,神采飞扬,一边怀着热腾腾的赤子之心报效国家,一边带着绕指的柔情赚钱养家。在公司勤勤恳恳的洒家,领导不给发钱仅仅一个劲儿地猛夸,还把大把的作业向我的肩上压。这不,一个蓝牙音频设备的活就向我砸过来了呀!

在这个变化不断的无情国际中,有情的人类通过发现规矩、把握规矩辅导自己降服国际、改造国际的实践。其间有一条“二八规律”,特别反映了人类社会的运转规矩。

比方说,这个国际上80%的财富都把握在20%的人手中,再比方,大部分人类安排中,都是20%的高手承担着80%的实质性作业,大多数作业也是先花20%的时刻完结其间的80%,然后再用80%的时刻完结剩余20%的作业。

洒家这次也是这样,不论它五五二十五,一顿操作猛如虎,不论它三七二十一,早点干完早歇息,一个来月下来,这个蓝牙音频设备形似就要快竣工了。

直到我卡在了剩余20%的作业里。

2

年月消涨,一身风霜,任谁来到这世上,都要跌跌撞撞。鲜衣怒马,仗剑天边,有时候一块豆腐也会撞得你头晕眼花。

洒家撞上的这块豆腐,是对声响信号的收集与剖析。

简略来说吧,洒家这个音频设备上有麦克风和喇叭,出厂前要对麦克风进行确诊,以保证它能正确地拾取声响。咱们都知道,人耳能听到的声响频率区间是[20,20k]Hz,洒家就规划了一个计划,来判别麦克风的有用性。

详细进程为:发生一个1kHz的正弦信号,通过喇叭播映出来,麦克风拾取了声响后,在芯片内部以必定的采样频率进行ADC转化,然后,通过这些ADC数据判别麦克风能不能正确地拾取声响。

了解信号与系统剖析的同学们都知道,判别一个固定频率的正弦信号,最好的办法就是对时刻域的信号进行傅里叶变换,然后在频率域里做判别,找出最大的频率重量是不是1kHz,并且远远超越其它频率重量就能够了。

可是,人又是一个无比理性的动物,之于一往无前永不回头的时刻,咱们爱恨交织,时而宣布逝者如斯夫的慨叹,时而感受着它的温柔软年月静好的淡泊。

所以,即使到了工程使用中,一开端也是宁可在了解的时刻域里头打转转。当然,更重要的一点是:信号与系统剖析把握起来比较难,上班多年,洒家早现已把相关的常识还给教师了:)

3

其实无论是在时刻域里仍是在频率域里做剖析,面对的第一个问题就是声响信号收集的问题。这部分倒也简略,所选处理器支撑声响信号的采样,采它!

至于采样率的挑选,学过香农定理的同学肯定会抢答出来:声响最高频率20kHz,采样率要大于最高频率的两倍,挑选44.1kHz准没错。

可是,艺高人胆大的洒家却没有这样选,原因也很简略,咱输出的声响信号是1kHz,挑选那么高的采样率太耗费RAM资源了,洒家一拍脑门,挑选了8kHz。

采样之后的信号就是数字信号了,怎样处理呢?洒家带着含糊的回忆想了想傅里叶变换,有些摸不着头脑,所以便从时域下手了。

洒家是这样想的:8kHz采样率,每采八个点,就是一个周期了。每隔八个点判别一下数据是否大致持平就能够了呗。

可是这么试了若干个周期,发现判别成果时灵时不灵。洒家深思顷刻,便找到了答案。

在这个五浊的国际中,没有任何一件事物是一无是处的,声响信号也是如此。

从喇叭输出到空气中的传达,到麦克风的拾取,再到电路板上ADC收集电路中的搅扰,原本纯真无瑕的声响现已担负了太多的噪声!

咋办?洒家再度深思顷刻,又找到了取巧的办法。

将采样率进步,进行过采样,比方进步到48kHz,然后每6个点进行平均值滤波,把噪声滤除去,然后将这6个点求出的平均值视为一个点,再按照上面的办法判别。

这么试了好多个周期,尽管有时仍是判别失利,可是作用的确好多了!

4

过采样+平均值滤波的确有用,但还不是满足有用,咋办?

通过傅里叶变换,在频率域内剖析当然是最有用的计划,可是这些常识都忘光了,又学不动咋办?当我戏弄着向领导报告困难时,领导也带着令人捉摸不定的浅笑对我戏弄道:干不出来,不给你发作业,届时你咋办?

咋办,咋办,领导的一句话把我逼上了梁山!

蠢笨的人啊跌跌撞撞,总想投机取巧耍花枪,却不曾想,谁的罪谁受谁的福谁享,不从根上处理问题,你能逃过“因果”的一触即发?

当我真的把目光转向傅里叶变换时,才发现问题比我想得要简略。由于,在MCU中进行离散傅里叶变换,有快速运算算法,就是半个世纪前就面世的FFT,而这部分现已有了很老练的代码完成,汇编版别的,C版别的,C++版别的不胜枚举。

这些代码看不懂也没联系,您能够先去测个智商,看看是不是没到180:)

实际上,洒家也没大看懂,把之前收集到的数据输入到已有的FFT算法库里就行了。

在这里仅有要注意的一点是,FFT进行的是占位运算,即输入时刻域信号,输出频率域信号,输出数据直接存在了输入数据的地址空间上。作判别时,也很简略,只需要知道哪个数据对应着1kHz的频率重量就能够了。

就以我这个使用为例,8kHz采样率,采了128个点做运算,通过FFT运算之后,第一个数据就是8kHz/128,第二个数据是16kHz/128,。。。相应地,第16个数据就是1kHz频率重量的幅值。

就这样,搞清楚了DFT和FFT的原理之后,问题轻松处理了!

跋文

依据洒家多年的调查,国内的电子工程师遍及着手能力强,可是理论基础差。本该把握电子电路、电磁场、信号处理这三大类课程的电子信息类专业工程师,在日常的实践中,只会拿着电子电路这一板斧挥舞,咱们伙都把后两部分尤其是信号处理自觉地屏蔽掉了。

究其原因,仍是由于从难度上来比较,电子电路更简略把握一些罢了。电磁场和信号处理都涉及到数学物理这些比较烧脑的学科,大部分工程师为了抢救自己不断后移的发际线,都主动自觉地把它们忘却了。

可是,问题就在那里,不来也不去,没有多方位全面的常识点以及对待问题的多个视角,你就很难从根上把问题处理掉。

再者,从本质上看,常识没有难易之分,难不难存乎一心,只需下心学,还有学不会的?

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/qiche/adas/114455.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部