基于MATLAB的 回声信号产生器

合集下载

MATLAB语言编程实现回波信号的产生和消除

MATLAB语言编程实现回波信号的产生和消除

目录1·摘要⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯ 22.正文⋯⋯ (3)(1)设计目的和要求⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯.⋯ (3)(2)设计原理⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯.⋯⋯.3(3)设计内容⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯..3 3.总结与致谢⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯ (11)4·参考文献⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯12摘要回波是现代通信中影响通信质量的噪声干扰,也有测距估算等的使用价值。

MATLAB 语言具备高效、可及推理能力强等特点,在数值计算方法、图形功能、用户界面设计编程手段和工具等方面有着重要的应用,随着MATLAB 应用领域不断扩大,使其成为一种影响大、流行广的科学计算语言。

本文基于MATLAB 以回波这一最简单的线性模型进行分析,实现了回波的产生、消除、测量反射物的距离。

本设计方案用MATLAB 自带的函数功能读取语音信号,通过延迟叠加产生回波信号来模拟回声,通过计算分析输出信号的自相关函数利用基于自相关函数的方法来估计衰减系数和延迟,并利用快速傅里叶变换将回波信号滤除回声,得到原声音信号,同时根据延迟估计反射物的距离。

关键字:回波自相关函数MATLAB 延迟距离正文(1)设计目的和要求本课程设计要求用MATLAB 语言编程实现回波信号的产生和消除。

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

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

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

(2)设计原理1·根据设计要求分析系统功能,掌握设计中所需理论(采样频率、采样位数的概念,采样定理:回声信号,相关性分析;数字滤波器设计原理和方法) 。

采样频率:采样频率,也称为采样速度或者采样率,定义了每秒从连续信号中提取并成离散信号的采样个数。

采样位数:即采样值或取样值,用来衡量声音波动变化的参数,是指声卡在采集和播放声音文件时所使用数字声音信号的二进制位数。

基于MATLAB 的声音信号采集系统(论文)

基于MATLAB 的声音信号采集系统(论文)

基于MATLAB 的声音信号采集系统野龙平(陕西师范大学电子信息科学与技术,陕西)摘要: 声音是各种信号传递与交流最直接的体现,因此对声音信号的研究有十分重要的意义。

本文主要针对Matlab指令系统对声音信号的采集,作者利用Matlab 提供的数据采集工具箱, 介绍了倆种采集方法,简单分析并比较其优缺点。

基于matlab的数据采集系统, 具有实现简单、性价比和灵活度高的优点。

关键词: Matlab; 数据采集0 引言随着科技的发展,对于语音信号的采集已经有很多种方法,如基于单片机技术、VC,C++等编程、纯硬件电路,本文介绍的方法主要通过一款软件MATLAB。

它是MathWorks 公司推出的一种面向工程和科学运算的交互式计算软件, 其中包含了一套非常实用的工具-- 数据采集工具箱。

使用此工具箱更容易将实验测量、数据分析和可视化的应用集合在一起。

数据采集工具箱提供了一整套的命令和函数, 通过调用这些命令和函数, 可以直接控制数据采集设备的数据采集。

作者简单介绍了一种用声卡进行语音信号采集和MATLAB 的数据采集工具箱进行分析处理的语音信号采集系统。

经实验证明, 该系统可实现在线连续采集语音信号并进行分析和处理, 具有实现简单、性价比和灵活度高的特点。

1 语音数据采集系统设计MATLAB 中提供了强大的数据采集工具箱( DAQ- Data Acquisition Toolbox) , 可满足控制声卡进行数据采集的要求。

用户通过调用MATLAB 命令, 可对采集的数据进行分析和处理, 为用户带来了极大的方便。

语音数据采集过程如图1 所示。

图1声卡采集声音信号有两种方式: 传输线输入方式(LineIn) 和麦克风输入( MicIn) 方式。

LineIn 方式是通过传输线把其他声音设备, 如录音机等设备的音频输出信号连接到声卡, 通过声卡记录数据存入计算机。

本系统采用MicIn 方式, 即用麦克风接收语音通过声卡将音频信号存入计算机。

回声抵消器的MATLAB设计与实现

回声抵消器的MATLAB设计与实现

回声抵消器的MATLAB设计与实现前言随着信息时代的到来,人们日渐依赖的通信方式正从早期的单一语言通信向多种业务、多种网络综合通信的方向发展,这也正是目前讨论比较多的多媒体通信的发展方向。

在各种各样的通信业务中,凡是需要同时使用扬声器和麦克风的场合,例如会议电视、免提电话等系统终端,都不可避免地会因本地扩声系统和麦克风之间电声祸合,产生回声问题。

为了增加系统稳定性,提到通信的质量,必须设置回声抵消器来排除回声的影响。

1回声抵消的原理回声抵消器(ACE)的基本原理是用一个自适应滤波器去辨识扬声器与麦克风之间的声回波路径,通过自适应滤波算法的调整,使其自适应权值与声回波房间的冲激响应逼近,从而得到声回波估计信号,再将估计信号从麦克风接收到的语言信号中减去,即可实现声回波抵消(如图1所示)。

其中,声回波抵消器产生的回波抵消预测信号为r(n),实际声回波信号为r(n),预测误差信号为e(n)。

则用公式表达声回波抵消的过程为:e(n)=r(n)-r(n) (1)(2)由图1可知,声回波抵消的核心是一个自适应滤波器。

自适应滤波器使用中要考虑的重要问题是优化调整滤波器参数的准则,该准则不仅要对滤波器性能提供有意义的度量,而且必须导出可实现的算法。

对自适应算法的要求是收敛速度快,计算复杂度低,稳定性好,失调误差小。

2回声抵消器的算法回声抵消器的算法都采用自适应算法,目前最受欢迎的自适应算法是LMS 算法,LMS 算法简单有效,易于实现,最小均方误差算法(LMS )是一种用瞬时值估计梯度矢量的方法,即2[()]()2()()()n e n e n n n ∂∇==-∂X h (3)按照自适应滤波器滤波系数矢量的变化与梯度矢量估计的方向之间的关系,可以写出LMS 算法调整滤波器系数的公式如下所示:1(1)()[()]2n n n μ+=+-∇h h()()()n e n n μ=+h X (4)上式中的μ为步长因子。

数字信号处理课程设计报告-基于MATLAB的语音信号的特技处理

数字信号处理课程设计报告-基于MATLAB的语音信号的特技处理

数字信号处理课程设计报告-基于MATLAB的语音信号的特技处理xxxx数字信号处理课程设计报告题目:基于MATLAB 的语音信号的特技处理系 (院): 计算机工程学院专业: 通信工程班级: 通信xx班学号: xxxxxxxx姓名: xxx指导教师: xxx学年学期: 2009 ~ 2010 学年第 1 学期2009年12月 18 日设计任务书课题基于MATLAB 的语音信号的特技处理名称1. 巩固所学的数字信号处理理论知识,理解信号的采集、处理、传输、显示和存储过程;设计2. 综合运用专业及基础知识,解决实际工程技术问题的能力; 目的3. 学习资料的收集与整理,学会撰写课程设计报告。

1. 微型电子计算机(PC); 实验环境 2. 安装Windows 2000以上操作系统,MATLAB等开发工具。

1. 选择一个语音信号作为分析的对象,或录制一段各人自己的语音信号,并对其进行频谱分析; 然后在时域用数字信号处理方法将信号加入延时和混响,再分析其频谱,并与原始信号频谱进行比较;最后设计一个信号处理系统界面。

2. 利用课余时间去图书馆或上网查阅课题相关资料,深入理解课题含义及设计要求,任务注意材料收集与整理; 要求3. 在第15周末之前完成预设计,并请指导教师审查,通过后方可进行下一步工作;4. 结束后,及时提交设计报告(含纸质稿、电子稿),要求格式规范、内容完整、结论正确,正文字数不少于3000字(不含代码)。

工作进度计划序号起止日期工作内容2009.12.14~2009.12.14 在预设计的基础上,进一步查阅资料,完善设计方案。

12009.12.14~2009.12.17 设计总体方案,构建、绘制流程框图,编写代码,上机调试。

22009.12.17~2009.12.18 测试程序,完善功能,撰写设计报告。

32009.12.18 参加答辩,根据教师反馈意见,修改、完善设计报告。

4指导教师(签字):年月日摘要语音是人们交流思想和进行社会活动的最基本手段,我们要对语音信号进行测定并将其转变为另一种形式,以提高我们的通信能力。

[设计]回声实验

[设计]回声实验

回声实验回声是一种物理现象。

当传入人耳的直达声和回声之间的时间差在1/20s以上时,可以很清楚的把它们区分开。

相反,直达声和回声之间的时间差在1/20s以下时,回声不但不妨碍听音,反而使声音更加响亮。

应用MA TLAB软件可以方便的进行仿真实验。

图1所示是回声的仿真实验系统。

图中1800的延迟代表了声音在两个反射体之间走一个来回的延迟(1800/Fs秒),它的值愈大,反映两个反射体的距离愈大。

图中0.8的增益代表了声音在两个反射体之间走一个来回的损耗,它愈小,回声衰减愈快。

图中0.9的增益代表了传输损耗。

其中Reshape(整形器)输出维数的参数值设为1-D array(1维);扬声器的序列持续期为1,初始输出延迟为0.1;声源的信号为mtlb,采样时间为1/8000,每帧采样数为32。

在本实验中需要一段声音文件来进行仿真,此处调出MA TLAB中的声音文件“load mtlb.mat”获得声音文件。

通过下列程序调入仿真的声音数据并启动仿真。

Echo11是图1所示的仿真系统的文件名。

load mtlb.matsim(‘echo11’)图1图2所示是仿真实验时示波器上显示的波形图,上图是原声,下图是往复反射的回声波形图。

进行仿真时,能听见扬声器发出的回声声音。

图2将系统框图中0.8的增益改为0.5,回声波形衰减的更快了,见图3,且从扬声器发出的回声声音变短促了。

图3将系统框图中0.9的增益改小也会使回声衰减的更快。

将系统框图中1800的延迟改为100,代表两反射体间距离变短了,见图4,实验后几乎不存在回声了。

图4但若将系统框图中1800的延迟改的更大一点,例如改为4000,代表两反射体间距离变,长了,见实验结果图5,回声持续的时间更长了。

图5由以上仿真实验可得,回声现象取决于几个重要的物理参数:(1)声源距离听者有多远。

(2)声音产生往复反射的两个反射体距离有多远。

(3)声音的反射体在反射声音的过程中对声音的衰减有多大。

基于MATLAB的声音信号频谱分析仪

基于MATLAB的声音信号频谱分析仪

基于MATLAB的声音信号频谱分析仪齐齐哈尔大学综合实践1题目基于MATLAB的声音信号频谱分析仪学院专业班级学生姓名指导教师成绩1.绪论11概述随着软硬件技术的发展仪器的智能化与虚拟化已成为未来实验室及研究机构的发展方向虚拟仪器技术的优势在于可由用户定义自己的专用仪器系统且功能灵活很容易构建所以应用面极为广泛基于计算机软硬件平台的虚拟仪器可代替传统的测量仪器如示波器逻辑分析仪信号发生器频谱分析仪等从发展史看电子测量仪器经历了由模拟仪器智能仪器到虚拟仪器由于计算机性能的飞速发展已把传统仪器远远抛到后面并给虚拟仪器生产厂家不断带来连锅端的技术更新速率目前已经有许多较成熟的频谱分析软件如SpectraLABRSAVudBFA等声卡是多媒体计算机最基本的配置硬件之一价格便宜使用软件他的数据采集工具箱为实现数据的输入和输出提供了十分方便的函数和命令本文将给出基于声卡与MATLAB的声音信号频谱分析仪的设计原理与实现方法功能包括1 音频信号信号输入从声卡输入从WAV文件输入从标准信号发生器输入2 信号波形分析包括幅值频率周期相位的估计以及统计量峰值均值均方值和方差的计算3 信号频谱分析频率周期的估计图形显示幅值谱相位谱实频谱虚频谱和功率谱的曲线12 MATLAB软件介绍MATLAB 是美国MathWorks公司出品的商业数学软件用于算法开发数据可视化数据分析以及数值计算的高级技术计算语言和交互式环境主要包括MATLAB和Simulink两大部分MATLAB已成为国际公认的最优秀的科技应用软件之一具有编程简单数据可视化功能强可操作性强等特点而且配有功能强大专业函数丰富的图像处理工具箱是进行图像处理方面工作必备的软件工具MATLAB是矩阵实验室Matrix Laboratory的简称和MathematicaMaple并称为三大数学软件它在数学类科技应用软件中在数值计算方面首屈一指MATLAB可以进行矩阵运算绘制函数和数据实现算法创建用户界面连接其他编程语言的程序等主要应用于工程计算控制设计信号处理与通讯图像处理信号检测金融建模设计与分析等领域目前数字滤波器的设计有许多现成的高级语言设计程序但他们都存在设计效率较低不具有可视图形不便于修改参数等缺点而Matlab为数字滤波的研究和应用提供了一个直观高效便捷的工具它以矩阵运算为基础把计算可视化程序设计融合到了一个交互式的工作环境中尤其是Matlab工具箱使各个领域的研究人员可以直观而方便地进行科学研究与工程应用其中的信号处理工具箱图像处理工具箱小波工具箱等更是为数字滤波研究的蓬勃发展提供了可能利用傅里叶变换的方法对振动的信号进行分解并按频率顺序展开使其成为频率的函数进而在频率域中对信号进行研究和处理的一种过程称为频谱分析将信号在时间域中的波形转变为频率域的频谱进而可以对信号的信息作定量解释对信号进行频谱分析是对其进行傅里叶变换得到其振幅谱与相位谱分析软件主要为Matlab对于信号来说分与数字信号进行频谱分析时对于模拟信号来说首先对其进行抽样使其离散化然后利用DFT或者FFT然后对其幅度ABS和相位ANGLE的进行分析而对于数字信号来说则可直接进行离散傅里叶变换或快速傅里叶变换2.设计原理21频谱分析原理时域分析只能反映信号的幅值随时间的变化情况除单频率分量的简单波形外很难明确提示信号的频率组成和各频率分量大小而频谱分析能很好的解决此问题由于从频域能获得的主要是频率信息所以本节主要介绍频率周期的估计与频谱图的生成com与FFT对于给定的时域信号y可以通过Fourier变换得到频域信息YY可按下式计算式中N为样本容量Δt 1Fs为采样间隔采样信号的频谱是一个连续的频谱不可能计算出所有的点的值故采用离散Fourier变换 DFT 即式中Δf FsN但上式的计算效率很低因为有大量的指数等价于三角函数运算故实际中多采用快速Fourier变换 FFT 其原理即是将重复的三角函数算计的中间结果保存起来以减少重复三角函数计算带来的时间浪费由于三角函数计算的重复量相当大故FFT能极大地提高运算效率com 频率周期的估计对于Y kΔf 如果当kΔf 时Y kΔf 取最大值则为频率的估计值由于采样间隔的误差也存在误差其误差最大为Δf 2周期T 1f从原理上可以看出如果在标准信号中混有噪声用上述方法仍能够精确地估计出原标准信号的频率和周期这个将在下一章做出验证com 频谱图为了直观地表示信号的频率特性工程上常常将Fourier变换的结果用图形的方式表示即频谱图以频率f为横坐标Y f 为纵坐标可以得到幅值谱以频率f为横坐标arg Y f 为纵坐标可以得到相位谱以频率f为横坐标Re Y f 为纵坐标可以得到实频谱以频率f为横坐标Im Y f 为纵坐标可以得到虚频谱根据采样定理只有频率不超过Fs2的信号才能被正确采集即Fourier变换的结果中频率大于Fs2的部分是不正确的部分故不在频谱图中显示即横坐标f ∈[0 Fs2]23 模块划分模块化就是把程序划分成独立命名且可独立访问的模块每个模块完成一个子功能把这些模块集成起来构成一个整体可以完成指定的功能满足用户需求根据人类解决一般问题的经验如果一个问题由两个问题组合而成那么它的复杂程度大于分别考虑每个问题时的复杂程度之和也就是说把复杂的问题分解成许多容易解决的小问题原来的问题也就容易解决了这就是模块化的根据在模块划分时应遵循如下规则改进软件结构提高模块独立性模块规模应该适中深度宽度扇出和扇入都应适当模块的作用域应该在控制域之内力争降低模块接口的复杂程度设计单入口单出口的模块模块功能应该可以预测本着上述的启发式规则对软件进行如图 2所示的模块划分图 2频谱分析仪的模块划分24软件实现com计MATLAB是Mathworks公司推出的数学软件它将数值分析矩阵计算信号处理和图形显示结合在一起为众多学科领域提供了一种简洁高效的编程工具它提供的GUIDE工具为可视化编程工具使得软件的界面设计像VB一样方便故本文采用MATLAB作为编程语言实现声音信号频谱分析仪以下所讲的都是在MATLAB70环境中为了实现预期的功能设计如图 3所示的界面图 3 频谱分析仪的界面设计com块的实现采样频率Fs与采样点数N是声音信号输入时共同需要作用的参数故将其独立出来下面为别介绍三种输入方式的实现1 这里声卡输入是指由麦克风录音得到的声音信号的输入MATLAB提供了wavrecord函数该函数能够实现读取麦克风录音信号以下是开始录音按钮的回调函数内容首先获得设定的Fs值Fs str2double get findobj Tagsamplerate String根据设定的录音时长进行录音将其存入handlesy中handlesy wavrecord str2double get handlesrecordtimeString Fs Fsint16保存handles结构体使得handlesy在别的函数中也能使用guidata hObjecthandles在波形显示区绘出波形plot handlestimehandlesytitle WAVE将所采到的点的数量输出在采样点数中ysize size handlesyset handlessamplenumStringnum2str ysize 12 WAV文件输入MATLAB提供了wavread函数该函数能够方便的打开并读取WAV文件中的声音信息并且同时读取所有声道下面是打开文件按钮回调函数的部分代码其它代码与声卡输入的类似从WAV文件中读取的声音信息并临时存放到temp变量中temp wavread get findobj Tagfilename String获得所选择的声道channel str2double get handleschannelString将指定声道的信息存放到handlesy中handlesy temp channel3 信号发生器 MATLAB有产生标准信号的函数如sawtooth能够产生三角波或钜齿波首先利用get函数获得波形soundtype频率frequency幅值amp和相位phase然后是以下代码switch soundtypecase 1 标准正弦波y ampsin 2pixfrequencyphasecase 2 方波y ampsign sin 2pixfrequencyphasecase 3 三角波y ampsawtooth 2pixfrequencyphase05case 4 钜齿波y ampsawtooth 2pixfrequencyphasecase 5 白噪声y amp 2rand size x -1otherwiseerrordlg Illegal wave typeChoose errerendif get handlesaddValue 00handlesy y 若没有勾选上混迭则将生成的波形赋给handlesyelse 否则将生成的波形与原有波形叠加handlesy handlesyyend25.运行实例与误差分析为了分析软件的性能并比较时域分析与频域分析各自的优势本章给出了两种分析方法的频率估计的比较分析软件的在时域和频域的计算精度问题com弦信号的频率估计用信号发生器生成标准正弦信号然后分别进行时域分析与频域分析得到的结果如图 4所示从图中可以看出时域分析的结果为f 4003702Hz频域分析的结果为f 417959Hz而标准信号的频率为400Hz从而对于标准信号时域分析的精度远高于频域分析的精度图 4 标准正弦信号的频率估计com 带噪声的正弦信号的频率估计先成生幅值100的标准正弦信号再将幅值50的白噪声信号与其混迭对最终得到的信号进行时域分析与频域分析结果如图 5所示可以看出时域分析的结果为f 1589498Hz频域分析的结果为f 200391Hz而标准信号的频率为200Hz 从而对于带噪声的正弦信号频域分析的精度远高于时域分析的精度图 5 带噪声的正弦信号的频率估计com 结果分析与结论在时域频率估计是使用过零检测的方式计算出从而对于带噪声的信号既容易造成误判也容易造成漏判且噪声信号越明显误判与漏判的可能性越大但在没有噪声或噪声很小时时域分析对每个周期长度的检测是没有累积误差的故随着样本容量的增大估计的精度大大提高在频域频率估计是通过找出幅值谱峰值点对应的频率求出故不会有时域分析的问题但频率离散化的误差及栅栏效应却是不可避免地带来误差仅频率离散化的误差就大于Fs2由实验结果及以上的分析可以得出结论在作频率估计时如果信号的噪声很小采用时域分析的方法较好如果信号的噪声较大采用频域分析的方法较好3总结本文给出了基于MATLAB的声音信号频谱分析仪的设计原理与实现方法在原理部分从时域和频域两个方面提供了信号分析所需要的算法流程及计算公式在原理的最后还结合软件工程理论给出了软件的模块划分这样在基于此设计原理的基础上可以用任何平台任何语言进行软件开发在实现方法上结合软件的界面和具体的代码讲述了整个软件编码实现的原理最后结合一个运行实例比较了时域分析与频域分析计算频率的异同之处并分析了误差的原因尽管MATLAB有强大的数学函数库使得编程时间大大缩短但MATLAB有它固有的缺陷如运行速度太慢因为它是解释型语言而且运行依赖了MATLAB软件无法发布为商用软件另外在控制用户输入上也比较难以实现这些缺陷也导致了用MATLAB所开发的软件有这些缺陷通过这次课程设计相信对以后在社会上工作和学习会有很多帮助让我们能更好的进入工作状态最重要的是这次课程设计也增加了我们对问题的研究和探讨在我们以后的学习中会有更多的帮助参考文献[1]黄昱软件频谱仪设计华中科技大学硕士学位论文 20045[2]肖旸胡耀祖基于虚拟技术的频谱分析仪器方案微机发展20036[3]张桂林张烈平基于声卡和Matlab的虚拟信号发生器现代电子技术[4]张海藩软件工程北京人民邮电出版社 20023。

matlab课程设计-基于MATLAB的回波信号的产生与消除

matlab课程设计-基于MATLAB的回波信号的产生与消除

(5) 从带有回声的声音信号中恢复原信号且估计反射物的距离
这里把信号的恢复和反射物距离的估计放到一起是基于这么一种考虑,说明如下: 在回声产生的过程中,用到了:y(n)=x(n)+ax(n-N),用的a=0.5,N=2400。然而现在要从加 回声后的信号中恢复原信号,应该是在这么一种前提下,即“只有y(n)已知,其他都 是未知的”。就是说,要假设我们并不知道原信号,且a与N都是未知的,这就给信号的 恢复带来了困难,如果直接用y(n)=x(n)+0.5*x(n-2400)是不合理的。这个时候就要用到对 反射物距离的估计的过程,在这个过程中利用相关分析法可以估算出N的值,利用N来 算反射物的距离,求得N,则可以进一步求得a,具体方法和原理如下:
加回声后的信号.wav
恢复后的信号:
恢复后的信号.wav
小结:
这个过程大体上完成了所要求的功能:采集一个语音信号,加入回声,恢复原信号,估计反 射物距离。在这里,有一个非常大的不足就是,对于各个函数都是直接引用已有函数,并未 自己编程实现。在整个过程中,我认为有一点对于从回声信号中恢复原信号来说非常重要,
H (z)
X (z) 1 Y ( z ) 1 0.4* z 2400
知道系统函数后,可以调用filter函数 filter是一维数字滤波器 其使用方法如下: Y = filter (B,A,X) ,输入X为滤波前序列,Y为滤波结果序列,B/A 提供滤波器系数,B 为分子, A为分母整个滤波过程是通过下面差分方程实现的: a(1)*y(n) = b(1)*x(n) + b(2)*x(n-1) + ... + b(nb+1)*x(n-nb)- a(2)*y(n-1) - ... a(na+1)*y(n-na) 下面从带有回声的声音信号中恢复原信号并保存,并且画出时域图与频域图 代码如下 a=[1,zeros(1,2399),0.5]; b=[1]; x1=filter(b,a,y); wavwrite(x1,'恢复后的信号') subplot(3,1,1); plot(x1); grid on; xlabel('时间'); ylabel('幅值'); title('恢复后的信号时域波形'); subplot(3,1,2); wx1=fft(x1); f=(0:3*fs+N-1)*fs/(3*fs+N); plot(f,abs(wx1)); grid on; xlabel('频率'); ylabel('幅值'); title('幅频特性'); subplot(3,1,3); plot(f,angle(wx1)); grid on; xlabel('频率'); ylabel('相位') ;title('相频特性');

实验一-基于MATLAB的白噪声信号u(n)、sinc函数、chirp信号产生实验

实验一-基于MATLAB的白噪声信号u(n)、sinc函数、chirp信号产生实验

实验一基于MATLAB的白噪声信号u(n)、sinc函数、chirp信号产生实验一、实验目的:1.学会使用MATLAB2.通过实验了解MATLAB如何产生各种常用信号3.掌握MATLAB的编程方法二、实验内容:1.用MATLAB编程产生一均匀分布的白噪声信号u(n),画出其波形,并检验其分布情况。

代码:clear;N = 50000;u = rand(1,N);u_mean = mean(u);power_u = var(u);subplot(211);plot(u(1:100));grid on;ylabel('u(n)');xlabel('n');subplot(212);hist(u,100);grid on;ylabel('histogranm of u(n)');运行结果:2.用MATLAB编程产生一均匀分布、均值为零、功率为0.01的白噪声信号u(n),画出其波形。

代码:clear;p = 0.01;N = 50000;u = rand(1,N);u = u - mean(u);a = sqrt(12*p);u1 = u*a;power_u1 = dot(u1,u1)/N;subplot(111);plot(u1(1:200));grid on;ylabel('u(n)');xlabel('n');运行结果:3.用MATLAB编程产生高斯分布的白噪声信号,使功率为p,并观察数据分布的直方图。

代码:p = 0.1;N = 50000;u = rand(1,N);u = u*a;power_u = var(u);subplot(211);plot(u(1:200));grid on;ylabel('u(n)');xlabel('n');subplot(212);hist(u,50);grid on;ylabel('histgram of u(n)');运行结果:4.用MATLAB编程产生一sinc函数,画出其波形。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

电子信息工程学院《DSP技术及应用》课程设计报告题目:基于MATLAB的回声信号产生器专业班级:通信工程专业二〇一三年六月十六日目录一、设计目的 (1)二、设计要求 (1)三、设计原理及方案 (1)四、设计流程 (5)五、调试分析 (5)六、GUI界面 (17)七、设计总结.………………………………………………………. .20一、设计目的综合运用我们掌握的数字信号处理知识,利用matlab语言编程进行回声信号产生器的设计再对其进行频谱分析,实现回声的产生,消除和隐藏。

1、首先熟练掌握对声音采集、处理、衰减、延时等过程的理论知识。

2、根据设计思路,学习资料的搜集与整理。

3、通过理论与实际的结合,在理论的基础结合实际情况完成课程的设计。

关于MATLAB软件:MATLAB语言具备高效、可及推理能力强等特点,是目前工程界流行最广泛的科学计算语言。

MATLAB强大的运算和图形显示功能,可使信号与系统上机实验效率大大提高。

特别是它的频谱分析和滤波器分析与设计功能很强,使数字信号处理工作变得十分简单,直观。

关于GUI界面:图形用户界面GUI (Graphics User Interface) 是由各种图形对象,如图形窗口、图轴、菜单、按钮、文本框等构建的用户界面,是人机交流信息的工具和方法。

GUI 设计即可以基本的MATLAB 程序设计为主,也可以鼠标为主利用GUIDE 工具进行设计。

二、设计要求首先,自己录取一个合适的原声信号,并对其进行频谱分析;然后通过数字信号处理对已录制好的原声信号进行延时,衰减,产生出回声信号,通过图形与原声信号进行比较;再把信息转换成二进制信号将其叠加在回声中,通过数字信号处理实现信息的隐藏;最后,通过设计GUI界面将结果展示出来。

1、通过计算机中的y=fft(x)傅里叶变换,对原声信号和回声信号进行频谱分析。

2、通过设计FIR、IIR滤波器对原声信号进行衰减、延时产生一次、三次、六次无限次回声。

3、学习并掌握MATLAB的使用方法,用MATLAB编程和会使用MATLAB中的GUI界面设计。

三、设计原理及方案1、设计原理(1)回声的定义:当声投射到距离声源有一段距离的大面积上时,声能的一部分被吸收,而另一部分声能要反射回来,如果听者听到由声源直接发来的声和由反射回来的声的时间间隔超过十分之一秒,它就能分辨出两个声音这种反射回来的声叫“回声”。

(2)回声信号产生:根据回声的定义,回声信号可以是原始信号通过延时、衰减来生成。

(3)回声信号消除:数字滤波器的作用是滤除信号中某一部分频率分量。

可以将回声信号消除。

(4)回声信号隐藏:回声隐藏利用了人耳的听觉掩蔽效应,是一种有效的音频信息隐藏方法。

(5)处理单元原理:假设x(n)为原始信号,y(n)为经过延时、衰减迭加后产生的“回声信号”,声音信号和经延迟R个周期,衰减系数α(α<1)的单个回声的差分方程有如下表示:y(n)=x(n)+ α·x(n-R)上述差分方程可用系统函数表示为:H(z)=1+α·z-R此滤波器为FIR滤波器,其结构图如下:在实际生活中,往往不止存在一重回声,因此,需要实现多重回声的设计,关于均匀间隔的多重回声的实现,是将每一级回声相对于上一级回声依次衰减和延时R个周期,此时不能再用FIR滤波器来实现,应该用IIR滤波器设计。

IIR 滤波器设计的系统函数如下:当回声次数很多时多重回声的系统函数如下:IIR滤波器结构图:IIR滤波器结构隐藏目的是以添加回声的方式在原有音频信息中嵌入新信息,实现信息隐藏。

它的数学模型可以表示为:典型的回声核脉冲嵌入回声的声音可表示为和的卷积,和,分别为原始声音信号和回声核的单位脉冲响应。

回声信号由引入到原始声音当中,其中,d为延迟时间,为衰减系数。

嵌入回声后的声音信号可以表示为(1)读取语音信号与回放录制一段合适的原声信号,用“[x,fs,bits]=wavread('y',[1 40000])”来读取录制好的语音信号,这是以采样频率fs、采样位数bits从[1 40000]来读取语音,并将采样值放在x中。

用sound(5*x,fs,bits)对声音信号进行回放,乘以5以加强信号,便于听取。

(2)傅里叶变换FFT傅里叶变换调用格式:y=-fft(x)其中,x是序列,y是序列的FFT,,x可以为一向量或矩阵,若x为一向量,y是x的FFT。

且和x相同长度。

若x为一矩阵,则y是对矩阵的每一列向量进行FFT。

如果x长度是2的幂次方,函数fft执行高速基-2FFT算法;否则fft执行一种混合基离散傅里叶变换算法,计算速度较慢。

(3)函数filter函数filter的调用格式为:y=filter(b,a,x)该格式采用数字滤波器对数据进行滤波,既可以用于IIR滤波器,也可以用于FIR滤波器。

其中向量b和a分别表示系统函数的分子、分母多项式的系数,若a=1,此时表示FIR滤波器,否则就是IIR滤波器。

该函数是利用给出的向量b和a,对x中的数据进行滤波,结果放入向量y。

(4)函数zearos函数的一种调用格式为:B = zeros(n)返回一个n*n的矩阵,其元素都为零,如果参数n不是一个标量就会报错。

函数的另一种调用格式为:B = zeros(m,n) 或 B = zeros([m n])返回一个m*n的零矩阵。

函数的另一种调用格式为:B = zeros(m,n,p,…)或 B = zeros([m n p …])返回一个m*n*p*…的零矩阵。

注意:参数m,n,p都是非负整数,负整数都会看成零。

五、调试与分析1、原始信号分析读取一段语音信号,画出其时域波形,用fft对读取的语音信号进行傅里叶变换,并画出其相位与幅值。

[x,fs,bits]=wavread('y',[1 40000]); %读取语音信号n1=0:2000;figure(1)subplot(2,1,1);plot(x); %原始信号时域波形title('原始信号时域波形');X=fft(x); %对原始信号做FFT变换subplot(2,1,2);plot(n1(1:1000),X(1:1000)); %原始信号频谱图title('原始信号频谱图');figure(2)subplot(2,1,1);plot(abs(X));%经傅里叶变换之后的信号的幅值title('幅值');subplot(2,1,2);plot(angle(X));%经傅里叶变换之后的信号的相位title('相位');sound(5*x,fs,bits); %原始语音信号,乘以5是为了加强信号2、回声信号的产生对原始信号取出单声道信号,并用filter函数对其进行衰减和延时,得到回声信号。

(1)FIR滤波器产生一次回声[x,fs,bits]=wavread('y',[1 40000]); %读取语音信号n1=0:2000;b=x(:,1);%取单声道信号yy1=filter([1,zeros(1,12000),0.7],1,[b',zeros(1,30000)]); %FIR滤波器进行滤波figure(1)subplot(2,1,1);plot(yy1); %单回声滤波器时域波形title('单回声滤波器时域波形');YY1=fft(yy1); %对单回声信号做2001点的FFT变换subplot(2,1,2);plot(n1(1:1000),YY1(1:1000)); %单回声滤波器频谱图title('单回声滤波器频谱图');figure(2)subplot(2,1,1);plot(abs(YY1));%经傅里叶变换之后的信号的幅值title('幅值');subplot(2,1,2);plot(angle(YY1));%经傅里叶变换之后的信号的相位title('相位');sound(5*yy1,fs,bits); %经单次回声滤波器后的语音信号,乘以5是为了加强信号(2)IIR滤波器产生多次回声:yy2=filter(1,[1,zeros(1,80000/(N+1)),0.7],[b',zeros(1,40000)]);通过改变式中N 的数值可设置回声的次数,三次回声:[x,fs,bits]=wavread('y',[1 40000]); %读取语音信号n1=0:2000;b=x(:,1);%产生单声道信号N=3;yy2=filter(1,[1,zeros(1,80000/(N+1)),0.7],[b',zeros(1,40000)]);%IIR滤波器进行滤波figure(3)subplot(2,1,1);plot(yy2); %三次回声滤波器时域波形title('三次回声滤波器时域波形');YY2=fft(yy2); %对三次回声信号做FFT变换subplot(2,1,2);plot(n1(1:1000),YY2(1:1000)); %三次回声滤波器频谱图title('三次回声滤波器频谱图');figure(4)subplot(2,1,1);plot(abs(YY2));%经傅里叶变换之后的信号的幅值title('幅值');subplot(2,1,2);plot(angle(YY2));%经傅里叶变换之后的信号的相位title('相位');sound(5*yy2,fs,bits); %经三次回声滤波器后的语音信号,乘以5是为了加强信号使用叠加法产生三次回波:[x,fs]=wavread(‘ding.wav’);x1=x(1:40000); %产生40000行1列矩阵x2=x(1:40000);x3=x(1:40000);x4=x(1:40000);x1=[x1’,zeros(1,18000)]; %x1’为x1的转置,zero是(1,18000)产生1行18000列全零矩阵并加到x1’的后面x2=[zeros(1,6000),0.7*x2’,zeros(1,12000)];x3=[zeros(1,12000),0.4*x3’,zeros(1,6000)];x4=[zeros(1,18000),0.2*x4’];yy1=x1+x2+x3+x4;figure(3)subplot(2,1,1);plot(yy1); %三次回声时域波形title(‘三次回声滤波器时域波形’);YY1=fft(yy1); %三次回声信号做FFT变换subplot(2,1,2);plot(n1(1:1000),YY1(1:1000)); %三次回声频谱图title(‘三次回声滤波器频谱图‘);figure(4)subplot(2,1,1);plot(abs(YY1));%经傅里叶变换之后的信号的幅值title(‘幅值’);subplot(2,1,2);plot(angle(YY1));%经傅里叶变换之后的信号的相位title(‘相位');sound(5*yy1,fs);六次回声:[x,fs,bits]=wavread('y',[1 40000]); %读取语音信号n1=0:2000;b=x(:,1);%产生单声道信号N=6;yy2=filter(1,[1,zeros(1,70000/(N+1)),0.7],[b',zeros(1,40000)]);%IIR滤波器进行滤波figure(3)subplot(2,1,1);plot(yy2); %六次回声滤波器时域波形title('六次回声滤波器时域波形');YY2=fft(yy2); %对六次回声信号做FFT变换subplot(2,1,2);plot(n1(1:1000),YY2(1:1000)); %三次回声滤波器频谱图title('六次回声滤波器频谱图');figure(4)subplot(2,1,1);plot(abs(YY2));%经傅里叶变换之后的信号的幅值title('幅值');subplot(2,1,2);plot(angle(YY2));%经傅里叶变换之后的信号的相位title('相位');sound(5*yy2,fs,bits); %经六次回声滤波器后的语音信号,乘以5是为了加强信号(3)IIR滤波器产生无限次回声函数yy1=filter(B,A,x)利用给出的向量b和a,对x中的数据进行滤波,结果放入向量yy1。

相关文档
最新文档