欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > DOC文档下载
     

    基于MATLAB的回声信号产生器.doc

    • 资源ID:1180337       资源大小:95KB        全文页数:15页
    • 资源格式: DOC        下载积分:10金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要10金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    基于MATLAB的回声信号产生器.doc

    DSP技术及应用课程设计报告 题 目:基于MATLAB的 回声信号产生器 目 录一、设计目的1二、设计要求1三、设计原理及方案1四、设计流程5五、调试分析5六、GUI界面17七、设计总结. .201、 设计目的综合运用我们掌握的数字信号处理知识,利用matlab语言编程进行回声信号产生器的设计再对其进行频谱分析,实现回声的产生,消除和隐藏。1、首先熟练掌握对声音采集、处理、衰减、延时等过程的理论知识。2、根据设计思路,学习资料的搜集与整理。3、通过理论与实际的结合,在理论的基础结合实际情况完成课程的设计。关于MATLAB软件:MATLAB语言具备高效、可及推理能力强等特点,是目前工程界流行最广泛的科学计算语言。MATLAB强大的运算和图形显示功能,可使信号与系统上机实验效率大大提高。特别是它的频谱分析和滤波器分析与设计功能很强,使数字信号处理工作变得十分简单,直观。关于GUI界面:图形用户界面GUI <Graphics User Interface> 是由各种图形对象,如图形窗口、图轴、菜单、按钮、文本框等构建的用户界面,是人机交流信息的工具和方法。GUI 设计即可以基本的MATLAB 程序设计为主,也可以鼠标为主利用GUIDE 工具进行设计。2、 设计要求首先,自己录取一个合适的原声信号,并对其进行频谱分析;然后通过数字信号处理对已录制好的原声信号进行延时,衰减,产生出回声信号,通过图形与原声信号进行比较;再把信息转换成二进制信号将其叠加在回声中,通过数字信号处理实现信息的隐藏;最后,通过设计GUI界面将结果展示出来。1、通过计算机中的y=fftx傅里叶变换,对原声信号和回声信号进行频谱分析。2、通过设计FIR、IIR滤波器对原声信号进行衰减、延时产生一次、三次、六次无限次回声。3、学习并掌握MATLAB的使用方法,用MATLAB编程和会使用MATLAB中的GUI界面设计。3、 设计原理及方案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为延迟时间,为衰减系数。嵌入回声后的声音信号可以表示为2、设计方案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分别表示系统函数的分子、分母多项式的系数,若a1,此时表示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函数对其进行衰减和延时,得到回声信号。1FIR滤波器产生一次回声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是为了加强信号2IIR滤波器产生多次回声: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是为了加强信号3IIR滤波器产生无限次回声函数yy1=filterB,A,x利用给出的向量b和a,对x中的数据进行滤波,结果放入向量yy1。x,fs,bits=wavread<'y',1 40000> %读取语音信号n1=0:2000; a=0.7; %a取小于等于1B=1,a; %分子的系数A=1; %分母的系数yy1=filter<B,A,x> %IIR滤波器进行滤波figure<11>subplot<2,1,1>plot<yy1> %无限回声滤波器时域波形title<'无限个回声滤波器时域波形'> YY1=fft<yy1> %经无限回声滤波器后的信号做FFT变换 subplot<2,1,2>plot<n1<1:1000>,YY1<1:1000>> %无限回声滤波器频谱图title<'无限个回声滤波器频谱图 '>figure<12>subplot<2,1,1>plot<abs<YY1>>title<'幅值'>subplot<2,1,2>plot<angle<YY1>>title<'相位'>sound<5*yy1,fs,bits> %回放经无限回声滤波器后的语音信号3、回声信号的滤除 数字信号滤波器的作用是滤除一部分频率分量,利用y=filter<B,A,x>函数,设计出回声信号消除滤波器。y =x?1单回声消除:产生回声过程:yy1=filter<1,zeros<1,12000>,0.7,1,b',zeros<1,30000>>回声滤除过程:z=filter<1,1,zeros<1,12000>,0.7,yy1>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>>subplot<3,1,1>plot<yy1> %单回声滤波器时域波形title<'单回声滤波器时域波形'> YY1=fft<yy1> %对单回声信号做2001点的FFT变换 subplot<3,1,2>plot<n1<1:1000>,YY1<1:1000>> %单回声滤波器频谱图title<'单回声滤波器频谱图 '>z=filter<1,1,zeros<1,12000>,0.7,yy1>subplot<3,1,3>plot<z>title<'滤波后信号波形'>sound<z,fs>2多重回声消除产生回声:yy2=filter<1,1,zeros<1,80000/<N+1>>,0.7,b',zeros<1,40000>>回声消除:z=filter<1,zeros<1,80000/<N+1>>,0.7,1,yy2>通过改变N的数值,实现多次回声的消除。三次回声消除:x,fs,bits=wavread<'y',1 40000> %读取语音信号n1=0:2000; N=3; b=x<:,1>yy2=filter<1,1,zeros<1,80000/<N+1>>,0.7,b',zeros<1,40000>> %IIR滤波器进行滤波subplot<3,1,1>plot<yy2> %三次回声滤波器时域波形title<'三次回声滤波器时域波形'> YY2=fft<yy2> %对三次回声信号做FFT变换 subplot<3,1,2>plot<n1<1:1000>,YY2<1:1000>> %三次回声滤波器频谱图title<'三次回声滤波器频谱图 '>z=filter<1,zeros<1,80000/<N+1>>,0.7,1,yy2>subplot<3,1,3>plot<z>title<'滤波后信号波形'>sound<z,fs>六次回声消除:x,fs,bits=wavread<'y',1 40000> %读取语音信号n1=0:2000; N=6; b=x<:,1>yy2=filter<1,1,zeros<1,70000/<N+1>>,0.7,b',zeros<1,40000>> %IIR滤波器进行滤波subplot<3,1,1>plot<yy2> %六次回声滤波器时域波形title<'六次回声滤波器时域波形'> YY2=fft<yy2> %对六次回声信号做FFT变换 subplot<3,1,2>plot<n1<1:1000>,YY2<1:1000>> %六次回声滤波器频谱图title<'六次回声滤波器频谱图 '>z=filter<1,zeros<1,70000/<N+1>>,0.7,1,yy2>subplot<3,1,3>plot<z>title<'滤波后信号波形'>sound<z,fs>3无限次回声滤波器函数yy1=filter<B,A,x>利用分子B,分母A的设置对回声信号进行滤除。产生回声:yy1=filter<B,A,x> 滤除回声:z=filter<B,A,yy1>x,fs,bits=wavread<'y',1 40000> %读取语音信号 n1=0:2000; a=0.7; %a取小于等于1B=1,a; %分子的系数A=1; %分母的系数yy1=filter<B,A,x> %IIR滤波器进行滤波subplot<3,1,1>plot<yy1> %无限回声滤波器时域波形title<'无限个回声滤波器时域波形'> YY1=fft<yy1> %经无限回声滤波器后的信号做FFT变换 subplot<3,1,2>plot<n1<1:1000>,YY1<1:1000>> %无限回声滤波器频谱图title<'无限个回声滤波器频谱图 '>z=filter<B,A,yy1>subplot<3,1,3>plot<z>title<'滤波后信号波形'>sound<z,fs> %回放经无限回声滤波器后的语音信号4、回声隐藏s,fs,bits=wavread<'goinghome3.wav'>row, col = size<s>if<row > col> s= s'end; %把矩阵转换msgfid=fopen<'hidden.txt','r'>msg,count=fread<msgfid>msg = str2mat<msg>msg = uint8<msg>'len = length<s>i=0;fragment=56;N = floor<len / fragment>lend = length<msg>atten=0.9;d0=100;d1=200;s0 = atten * zeros<1, d0>, s<1:len - d0>%backward echo with delay 0s1 = atten * zeros<1, d1>, s<1:len - d1>%backward echo with delay 1o = s0;for i = 0 : N - 1 if<<i + 1> > lend> bit = 0; else bit = msg<i + 1> end; if bit = 1 st = i * fragment + 1; ed = <i + 1> * fragment; o<st : ed> = s1<st : ed> end;end;o = s + o;x=0:len-1;figure;plot<x,o,x,s>wavwrite<o,fs,'wateramarked.wav'> 六、GUI软件界面主界面:原声信号产生界面:回声信号产生界面:回声滤除界面:回声隐藏界面:七、设计总结本次DSP课程设计,通过编程与GUI界面的实现,完成回声信号产生器的基本功能与两个拓展功能的实现。1、课程设计的可取之处:1回声信号产生器可自主选择产生多少次的回声,并且可设置回声的延时时长。2回声信号实现拓展功能的可应用的回声滤除。3完成回声隐藏的设计。2、课程设计的不足:1回声信号采样点增多,执行程序时间过长2GUI界面插入背景图片会影响下几个界面,因而造成不太美观3回声隐藏优化欠缺。3、在编程中遇到下列几项问题:1分析声音信号时,要注意选择单声道信号进行分析。由于起初并没有进行选择,数据处理过程连连出错,后经对数字信号处理实验的回忆进行修改从而解决问题。2利用滤波器做回声时,系统函数原理有多种应用。根据老师建议增加了叠加法设计回声的产生。3利用叠加法做回声信号的时候,出现延时程序出错。后来发现数组长度没有统一,经修改后,成功实施。4回声滤除过程中,系统函数编写出错。后经查的文献资料进行修改。5由于回声隐藏是自主思考程序,程序语句出现不少问题。后经长期修改,最终实现隐藏功能。八、参考文献1杨榆,回声隐藏的研究与实现,XX大学学报自然科学版,20042梁虹等,信号与系统分析及MATLAB实现,电子工业出版社,20023刘树棠,数字信号处理使用MATLAB,XX交通大学出版社,20024程佩青,数字信号处理教程M,清华大学出版社,2002

    注意事项

    本文(基于MATLAB的回声信号产生器.doc)为本站会员(李司机)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开