OpenEdv-开源电子网

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

如何在不增加时间的条件下提高FFT分辨率?

[复制链接]

15

主题

51

帖子

0

精华

初级会员

Rank: 2

积分
52
金钱
52
注册时间
2017-9-9
在线时间
36 小时
发表于 2022-6-10 17:50:44 | 显示全部楼层 |阅读模式
20金钱
要讲频率差值为25hz的频率解析,如20000hz,20025hz,20050hz。。
根据fft原理,要获得25hz的频域分辨率,需要采样的总时间为1/25 =40ms,40ms太久了,如何在1ms的采样总时间得到25hz的分辨率?
插值?补0?还是周期性补?

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

使用道具 举报

2

主题

592

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1458
金钱
1458
注册时间
2019-7-28
在线时间
137 小时
发表于 2022-6-11 10:09:50 | 显示全部楼层
帮顶               
回复

使用道具 举报

12

主题

3370

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
8581
金钱
8581
注册时间
2020-5-11
在线时间
3998 小时
发表于 2022-6-13 13:37:12 | 显示全部楼层
不太了解,你考虑一下这样行不行:做一个循环队列,存储40ms的采样数据,然后每1ms都可以用这40ms的数据来做FFT。
专治疑难杂症
回复

使用道具 举报

15

主题

51

帖子

0

精华

初级会员

Rank: 2

积分
52
金钱
52
注册时间
2017-9-9
在线时间
36 小时
 楼主| 发表于 2022-6-14 10:12:25 | 显示全部楼层
LcwSwust 发表于 2022-6-13 13:37
不太了解,你考虑一下这样行不行:做一个循环队列,存储40ms的采样数据,然后每1ms都可以用这40ms的数据来 ...

谢谢,好像不行,这40ms的数据包含了各种频率,无法在时域上分辨啊
回复

使用道具 举报

12

主题

3370

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
8581
金钱
8581
注册时间
2020-5-11
在线时间
3998 小时
发表于 2022-6-14 10:14:22 | 显示全部楼层
miraclexue 发表于 2022-6-14 10:12
谢谢,好像不行,这40ms的数据包含了各种频率,无法在时域上分辨啊

无法在时域上分辨”是什么意思?
专治疑难杂症
回复

使用道具 举报

15

主题

51

帖子

0

精华

初级会员

Rank: 2

积分
52
金钱
52
注册时间
2017-9-9
在线时间
36 小时
 楼主| 发表于 2022-6-14 10:45:13 | 显示全部楼层
LcwSwust 发表于 2022-6-14 10:14
“无法在时域上分辨”是什么意思?

信号长度是1ms,存40ms的信号做成队列,那这个队列包含了40种频率,做fft没有意义
回复

使用道具 举报

12

主题

3370

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
8581
金钱
8581
注册时间
2020-5-11
在线时间
3998 小时
发表于 2022-6-14 11:03:01 | 显示全部楼层
本帖最后由 LcwSwust 于 2022-6-14 11:04 编辑
miraclexue 发表于 2022-6-14 10:45
信号长度是1ms,存40ms的信号做成队列,那这个队列包含了40种频率,做fft没有意义

我没能理解透彻.
这里有篇文章似乎是说补零不能达到你需要的效果,你研究一下:
https://zhuanlan.zhihu.com/p/85863024

专治疑难杂症
回复

使用道具 举报

15

主题

51

帖子

0

精华

初级会员

Rank: 2

积分
52
金钱
52
注册时间
2017-9-9
在线时间
36 小时
 楼主| 发表于 2022-6-14 11:25:46 | 显示全部楼层
LcwSwust 发表于 2022-6-14 11:03
我没能理解透彻.
这里有篇文章似乎是说补零不能达到你需要的效果,你研究一下:
https://zhuanlan.zhih ...

你看一下这个,应该会理:
请问给定一段信号,信号在不同时间段频率不同,每个段都需要解析出频率(已经定好协议)
举例:
总信号分为A+B+C三段,各段持续时间大约1ms。
A段:20000hz  代表含义1
        20025hz   代表含义2
        20050hz   代表含义3
        。。。。以此类推
B段:类似A段
C段:类似A段

目前思路:
对收到的信号做短时FFT,即STFT
遇到的问题:A段频率分辨率要达到25hz,需要FFT的总采样长度是1/25 = 40ms,但A段的信号时间才1ms,所以FFT无法满足分辨率要求。

经过查询资料,有看到小波变换和希尔伯特 黄变换,这两个都可以做到时频分析,但是我不确定频率分辨率能否达到要求。

请教大神,这个方案应该如何做?
回复

使用道具 举报

12

主题

3370

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
8581
金钱
8581
注册时间
2020-5-11
在线时间
3998 小时
发表于 2022-6-14 11:44:12 | 显示全部楼层
本帖最后由 LcwSwust 于 2022-6-14 11:53 编辑
miraclexue 发表于 2022-6-14 11:25
你看一下这个,应该会理:
请问给定一段信号,信号在不同时间段频率不同,每个段都需要解析出频率(已经 ...

原来信号本身就持续1ms,我以为是连续的。小波变换为希尔伯特变换我也不懂。
即然这样,来个笨办法:就按照频率计的方案,统计1ms内的过零次数,总可以吧。
专治疑难杂症
回复

使用道具 举报

15

主题

51

帖子

0

精华

初级会员

Rank: 2

积分
52
金钱
52
注册时间
2017-9-9
在线时间
36 小时
 楼主| 发表于 2022-6-14 13:42:52 | 显示全部楼层
LcwSwust 发表于 2022-6-14 11:44
原来信号本身就持续1ms,我以为是连续的。小波变换为希尔伯特变换我也不懂。
即然这样,来个笨办法:就 ...

谢谢!
怎么统计过0次数?adc采样还是定时器输入捕获呢?
另外,这种方式抗干扰应该差一些吧?
回复

使用道具 举报

12

主题

3370

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
8581
金钱
8581
注册时间
2020-5-11
在线时间
3998 小时
发表于 2022-6-14 14:05:13 | 显示全部楼层
miraclexue 发表于 2022-6-14 13:42
谢谢!
怎么统计过0次数?adc采样还是定时器输入捕获呢?
另外,这种方式抗干扰应该差一些吧?

不对,统计过零次数不行,1ms才20来个周期,应当是直接判断周期时间,
例如波形已整形为方波,接到中断脚(或捕获),统计两次(或多次)中断的时间来得到周期。
抗干扰差的话就需要硬件上加滤波了。
专治疑难杂症
回复

使用道具 举报

15

主题

51

帖子

0

精华

初级会员

Rank: 2

积分
52
金钱
52
注册时间
2017-9-9
在线时间
36 小时
 楼主| 发表于 2022-6-14 14:28:15 | 显示全部楼层
LcwSwust 发表于 2022-6-14 14:05
不对,统计过零次数不行,1ms才20来个周期,应当是直接判断周期时间,
例如波形已整形为方波,接到中 ...

了解   信号是经过运放放大的  而且会有干扰信号被放大   有些噪声很难滤除的  因为跟真实信号频率相近   只能软件滤除
回复

使用道具 举报

15

主题

51

帖子

0

精华

初级会员

Rank: 2

积分
52
金钱
52
注册时间
2017-9-9
在线时间
36 小时
 楼主| 发表于 2022-6-16 11:28:27 | 显示全部楼层
LcwSwust 发表于 2022-6-14 14:05
不对,统计过零次数不行,1ms才20来个周期,应当是直接判断周期时间,
例如波形已整形为方波,接到中 ...

如果用硬件实现傅里叶变换,对放大后的信号进行连续傅里叶变换,那频域的分辨率就是连续的了。有没有这种实现的可能?
回复

使用道具 举报

12

主题

3370

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
8581
金钱
8581
注册时间
2020-5-11
在线时间
3998 小时
发表于 2022-6-16 11:44:03 | 显示全部楼层
miraclexue 发表于 2022-6-16 11:28
如果用硬件实现傅里叶变换,对放大后的信号进行连续傅里叶变换,那频域的分辨率就是连续的了。有没有这种 ...

“硬件实现傅里叶变换”我不了解,我只知道带通滤波器,或利用LC谐振可用于选频,但估计也是很难达到这里的要求。

专治疑难杂症
回复

使用道具 举报

15

主题

51

帖子

0

精华

初级会员

Rank: 2

积分
52
金钱
52
注册时间
2017-9-9
在线时间
36 小时
 楼主| 发表于 2022-6-16 13:55:32 | 显示全部楼层
LcwSwust 发表于 2022-6-16 11:44
“硬件实现傅里叶变换”我不了解,我只知道带通滤波器,或利用LC谐振可用于选频,但估计也是很难达到这里 ...

有一些突然进来的噪声,频率和信号频段相近,没办法过滤干净的。用定时器捕获上升沿或下降沿,噪声肯定会影响
回复

使用道具 举报

12

主题

3370

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
8581
金钱
8581
注册时间
2020-5-11
在线时间
3998 小时
发表于 2022-6-16 14:33:35 | 显示全部楼层
miraclexue 发表于 2022-6-16 13:55
有一些突然进来的噪声,频率和信号频段相近,没办法过滤干净的。用定时器捕获上升沿或下降沿,噪声肯定会 ...

我是没办法了
专治疑难杂症
回复

使用道具 举报

15

主题

51

帖子

0

精华

初级会员

Rank: 2

积分
52
金钱
52
注册时间
2017-9-9
在线时间
36 小时
 楼主| 发表于 2022-6-16 14:44:44 | 显示全部楼层

太难了。又是小信号。
唯一可行的FFT又在短时间达不到那么高的精度。
回复

使用道具 举报

122

主题

294

帖子

0

精华

高级会员

Rank: 4

积分
712
金钱
712
注册时间
2015-11-14
在线时间
868 小时
发表于 2023-10-21 11:56:00 | 显示全部楼层
LcwSwust 发表于 2022-6-14 11:44
原来信号本身就持续1ms,我以为是连续的。小波变换为希尔伯特变换我也不懂。
即然这样,来个笨办法:就 ...

如果是信号都是单一频率正弦波的话,整形成方波,测方波频率,又快又准成本最低,难度最小低。这是最优解。
回复

使用道具 举报

3

主题

1907

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4105
金钱
4105
注册时间
2018-8-14
在线时间
696 小时
发表于 2023-10-21 17:43:05 | 显示全部楼层
我猜你是需要检测 20000hz这信号, 而不是真的需要FFT转换的整个频带是吧?
如果是,那就不要用FFT, 用三个BandPass Filter, 比较他的输出电平即可了, 1ms足够了
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-4-7 12:18

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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