OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2812|回复: 2

FFT计算原始信号频率求出的频率值有时会是原始信号的两倍

[复制链接]

22

主题

87

帖子

0

精华

高级会员

Rank: 4

积分
664
金钱
664
注册时间
2019-1-30
在线时间
111 小时
发表于 2019-12-28 15:11:10 | 显示全部楼层 |阅读模式
10金钱
  最近在做FFT有关的项目,本人采取的是TIM+ADC+dma+DSP_FFT+线性补偿,求取原始信号的频率,计算出的频率,通过计算计算结果和原始信号的频率误差在0~1HZ的范围内,但是Debug模式下,有几个频率的值,会有计算出的频率是实际频率的两倍,多来几次全速运行会得出误差范围内的频率。不知道是为什么,难道时因为频率泄漏导致的还需要个加窗函数?求大神指点。另外自己原始信号的频率范围是90HZ~625HZ,采样频率为1250HZ,采样点数1024点,出现上述问题的几个频率值集中在 频率值为200HZ~250HZ,占空比在75%~80%的范围内。求大神指点一二,不胜感激。

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

22

主题

87

帖子

0

精华

高级会员

Rank: 4

积分
664
金钱
664
注册时间
2019-1-30
在线时间
111 小时
 楼主| 发表于 2019-12-28 15:54:08 | 显示全部楼层
  1.         float Wn;
  2.         for (i = 0; i < Test_Num; i++)
  3.         {
  4.                 Wn = 0.5 + 0.5*cos((2*PI*i)/(Test_Num-1));
  5.                 ADC1_Value_buff[i] = Wn * ADC1_Value_buff[i];
  6. //          My_Variables = 1.0-cos((2*PI*i)/(Test_Num));
  7. //          BufInArray[i] = ((long)(My_Variables*ADC1_Value_buff[i]))<< 16;
  8.                 BufInArray[i] = ((long)(ADC1_Value_buff[i]))<< 16;

  9.         }
复制代码


百度了下,对采集到的AD值加了个窗,也不知道对不对,测试了下,问题没有解决。迷茫中
回复

使用道具 举报

22

主题

87

帖子

0

精华

高级会员

Rank: 4

积分
664
金钱
664
注册时间
2019-1-30
在线时间
111 小时
 楼主| 发表于 2019-12-28 17:00:47 | 显示全部楼层
又多验证了一些频率的原始信号,求取的频率还有是原始信号频率2倍或者3的关系,为什么会有求取的结果会是原始信号的倍数关系,还差个滤波?
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-20 22:43

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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