语音信号及离散信号的运算_第1页
语音信号及离散信号的运算_第2页
语音信号及离散信号的运算_第3页
语音信号及离散信号的运算_第4页
语音信号及离散信号的运算_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 数字信号处理课程设计报告题 目: 离散信号的运算 院 系:工程技术学院电子工程系专 业: 电子信息科学与技术 班 级: 电信121本 姓 名: 学 号: 联系方式: 指导教师: 报告成绩: 2015年12月18日目录1.1 引言21.3 课程设计内容3第二章 离散信号的处理32.1 离散信号32.2 离散信号的运算32.2.1 序列的延时32.2.2 序列的加减32.2.3 序列相乘42.2.4 翻转42.2.5 信号和与信号积52.3 程序设计52.3.1 延时52.3.2 序列相加62.3.3 序列相乘72.3.4 序列的翻转92.3.5 信号的信号和与信号积10第三章 语音信号的处理1

2、13.1 采样的相关概念113.1.1 采样频率113.1.2采样定理113.2 MATLAB实现音频信号的频谱分析及可视化113.3 程序设计123.3.1 两段语音信号的傅里叶变换123.3.2 语音信号相加与相乘143.3.3 语音信号的平移153.3.4语音信号的翻转163.3.5 语音信号的信号和与信号积17总结体会18参考文献1920第一章 绪论1.1 引言数字信号处理的主要研究对象是数字信号,且是采用运算的方法达到处理的目的的,因此,其实现方法,基本上分成两种实现方法,即软件和硬件实现方法。软件实现方法指的是按照原理和算法,自己编写程序或者采用现成的程序在通用计算机上实现,硬件实

3、现指的是按照具体的要求和算法,设计硬件结构图,用乘法器加法器延时器、控制器、存储器以及输入输出接口部件实现的一种方法。显然前者灵活,只要改变程序中的有关参数,但是运算速度慢,一般达不到实时处理,因此,这种方法适合于科研和教学。后者运算速度快,可以达到实时处理要求,但是不灵活。目前DSP芯片已进入市场,且正在高速发展,速度高,体积小,性能优良,价格也在不断下降。可以说,用DSP芯片实现数字信号处理,正在变成工程技术领域的主要方法。用合适的DSP芯片,配有合适的芯片语言及任务要求的软件,来实现信号处理功能无疑是一种最佳的数字信号处理系统。本文仅使用软件实现。MATLAB是由美国的Math Work

4、s公司推出的一种科学技算和工程仿真软件,它的名称源自Matrix Laboratory(矩阵实验室),专门以矩阵的形式处理数据。MATLAB将高性能的科学计算、结果可视化和编程集中在一个易于操作的环境中,并提供了大量的内置函数,具有强大的矩阵计算和绘图功能,适用于科学计算、控制系统、信息处理等领域的分析、仿真和设计工作。目前,在世界范围内被科研工作者、工程技术人员和院校师生广泛应用。1.2 课程设计目的与基本要求1.熟悉离散信号的运算。2.熟悉离散信号和系统的时域特性。3.掌握数字信号处理的基本概念,基本理论和基本方法。4. 学会MATLAB的使用,掌握MATLAB的程序设计方法。5. 掌握利

5、用MATLAB对语音信号进行时域与频谱分析。1.3 课程设计内容 1、延时:正选序列 yn=sin100n右移三个抽样周期后所得的序列; 2、相加:任意两个信号的加法 xn=x1n+x2n; 3、相乘:任意两个信号的乘法 xn=x1nx2n; 4、翻转:yn=x-n; 5、信号和: y=n=1Nxn; 6、信号积: y=n=1Nxn; 7、录制语音信号,并分别座椅以上上处理并画图。第二章 离散信号的处理2.1 离散信号与连续信号的自变量是连续的不同,离散信号是一个序列,即其自变量是“离散”的。这个序列的每一个值都可以被看作是连续信号的一个采样。由于离散信号只是采样的序列,并不能从中获得采样率,

6、因此采样率必须另外存储。以时间为自变量的离散信号为离散时间信号。2.2 离散信号的运算 2.2.1 序列的延时序列xn的移位操作不影响向量x,只需对向量n的每个元素加或减去一个移位值。如移位序列yn+n0=xn等价为yn=xn-n0,对应的MATLAB语句为: n=n+n0;  y = x;2.2.2 序列的加减MATLAB中可用算数运算符“+”和“-”分别实现序列的加法和减法运算,此时两序列的长度必须相等,否则需要补零法改变信号的长度。序列x1n、x2n,长度分别为n1和n2,求其和的MATLAB代码为: n=minminn1,minn2:m

7、axmaxn1,maxn2; % yn的长度y1=zeros1,lengthn;y2=y1; %初始化(产生1行×engthn列的0)y1find(nmixn1&nmaxn1=1)=x1; %具有yn的长度的x1y2find(nmixn1&nmaxn1=1)=x1; %具有yn的长度的x2 y=y1+y2 %序列相加 说明:函数minn,maxn分别获取向量n的的最大值与最小值。 函数length(n)可取得n的长度。函数findn>a&n<b可获取向量n在范围a<n<b内的取值。2.2.3 序列相乘MATLAB中对应值的乘除可分别采用

8、点乘“.*”和点除“./”运算符,运算时两序列的长度需相等,具体处理方法和序列求和差时的一致。序列x1n、x2n,长度分别为n1和n2,求其和的MATLAB代码为: n=minminn1,minn2:maxmaxn1,maxn2; % yn的长度y1=zeros1,lengthn;y2=y1; %初始化(产生1行×engthn列的0)y1find(nmixn1&nmaxn1=1)=x1; %具有yn的长度的x1y2find(nmixn1&nmaxn1=1)=x1; %具有yn的长度的x2 y=y1.*y2 %序列相乘 说明:函数minn,maxn分别获取向量n的的最大

9、值与最小值。 函数length(n)可取得n的长度。函数findn>a&n<b可获取向量n在范围a<n<b内的取值。2.2.4 翻转MATLAB 中序列的翻转可用fliplr函数,代码为:y=fliplrx ; n=-fliplrn2.2.5 信号和与信号积MATLAB 中信号的信号和与信号积可分别用sum与prod函数。 2.3 程序设计2.3.1 延时正选序列 yn=sin100n右移三个抽样周期后所得的序列;clear all; N=32; x1=zeros(1,3);n=0:N-1;x2=sin(100*n);subplot(2,1,1)stem(n,x

10、2);axis(0 N -2 2); title('原始序列波形');x=x1 x2; N=N+3;subplot(2,1,2); stem(n,x); axis(0 N -2 2);title('原始序列右移三个抽样周期后的波形') 原信号与右移后的图形2.3.2 序列相加例:任意两个序列x1=1,2,0,3,4,3,2,1,1,n1=-2:6;x2=2,1,2,1,3,-1,-3,n2=2:8相加。MATLAB程序如下:x1=1,2,0,3,4,3,2,1,1; n1=-2:6;x2=2,1,2,1,3,-1,-3; n2=2:8;n=min(min(n1)

11、,min(n2):max(max(n1),max(n2); %y(n)的长度y1=zeros(1,length(n); %初始化(产生1行length(n)列的0矩阵 )y2=y1;y1(find(n>=min(n1)&(n<=max(n1)=1)=x1; %具有y(n)长度的x1y2(find(n>=min(n2)&(n<=max(n2)=1)=x2; %具有y(n)长度的x1y3=y1+y2;subplot(3,1,1); stem(n1,x1); axis(-6,10,0,5);title('x1序列图形'); xlabel(

12、9;n1'); ylabel('幅值');grid on;subplot(3,1,2); stem(n2,x2); axis(-6,10,-4,4);title('x2序列图形'); xlabel('n2'); ylabel('幅值');grid on;subplot(3,1,3); stem(n,y3); axis(-6,10,-4,8);title('x1与x2的和'); xlabel('n'); ylabel('幅值');grid on;任意两个序列相加仿真图2.3.3

13、 序列相乘例:任意两个序列x1=1,2,0,3,4,3,2,1,1,n1=-2:6;x2=2,1,2,1,3,-1,-3,n2=2:8相乘。MATLAB程序如下:x1=1,2,0,3,4,3,2,1,1; n1=-2:6;x2=2,1,2,1,3,-1,-3; n2=2:8;n=min(min(n1),min(n2):max(max(n1),max(n2); %y(n)的长度y1=zeros(1,length(n); %初始化(产生1行length(n)列的0矩阵 )y2=y1;y1(find(n>=min(n1)&(n<=max(n1)=1)=x1; %具有y(n)长度的

14、x1y2(find(n>=min(n2)&(n<=max(n2)=1)=x2; %具有y(n)长度的x1y3=y1.*y2;subplot(3,1,1); stem(n1,x1); axis(-6,10,0,5);title('x1序列图形'); xlabel('n1'); ylabel('幅值');grid on;subplot(3,1,2); stem(n2,x2); axis(-6,10,-4,4);title('x2序列图形'); xlabel('n2'); ylabel('幅值

15、');grid on;subplot(3,1,3); stem(n,y3); axis(-6,10,-4,8);title('x1与x2的乘积图形'); xlabel('n'); ylabel('幅值');grid on;任意两个序列相乘仿真图2.3.4 序列的翻转例:将序列x1=1,3,5,2,4,6,0,1,2,n=0:8翻转。MATLAB代码如下:clear all;n=0:8; x1=1,3,5,2,4,6,0,1,2;x=fliplr(x1);subplot(2,1,1); stem(x1,'r'); axis(

16、-1 9 0 7);title('原信号'); xlabel('n'); ylabel('x1')grid on;subplot(2,1,2); stem(x); axis(-1 9 0 7);title('反转后的信号')xlabel('n');ylabel('x')grid on;序列的翻转仿真图形2.3.5 信号的信号和与信号积对于N点信号,其和的定义为:;对于N点信号,其积的定义为:;例:离散信号x1=1 2 3 4, n=0:3的信号和与信号积MATLAB代码如下:clear all;n=

17、0:3;x1=1 2 3 4;y1=sum(x1)y2=prod(x1)信号和与信号积MATLAB运行结果第三章 语音信号的处理3.1 采样的相关概念3.1.1 采样频率采样频率fs:是指录音设备对模拟信号进行A/D采样时,在一秒钟内对声音信号的采样次数,采样频率越高声音的还原就越真实越自然。 比如,对1秒时间段上的模拟连续信号采样,采样频率为1M,就是在时间轴上每隔1us采样一个点,那么就是一共采样1M个点。采样点数就是上面所说的,根据采样时间和采样频率就能确定采样点数。3.1.2采样定理在进行模拟/数字信号的转换过程中,当采样频率fs.max大于信号中,最高频率fmax的2倍时,即:fs.

18、max>=2fmax,则采样之后的数字信号完整地保留了原始信号中的信息,一般取2.56-4倍的信号最大频率;采样定理又称奈奎斯特定理。3.2 MATLAB实现音频信号的频谱分析及可视化对音频信号进行频谱分析要调用fft(快速傅立叶变换),调用格式:y=fft(x);y=fft(x,n);y=fft(x)利用FFT算法计算矢量x的离散傅立叶变换,当x为矩阵时,y为矩阵x的每一列的FFT。当x的长度为2的冥次方时,则fft采用基-2FFT算法,否则采用稍慢的混合基算法。y=fft(x,n)采用n点FFT。当x的长度小于n时,fft函数在x的尾部补零,以构成长为n的数据;当x的长度大于n时,f

19、ft函数将序列x截断,取前n点。当x为矩阵时,fft函数按类似的方式处理列长度。实现幅度响应要调用求绝对值或幅值函数,调用格式:m=abs(h);实现相位响应要调用求相角函数,调用格式:P=angle(h);b.频谱可视化要调用plot函数,调用格式: plot(x)3.3 程序设计3.3.1 两段语音信号的傅里叶变换fs =8000;Nbits =16;x1,fs,Nbits =wavread('D:录音.wav') ; %读声音文件x2,fs,Nbits =wavread('D:sara - 即使知道要见面.wav') ; n1=length(x1);t1=

20、0:1/fs:(length(x1)-1)/fs; %求出语音信号的长度y1=fft(x1,n1) ; %傅里叶变换y2=fftshift(y1); %对频谱图进行平移f1=0:fs/n1:fs*(n1-1)/n1; %得出频点 figure(1); subplot(2,1,1);plot(t1/2,x1) %做原始语音信号的时域图形title('原始信号1时域波形图');subplot(2,1,2); plot(f1,abs(y2);axis(0 40000 0 500);title('原始信号1频谱图')n2=length(x2);t2=0:1/fs:(le

21、ngth(x2)-1)/fs; %求出语音信号的长度y3=fft(x2,n2) ; %傅里叶变换y4=fftshift(y3); %对频谱图进行平移f2=0:fs/n2:fs*(n2-1)/n2; %得出频点 figure(2); subplot(2,1,1);plot(t2/2,x2) %做原始语音信号的时域图形title('原始信号2时域波形图');subplot(2,1,2);plot(f2,abs(y4);axis(0 40000 0 4000);title('原始信号2频谱图')3.3.2 语音信号相加与相乘fs =8000;Nbits =16;x1,

22、fs,Nbits =wavread('D:录音.wav') ; %读声音文件x2,fs,Nbits =wavread('D:sara - 即使知道要见面.wav') ; n1=length(x1); %求出语音信号的长度t1=0:1/fs:(length(x1)-1)/fs; y1=fft(x1,n1) ; %傅里叶变换y2=fftshift(y1); %对频谱图进行平移y3=fft(x2,n1) ; %傅里叶变换y4=fftshift(y3); %对频谱图进行平移f1=0:fs/n1:fs*(n1-1)/n1; %得出x1的频点 f2=0:fs/n1:fs*(

23、n1-1)/n1; %得出x2的频点 h1=y1+y3; %信号相加 h2=y1.*y3; %信号相乘h3=fftshift(h1);%对频谱图进行平移 h4=fftshift(h2); %对频谱图进行平移subplot(1,2,1); plot(abs(h3); title('两信号相加的频谱图');subplot(1,2,2); plot(abs(h4); title('两信号相乘的频谱图')h5=ifft(h1);plot(h5); sound(h5,44100)3.3.3 语音信号的平移fs=8000;x,fs,nbits=wavread('D:

24、录音.wav');%sound(x,fs,nbits); x1=flipdim(x,1);sound(x1,44100);subplot(3,1,1);plot(x); %原信号的时域波形title('原始信号的时域波形');xlabel('时间');ylabel('幅值 '); grid on;n=length(x);y=fft(x,n);f=fs*(0:n/2-1)/n;Y=fftshift(y);subplot(3,1,2); plot(f,abs(y(1:n/2)title('原始信号的频域波形');grid on

25、;subplot(3,1,3);f1=f+3000;plot(f1,abs(y(1:n/2); title('原始信号的频域波形'); grid on3.3.4语音信号的翻转fs=8000;x,fs,nbits=wavread('D:录音.wav');%sound(x,fs,nbits);subplot(3,1,1); plot(x); title('原始信号的时域波形');xlabel('时间');ylabel('频率幅值');grid on;n=length(x);y=fft(x,n);f=fs*(0:n/2-1)/n;subplot(3,1,2); plot(f,abs(y(1:n/2); hold on;title('原始信号的频域波形');xlabel('时间');ylabel('频率幅值');axis(0 25000 0 1500); grid on;subplot(3,1,3); f1=flip

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论