一种正弦信号叠加高频噪声的信号基频率准确测量方法

2023-10-20 01:20

本文主要是介绍一种正弦信号叠加高频噪声的信号基频率准确测量方法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1.问题

        当信号叠加有高频噪声时,特别是类似有变频器这类强干扰源存在的情况下,如何测得信号的准确频率,是个问题。FFT要求长时间采样,对于嵌入式应用,采样点数和时间消耗都是个问题。而即使用示波器的波形叠加功能,因为强干扰源的存在,无法找到准确的触发沿,也无法达到这个目的,除非使用深存储功能的示波器,抓取足够多的数据点...

        这里介绍一种处理的方法。可以在单片机环境下,准确测得信号的周期。周期的精确度,理论上,仅与时间轴的的采样周期有关。

2分析

        对于仅仅需要测得信号基准频率的场合,其实,利用:

https://blog.csdn.net/twicave/article/details/131214059?spm=1001.2014.3001.5502http://xn--4gq480b4ha8ot6pdndwov38bqpe8sfe3tejjqp1ah98br9t的方法,使用低于最低频率信号的采样时长,就可以计算出信号的基准频率的大致范围,以及信号的幅度信息,也能够估算出,0电平的位置。然后,利用上述信息。就可以估算出在任意采样率下,过零点时,采样值的可能跳变范围,而后,直接把采样率提高到最高采样率,然后卡过零点的有效跳变点。测得的数据视情况累加4~16个周期,确认每次测得的周长与理论预期一致;然后取平均即可。对于明显是N倍或更多倍有效周期的数据点,可以直接以N倍计入。

        但是注意,如果仅仅用零点和过零点的跳变来计算信号周期,测得的数据点中可能会混入高频的噪点,和半周期点:高频噪点是过零点时的高频抖动产生的。半周期点,是在原本是反向沿儿的位置,震荡,出现了正向沿儿。这些噪点,如果想要消除,可以引入信号的峰峰值来卡位。但是,从前一步,我们已经能够知晓周期的大致区间,所以,直接把不良数据点过滤掉即可。

        ad采样的部分,很明显是在中断处理函数中直接操作的,这部分逻辑要精简再精简,为将来的更高速的ad采样预留空间。

3.编码

 3.1 过零点的跳变估算。

注意,标准的正弦函数sinx/x = 1,我们可以利用这个特性,在幅度轴和时间轴产生伸缩的情况下,估算出过零点的导数(斜率):

def get_dtOfAd_cross_zero(ad_pkpk, pt_of_cycle, sample_rate_of_pt_inHz, sample_rate_to_sample_inHz):span_x_of_std_sin = math.pi*2;span_y_of_std_sin = 1.0;current_span_of_x = pt_of_cycle;current_span_of_y = ad_pkpk;curent_slop = 1.0*(ad_pkpk/span_y_of_std_sin)*(span_x_of_std_sin/current_span_of_x)return curent_slop*sample_rate_of_pt_inHz/sample_rate_to_sample_inHz;

 3.2 其他的部分逻辑较容易推导,从略。

  注意在处理沿儿时,可以排序后再丢弃数据,更快。

这篇关于一种正弦信号叠加高频噪声的信号基频率准确测量方法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/243661

相关文章

一种改进的red5集群方案的应用、基于Red5服务器集群负载均衡调度算法研究

转自: 一种改进的red5集群方案的应用: http://wenku.baidu.com/link?url=jYQ1wNwHVBqJ-5XCYq0PRligp6Y5q6BYXyISUsF56My8DP8dc9CZ4pZvpPz1abxJn8fojMrL0IyfmMHStpvkotqC1RWlRMGnzVL1X4IPOa_  基于Red5服务器集群负载均衡调度算法研究 http://ww

列举你能想到的UNIX信号,并说明信号用途

信号是一种软中断,是一种处理异步事件的方法。一般来说,操作系统都支持许多信号。尤其是UNIX,比较重要应用程序一般都会处理信号。 UNIX定义了许多信号,比如SIGINT表示中断字符信号,也就是Ctrl+C的信号,SIGBUS表示硬件故障的信号;SIGCHLD表示子进程状态改变信号;SIGKILL表示终止程序运行的信号,等等。信号量编程是UNIX下非常重要的一种技术。 Unix信号量也可以

力扣第347题 前K个高频元素

前言 记录一下刷题历程 力扣第347题 前K个高频元素 前K个高频元素 原题目: 分析 我们首先使用哈希表来统计数字出现的频率,然后我们使用一个桶排序。我们首先定义一个长度为n+1的数组,对于下图这个示例就是长度为7的数组。为什么需要一个长度为n+1的数组呢?假如说总共有三个数字都为1,那么我们需要把这个1放在数组下标为3的位置,假如说数组长度为n,对于这个例子就是长度为3,那么它的

一种快速生成CSV的方法

事情是这个样子的 在QQ群在聊把如何100万数据导出成CSV文件?会不会很慢? 俺回了一句“现在的机器性能好,没啥问题”。 然后大家开始谈论机器的配置了。哎,俺的机器配置有点差。 然后俺就进行了一个测试。 测试数据 数据定义         public struct Rec         {             public int v1;             publi

Linux中如何屏蔽信号

本篇文章主要学习Linux的信号处理机制,着重学习屏蔽信号部分。屏蔽信号处理的两种方式类似于信号的捕获,一种方式是直接对其设置,另一种方式是先获得描述符的掩码,然后对其设置操作。 本文主要参考自《嵌入式linux系统使用开发》,作者何永琪,Thanks. 在linux系统中,如何处理某个进程发送的一个特定信号呢?一般来说有三种方式: 1) 忽略信号 2) 屏蔽信号 3) 为该信号添

【Visual Studio 报错】未加载 wntdll.pdb(一种可行的解决办法)

调试程序时,会出现下面这个报错 分析原因: 出现未加载 wntdll.pdb 报错大概率是你的指针使用错误 ,比如使用野指针、越界访问、或者堆区空间释放方式错误等。 这里以 堆区空间释放方式错误 为例子 1、堆区开辟的数组空间使用 delete 释放 // 堆区开辟的数组空间使用 delete 释放int* p = new int[10];delete p; 正

【Hot100】LeetCode—347. 前 K 个高频元素

目录 1- 思路自定义Node结点 + 哈希表实现 2- 实现⭐347. 前 K 个高频元素——题解思路 3- ACM实现 原题连接:347. 前 K 个高频元素 1- 思路 自定义Node结点 + 哈希表实现 ① 自定义 Node 结点: 自定义 Node 结点中有 value 和 cnt 字段,其中 value 为具体的数字,cnt 为具体的值实现 ① getCn

信号与信号量的区别[转]

信号量(Semaphore),有时被称为信号灯,是在多环境下使用的一种设施,是可以用来保证两个或多个关键代码段不被并发调用。在进入一个关键代码段之前,线程必须获取一个信号量;一旦该关键代码段完成了,那么该线程必须释放信号量。其它想进入该关键代码段的线程必须等待直到第一个线程释放信号量。为了完成这个过程,需要创建一个信号量VI,然后将Acquire Semaphore VI以及Release Se

CVPR 2024最新论文分享┆YOLO-World:一种实时开放词汇目标检测方法

论文分享简介 本推文主要介绍了CVPR 2024上的一篇论文《YOLO-World: Real-Time Open-Vocabulary Object Detection》,论文的第一作者为Tianheng Cheng和Lin Song,该论文提出了一种开放词汇目标检测的新方法,名为YOLO-World。论文通过引入视觉-语言建模和大规模预训练解决了传统YOLO检测器在固定词汇检测中的局限性。论

国产隔离放大器:增强信号完整性和系统安全性的指南

隔离放大器是电子领域的关键组件,特别是在信号完整性和电气隔离至关重要的应用中。这些放大器隔离输入和输出信号,使它们能够在没有直接电气连接的情况下跨不同系统传输数据。这确保了电路一部分的高压尖峰或噪声不会影响另一部分,从而保护了系统和用户。随着国产隔离放大器的不断发展,它们提供了性能、可靠性和成本效益的完美结合,使其成为工程师和系统设计师的理想选择。 1. 了解国产隔离放大器的优势 增强信号