rt.
用的cmsis庫的函式..
驗證時,生成一個sin資料.
信號是 直流:3.0
fs1=50hz
A1=2.0v
fs2=100hz
A2=0.8v
產生64個點.
float sindata[64] ;
for(i=0;i<64;i++)
{
sindata[i] = 3.0 + 2.0 * arm_sin_f32(2 * PI * 50 * i / 64) + 0.8 * arm_sin_f32(2 * PI * 100 * i / 64);
}
然后整理資料,按實部,虛部分配 到 fft.buf_in[128].中.
后作fft
arm_cfft_f32(&arm_cfft_sR_f32_len64,&fft.buf_in,0,1);
再算模:
arm_cmplx_mag_f32(&fft.buf_in,&fft.buf_out,64).
再計算各頻率分量.
for(i=0;i<64;i++)
{
fft.buf_out[i] /= 32;
}
fft.buf_out[0] =/2;
得出的資料看,是正確的.如下圖,其中,下標0為3v,下標 14為2v,下標28為0.8v.
我不理解的是,為什么50hz 的2v幅值在14的下標?100hz的0.8v在28下標?如何對應的?
這時我的采樣率應該是64?
采樣點是64.
那如何確定 14對應的頻率是多少?

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/248286.html
標籤:單片機/工控
上一篇:STM32 RSA加密
下一篇:單片機
