基于matlab的回波,基于MATLAB回波信号产生与消除.doc

基于MATLAB回波信号产生与消除

摘 要

MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。 MATLAB语言具备高效、可及推理能力强等特点,在数值计算方法、图形功能、用户界面设计编程手段和工具等方面有着重要的应用,随着MATLAB应用领域不断扩大,使其成为一种影响大、流行广的科学计算语言。

本次设计主要把原有WAV格式的声音文件通过MATLAB软件转换成声音文件。同时利用MATLAB产生原信号的延时衰减的回波信号附加到原信号形成回波信号。使用xcorr函数对延时和衰减进行估计。并对反射物的距离进行估计。

关键词:MATLAB;数字信号处理;回波 ;频谱分析;滤波器;xcorr函数

正 文

1 设计目的和要求

1.1 已知技术参数和设计要求

本毕业设计要求用MATLAB语言编程实现回波信号的产生与消除。

1.2 具体要求

(1)利用声音信号x产生带有回声的声音文件y。

(2)从带有回声的文件y中消除回声。

(3)从y中估计反射物的距离。

2.设计原理

采集语音:采集一段语音,绘制其时域波形,对此音频信号用FFT作谱分析。

加入回声:对采集的语音进行处理,加入一段回声,并绘制其时域波形,对其进行FFT频谱分析,绘制频谱图。

从带有回声的声音信号中恢复原信号:设计合适的滤波器,对带有回声的声音信号进行滤波,恢复原信号。绘制所设计滤波器的幅频和相频特性,及滤波后的信号的时域波形和频谱图。

从带有回声的声音信号中估计反射物的距离:采用相关分析法从带有回声的声音信号中估计反射物的距离。

3.设计内容

(1)语音采集

读取本地音频文件LoopyMusic.wav

(2)原始信号的时域波形,FFT频谱分析

[x,fs,bits] = wavread('LoopyMusic');

x=x(:,1);

x=x(1:16000);

figure(1);

subplot(3,1,1);

plot(x); grid on;

xlabel('时间'); ylabel('幅值'); title('原始信号时域波形');

subplot(3,1,2);

wx=fft(x);

plot(abs(wx)); grid on;

xlabel('频率'); ylabel('幅值'); title('幅频特性');

subplot(3,1,3);

plot(angle(wx)); grid on;

xlabel('频率'); ylabel('相位') ;title('相频特性');

(3)加入回声

N=36000;

y=[x;zeros(N,1)]+0.5*[zeros(N,1);x];

wavwrite(y,'加回声后的信号');

figure(2);

subplot(3,1,1);

plot(y); grid on;

xlabel('时间'); ylabel('幅值'); title('加回声后信号时域波形');

subplot(3,1,2);

wy=fft(y);

plot(abs(wy)); grid on;

xlabel('频率'); ylabel('幅值'); title('幅频特性');

subplot(3,1,3);

plot(angle(wy)); grid on;

xlabel('频率'); ylabel('相位') ;title('相频特性');

(4) 加回声后信号的时域波形,FFT频谱分析

r=xcorr(y);

figure(3);

plot(r);

grid on;

title('y的自相关函数');

[u,v]=max(r);

r1=r;

r1(v-5000:v+5000,1)=0;

[u1,v1]=max(r1);

N=v-v1;

title(N);

N

for k=1:2

t(k)=(-1)^k*y(36000*(k-1)+1,1);

end

roots(t)

(5) 从带有回声的声音信号中恢复原信号且估计反射物的距离

a=[1,zeros(1,35999),0.5];

b=[1];

x1=filter(b,a,y);

wavwrite(x1,'恢复后的信号')

figure(4);

subplot(3,1,1);

plot(x1); grid on;

xlabel('时间'); ylabel('幅值'); title('恢复后的信号时域波形');

subplot(3,1,2);

wx1=fft(x1);

plot(abs(wx1)); grid on;

xlabel('频率'); ylabel('幅值'); title('幅频特性');

subplot(3,1,3);

plot(angle(

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

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

相关文章

C++map容器-插入和删除

map插入和删除 功能描述&#xff1a; map容器进行插入数据和删除数据 函数原型&#xff1a; 代码如下&#xff1a; #include <iostream> using namespace std; #include <map>//map容器 插入和删除 void printMap(map<int, int> &m) {for (map<in…

你需要了解的 JIT Debugging

如果你还不清楚什么是转储文件&#xff0c;不知道什么时候需要转储文件&#xff0c;请参考转储文件系列文章的第一篇 —— 转储文件知多少。前言 我在 你需要知道的 N 种抓取 dump 的工具 的工具 这篇文章里&#xff0c;向大家介绍了几款可以抓取转储文件的工具及其简单用法。不…

C++map容器-排序

map容器排序 利用仿函数&#xff0c;可以改变排序规则 代码如下&#xff1a; #include <iostream> using namespace std; #include <map> //map容器 排序class Mycompare {public:bool operator()(int v1, int v2) {//降序return v1 > v2;} };void test01() {…

超越“迁移”的思考:应用程序该如何被Kubernetes接管?

传统虚拟机&#xff08;VM&#xff09;的可扩展性差强人意&#xff0c;但Kubernetes可以快速&#xff0c;无缝地扩展正在运行的服务。Kubernetes将容器、集群以及广泛的抽象配置方法引入桌面&#xff0c;用于提升部署和变更管理体验&#xff0c;从而使人们对Kubernetes关注更多…

C++string容器-字符串拼接

string字符串拼接 功能描述&#xff1a; 实现在字符串末尾拼接字符串 函数原型&#xff1a; 代码如下&#xff1a; #include <iostream> using namespace std; #include <cstring>//string字符串拼接 void test01() {string str1 "我";str1 "爱…

如何运用领域驱动设计 - 存储库

概述在上一篇文章<如何运用领域驱动设计 - 聚合>中&#xff0c;我们已经了解过领域驱动设计中一个很核心的对象-聚合。在现实场景中&#xff0c;我们往往需要将聚合持久化到某个地方&#xff0c;或者是从某个地方创建出聚合。此时就会使得领域对象与我们的基础架构产生紧…

C++string容器-字符串查找和替换

string查找和替换 功能描述&#xff1a; 查找&#xff1a;查找指定字符串是否存在 替换&#xff1a;在指定的位置替换字符串 函数原型&#xff1a; rfind 和find 的区别&#xff1a; rfind从右往左查找 find从左往右查找 查找案列代码如下&#xff1a; #include <iostrea…

如何运用领域驱动设计 - 工作单元

概述在上一篇 《如何运用领域驱动设计 - 存储库》 的文章中&#xff0c;我们讲述了有关仓储的概念和使用规范。仓储为聚合提供了持久化到本地的功能&#xff0c;但是在持久化的过程中&#xff0c;有时一个聚合根中的各个领域对象会分散到不同的数据库表里面&#xff1b;又或者是…

C++string容器-字符串比较

string字符串比较 功能描述: 字符串之间的比较 比较方式&#xff1a; 通常用来比较两个字符串是否相等 函数原型&#xff1a; 代码如下&#xff1a; #include <iostream> using namespace std; #include <cstring> //string字符串比较void test01() {string…

国产自主研发编程语言火了,同行十二年,不知Python是木兰?

1月17号有媒体称&#xff0c;一款面向智能物联网和编程教育的号称自主研发语言横空出世&#xff0c;名为【Mulan 】。消息一出&#xff0c;引起了众多争议。但有知乎网友发现&#xff0c;下载的程序包解包后——是个 Python&#xff1f;何为木兰&#xff1f;1月17号&#xff0c…

C++string容器-字符存取

string中单个字符存取方式有两种 代码如下&#xff1a; #include <iostream> using namespace std; #include <cstring>//string 字符存取 void test01() {string str "hello";cout << "str " << str << endl;for (int i…

有了容器为什么kubernetes还需要Pod?

简介容器并不是软件开发的银弹&#xff0c;没有任何一种技术能解决软件开发中的所有问题当我们采用容器化技术的时候&#xff0c;摒弃了传统的物理机或者虚拟机的部署方式&#xff0c;以一种更加轻快&#xff0c;便捷的方式来部署我们的应用。到容器化的进阶&#xff0c;再加上…

C++string容器-插入和删除

string插入和删除 功能描述&#xff1a; 对string字符串进行插入和删除字符操作 函数原型&#xff1a; #include <iostream> using namespace std; #include <cstring>//字符串 插入和删除 void test01() {string str "hello";str.insert(1, "…

.NET绘制旋转太极图

前言我之前发了一篇《 用.NET写“算命”程序》的文章&#xff0c;但有人纷纷提出了质疑&#xff0c;认为没有“科学”&#xff08; mi xin&#xff09;依据????。所谓“太极生两仪&#xff0c;两仪生四象&#xff0c;四象生八卦&#xff0c;八卦定吉凶&#xff0c;吉凶生大…

.NET CORE(C#) WPF 抽屉式菜单

.NET CORE(C#) WPF 抽屉式菜单阅读导航本文背景代码实现本文参考源码1. 本文背景使用简单动画实现抽屉式菜单2. 代码实现使用 .NET CORE 3.1 创建名为 “AnimatedColorfulMenu” 的WPF模板项目&#xff0c;添加1个Nuget库&#xff1a;MaterialDesignThemes&#xff0c;版本为最…

matlab中scrsz的意思,matlab图片c存储方法

图片保存四种方法可以保存为fig,eps,jpeg,gif,png,bmp等格式。2 复制粘贴 <edit------〉copy figure&#xff0c;再粘贴到其他程序&#xff0c;如word3 saveas函数 <saveas(gca,filename,fileformat)不过此函数不好用常常出错4 print函数 <>> print(gcf,-dpng,a…

C++string容器-子串获取

string子串 功能描述&#xff1a; 从字符串中获取想要的子串 函数原型&#xff1a; 代码如下&#xff1a; #include <iostream> using namespace std; #include <cstring>//string求子串void test01() {string str "abcdef";string subStr str.sub…

我的 .NET Core 博客性能优化经验补充

点击上方蓝字关注“汪宇杰博客”导语去年年底我写了一篇《我的 .NET Core 博客性能优化经验总结》&#xff0c;但后来还发现有一处遗漏需要补充。我们一起来看看~牺牲空间换时间我们知道软件设计只有高手才能做到又小又快&#xff0c;像我这种普通程序员通常只有两种方案&#…

php怎么上传函数,PHP单文件上传原理及上传函数的封装操作示例

搜索热词H_404_0本文实例讲述了PHP单文件上传原理及上传函数的封装操作。分享给大家供大家参考&#xff0c;具体如下&#xff1a;H_404_0表单&#xff1a;H_404_00.PHP:无标题文档请选择您要上传的文件H_404_0单文件上传函数的封装&#xff1a;H_404_000.PHP://单文件上传函数的…

蓝桥杯2015初赛-方程整数解-枚举

题目描述 方程: a^2 b^2 c^2 1000 这个方程有正整数解吗&#xff1f;有&#xff1a;a,b,c6,8,30 就是一组解。 求出 a^2 b^2 c^2 n(1<n<10000)的所有解&#xff0c;解要保证c>b>a>1。 输入 存在多组测试数据&#xff0c;每组测试数据一行包含一个正整数…