【FFT】提问,关于变换点数和采样频率以及AD采样时间的问题
本帖最后由 飛饵 于 2018-7-22 15:40 编辑这三个东西关系搞得有点懵。
假如有个信号最高频率是400hz,用1000hz的采样频率采集,然后做512点变换。
FFT的输入数据的数量必须和点数相同吧,那就要512个AD数据。
那是先1s内采完1000个数据,然后取其中的512个来变换。还是说以0.001s的时间间隔采样512次就能进行变换了?
-------------------------------------------------
2018.7.22更新
自己写了个基2FFT。在f103上跑1024点,用48ms左右,这效率怎样??还有,旋转因子表和倒序标号表都在ram里生成,如果这些都放在flash里速度会不会减慢一些??void fft(complex *seq_array,unsigned char M,float *WN)
{
ucharstage;
uintL=1;
uint l;
uint i;
uint P=N/2;
complex WNx;/
for(stage=0;stage<M;stage++)//一共有M级蝶形运算,M=log2(N),所以循环M次
{
L = 1 << stage;
for(l=0;l<N;l=l+2*L)//每级有 N/(2^m) 组蝶形
{
for(i=0;i<L;i++)//每组蝶形有 2^(m-1) 个蝶形运算
{
/* 蝶形运算 */
WN_mul(seq_array,&WN,&WNx); //复数乘法项 i*2*P = i*2*(N/2/L)
seq_array.real = seq_array.real - WNx.real;//先进行减法运算。
seq_array.img = seq_array.img - WNx.img;
seq_array.real = seq_array.real + WNx.real;//然后再进行加法运算
seq_array.img = seq_array.img + WNx.img;
}
}
P = P >> 1;
}
}
数据要是此采样率下连续的数据即可。 eric2013 发表于 2018-7-18 10:16
数据要是此采样率下连续的数据即可。
如果以0.001s间隔采够512次,那不是0.5s左右才能变换一次?不影响实时性了吗 飛饵 发表于 2018-7-19 11:35
如果以0.001s间隔采够512次,那不是0.5s左右才能变换一次?不影响实时性了吗
这就看你的需求了。 eric2013 发表于 2018-7-19 14:05
这就看你的需求了。
自己写了个基2FFT,看看运行效率怎样? 飛饵 发表于 2018-7-22 15:55
自己写了个基2FFT,看看运行效率怎样?
意思是你根据实际项目需求去实现即可。具体情况具体分析。
页:
[1]