之前做比赛的时候,发现这篇博客的访问量激增,意识到一丝不妙的感觉,就赶紧删除了,今天补一下。
之前幅值的问题也解决了。是我没把输入信号转成有符号信号送到FFT,而是直接将外部信号送入至FFT,虽然频率是对的,但是幅值就出现了很大的问题。
将信号转为有符号信号后,经FFT后得到最大值,然后根据AD的位宽,再转成响应的幅值。
——————————————————————————————————
先放几张仿真图,频谱分辨率分别是1 10 100 1000,输入信号频率是450Hz。我们可以从这几张图中,再次认识到用FFT做频谱分析出现误差的栅栏效应(在我上一篇博客中有详细讲解,当然大多是摘自高西全老师的《数字信号处理》一书)
利用FFT测频的思路是寻找最大幅值,确定最大幅值的RAM地址,再根据公式和频谱分辨率相称即可。用FFT测量幅值,我虽然没有做出来,可能是太废,但原理还是比较简单的。寻找到最大值后根据缩放因子进行左移或后移,再除于(N/2)。
1 | module Mre_Fre( |
1 |