搜索
bottom↓
回复: 25

想用FFT搞一个音频频谱显示,但对FFT的计算步骤搞不懂,请熟悉这方面的高手指点指点,

[复制链接]

出0入0汤圆

发表于 2009-9-2 15:15:39 | 显示全部楼层 |阅读模式
如题

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

发表于 2009-9-2 16:59:06 | 显示全部楼层
以下为个人见解:
想搞FFT,首先要搞清楚DFT.FFT是由DFT演化而来.
对于DFT,举个例子:

利用单片机的ADC隔一定时间采一次样,假设一秒采了8次,并依次放入数组adc[8]中.
先要做一个正弦表和一个余弦表:把360度进行8等分,计算正弦值和余弦值,分别放入sintable[8],costable[8];
假设数据的实部放进sb[8],虚部放进xb[8].由于ADC得到的是实数,那么:
sb[n]=(adc[0]*costable[(0*n)%8])+(adc[1]*costable[(1*n)%8])+...+(adc[7]*costable[(1*n)%8]);
xb[n]=(adc[0]*sintable[(0*n)%8])+(adc[1]*sintable[(1*n)%8])+...+(adc[7]*sintable[(1*n)%8]);
总结一下,sb[n],xb[n],在查表的时候就是每n个位置查一次.
也就是说,把8个点与一个周期(即1HZ)的正\余弦信号相乘,得到sb[1],xb[1].
................与两个周期(即2HZ)的正\余弦信号相乘,得到sb[2],xb[2].

之后,把sb[],xb[]的平方根算出来就得到对应的模值mz[n]=sqrt(sb[n]*sb[n]+xb[n]*xb[n]),这个数组mz[n]好像就叫功率谱,反应了信号中各个频率的功率.

出0入0汤圆

发表于 2009-9-2 17:04:53 | 显示全部楼层
使用三角函数,样本少的时候可以不用FFT.

出0入0汤圆

发表于 2009-9-2 18:58:05 | 显示全部楼层
如果只对一个频率的话,直接DFT即可,用1楼的,带入即可

出0入0汤圆

发表于 2009-9-2 19:45:17 | 显示全部楼层
标记 DFT

出0入0汤圆

发表于 2009-9-2 20:24:58 | 显示全部楼层
非要用数字的吗? 通道数少的话,用模拟的带通滤波器,应该也是没有问题的吧。

出0入4汤圆

发表于 2009-9-2 20:30:06 | 显示全部楼层
mark

出0入0汤圆

 楼主| 发表于 2009-9-3 09:01:15 | 显示全部楼层
谢谢!

出0入0汤圆

发表于 2010-1-9 19:03:24 | 显示全部楼层
MARK

出0入0汤圆

发表于 2010-4-18 18:00:00 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-4-18 19:51:59 | 显示全部楼层
我也很想知道,希望大虾们指导一下~!

出0入0汤圆

发表于 2010-4-18 21:26:52 | 显示全部楼层
有详细例子吗

出0入0汤圆

发表于 2010-4-18 22:03:37 | 显示全部楼层
一直也对这个问题困惑,多谢一楼的兄弟,看了你的解释后有点感觉。

那FFT是不是有更快的算法,能继续解释一下吗,要是用dft,单片机会很痛苦~~~

出0入0汤圆

发表于 2010-4-18 23:13:40 | 显示全部楼层
回复【10楼】hnnzzh
我也很想知道,希望大虾们指导一下~!
-----------------------------------------------------------------------

出0入0汤圆

发表于 2010-4-19 18:47:12 | 显示全部楼层
ding xia

出0入0汤圆

发表于 2010-11-10 15:03:57 | 显示全部楼层
顶1楼,想尝试用你的办法,我有6路惯性信号,每800us完成一次采样,全浮点运算,这么多数组还真把我吓住了

出0入0汤圆

发表于 2010-11-10 15:12:24 | 显示全部楼层
虽然是老帖子了,还是很希望【1楼】 lcw_swust 小李飞刀 能给个FFT的简洁算法

出0入0汤圆

发表于 2010-11-10 16:33:38 | 显示全部楼层
MARK

出0入0汤圆

发表于 2010-11-10 18:54:36 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-11-10 19:29:03 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-11-10 20:22:53 | 显示全部楼层
想到混频电路,感觉一楼的算法和正交混频相似

出0入0汤圆

发表于 2010-11-18 15:22:34 | 显示全部楼层
M

出0入0汤圆

发表于 2011-9-28 08:01:07 | 显示全部楼层
看到1L的解答,感觉很不错,收藏下~

出0入0汤圆

发表于 2013-12-30 19:32:48 | 显示全部楼层
lcw_swust 发表于 2009-9-2 16:59
以下为个人见解:
想搞FFT,首先要搞清楚DFT.FFT是由DFT演化而来.
对于DFT,举个例子:

言简意赅,谢谢

出0入0汤圆

发表于 2014-2-4 11:29:37 | 显示全部楼层
认真学习中
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-23 22:13

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表