huidefengsy 发表于 2023-4-18 09:04:38

傅里叶变换如何能区分每个频率点?

大家好,我们在使用傅里叶变换的时候,比如我采样频率是48kHZ,采集1024个点,那么频率分辨率其实是48000 / 1024 = 46.875HZ, 那我想识别60HZ的频率该怎么做呢?因为按这个采样设置,下一个点我只能识别到46.875 * 2 = 93.75HZ的频率,他们中间的这些频率怎么识别到呢

eric2013 发表于 2023-4-18 10:15:13

60Hz要是FFT频域最小分辨率整数倍效果才比较好

ME_Engineer 发表于 2023-4-18 10:17:18

由于频谱泄露,直接搞肯定没戏,你可以试试频谱内插。

huidefengsy 发表于 2023-4-18 10:18:31

eric2013 发表于 2023-4-18 10:15
60Hz要是FFT频域最小分辨率整数倍效果才比较好

不只是60HZ,我是想能识别到20Hz到20kHZ这中间的所有频率,采样频率是固定的48kHZ,怎么做才能识别到这中间的所有频率点呢

eric2013 发表于 2023-4-18 10:22:12

huidefengsy 发表于 2023-4-18 10:18
不只是60HZ,我是想能识别到20Hz到20kHZ这中间的所有频率,采样频率是固定的48kHZ,怎么做才能识别到这中 ...
那就分辨率整到10Hz,那么就需要你每次采集处理4800点。能分辨到1Hz更好,每次FFT处理48K点

huidefengsy 发表于 2023-4-18 10:25:27

eric2013 发表于 2023-4-18 10:22
那就分辨率整到10Hz,那么就需要你每次采集处理4800点。能分辨到1Hz更好,每次FFT处理48K点

可是STM32的FFT最大只能做到4096个点:'(

huidefengsy 发表于 2023-4-18 10:32:23

ME_Engineer 发表于 2023-4-18 10:17
由于频谱泄露,直接搞肯定没戏,你可以试试频谱内插。

你好,这个是什么技术?是要用到FIR滤波器吗? 我是用的STM32单片机

eric2013 发表于 2023-4-18 10:37:54

huidefengsy 发表于 2023-4-18 10:25
可是STM32的FFT最大只能做到4096个点

发布了不限制点数方案

STM32H7的不限制点数FFT章节教程发布(2021-06-28)
https://www.armbbs.cn/forum.php?mod=viewthread&tid=107591&fromuid=58
(出处: 硬汉嵌入式论坛)

huidefengsy 发表于 2023-4-18 10:57:43

eric2013 发表于 2023-4-18 10:37
发布了不限制点数方案

STM32H7的不限制点数FFT章节教程发布(2021-06-28)


版主,你好,我使用STM32F407可以用这个吗

ME_Engineer 发表于 2023-4-18 13:39:39

DFT是DTFT的离散采样,根据DFT的结果,通过内插是可以获得DTFT的,进而可以计算出在任一点的频谱。

总体而言,如果资源足够,多采一些点做FFT更简单方便;实在不行的话,可以试试这种方法,此外,你还可以看一下“Multirate Digital Signal Processing”。

eric2013 发表于 2023-4-19 10:01:17

huidefengsy 发表于 2023-4-18 10:57
版主,你好,我使用STM32F407可以用这个吗

可以的,这个是纯C实现的。此贴V5板子的移植时对应的F407

https://www.armbbs.cn/forum.php?mod=viewthread&tid=94547
页: [1]
查看完整版本: 傅里叶变换如何能区分每个频率点?