频率的工程测量01 - Rif算法的构造

1.原始文档

《用于正弦波频率估计的修正I-Rife算法》,王哲文,2024
DOI: 10. 16337/j. 1004‑9037. 2024. 02. 019

1.1 这篇论文所属的自科基金U21A20500:近5年所承担的重要科研项目表-智能感知系统与安全教育部重点实验室(湖北大学)

2.问题速记

2.1 摘要部分

  1. 量化频点的因素
    1. 为啥接近量化频谱点处会有更大的误差?他不应该更小吗?
    2. 文章的中心是Rif算法的性能和误差分析以及针对性改进
    3. 0.5 pt???how?
    4. 论文复杂度与I-Rif相当
  2. I-Rif算法
    1. 移频因子
    2. Rif算法区别
    3. 修正的基本逻辑
  3. 克拉美-罗下界
    1. 均方根误差 
    2. Cramer-Rao lower Bound
  4. 关键词:
    1. 频率估计Freq estimation
    2. 细化谱 spectrum subdivision
    3. CRLB
  5. 中国分类TN957.51
  6. 文献标志码:A
  7. Sinusoid Wave

2.2 引言部分

  1. 调频连续波Frequency modulation continuous waveFMCW)雷达
    1. 混频
    2. 中频信号
    3. 距离速度

3.频率估计的途径

  1. Abatzoglou 最大似然估计最大似然估计(Maximum likelihood ML)算法
  2. FFT 频谱泄露、栅栏效应
    1. 信噪比较低时误差很大
    2. 基于FFT的插值算法
      1. 三谱线插值法
      2. 迭代差值法
      3. 抛物线内插
      4. 双线性对称频率内插
      5. Rif算法★
  3. 异频相位处理
  4. 全相位时移相位差频率估计
  5. 能量重心矫正法
  6. 相位差分算法
  7. 频谱细化方法的Zoom‑FFT算法★
  8. 线性调频变换CZT算法★

ML慢而精确。RIf快,Zoom-FFT, CZT性能很好但无法满足实时解析场景。

3.1 Rif算法

  • Rife1970年提出,利用幅度最高谱线与相邻谱线,差值,确定真实频率。
  • 当信噪比过低或其真实频率接近量化频率时,易出现插值方向的错误从而引起较大的
    误差。
  • Quinn提出用最大谱线,次大谱线的之比的实部来替代幅值之比
  • 邓帧淼M-Rif,引入移频原理,将估计的频率移到两个量化频率中心,再差值,移频量固定1/3
    • 有时需要二次移频
  • 王宏位I-Rif,频谱细化,移频
  • 孙宏君P-Rif,相角
    • A-P-Rif幅值相角判据的改进频移门限值来确定是否使用相角判据,得到了精度更高的估计性能
  • 叶茂Z-Rif
    • 在A-P-Rif上,幅值相角规律
  • NianA-Rif
    • 基于估计

3.2 Rif算法的实际性能与误差

4.Python重现Rif算法和上述现象

4.1 准备信号源

我的基本信号处理对象是振动信号,这里生成了一个冲击性振动信号,很简单:

叠加了幅度为信号-20db的高斯噪声。生成代码参见附录B 冲击信号模拟源

4.2 使用不同的采样率去采集信号源,生成多组采样数据

附录A 一些可用的三方库

1. specutils

这是一个用于天文观测雷达信号的解析库,作为一个完整领域的信号分析库,可以用来对信号处理的可能问题和算法有一个大致的第一印象。

download from: specutils · PyPId

doc:​​​​Specutils Documentation — specutils v1.15.1.dev0+gce3f43c.d20240501

附录B 源码

1. 冲击信号模拟源

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# 获取当前脚本文件所在目录的父目录,并构建相对路径
import os
import sys
current_dir = os.path.dirname(os.path.abspath(__file__))
project_path = os.path.join(current_dir, '..')
sys.path.append(project_path)
sys.path.append(current_dir)
import numpy as np
import matplotlib.pyplot as plt
from matplotlib import rcParams
from scipy.signal import get_window# 设置中文字体
rcParams['font.sans-serif'] = ['SimHei']  # 指定中文字体
rcParams['axes.unicode_minus'] = False  # 解决负号问题# 参数设置
fs = 10000  # 采样频率 (Hz)
f_signal = 181.5  # 信号频率 (Hz)
rms_signal = 5e-3  # 信号 RMS (m/s)
duration = 1  # 信号持续时间 (秒)
pulse_duration = 1 / (100 * f_signal)  # 脉冲持续时间 (秒)# 生成时间序列
t = np.arange(0, duration, 1/fs)# 生成冲击性振动信号(脉冲信号)
pulse_start = int(fs * (duration / 2 - pulse_duration / 2))
pulse_end = int(fs * (duration / 2 + pulse_duration / 2))
signal = np.zeros_like(t)
signal[pulse_start:pulse_end] = rms_signal * np.sqrt(2)# 生成高斯噪声
rms_noise = rms_signal * 0.1
noise = rms_noise * np.random.randn(len(t))# 将信号和噪声相加
signal_with_noise = signal + noise# 绘图
plt.figure(figsize=(12, 6))
plt.subplot(1, 2, 1)
plt.plot(t, signal, label='冲击性振动信号')
plt.title('冲击性振动信号')
plt.xlabel('时间 (秒)')
plt.ylabel('幅值')
plt.legend()plt.subplot(1, 2, 2)
plt.plot(t, signal_with_noise, label='含噪声信号', color='red')
plt.title('含噪声的冲击性振动信号')
plt.xlabel('时间 (秒)')
plt.ylabel('幅值')
plt.legend()plt.tight_layout()
plt.show()

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

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

相关文章

lua学习(1)

vscode打开c或者lua文件 插件显示禁用,怎么开启插件。 1. lua 字符串 单个引号和双引号都可变量的定义默认是全局的删除一个变量将其赋值为nil即可 如: bnilnil还可以对表中的数据进行删除,也可删除一个表只要变量不是nil,变…

c语言第七天笔记

作业题: 设计TVM(地铁自动售票机)机软件。 输入站数,计算费用,计费规则,6站2元,7-10站3元,11站以上为4元。 输入钱数,计算找零(找零时优先找回面额大的钞票)&#xff0…

Nat网络地址转换实验

一、实验拓扑 二、实验要求 三、实验思路 四、实验展示 1.接口IP配置 telnet路由器 r1 r2 r3 pc2 2.全网可达(给边界路由器,私家路由器写上缺省 ,还要用到nat地址转换,多对多一对多,端口映射)因为左右…

华为LTC流程体系详解

LTC,全称Lead to Cash,中文翻译为从线索到现金,是一种企业运营管理思想,也是一个集成的业务流程。它涵盖了企业从接触客户到收到客户回款的整个流程,通过科学化管理,实现更高效地将线索客户转化为付费客户。…

说说ip地址和mac地址的区别

随着互联网的飞速发展,网络连接已成为我们日常生活中不可或缺的一部分。然而,在享受网络带来的便利时,你是否曾好奇过那些让设备能够相互通信的关键技术?IP地址与MAC地址,作为网络通信中的两大基石,它们各自…

3D生物打印咋实现?重组弹性蛋白来助力!

Human-Recombinant-Elastin-Based Bioinks for 3D Bioprinting of Vascularized Soft Tissues是发表于《ADVANCED MATERIALS》上的一篇文章,介绍了一种基于重组人原弹性蛋白的生物墨水,用于3D生物打印复杂软组织。该生物墨水由GelMA和MeTro组成&#xff…

[Docker][Docker Container]详细讲解

目录 1.什么是容器?2.容器命令1.docker creatre2.docker run3.docker ps4.docker logs5.docker attach6.docker exec7.docker start8.docker stop9.docker restart10.docker kill11.docker top12.docker stats13.docker container inspect14.docker port15.docker c…

设施农业“AutoML“时代:大模型自动调参,让农业算法模型更简单易用

(于景鑫 北京市农林科学院智能装备技术研究中心)设施农业是现代农业的重要发展方向,但在数字化、智能化的进程中仍面临诸多挑战。传统的农业算法模型虽然可以为设施农业提供一定的决策支持,但在实际应用中往往受限于参数调优复杂、模型泛化能力差等因素。…

实例分割-Yolact/Yolact++训练自己数据集

前言 本文主要用于记录实例分割模型yolact和yolact的环境配置,以及成功训练自己数据集的整个过程~ 注意:这里要重点提醒一下,DCNv2对RTX系列不友好,我第一次使用4090服务器,编译持续有问题,被迫放弃&#…

window安装elasticsearch和可视化界面kibana

ElasticSearch 官网下载zip安装包并解压 Elasticsearch:官方分布式搜索和分析引擎 | Elastic 修改配置文件 改选项是指定ssl访问还是普通http访问 不改的话使用http访问不了,得使用https 浏览器访问 localhost:9200 Kibana Download Kibana Free |…

Android Listview notifyDataSetChanged() 不起作用

private ArrayList<Map<String, String>> data new ArrayList<Map<String, String>>(); private ArrayList<Map<String, String>> delivered_data new ArrayList<Map<String, String>>(); 如果直接将arraylist 的数据直接…

机器学习-31-多变量异常检测LOF算法(实战)

一文读懂异常检测 LOF 算法(Python代码) 1 LOF算法 一个经典的异常检测算法:局部离群因子(Local Outlier Factor),简称LOF算法。 Local Outlier Factor(LOF)是基于密度的经典算法(Breuning et. al. 2000), 文章发表于SIGMOD 2000, 到目前已经有3000+的引用。 在LOF之前…

人大高瓴发布Think-on-Graph 2.0,基于知识图的大模型推理再升级!

经常参加高考的朋友可能会体会到&#xff0c;比起死记硬背知识点&#xff0c;将知识整理成脉络往往会获得事半功倍的效果。其实对于大模型来说也是如此&#xff0c;哪怕被允许“开卷作答”&#xff0c;即通过检索增强&#xff08;Retrieval-augmented generation&#xff0c;RA…

HCIP学习作业一 | HCIA复习

要求&#xff1a; R1-R2-R3-R4-R5 RIP 100 运行版本2 R6-R7 RIP 200 运行版本1 1.使用合理IP地址规划网络&#xff0c;各自创建环回接口 2.R1创建环回 172.16.1.1/24 172.16.2.1/24 172.16.3.1/24 3.要求R3使用R2访问R1环回 4.减少路由条目数量&#xff0c;R1-R2之间…

【AD域】搭建AD域服务器

环境 服务器&#xff1a;Windows Server 2016 Standard&#xff0c;版本1607 准备 1、设置主机名 2、配置静态IP地址 3、以本地管理员权限登录服务器 步骤 1、在服务器添加【Active Directory】域服务功能 2、AD域服务器配置

fastjson-小于1.2.47绕过

参考视频&#xff1a;fastjson反序列化漏洞3-<1.2.47绕过_哔哩哔哩_bilibili 分析版本 fastjson1.2.24 JDK 8u141 分析流程 分析fastjson1.2.25更新的源码&#xff0c;用JsonBcel链跟进 先看修改的地方 fastjson1.2.24 if (key JSON.DEFAULT_TYPE_KEY && !…

校园课程助手【4】-使用Elasticsearch实现课程检索

本节将介绍本项目的查询模块&#xff0c;使用Elasticsearch又不是查询接口&#xff0c;具体流程如图所示&#xff08;如果不了解Elasticsearch可以使用sql语句进行查询&#xff09;&#xff1a; 这里是两种方法的异同点&#xff1a; Mysql&#xff1a;擅长事务类型操作&#…

PHP苹果 V X iPhone微商i o s多分开V X语音转发密友朋友圈一键跟圈软件

苹果VX神器&#xff01;iPhone微商必备&#xff1a;ios多开、VX语音转发、密友朋友圈一键跟圈软件大揭秘&#xff01; 一、iOS多开新境界&#xff0c;工作生活两不误&#xff01; 你是不是也烦恼过&#xff0c;想要在工作号和生活号之间自由切换&#xff0c;却因为iPhone的限制…

【C++程序设计】——利用数组处理批量数据(一)

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;开发者-削好皮的Pineapple! &#x1f468;‍&#x1f4bb; hello 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍&#x1f4bb; 本文由 削好皮的Pineapple! 原创 &#x1f468;‍&#x1f4…

【LeetCode每日一题】盛最多水的容器

思路 标签:双指针&#xff0c;贪心 分析&#xff1a; 首先选两条线为容器的两端&#xff0c;盛水的高度取决于高度小的那条线&#xff0c;此时在两条线中间选一条线&#xff0c;有两种情况&#xff0c;如果区间内某条线比两端高度小的那条线还要小&#xff0c;此时宽度和高度…