首页 > 其他分享 >《数字信号处理》如何合理选择FFT的采样率、采样点数,实现更精确的频谱计算

《数字信号处理》如何合理选择FFT的采样率、采样点数,实现更精确的频谱计算

时间:2024-11-23 20:58:04浏览次数:5  
标签:采样 频谱 采样率 16 32 FFT original

《数字信号处理》如何合理选择FFT的采样率、采样点数,实现更精确的频谱计算

一、前言

1.1、知识前提

为了不影响阅读,在看这篇博客之前,读者最好需要具备以下知识基础
(1)连续信号和离散信号的基本认识。
(2)离散信号时域和频域的认识。
(3)(ZT、DTFT、DFS)DFT、FFT的基本了解。
(4)影响FFT结果的几个因素:混叠现象截断效应频谱泄露谱间干扰栅栏效应 有一个基本了解。

这样读者才能更好地明白本篇博客的目的是什么。

1.2、概念简单介绍

(1)频谱混叠:

FFT是对有限长信号作变换,有限长信号频谱无限宽,所以有限长信号经过离散采样后,频谱进行了以采样频率为周期的周期延拓,导致频谱叠在了一起。
解决办法:
提高采样频率 f s f_s fs​或者在采样前用低通滤波器将最大频率 f m a x f_{max} fmax​限制在采样频率 f s f_s fs​的一半以内。

(2)截断效应:

FFT是对有限长信号作变换,理想信号应该是无限长,也就是说,FFT处理时默认为信号加上了矩形窗,矩形窗的频谱是 S a Sa Sa函数,包含主瓣和第 N N N副瓣。
截断效应会导致频谱泄露和谱间干扰
解决办法:
增加采样点数 N N N,或添加副瓣更小的窗函数,如海宁窗、汉明窗等。

(3)栅栏效应:

我们都知道,FFT结果是离散值,如1kHz、2kHz…如果信号频率为1.5kHz,则在FFT结果中则体现不出来。就像透过栅栏来看原始真实的频谱,只能看到等间隔的离散的点。
解决办法:
通过合理选择采样频率,可以使信号频率值刚好落在 “栅栏点” 上,也就可以精确测量出频谱值。或者对信号后面进行补0,采用阶数更高的FFT(如从64点FFT改为1024点FFT)。

窗函数时域图
窗函数时域
窗函数频域图
窗函数频域
窗函数频域图(dB)
窗函数频域(dB)

二、举例介绍

来自《数字信号处理》 史林 赵树杰 编著

问题描述

连续时间信号 x a ( t ) = x 1 ( t ) + x 2 ( t ) + x 3 ( t ) = c o s ( 8 π t ) + c o s ( 16 π t ) + c o s ( 20 π t ) x_a(t)=x_1(t)+x_2(t)+x_3(t)=cos(8\pi t)+cos(16\pi t)+cos(20\pi t) xa​(t)=x1​(t)+x2​(t)+x3​(t)=cos(8πt)+cos(16πt)+cos(20πt),用FFT对x_a(t)进行频谱分析。问采样率 f a f_a fa​和采样点数 N N N如何选择,才能精确求出 x 1 ( t ) 、 x 2 ( t ) 、 x 3 ( t ) x_1(t)、x_2(t)、x_3(t) x1​(t)、x2​(t)、x3​(t)的中心频率?

我们需要在保证精确求出 x 1 ( t ) 、 x 2 ( t ) 、 x 3 ( t ) x_1(t)、x_2(t)、x_3(t) x1​(t)、x2​(t)、x3​(t)的中心频率前提下尽可能减小采样率 f a f_a fa​和采样点数 N N N。

Step1

分析可知,该模拟信号频率包含4、8、10Hz分量。首先根据采样定理, f s > 2 f m a x = 20 H z 。 f_s>2f_{max}=20Hz。 fs​>2fmax​=20Hz。

Step2

为了防止栅栏效应, f s f_s fs​取2的整数次幂,32Hz。
结论:当采样率为2的整数次幂时,FFT结果频率点将全部都是整数!
最终FFT结果中,频率点值为 f s / N ∗ k = 32 / 32 ∗ k = k f_s/N*k=32/32*k=k fs​/N∗k=32/32∗k=k(假如作32点FFT变换)

Step3

为了防止峰值混叠FFT结果的最小分辨率应大于等于10-8=2Hz
由公式: N > = f s / Δ f N>=f_s/\Delta f N>=fs​/Δf,可得 N > = 32 / 2 = 16 。 N>=32/2=16。 N>=32/2=16。所以当 N N N取16时,FFT结果的频率分辨率为2Hz,刚好能区分8和10Hz分量。

Step4

为防止截断效应,应保证采样时间刚好是要观察信号周期的整数倍。这里我们分析一下是否符合要求:
采样时间为 N / f s = 16 / 32 = 0.5 s N/f_s=16/32=0.5s N/fs​=16/32=0.5s,三个信号的周期分别是 0.25 、 0.125 、 0.1 s 0.25、0.125、0.1s 0.25、0.125、0.1s,符合要求,故不存在截断效应。

用MATLAB仿真

在这里插入图片描述
可以看到,FFT幅度谱分辨率是2Hz,刚好测量到了三个频率值。程序如下:

% 参数设置
fs = 32; % 采样频率 (Hz)
T = 1/fs; % 采样间隔 (s)
N_original = 16; % 原始采样点数
N_fft = 16; % FFT点数

t_original = (0:N_original-1) * T;
x_original = cos(8*pi*t_original) + cos(16*pi*t_original) + cos(20*pi*t_original);
x_padded = [x_original, zeros(1, N_fft - N_original)];

X = fft(x_padded);
f = (0:N_fft-1) * (fs / N_fft);

% 绘制结果
figure;
subplot(2,1,1);
stem(t_original, x_original);
title('原始采样信号');
xlabel('时间 (s)');
ylabel('幅度');

subplot(2,1,2);
stem(f, abs(X) / max(abs(X))); % 使用max(abs(X))进行简单归一化以便可视化
title('16点FFT幅度谱');
xlabel('频率 (Hz)');
ylabel('归一化幅度');
xlim([0 fs/2]); % 通常我们只关心0到采样频率一半的范围内的频率分量

三、注意点

FFT精度问题

注意,FFT是DFT的快速算法,我们用FFT求出来的是离散傅里叶变换,离散傅里叶变换实际上是对真实频谱的等间隔采样,FFT阶数越高,采样点越密,则FFT结果越接近真实频谱。
也就是说,假如我们作FFT结果感觉精度不够,可以在信号后面补0,直到满足2的下一个整数次幂,这样FFT结果精度会翻一倍,但相应地计算量会增加到2倍多。

标签:采样,频谱,采样率,16,32,FFT,original
From: https://blog.csdn.net/weixin_74392201/article/details/143997018

相关文章

  • 提高ADC采样精度:C语言中的滤波与取平均值技巧
    在嵌入式系统中,ADC(模数转换器)是常用的组件,用于将模拟信号转换为数字信号。然而,由于噪声和其他干扰因素,ADC采样值可能会波动,导致读数不稳定。为了提高ADC读数的准确性,常用的方法是进行滤波和取平均值。本文将详细介绍如何在C语言中实现ADC采样值的滤波和取平均值,并提供详细的代......
  • 基于FFT + CNN - BiGRU-Attention 时域、频域特征注意力融合的电能质量扰动识别模型
    往期精彩内容:Python-电能质量扰动信号数据介绍与分类-CSDN博客Python电能质量扰动信号分类(一)基于LSTM模型的一维信号分类-CSDN博客Python电能质量扰动信号分类(二)基于CNN模型的一维信号分类-CSDN博客Python电能质量扰动信号分类(三)基于Transformer的一维信号分类模型-......
  • 球体上的采样角度:从一般协方差矩阵到浓度参数
    我正在尝试在python中提取球体上的点。我必须定位天空中的事件并使用healpy生成地图。在测试期间,我使用了vonMises-Fisher,因为我假设$'\theta'$的方差与$'\phi'$的方差相同。一切顺利,我能够通过使用$'k=1/\sigma^2'$获得浓度参数$'k'$。我评估像素概率的函......
  • 4路同步AD模拟量采集卡800K采样频率—PCIe9757
    阿尔泰科技概述:信息社会的发展,在很大程度上取决于信息与信号处理技术的先进性。数字信号处理技术的出现改变了信息与信号处理技术的整个面貌,而数据采集作为数字信号处理的必不可少的前期工作在整个数字系统中起到关键性、乃至决定性的作用,其应用已经深入到信号处理的各个领域......
  • 10. Top-K vs Top-P:生成式模型中的采样策略与 Temperature 的影响
    在之前的文章中我们探讨了BeamSearch和GreedySearch。现在来聊聊model.generate()中常见的三个参数:top-k,top-p和temperature。代码文件下载文章目录Top-K采样详解工作原理数学表述代码示例Top-P采样详解工作原理数学表述代码示例Temperature的作......
  • 周也带你进阶OpenCV (1)--采样、直方图即均衡化、掩膜
    文章目录OpenCV高阶操作一、上、下采样1.上采样2.下采样3.恢复原图二、直方图1.plt.hist()绘图2.cv2.calcHist()绘图三、mask掩膜1.原图2.创建黑白图像3.掩膜4.绘制曲线图四、直方图均衡化1.直方图均衡化2.自适应直方图均衡化(局部直方图处理)总结......
  • opencv学习:图像下采样和上采样及拉普拉斯金字塔
    图像下采样和上采样OpenCV(OpenSourceComputerVisionLibrary)是一个开源的计算机视觉和机器学习软件库,它提供了大量的图像处理功能,包括图像的上采样和下采样。下采样(Downsampling)下采样是减少图像分辨率的过程,通常用于图像压缩、图像分析等场景。在OpenCV中,下采样可以通过......
  • 快速傅里叶变换(FFT)
    前言傅里叶级数(FS)傅里叶变换(FT)离散时间傅里叶级数(DFS)离散时间傅里叶变换(DTFT)离散傅里叶变换(DFT)建议先看以上文章FFT是DFT的一种快速算法而不是一种新的变换,它可以在数量级的意义上提高运算速度。直接计算DFT的问题DFT的运算量设有限长序列x(n),非零值长......
  • 探索上采样与下采样的技术平衡
    1.简介在处理数据的过程中,无论是图像、音频还是其他信号数据,采样技术(上采样和下采样)都起着至关重要的作用。采样本质上是通过改变数据的分辨率或频率来进行操作,以便更好地适应不同的应用场景。上采样和下采样作为两种常见的采样方法,分别用于提高和降低数据的分辨率。什么......
  • 【人脸检测】SCRFD:训练数据采样和计算分配策略结合的高效人脸检测方法
    SampleandComputationRedistributionforEfficientFaceDetection论文链接:http://arxiv.org/abs/2105.04714代码链接:https://github.com/deepinsight/insightface/tree/master/detection/scrfd一、摘要 文中指出训练数据采样和计算分配策略是实现高效准确人脸检......