matlab 广义互相关,广义互相关求时延的问题-程序员宅基地

技术标签: matlab 广义互相关  

clear all

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%获得语音文件%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

[x,fs,nbits]=wavread('bluesky3.wav');     %%%%%%打开wav文件

%fs=8000

%nbits=16

x=x/max(abs(x));                     %%%%%幅度归一化

N=length(x);                         %%%%%设x的采样长度为wav_length

tt=[0:N-1]/fs;                       %%%%%采样时间序列tt

wlen=200;                                  %%%%%%%帧长200,帧移80

inc=80;

fn=fix((N-wlen)/inc)+1;       %%%%%%%求出一共分了多少帧

frametime=frame2time(fn,wlen,inc,fs);     %%%%%%%%计算每帧对应的时间

x1=x';                               %%%%%构造延时800个采样点,即0.1S的信号

x2=[zeros(1,800),x1];

x2=x2(1,[1:end-800]); %%%%为保持x2与x1有相同的采样长度,将x2的最后800个采样点删去

figure(1)

subplot(211)

plot(tt,x1);

subplot(212)

plot(tt,x2);

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%滤波%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%x1=filter([1 -.99],1,x1);                 %%%%%%%对两个输入函数进行滤波

%x2=filter([1 -.99],1,x2);

%figure(2)

%subplot(211)

%plot(tt,x1);

%subplot(212)

%plot(tt,x2);

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%分帧加窗%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%x1=enframe(x1,hamming(wlen),inc);            %%%%%%%给输入信号分帧和加窗,帧长200,帧移80(即帧长为25ms,帧移为10ms)符合语音信号在10~30ms内短时平稳的特性

%x2=enframe(x2,hamming(wlen),inc);

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%端点检测%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

IS1=0.1;                                    %%%%%%%观察输入的波形图形,估计前导无话段时长IS

IS2=0.2;

NIS1=fix((IS1*fs-wlen)/inc+1);

NIS2=fix((IS2*fs-wlen)/inc+1);

[voiceseg1,vsl1,SF1,NF1]=vad_ezm1(x1,wlen,inc,NIS1);   %%%%%%%%vad_ezml为工具箱带的函数,用于计算端点检测 voiceseg表示区间(特别的!表示的是时间区间),vsl表示有几段

[voiceseg2,vsl2,SF2,NF2]=vad_ezm1(x2,wlen,inc,NIS2);

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%广义互相关计算时延%%%%%%%%%%%%%%%%%%%%%%%%

X1=fft(x1,2*N-1);

X1J=conj(X1);

X2=fft(x2,2*N-1);

X2J=conj(X2);

X12=X1.*X2J;

R12=fftshift(abs(ifft(X12)));

figure(2)

T=(0:N-1)/fs;

plot([0:2*N-2],R12)

c=max(abs(R12));

a=find(abs(R12)==c) %找出最大点

R=fix(length(R12)/2);

m=(a-(R+2))/fs %换算出信号的延迟时间

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_33402215/article/details/115813543

智能推荐

linux命令之筛选文件内容_linux过滤时间范围内的文件内容命令-程序员宅基地

文章浏览阅读1.4w次,点赞2次,收藏21次。linux命令之筛选文件内容(sed命令)   在linux系统中,可能有这样的需求,比如查看某个文件中含有某些字符的内容。比如,日志文件中,只要含有error 相关的。可以使用如下命令:1、根据字符串内容筛选sed -n "/error/p" logs.log   注意以上/error/p 中的p 必须要带着,后边的logs.log 是一个文件,输入上边的命令,则会打印出只含有err..._linux过滤时间范围内的文件内容命令

使用GPIO模拟I2C的驱动程序分析-程序员宅基地

文章浏览阅读2.3k次。I2C在硬件上的接法如下所示,主控芯片引出两条线SCL,SDA线,在一条I2C总线上可以接很多I2C设备,我们还会放一个上拉电阻(放一个上拉电阻的原因以后我们再说)。主芯片通过一根SDA线既可以把数据发给从设备,也可以从SDA上读取数据,连接SDA线的引脚里面必然有两个引脚(发送引脚/接受引脚)。在这样一个速食的时代,坚持做自己,慢下来,潜心琢磨,心怀敬畏,领悟知识,才能向下扎到根,向上捅破天,背着世界往前行!从上面的例子,就可以知道怎样在一条线上实现双向传输,这就是SDA上要使用上拉电阻的原因。_gpio模拟i2c

vue npm install 报错 Unknown SSL protocol error in connection to github.com:443_element-admin npm install 报错unknowm ssl protocol e-程序员宅基地

文章浏览阅读683次。npm ERR! Error while executing:npm ERR! D:\Program Files\Git\cmd\git.EXE ls-remote -h -t https://github.com/nhn/raphael.gitnpm ERR!npm ERR! fatal: unable to access 'https://github.com/nhn/raphael.git/': Unknown SSL protocol error in connection to githu._element-admin npm install 报错unknowm ssl protocol error in connectiongithub

Qt学习-程序员宅基地

文章浏览阅读64次。Qt下载Qt安装Qt Creator的初步使用编写第一个Qt程序

appium python 自动化直接提取device信息(设备id等)_python自动化匹配设备信息并复制出来-程序员宅基地

文章浏览阅读3.8k次,点赞3次,收藏4次。一、优化功能持续更新。。嘻嘻~~1、直接提取device信息自动化直接提取android的信息,不用在命令行中自己手动提取。如下:# 正则表达式匹配出 id 信息deviceId = re.findall(r'^\w*\b', readDeviceId[1])[0]# 读取设备系统版本号deviceAndroidVersion = list(os.popen('adb shell ..._python自动化匹配设备信息并复制出来

opencv-python调用大恒相机录制视频(Ubuntu16.04)_opencv python 读取大恒相机-程序员宅基地

文章浏览阅读3.8k次,点赞8次,收藏41次。Python调用大恒相机录制视频(Ubuntu16.04)文章目录Python调用大恒相机录制视频(Ubuntu16.04)环境配置视频录制代码问题解答环境配置驱动安装:https://blog.csdn.net/liuzongyuan1996/article/details/104219550API安装:https://blog.csdn.net/liuzongyuan1996/arti..._opencv python 读取大恒相机

随便推点

gmssl生成的国密证书解析_gmssl 生成base64-程序员宅基地

文章浏览阅读3.1k次。国密认证遇到的一些问题记录:gmssl生成的key文件解析:gmssl生成的SM2证书文件解析:_gmssl 生成base64

深大uooc学术道德与学术规范教育第七章_关于伪造科研数据下列说法错误的是-程序员宅基地

文章浏览阅读7.8k次。一、单选题 (共 90.00 分)1.关于学术造假,下列说法是不正确的是( )A.指伪造、修改研究数据和资料等学术腐败行为B.通常是由研究者学风浮躁和急功近利所致C.为了令理论假设成立,加工和筛选数据并不是造假D.是一种违背学术道德和科学精神的表现满分:15.00 分得分:15.00 分你的答案:C正确答案:C教师评语:暂无2.资料分析中的失范行为往往也被称为学术造假,下列情况不属于学术造假的是( )A.筛选数据B.整理数据C.加工数据D.伪造数据满_关于伪造科研数据下列说法错误的是

javascript - 个人笔记汇总-程序员宅基地

文章浏览阅读68次。1. onSubmit = "return function ()";2. <input type="text" name="fname" required>3.var obj = JSON.parse(text); //JavaScript 内置函数 JSON.parse() 将字符串转换为 JavaScript 对象  JSON.stringify()//用于将值转换..._微信javascript笔记

SpringBoot中注解@ConfigurationProperties的作用_@configurationproperties(prefix = "security.captch-程序员宅基地

文章浏览阅读1.7k次。作用@ConfigurationProperties的作用:可以读取配置文件中的信息,并自动封装成实体类,该实体类的名称,默认是类名的首字母小写。比如,在application.yml中有这样的内容:# 安全配置security: # 验证码 captcha: enabled: true type: math代码演示package com.ruoyi.gateway.config.properties;import org.springframework.boot._@configurationproperties(prefix = "security.captcha")

Java中new Date().getTime()时间戳问题-程序员宅基地

文章浏览阅读5.4w次,点赞10次,收藏20次。1. getTime()返回值Java和JavaScript都支持时间类型Date,他们的getTime()方法返回的是毫秒数。默认返回的是13位数字,单位是毫秒。2. 注意事项 /** * Returns the number of milliseconds since January 1, 1970, 00:00:00 GMT * represented by this <tt>Date</tt> object. * * @retur_new date().gettime()

Input属性详解_input标签属性-程序员宅基地

文章浏览阅读1.3w次。注意radio(单选框)需要value值相等才可以实现单选的功能,value值可以随意设。(1)当inputtype=“text”、“password”、"hidden"时,定义输入字段的初始值;(2)当inputtype=“button”、“reset”、"submit"时,定义按钮上的显示的文本;(3)当inputtype=“checkbox”、“radio”、"image"时,定义与输入相关联的值;1.name属性元素的名称,也就是name的值代表当前input元素的名字;..._input标签属性

推荐文章

热门文章

相关标签