数字信号处理大实验2 利用FFT估计信号的频率

目录

3.1 实验目的

3.2 实验内容与要求

3.3 实验原理

3.3.1 基于时域求导-频域乘法的n阶导数积分法

3.3.2 基于频域卷积的双/多谱线插值法

3.3.3 基于谱峰和滑动平均的多谱线综合插值方法

3.3.4 基于相邻显著谱线的滑动平均综合插值方法

3.3.5 基于(2)的多步小量时移平均计算法(频域操作)

3.3.6 基于(5)的多步小量频移平均计算法(时域操作)

3.4 实验结果

3.4.1 真实频率估计

3.4.2 探究采样点数N对于估计的相对精度(去量纲化)的影响

3.4.3 探究真实频率对于估计的相对精度的影响

3.4.4 探究初相(采样起始点)对于估计的相对精度的影响

3.4.5 说明、总结与分析

参考文献


3.1 实验目的

  1. 了解电磁通信等实际工程中的一些基本问题及解决思路;
  2. 培养查阅资料解决问题的能力;
  3. 掌握频偏的概念,加深对于DFTDFT的常用性质(时移/频移等)的理解;
  4. 设计具备一定准确性、鲁棒性的算法,估计单频正弦型信号的真实频率;
  5. 探究采样率固定时,采样区间长度、起始采样点、被测信号真实频率对于计算精确度和稳定性的影响。

3.2 实验内容与要求

在无噪声干扰条件下,用8000 Hz采样率对某387Hz频率正弦信号进行采样,采集了77个样点作为原始信号。

1、在知网、IEEE网站等查找频率估计方法,利用至少两种频率估计方法编程求给定信号的频率;

2、无噪声、20dB、10dB、5dB、0dB、-5dB,每个信噪比通过至少100次的平均计算,得到频偏的方均根;

3、所有算法使用相同点数的FFT [不大于2048点];

4、绘出信噪比(对数)-估计均方误差图。

3.3 实验原理

      

本仿真实验笔者一共实现了6种算法(实际只有5种,不包括(2)),包括:

  1. 基于时域求导-频域乘法的n阶导数积分法;
  2. Quinn改进-实部虚部比值与综合权重的双谱线插值法;
  3. 基于谱峰和滑动平均的多谱线综合插值方法;
  4. 基于相邻显著谱线的滑动平均综合插值方法;
  5. 基于(2)的多步小量时移平均计算法(频域操作);
  6. 基于(5)的多步小量频移平均计算法(时域操作)。

3.3.1 基于时域求导-频域乘法的n阶导数积分法

Figure 14        华南理工大学电信学院宁更新老师课件 Chapter5-v3 P28

代码实现

Figure 15        3.3.1 n阶导数-频域范围内求和的代码实现

3.3.2 基于频域卷积的双/多谱线插值法

  1. 长度为N点的矩形窗的离散傅里叶变换

  1. 对单频f0正弦型信号时域采样,采样序列为y[n]=A*cos(2*π*f0/fs*n+φ),假定f0/fs是有理数,fs>2*f0;周期为N=m*fs/f0 (m,s.t.  m*fs/f0∈Z),该信号的DTFT——am=A/2*ejφ, aN-m=A/2*e-jφ,ak=0 for 0<=k<=N-1 and k≠m,N-m

  1. 使用N点矩形窗对正弦信号进行截取,需要保证频谱分辨率一致,此时正弦信号的DTFT转化为同样点数的DFT,am和aN-m的序列号和N有关,可能成为小数;频谱为DFT的圆周卷积,对N取余,因此得到的谱线的真实谱峰位置索引经常不是整数,这也是频差δ的来历;

由于实信号幅度频谱的正负频率对称性,算法截取0到pi的频率区间,实际由于双峰卷积造成混叠,从而影响理论插值计算的适用性和准确性。

Figure 16        由于正负频率的对称性造成的混叠,fs在4倍f0附近时双卷积带来的频差计算误差会较小

  1. 笔者的算法主要依据为理论插值计算,并在Quinn方法和文献[1]的基础上,通过引入虚部比值和三角函数权重的方式减小频偏估计的误差。截断后信号s的DFT实部虚部分别如下图所示。

Quinn双谱线实部比值插值方法:if δ1≥0 and δ2≥0,δ=δ1;elseif δ1<0 and δ2<0,δ=δ2

基于虚部比值的双谱线插值方法:if δ1≥0 and δ2≥0,δ=δ1;elseif δ1<0 and δ2<0,δ=δ2

Figure 17        公式推导[1](含笔者的条件修正)、算法流程(部分)[1]

Y(m) 、Y(m-1) 和 Y(m+1) 实部的大小与峰值谱线的相位Φ(m)有关,该算法在峰值谱线的相位Φ(m)接近于0或π时,频率校正精度较高,但当峰值谱线的相位Φ(m)接近于 ±π/2 时,信号频谱分布与FFT系数的关系如图1所 示,FFT系数实部序列幅度很小,接近于零,在噪声干扰下,根据实部序列索引的峰值谱线位置容易出错,计算的频偏δ误差也较大,此时频率估计精度较低[1]。

代码实现(部分)

Figure 18        3.3.2算法使用的三角函数综合权重法,角度是幅度谱峰的极角(相位)

3.3.3 基于谱峰和滑动平均的多谱线综合插值方法

Figure 19 滑动平均原理[2]

根据截断后信号s的DFT表达式,可以推导出幅度谱谱峰和索引距离谱峰索引为k的谱线的实部/虚部比值——Figure18(文献[2]式(5)),在以谱峰索引为中心且左右对称、索引半径为m的区间内,i表示当前的绝对值距离,则从1到m按照3.3.2的方法各可以计算并筛选出一个频偏估计δi ,通过系数乘法配凑进行等权重估计,得到δ

代码实现(部分)

Figure 20        3.3.3 算法的代码实现(部分)

3.3.4 基于相邻显著谱线的滑动平均综合插值方法

在以谱峰索引为中心且左右对称、索引半径为m的区间内,i表示当前的距离,则从-m到m按照3.3.2的方法各可以计算并筛选出一个频偏估计δi ,通过系数加法配凑进行等权重估计,得到δ

Figure 21        算法3.3.4 关键代码

3.3.5 基于(2)的多步小量时移平均计算法(频域操作)

在频域对于每一个点的DFT系数乘于ej2kπt0/N,t0是小时移量,本实验设置为一个采样周期(可以是小数倍的采样周期,因为是频域操作);

这种算法不影响谱峰的位置,但是会影响信号的初相,因此可以一定程度上削减初相对于频偏估计的影响。

Figure 22        算法3.3.5(多步小量时移平均计算法) 核心代码

3.3.6 基于(5)的多步小量频移平均计算法(时域操作)

在时域对截断后信号s进行多步小量频移,频移量来自3.3.5算法的频偏估计,通过净频偏存储、多次自迭代计算,理论上频偏量会越来越小,突破阈值后可以视作较准确的估计,如果在给定最大迭代次数内未能突破阈值,使用所有迭代过程中的平均频偏估计值。

Figure 23        算法3.3.6(多步小量时移x多步小量频移) 核心代码实现

3.4 实验结果

3.4.1 真实频率估计

Figure 24 截断后信号s,N=77

    真实信号频率387Hz,幅度约为2.7, 初相约为137.8°;

    采样频率8KHz,频率精度8000/77=103.90Hz。

    下面是部分噪声强度配比以及部分算法的估计频率的数值。

未掺杂高斯零均值白噪声:

(1)PMA_ri_comb_interpolation(3.3.3):324.0058Hz;

(2)Ts_two_p_ri_comb_interpolation (3.3.5):371.8061Hz。

Figure 25        5种算法的准确度和门限测试,门限基本上在10dB左右(N=77,纵坐标为4lg(δRMSE))

在3.4.1的情况中,3.3.5小量时移算法效果最佳,信噪比SNR=30dB时去量纲化真实频偏0.1449。

3.4.2 探究采样点数N对于估计的相对精度(去量纲化)的影响

Figure 26 N=256,纵坐标4lg(δRMSE)- 2,初相、幅度同原信号

Figure 27        N=512,纵坐标4lg(δRMSE)- 2,初相、幅度同原信号

在3.4.2的情况中,3.3.3谱峰滑动平均算法效果最佳,如果把0.5的相对精度(绝对精度8000/256/2=15.625Hz)作为最低合格指标,那么对应到此处的对数坐标是-3.2N=256PMA的门限在-5dB左右,N=512PMA门限在5dB左右;N=256、信噪比SNR=30dB时去量纲化真实频偏0.136;N=512时,信噪比SNR=30dB时小量时移平均计算法精度稍高,去量纲化真实频偏0.111。

由于和N=77的原始实验数据存在不小的相对偏差,尤其是N=512时,相对偏差达到23.4%,因此得出结论:不同的点数对于估计的相对精度有影响,呈现正相关的趋势,收敛边界未知。

3.4.3 探究真实频率对于估计的相对精度的影响

Figure 28       N=256,真实频率1979Hz,接近fs的1/4,初相、幅度同原信号,纵坐标4lg(δRMSE)- 2

在3.4.3的情况中,3.3.3谱峰滑动平均算法效果最佳,如果把0.5的相对精度作为最低合格指标,那么对应到此处的对数坐标是-3.2,PMA的门限在-5dB左右;N=256、信噪比SNR=30dB时去量纲化真实频偏0.08017,与实验原理3.3.2部分Figure 16理论可以互相映证。

3.4.4 探究初相(采样起始点)对于估计的相对精度的影响

Figure 29 初相0°,幅度2.7(同原信号),频率1979Hz,N=256,纵坐标4lg(δRMSE)- 2

Figure 30        初相90°,幅度2.7(同原信号),频率1979Hz,N=256,纵坐标4lg(δRMSE)- 2

在3.4.4的情况中,3.3.3谱峰滑动平均算法效果最佳,如果把0.5的相对精度作为最低合格指标,那么对应到此处的对数坐标是-3.2,PMA的门限在-5dB左右,Adj-MA的门限在15dB左右。

初相为0°,信噪比SNR=30dB时去量纲化真实频偏0.109;

初相90°,信噪比SNR=30dB时去量纲化真实频偏0.132;

(原)初相137.8°,信噪比SNR=30dB时去量纲化真实频偏0.136。

3.4.5 说明、总结与分析

(1)以上的不同信噪比情境下,不同算法的鲁棒性和准确度测试采取100次估计值的真实频偏的方均根作为衡量指标,但仍然具有一定的偶然性,同时表现在一些算法的曲线出现较大的上下波动,这些较大的波动还和特定算法的实现机制有关,可以看出PMA算法、导数求和算法、时移x频移算法总体具有较高的稳定性;

(2)关于被测信号真实频率对于相对精度的影响:fs在4倍f0附近具有更佳的估计精度效果,从3.4.2和3.4.3的结果对比可以看出,256点截取,同幅度和初相、同采样频率,fs>>4f0的相对精度是0.136,而fs≈4f0的相对精度是0.08017,相对精度倍数差距约为1.7倍;

(3)关于采样点数对于相对精度的影响:不同的点数对于估计的相对精度有影响,呈现正相关的趋势,收敛边界未知。(3.4.2)

(4)关于初相对于相对精度的影响:从3.4.4结果分析,由于有4种算法都是基于三角函数综合加权的计算公式,初相接近0°或180°时相对精度稍高,对于一般随机分布的初相基本上没有精度估计的差异。

参考文献

[1]侯盼卫,杨录,王建军.基于FFT系数的正弦信号频率估计算法[J].光电技术应用,2013,28(06):58-62.

[2]黄玉春,黄载禄,黄本雄,等.基于FFT滑动平均极大似然法的正弦信号频率估计[J].电子与信息学报,2008,(04):831-835.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.pswp.cn/diannao/84182.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Java】Java元注解

Target(ElementType.METHOD) Retention(value RetentionPolicy.RUNTIME) public interface OperatorLog {String source() default "WEB"; //日志操作来源 默认是web&#xff0c;还有socket的String model() default ""; //操作模块 }这个代码中的 Target…

阿里云百炼(1) : 阿里云百炼应用问答_回答图片问题_方案1_提问时上传图片文件

直接用于拍照答题不大理想, 可能适用其他用途, 更好的方案: 阿里云百炼(1) : 阿里云百炼应用问答_回答图片问题_方案2_提取题目再提问-CSDN博客 1.实现代码 package cn.nordrassil.ly.test.拍照答题;import com.alibaba.dashscope.app.Application; import com.alibaba.dashsc…

深入探索 CSS 中的伪类:从基础到实战​

在前端开发的世界里&#xff0c;CSS 作为网页样式的 “化妆师”&#xff0c;有着至关重要的作用。而 CSS 伪类则像是这位 “化妆师” 手中的神奇画笔&#xff0c;能够基于元素的状态或位置为其添加独特的样式&#xff0c;极大地丰富了网页的交互性和视觉效果。接下来&#xff0…

c++ constexpr关键字

constexpr字面意思为常量表格式&#xff0c; 用于指示编译器在编译时计算表达式的值。 1、作为常量表格式&#xff0c;必须在编译时就能确定其值。如&#xff1a;constexpr int size 9527; 2、可以修饰函数&#xff0c;要求能在编译时求值&#xff0c;所以传的参数也必须是编…

服务器硬盘分类

以下是服务器硬盘的综合性分类与技术特性分析&#xff0c;依据当前行业标准及技术演进整理&#xff1a; 一、按存储介质分类 1. ‌机械硬盘&#xff08;HDD&#xff09;‌ ‌ 核心特性‌&#xff1a;采用旋转磁盘与机械磁头结构&#xff0c;通过磁道寻址实现数据读写 …

图解深度学习 - 机器学习简史

前言 深度学习并非总是解决问题的最佳方案&#xff1a;缺乏足够数据时&#xff0c;深度学习难以施展&#xff1b;某些情况下&#xff0c;其他机器学习算法可能更为高效。 若初学者首次接触的是深度学习&#xff0c;可能会形成一种偏见&#xff0c;视所有机器学习问题为深度学…

ConceptAttention:Diffusion Transformers learn highly interpretable features

ConceptAttention: Diffusion Transformers Learn Highly Interpretable Featureshttps://arxiv.org/html/2502.04320?_immersive_translate_auto_translate=1用flux的attention来做图文的显著性分析。 1.i

【Python正则表达式终极指南】从零到工程级实战

目录 &#x1f31f; 前言&#x1f3d7;️ 技术背景与价值&#x1fa79; 当前技术痛点&#x1f6e0;️ 解决方案概述&#x1f465; 目标读者说明 &#x1f9e0; 一、技术原理剖析&#x1f4ca; 核心概念图解&#x1f4a1; 核心作用讲解&#x1f527; 关键技术模块说明⚖️ 技术选…

C++对象的内存模型

C++对象的内存模型涉及对象的数据成员(包括静态成员和非静态成员)、成员函数以及虚函数表等在内存中的布局和管理方式。以下是C++对象的内存模型的主要组成部分: 1. C++对象的组成 一个C++对象通常由以下几个部分组成: 非静态数据成员 对象的核心组成部分,每个对象都有自己…

hugging-face数据集快速下载

开发机配置外网代理并使用 git lfs 高速下载 Hugging Face 数据集流程 本文档将介绍如何配置开发机的代理&#xff0c;登录 Hugging Face&#xff0c;并使用 git-lfs &#xff08;Git Large File Storage&#xff09;进行数据集的高速下载。 1. 配置代理连接外网 开发机在某些…

17、Python对象操作全解析:同一运算符、成员运算符与整数缓存机制实战

适合人群&#xff1a;零基础自学者 | 编程小白快速入门 阅读时长&#xff1a;约8分钟 文章目录 一、问题&#xff1a;Python 同一运算符的本质与实战&#xff1f;1、例子1&#xff1a;双胞胎身份证验证2、答案&#xff1a;&#xff08;1&#xff09;is 同一运算符介绍&#xff…

使用auto-coder将kotti项目的pyramid依赖从1.x升级到2.x,将SQLALchemy从1.x升级到2.x

缘起 kotti是一个非常好的基于pyramid框架的web搭建项目&#xff0c;但是由于作者离世&#xff0c;已经3年没有更新了。 尝试使用auto-coder将kotti项目的pyramid依赖从1.x升级到2.x&#xff0c;同时发现SQLALchemy依赖也有问题&#xff0c;将SQLALchemy从1.x升级到2.x 开始…

luckysheet的使用——17.将表格作为pdf下载到本地

luckysheet源码里面自带有打印按钮&#xff0c;但是功能是无法使用的&#xff0c;所以我把该功能重写了一遍 1.在menuButton.js文件中找到源码打印按钮的触发事件&#xff1a; $("#luckysheet-icon-print").click(function () {}2.使用自己写的挂载方法 window.pr…

仿真APP助力提升卡车驾驶室驾乘舒适度与安全性

驾驶室作为卡车的重要组成部分&#xff0c;其振动特性对于驾驶员的舒适度和长期健康具有至关重要的影响。振动不仅会导致驾驶员疲劳、分散注意力&#xff0c;还可能引发一系列健康问题。为了确保卡车在复杂路面工况下驾驶室结构不受破坏&#xff0c;并保持良好的NVH性能&#x…

功能强大且易于使用的 JavaScript 音频库howler.js 和AI里如何同时文字跟音频构思想法

howler.js 是一个功能强大且易于使用的 JavaScript 音频库&#xff0c;它提供了跨浏览器的音频播放功能&#xff0c;支持多种音频格式&#xff0c;并且具有丰富的 API&#xff0c;可以方便地控制音频的播放、暂停、循环、音量等。下面是如何在 Vue 项目中使用 howler.js 实现音…

JUC入门(七)

14、ForkJoin ForkJoin框架是Java中用于并行执行任务的框架&#xff0c;特别适合处理可以分解为多个子任务的复杂计算。它基于“分而治之”的思想&#xff0c;将一个大任务分解为多个小任务&#xff0c;这些小任务可以并行执行&#xff0c;最后将结果合并。 ForkJoin框架的核…

第 7 章:综合回顾与性能优化

本章目标: 系统化地回顾各类外设接口选型原则 深入探讨多接口并存时的资源冲突与管理策略 掌握软硬件协同的性能分析方法,快速定位并消除瓶颈 总结一整套从架构设计到现场调试的最佳实践与防坑指南 7.1 综合选型决策矩阵(深度分析) 除了前文的基础矩阵,这里引入两个更细化…

交换机的连接方式堆叠和级联

以下是交换机的堆叠和级联各自的优缺点总结&#xff0c;帮助快速对比选择&#xff1a; ​一、堆叠&#xff08;Stacking&#xff09;​ ​优点 ​高性能 堆叠链路带宽高&#xff08;如10G/40G/100G&#xff09;&#xff0c;成员间数据通过背板直连&#xff0c;无带宽瓶颈。支…

C++高效求解非线性方程组的实践指南

非线性方程组的求解是科学与工程计算中的核心问题之一&#xff0c;涉及物理建模、机器学习、金融分析等多个领域。C因其高性能和底层控制能力成为此类问题的首选语言&#xff0c;但如何高效实现求解仍存在诸多挑战。本文从算法选择、工具应用、稳定性优化及性能提升四个维度&am…

2025年- H42-Lc150 --146. LRU缓存(哈希表,双链表)需二刷--Java版

1.题目描述 2.思路 LRU(最近最少使用&#xff09;&#xff1a;如果缓存的容量为2&#xff0c;刚开始的两个元素都入栈。之后该2元素中有其中一个元素&#xff08;重点元素&#xff09;被访问。把最近访问过的重点元素保留&#xff0c;另一个边缘元素就得离开缓存了。 下面是l…