基于频率滑动广义互相关的信号时延估计方法(MATLAB R2018A)

广义互相关(Generalized Cross-Correlation, GCC)方法是一种改进的互相关分析技术,用于更准确地估计信号的时间延迟。这种方法特别适用于噪声环境中的时延估计,因为它通过特定的加权处理提高了互相关函数的峰值的显著性,从而更容易准确地确定时延。

提出一种基于频率滑动广义互相关的信号时延估计方法,压缩包=程序+数据+参考文献。

demo代码如下:

clear all; 
set(0,'defaulttextinterpreter','latex')
close all;

load teo4.mat

x1 = x(:,4);
x2 = x(:,1);

SNR = 25;
Px = 0.5*(mean([x1(:); x2(:)].^2));
Pn = Px*10^(-SNR/10);

rng('default')
x2 = x2 + sqrt(Pn)*randn(size(x2));
x1 = x1 + sqrt(Pn)*randn(size(x1));

trueTDOA = 92;
%% Short-Time Windowing
wlen = 2048;
hop = 512;
w = hann(wlen);

x1ef = enframe(x1,w,hop).';
x2ef = enframe(x2,w,hop).';

%% Compute FS-GCC for three speech frames (39, 35 and 55)
Nfft = 2048;
B = 128;
M = 32;

ntest = [39, 35, 55];
Ntest = length(ntest);


for n = 1:Ntest
    
    
    %% Compute FS-GCC Matrix
    xinput = [x1ef(:,ntest(n)), x2ef(:,ntest(n))];
    [FSGCCmat,lags,tpwin] = msrpfsgcc(xinput,Nfft,B,M);
    
    
    figure(1), subplot(3,4,(n-1)*4+1);
    imagesc(lags,[],abs(FSGCCmat.'));
    xticks([-200 -100 0 100 200])    
    pbaspect([1 1 1])
    xlim([-200 200])
    xlabel('$\tau$')
    ylabel('$l$');
    if n == 1 
        title({'FS-GCC','','$|\mathbf{R}|^{T}$'});
    else
        title('$|\mathbf{R}|^{T}$');
    end
    
    
    %% Compute Conventional GCC-PHAT
    
    GCC = fftshift(real(ifft(exp(1i*angle(fft(xinput(:,1),Nfft).*conj(fft(xinput(:,2),Nfft)))))));    
    figure(1), subplot(3,4,(n-1)*4+2);
    GCCn = GCC/max(GCC);
    plot(lags,GCCn);
    hold on, line([trueTDOA trueTDOA],[min(GCCn) 1],'color','red');
    axis tight;    
    xlim([-200 200])
    xticks([-200 -100 0 100 200])    
    pbaspect([1 1 1])
    xlabel('$\tau$')
    if n == 1
        title({'Conventional GCC-PHAT','',''});
    end
    
    %% Compute SVD FS-GCC
    
    [GCCsvd,lags] = getsvdfsgcc(FSGCCmat,200);
    figure(1), subplot(3,4,(n-1)*4+3);
    GCCsvdn = GCCsvd/max(GCCsvd);
    plot(lags,GCCsvdn);
    hold on, line([trueTDOA trueTDOA],[min(GCCsvdn) 1],'color','red');
    axis tight;
    pbaspect([1 1 1])
    xlabel('$\tau$')
    if n == 1
        title({'SVD FS-GCC','',''});
    end
    
    %% Compute WSVD FS-GCC
    
    [GCCwsvd,lags] = getwsvdfsgcc(FSGCCmat,tpwin,200);
    figure(1), subplot(3,4,(n-1)*4+4);
    GCCwsvdn = GCCwsvd/max(GCCwsvd);
    plot(lags,GCCwsvdn);
    hold on, line([trueTDOA trueTDOA],[min(GCCwsvdn) 1],'color','red');
    axis tight;
    pbaspect([1 1 1])
    xlabel('$\tau$')
    if n == 1
        title({'WSVD FS-GCC','',''});
    end
    
    
end

程序出图如下:

工学博士,担任《Mechanical System and Signal Processing》审稿专家,担任
《《控制与决策》,《系统工程与电子技术》,《电力系统保护与控制》等EI期刊审稿专家。
擅长领域:现代信号处理,机器学习,深度学习,数字孪生,时间序列分析,设备缺陷检测、设备异常检测、设备智能故障诊断与健康管理PHM等。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

提升线上会议效率,解决Teams会议中常见网络问题

在企业组网场景中,在线会议是混合办公、跨地区办公模式下很重要的协作沟通手段,而在线会议如Teams这类应用对网络的实时性和即时性要求非常高,网络频繁中断、接入速度慢、登不进去等问题分分钟加剧用户的不满,导致汇报失败或者是交…

nexus3 npm-hosted仓库迁移

迁移背景: 从nexus 3.33 升级到 nexus 3.64 过程中,私服 npm-hosted 无法上传。由于这个 npm-hosted 和 npm-proxy 放的同一个 blob存储,无法单独拆除去,所以采用迁移的方式 迁移思路: down下来 npm-hosted 仓库&am…

【Java】HttpServlet类简单方法和请求显示

1、HttpServlet类简介🍀 Servlet类中常见的三个类有:☑️HttpServlet类,☑️HttpServletRequest类,☑️HttpResponse类 🐬其中,HttpServlet首先必须读取Http请求的内容。Servlet容器负责创建HttpServlet对…

WebGL中开发VR(虚拟现实)应用

WebGL(Web Graphics Library)是一种用于在浏览器中渲染交互式3D和2D图形的JavaScript API。要在WebGL中开发VR(虚拟现实)应用程序,您可以遵循以下一般步骤,希望对大家有所帮助。北京木奇移动技术有限公司&a…

docker环境下mongo副本集的部署及异常修复

最近更换了办公地点。部署在本地docker环境里的mongo数据库不能使用了。原因是本地的ip地址变更。以前的mongo副本集的配置需要更新。处理完后,索性重新记录一下mongo副本集在docker中的部署流程。 mongo的事务及副本集 我们先了解一下什么是事务,事务…

虚拟化网络

vm1和vm2通过虚拟交换机与主机进行交换, 虚拟交换机:(通过软件虚拟出来的交换机) 1、LinuxBridge虚拟交换机 2、OVS(Open Virtual Switch)虚拟交换机 虚拟机的传输是通过虚拟交换机,然后连到…

Servlet 预览pdf

一、背景 上篇文章介绍了图片的预览,这篇我们介绍下 pdf 文件的预览,pdf 预览在实际开发中用的还是比较多的,比如很多文件协议、合同都是用pdf 格式,协议预览就需要我们做 pdf 预览了。 二、实操 其实在上篇文章最后已经说了常用…

在Android原生项目中 创建 Flutter模块

前言 应用场景:在已有的Android原生项目中,引入Flutter模块,摸索了两天,终于给整出来了; 如果是新项目,最好直接创建Flutter项目,然后在Fluter的 android / ios目录中,写原生代码&…

常见的设计模式(模板与方法,观察者模式,策略模式)

前言 随着时间的推移,软件代码越来越庞大,随着而来的就是如何维护日趋庞大的软件系统。在面向对象开发出现之前,使用的是面向过程开发来设计大型的软件程序,面向过程开发将软件分成一个个单独的模块,模块之间使用函数…

Spark SQL函数定义

目录 窗口函数 SQL函数分类 Spark原生自定义UDF函数 Pandas的UDF函数 Apache Arrow框架基本介绍 基于Arrow完成Pandas DataFrame和Spark DataFrame互转 基于Pandas完成UDF函数 自定义UDF函数 自定义UDAF函数 窗口函数 分析函数 over(partition by xxx order by xxx [as…

MathType2024下载安装系统要求及新版本功能介绍

MathType 7应用介绍 MathType可适用于800软件应用程序和网站,支持在任何文字处理软件、演示程序、页面程序、HTML编辑工具及其它类型的软件,用来建立公式。 应用范围:期刊杂志、科研机构、教育教学、工程学、统计学、论文、报告写作、word文…

新数智空间:阿里云边缘云持续保持中国公有云市场第一

全球领先的 IT 市场研究和咨询公司 IDC 发布 《中国边缘云市场解读(2023H1)》报告 中国边缘公有云服务市场 阿里云持续第一 稳居市场第一,“边缘”逆势生长 近日,全球领先的 IT 市场研究和咨询公司 IDC 最新发布《中国边缘云市…

20240117-【UNITY 学习】增加墙跑功能和跳墙功能

替换脚本PlayerCam_01.cs using System.Collections; using System.Collections.Generic; using UnityEngine; using DG.Tweening;public class PlayerCam_02 : MonoBehaviour {// 视觉灵敏度参数public float sensX 400;public float sensY 400;// 视角垂直旋转角度限制publ…

IDEA怎么用Devtools热部署

IDEA怎么用Devtools热部署 大家知道在项目开发过程中,有时候会改动代码逻辑或者修改数据结构,为了能使改动的代码生效,往往需要重启应用查看改变效果,这样会相当耗费时间。 重启应用其实就是重新编译生成新的Class文件&#xff0…

axios的原理及源码解析

面试官:你了解axios的原理吗?有看过它的源码吗? 一、axios的使用 关于axios的基本使用,上篇文章已经有所涉及,这里再稍微回顾下: 发送请求 import axios from axios;axios(config) // 直接传入配置 axio…

C语言数据结构之线性表-顺序表篇

星光不负赶路人 江河眷顾奋楫者 🎥烟雨长虹,孤鹜齐飞的个人主页 🔥个人专栏 期待小伙伴们的支持与关注!!! 线性表的简介# 线性表(linearlist):是n个具有相同特性的数据元…

Vue3前端开发,computed计算属性的基础练习

Vue3前端开发,computed计算属性的基础练习! 在新版里面,和传统的vue2一样,计算属性,都是对一些数据运算进行了封装操作。返回结果是一个实时监控的效果。区别在于,写法不同。效果是一样。 下面给大家展示…

【萤火虫系列教程】3/5-Adobe Firefly 创意填充

003-Adobe Firefly 创意填充 创意填充 登录账号后,在主页点击创意填充的【生成】按钮,进入到创意填充页面 我们可以上传自己的图像 一键抠图 点击【背景】就可以把主图抠出来 点击【反转】就可以把背景抠出来 点击【清除】就可以恢复到图片原来…

一文详解Linux文本处理三剑客

1.正则表达式 目录 1.正则表达式 1.什么是正则表达式 ? 2.正则表达式的使用场景 3.正则表达式字符表示 4.它们之间的区别 2.grep命令 作用: 语法: 说明: 选项:options 重点 实例 3.后面的下次再更新。 …

【征服redis7】谈谈Redis的RDB持久化方式

从现在开始,我们来探讨redis的一个非常重要的问题——集群,要讨论集群,我们需要先理解redis持久化数据的方法,因为集群本质上就是将一个集群的数据同步到其他机器上。 Redis 6的持久化机制主要有两种:RDB(…