硬汉嵌入式论坛

 找回密码
 立即注册
查看: 2771|回复: 5
收起左侧

[DSP] 【FFT】提问,关于变换点数和采样频率以及AD采样时间的问题

[复制链接]

20

主题

110

回帖

170

积分

初级会员

积分
170
发表于 2018-7-18 02:11:37 | 显示全部楼层 |阅读模式
本帖最后由 飛饵 于 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里速度会不会减慢一些??
  1. void fft(complex *seq_array,unsigned char M,float *WN)
  2. {
  3.         uchar  stage;
  4.         uint  L=1;
  5.         uint l;
  6.         uint i;
  7.         uint P=N/2;
  8.         complex WNx;/
  9.        
  10.         for(stage=0;stage<M;stage++)//一共有M级蝶形运算,M=log2(N),所以循环M次
  11.         {
  12.                 L = 1 << stage;
  13.                 for(l=0;l<N;l=l+2*L)//每级有 N/(2^m) 组蝶形
  14.                 {                               
  15.                         for(i=0;i<L;i++)//每组蝶形有 2^(m-1) 个蝶形运算
  16.                         {
  17.                                 /* 蝶形运算 */
  18.                                 WN_mul(seq_array[l+i+L],&WN[i*2*P],&WNx); //复数乘法项 i*2*P = i*2*(N/2/L)
  19.                                
  20.                                 seq_array[l+i+L].real = seq_array[l+i].real - WNx.real;//先进行减法运算。
  21.                                 seq_array[l+i+L].img = seq_array[l+i].img - WNx.img;

  22.                                 seq_array[l+i].real = seq_array[l+i].real + WNx.real;//然后再进行加法运算
  23.                                 seq_array[l+i].img = seq_array[l+i].img + WNx.img;
  24.                         }       
  25.                 }
  26.                 P = P >> 1;
  27.         }
  28. }
复制代码


回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106760
QQ
发表于 2018-7-18 10:16:46 | 显示全部楼层
数据要是此采样率下连续的数据即可。
回复

使用道具 举报

20

主题

110

回帖

170

积分

初级会员

积分
170
 楼主| 发表于 2018-7-19 11:35:02 | 显示全部楼层
eric2013 发表于 2018-7-18 10:16
数据要是此采样率下连续的数据即可。

如果以0.001s间隔采够512次,那不是0.5s左右才能变换一次?不影响实时性了吗
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106760
QQ
发表于 2018-7-19 14:05:39 | 显示全部楼层
飛饵 发表于 2018-7-19 11:35
如果以0.001s间隔采够512次,那不是0.5s左右才能变换一次?不影响实时性了吗

这就看你的需求了。
回复

使用道具 举报

20

主题

110

回帖

170

积分

初级会员

积分
170
 楼主| 发表于 2018-7-22 15:55:10 | 显示全部楼层
eric2013 发表于 2018-7-19 14:05
这就看你的需求了。

自己写了个基2FFT,看看运行效率怎样?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106760
QQ
发表于 2018-7-23 01:12:35 | 显示全部楼层
飛饵 发表于 2018-7-22 15:55
自己写了个基2FFT,看看运行效率怎样?

意思是你根据实际项目需求去实现即可。具体情况具体分析。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-5 04:02 , Processed in 0.218824 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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