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

news2024/12/26 10:38:47

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.coloradmin.cn/o/1973497.html

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

相关文章

位运算(更新中)

一、基础知识 1.基础位运算 << 左移操作符 &按位与 有0就是0 >>右移操作符 | 按位或 有1就是1 ~按位取反 ^异或 相同为1&#xff0c;相异为0 /…

大模型检索X一键成片,巴黎奥运的AI新演绎

媒体智能与巴黎奥运的一场邂逅。 随着巴黎奥运会开幕式为全世界掀起一场文艺浪潮&#xff0c;塞纳河畔也从浪漫艺术的盛宴&#xff0c;转向体育竞技的击攘。让全世界不可错过巴黎前方的每刻高光&#xff0c;更需要一场多媒体技术的迎赶革新。 于是&#xff0c;我们看到另一场媒…

现代前端架构介绍(第三部分):深入了解状态管理层及其对前端App的影响

远离JavaScript疲劳和框架大战&#xff0c;了解真正重要的东西 在第二部分中&#xff0c;我们讨论了功能架构的三个层次。其中一个就是状态管理层&#xff0c;今天我们将对其进行更深入的探讨。下面是现代前端架构系列的第三部分和最后一部分介绍。 状态管理&#xff0c;你可能…

抖音视频素材一般都从哪里找?抖音视频素材库分享

在浏览抖音时&#xff0c;你是否曾被那些内容丰富、制作精良的视频所吸引&#xff1f;这些视频背后的秘密其实非常简单——高质量的视频素材。优质素材能够让你的视频更加出彩。然而&#xff0c;许多抖音内容创作者在初期可能会困惑&#xff1a;这些视频素材究竟从哪里获取呢&a…

实现生成二维码,在table显示,图片预览可下载

utils/images/downLoadRemoteFile.js /*** 获取 blob 实现不跳转下载* param {String} url 目标文件地址* return {Promise}*/ const getBlob (url) > {return new Promise(resolve > {const xhr new XMLHttpRequest();xhr.open(GET, url, true);xhr.responseType b…

怎么恢复U盘里被隐藏的数据?三招助找回“消失”数据

随着信息技术的飞速发展&#xff0c;U盘已成为我们日常生活中不可或缺的数据存储设备。然而&#xff0c;有时我们会遇到一些棘手的问题&#xff0c;比如U盘中的数据莫名其妙地被隐藏了&#xff0c;这不仅影响了我们的工作效率&#xff0c;还可能导致重要信息的丢失。那么&#…

Linux 照片图像编辑器

前言 照片图像编辑器是一种软件程序,它允许用户对数字照片或图像进行各种编辑和修改。以下是一些常见的功能及其解释: 裁剪与旋转 : 裁剪:移除图像的某些部分,以改善构图或符合特定尺寸要求。旋转:改变图像的方向,可以校正歪斜的照片或者为了艺术效果而旋转。调整亮度…

CC++:贪吃蛇小游戏教程

❀创作不易&#xff0c;关注作者不迷路❀&#x1f600;&#x1f600; 目录 &#x1f600;贪吃蛇简介 &#x1f603;贪吃蛇的实现 &#x1f40d;生成地图 &#x1f40d;生成蛇模块 ❀定义蛇的结构体 ❀初始化蛇的相关信息 ❀初始化食物的相关信息 &#x1f40d;光标定位和…

【zabbix6自定义监控带参数】

目录 一、环境准备二、选择监控的数据三、在zabbix_server主机测试四、在web界面上配置监控项五、在web界面上添加触发器 一、环境准备 注意&#xff1a;避免一些问题&#xff0c;可以把防火墙&#xff0c;selinux都关闭 安装zabbix-sever&#xff1a;https://blog.csdn.net/q…

等保测评练习卷25

等级保护初级测评师试题25 姓名&#xff1a; 成绩&#xff1a; 一、判断题&#xff08;10110分&#xff09; 1.安全区域边界对象主要根据系统中网络访问控制设备的部署情况来确定&#xff08;&#xff09;不是网络访问控制设备而…

zero - hackmyvm

简介 靶机名称&#xff1a;Zero 难度&#xff1a;简单 靶场地址&#xff1a;https://hackmyvm.eu/machines/machine.php?vmZero 本地环境 虚拟机&#xff1a;vitual box 靶场IP&#xff08;Zero&#xff09;&#xff1a;未知 windows_IP&#xff1a;192.168.130.158 k…

Vulnhub靶场DC-9练习

目录 0x00 准备0x01 主机信息收集0x02 站点信息收集0x03 漏洞查找与利用1. 发现SQL注入点2. Sqlmap跑数据3. 文件包含4. SSH爆破端口敲门服务5. 提权&#xff08;写入/etc/passwd&#xff09; 0x04 总结 0x00 准备 下载链接&#xff1a;https://download.vulnhub.com/dc/DC-9.z…

数据化项目中如何优化数据分析报表的响应速度

引言&#xff1a;在数据化项目中&#xff0c;优化数据分析报表的响应速度是一个关键任务&#xff0c;它直接影响到用户的体验和决策效率。以下是一些有效的策略和方法来优化数据分析报表的响应速度&#xff1a; 一.从IAAS层优化&#xff1a; 硬件与网络资源优化&#xff1a;提…

无法读取配置节“dataConfiguration”

无法读取配置节“dataConfiguration”&#xff0c;因为它缺少节声明 问题 在web.config中加了<dataConfiguration defaultDatabase"DefaultDB" />&#xff0c;服务器运行报无法读取配置节“dataConfiguration” 分析检查配置文件&#xff1a; Web.config…

前端常用的【设计模式】和使用场景

设计原则 最重要的&#xff1a;开放封闭原则 对扩展开放对修改封闭 工厂模式 用一个工厂函数&#xff0c;来创建实例&#xff0c;隐藏 new 如 jQuery 的 $ 函数&#xff0c;React 的 createElement 函数 单例模式 全局唯一的实例(无法生成第二个) 如 Vuex 和 Redux 的 store…

基于设备上解码的 Yolo 检测

什么是NDVI&#xff1f; 该存储库 ( 修改自 device-decoding) 包含直接使用 DepthAI SDK (main_sdk.py) 或 DepthAI API (main_api.py) 在设备上解码运行 Yolo 目标检测的代码。目前&#xff0c;支持的版本有&#xff1a;YoloV3 & YoloV3-tiny,YoloV4 & YoloV4-tiny,Y…

滑动窗口大总结!!!妈妈以后再也不担心我不会做滑动窗口啦~

写在前面&#xff1a;全部题都源于力扣 讲解题目一&#xff1a;最小覆盖子串题目二&#xff1a;字符串排列题目三&#xff1a;找所有字母异位词题目四&#xff1a;无重复字符的最长子串题目五&#xff1a;滑动窗口的最大值 讲解 滑动窗口算法技巧主要用来解决子数组问题&#…

B 端产品设计:导航系统构建指南

两年前写的一篇关于导航菜单的文章帮助许多学生进入 B 端设计领域。然而&#xff0c;两年过去了&#xff0c;行业在不断发展&#xff0c;文章中的许多观点并不适用于当前的 B 端设计环境。如今的 B 端设计越来越受到重视&#xff0c;所以最近打算深入挖掘之前不太过时的文章内容…

strimzi operator 部署kafka集群(可外部访问)

Strimzi介绍 官方文档:https://strimzi.io/docs/operators/0.42.0/overview#kafka-components_str Strimzi介绍 Strimzi 是一个用于 Apache Kafka 在 Kubernetes 上部署和管理的开源项目。它提供了一组 Kubernetes 自定义资源定义(Custom Resource Definitions,CRDs)、控制…

充电宝有必要买贵的吗?充电宝可以带上高铁吗?充电宝选购方法

市面上的充电宝可以说是非常的多&#xff0c;但是能选到一款适合自己的充电宝基本是不容易的&#xff0c;然而&#xff0c;当我们准备选购充电宝时&#xff0c;常常会面临诸多疑问。其中&#xff0c;“充电宝有必要买贵的吗”就是一个备受关注的问题。价格似乎成为了我们在众多…