当前位置:文档之家› 课程设计基于MATLAB的语音信号录制采集和分析的程序设计

课程设计基于MATLAB的语音信号录制采集和分析的程序设计

课程设计基于MATLAB的语音信号录制采集和分析的程序设计
课程设计基于MATLAB的语音信号录制采集和分析的程序设计

数学信号处理提高型

实验

年6月2日

目录

1绪论 (1)

1.1MATLAB软件功能简介 (1)

1.2设计思路 (2)

1.3课程设计的任务和要求 (3)

2 语音信号的录制 (4)

3 语音信号的采集 (5)

4 语音信号的分析 (6)

4.1语音信号时域分析 (6)

4.2语音信号频域分析 (8)

5语音信号的加噪处理 (9)

6语音信号的均衡和混响处理 (11)

6.1语音均衡实验 (11)

6.2语音混响实验 (12)

7 合成和滤噪设计分析 (13)

8 设计总结 (16)

参考文献 (17)

附录 (18)

1绪论

1.1MATLAB软件功能简介

MATLAB的名称源自Matrix Laboratory,1984年由美国Mathworks 公司推向市场。它是一种科学计算软件,专门以矩阵的形式处理数据。MATLAB将高性能的数值计算和可视化集成在一起,并提供了大量的内置函数,从而被广泛的应用于科学计算、控制系统和信息处理等领域的分

析、仿真和设计工作。

MATLAB软件包括五大通用功能,数值计算功能(Nemeric)、符号运算功能(Symbolic)、数据可视化功能(Graphic)、数字图形文字统一处理功能(Notebook)和建模仿真可视化功能(Simulink)。其中,符号运算功能的实现是通过请求MAPLE内核计算并将结果返回到MATLAB命令窗口。该软件有三大特点,一是功能强大;二是界面友善、语言自然;三是开放性强。目前,Mathworks公司已推出30多个应用工具箱。MATLAB 在线性代数、矩阵分析、数值及优化、数值统计和随机信号分析、电路与系统、系统动力学、次那好和图像处理、控制理论分析和系统设计、过程控制、建模和仿真、通信系统以及财政金融等众多领域的理论研究和工程设计中得到了广泛应用。

MATLAB在信号与系统中的应用主要包括符号运算和数值计算仿真分析。由于信号与系统课程的许多内容都是基于公式演算,而MATLAB借助符号数学工具箱提供的符号运算功能,能基本满足信号与系统课程的需求。例如解微分方程、傅里叶正反变换、拉普拉斯正反变换和z正反变换等。MATLAB在信号与系统中的另一主要应用是数值计算与仿真分析,主要包括函数波形绘制、函数运算、冲击响应与阶跃响应仿真分析、信号的时域分析、信号的频谱分析、系统的S域分析和零极点图绘制等内容。数值计算仿真分析可以帮助学生更深入地理解理论知识,并为将来使用MATLAB进行信号处理领域的各种分析和实际应用打下基础。

1.2设计思路

本设计包含以下几个方面:

1、语音信号的采集

使用电脑或者其它声卡设备采集一段语音信号,并将其转化为*.Wav 格式,并将其保存在电脑中,以便MATLAB软件使用。

2、在语音中加噪声

3、把原音信号均衡

4、延时混响%

5、将两首语音全成一首歌并消躁

1.3课程设计的任务和要求

1.3.1任务

在一段伴奏音乐上加入自己的伴唱,做成一首歌曲。

1、伴奏音乐中含有3种单一频率噪声,3种噪声频率的频差不大于3kHz,且落在

音频范围内。

2、自己的伴唱要进行频率均衡,并加入混响效果。

3、伴唱中应有一段说词,说词中必须有体现自己专业班级姓名的声音。

4、最终的歌曲格式为.wav

1.3.2要求:

上交不少于3000字的设计报告,将制作的音乐发送到XXXXX邮箱。

1、报告内容包括:设计任务、设计要求、设计思路、采取的算法、设计过程、中

间结果(频谱截图、频谱分析)、设计结果(频谱截图、频谱分析)、设计总结(达到了哪些目标、存在哪些问题、对存在的问题进行分析、提出改进设想)、参考文献等内容。

2、报告最后附录源代码。

时间:2周。

场地:DSP实验室(PC机、MATLAB软)

2 语音信号的录制

为了将原始模拟语音信号变为数字信号,必须经过采样和量化两个步骤,从而得到时间和幅度上均为离散的数字语音信号。语音信号经过预滤波和采样后,由A/D变换器变换为二址制数字码。这种防混叠滤波通常与模数转换器做在一个集成块内,因此目前来说,语音信号的数字化的质量还是有保证的。市面上购买到的普通声卡在这方面做的都很好,语音声波通过话筒输入到声卡后直接获得的是经过防混叠滤波、A/D变换、量化处理的离散的数字信号。

将声卡作为对象处理采集语音信号Matlab将声卡作为对象处理,其后的一切操作都不与硬件直接相关,而是通过对该对象的操作来作用于硬件设备(声卡)。操作时首先要对声卡产生一个模拟输入对象(ai),给ai对象添加一个通道设置采样频率后,就可以启动设备对象,开始采集数据,采集完成后停止对象并删除对象。

实际工作中,我们可以利用windows自带的录音机录制语音文件,图1是基于PC机的语音信号录制过程,声卡可以完成语音波形的A/D转换,获得WAVE文件,为后续的处理储备原材料。调节录音机保存界面的“更改”选项,可以存储各种格式的WAVE文件。

图2.1 基于PC机的语音信号录制过程

录制过程:打开电脑左下角的程序——附件——娱乐——录音机

图2.2 PC自带的录音机录音

本设计录制自己的一段语音,

3 语音信号的采集

配置好数据采集设备的参数后,使用start命令便可启动声卡开始

语音信号的采集。采集到的数据被暂时存放在PC机的内存里,理论上可采集的最大数据量是由PC机的内存容量决定的,这一点相对于一般的数据采集系统而言有较强的优势。MATLAB还可以记录采集过程中出现错误,如出错的时间、错误产生的来源以及数据采集设备的状态等信息都会被记录下来作为以后工作的参考。

如图2.1所示,语音采集子系统是通过PC录音机Realtek AC’97型声卡和Matlab的数据采集工具箱实现的。其中Realtek AC’97型声卡的采样位数为16位,支持8~44.1kHz的采样速率,可以满足语音采集的硬件要求[1]。Matlab自带的数据采集工具箱里面,提供了专门用于语音采集的命令和函数。数据采集的硬件设备的内部特性对Matlab的接口完全是透明的,通过调用Matlab提供的语音采集函数和命令可以对其进行访问。而且,Matlab可以对其采集的数据进行实时的分析,也可在存储后再进行处理。

图3.1 语音信号采集框图

4 语音信号的分析

4.1语音信号时域分析

语音信号的时域分析就是分析和提取语音信号的时域参数。进行语

音分析时,最先接触到并且也是最直观的是它的时域波形。语音信号本身就是时域信号,因而时域分析是最早使用,也是应用最广泛的一种分析方法,这种方法直接利用语音信号的时域波形。时域分析通常用于最基本的参数分析及应用,如语音的分割、预处理、大分类等。这种分析方法的特点是:①表示语音信号比较直观、物理意义明确。②实现起来比较简单、运算且少。③可以得到语音的一些重要的参数。④只使用示波器等通用设备,使用较为简单等。

ATLAB数据采集箱中提供的函数命令进行图像分析的函数命令:

wavrecord : wavrecord 利用Windows 音频输入设备记录声音,其调用形式为:wavrecord (n ,fs ,ch) 。利用Windows音频输入设备记录n个音频采样, 频率为fs Hz ,通道数为ch。采样值返回到一个大小为n*ch 的矩阵中。缺省时,fs = 11025 ,ch = 1。

waveplay: waveplay 利用Windows音频输出设备播放声音,其调用形为:waveplay(y ,fs) 。以采样频率fs向Windows 音频设备发送向量信号。标准的音频采样率有:8000、11025、22050 和44100Hz。

wavread :wavread 用于读取Microsoft 的扩展名为“.wav”的声音文件。其调用形式为: y = wavread (file) 。其作用是从字符串file 所指的文件路径读取wave 文件,将读取的采样数据送到y 中。Y 的取值范围: [ -1 ,1 ] 。

sound:音频信号是以向量的形式表示声音采样的。sound 函数用于将向量转换为声音,其调用形式为:sound (y ,fs) ,作用是向扬声器送出向量y 中的音频信号(采样频率为fs) 。

通过Wavread和plot(x)函数即可显示图像的时域波形。

图 4.1 原始语音信号的时域波形

4.2语音信号频域分析

语音信号的频域分析就是分析语音信号的频域持征。从广义上讲,语音信号的频域分析包括语音信号的频谱、功率谱、倒频谱、频谱包络分析等,而常用的频域分析方法有带通滤波器组法、傅里叶变换法、线件预测法等几种。本文介绍的是语音信号的傅里叶分析法。因为语音波是一个非平稳过程,因此适用于周期、瞬变或平稳随机信号的标准傅里叶变换不能用来直接表示语音信号,而应该用短时傅里叶变换对语音信号的频谱进行分析,相应的频谱称为“短时谱”

FFT即为快速傅氏变换,是离散傅氏变换的快速算法,它是根据离散傅氏变换的奇、偶、虚、实等特性,对离散傅立叶变换的算法进行改进获得的。

在MATLAB的信号处理工具箱中函数FFT和IFFT用于快速傅立叶变换和逆变换。函数FFT用于序列快速傅立叶变换,其调用格式为y=fft(x),其中,x是序列,y是序列的FFT,x可以为一向量或矩阵,

若x为一向量,y是x的FFT且和x相同长度;若x为一矩阵,则y是对矩阵的每一列向量进行FFT。如果x长度是2的幂次方,函数fft执行高速基-2FFT算法,否则fft执行一种混合基的离散傅立叶变换算法,计算速度较慢。函数FFT的另一种调用格式为y=fft(x,N),式中,x,y 意义同前,N为正整数。函数执行N点的FFT,若x为向量且长度小于N,则函数将x补零至长度N;若向量x的长度大于N,则函数截短x使之长度为N;若x 为矩阵,按相同方法对x进行处理。

图4.2 原始语音信号的频谱

5语音信号的加噪处理

所谓高斯噪声,是指没有任何时迟相关时间序列,它只一个参数,代表噪声的强度,也即迟滞为0的滞后自协方差,而其余滞后自协方差统统为零。标准高斯噪声:则是满足N(0,1)标准正态分布的高斯噪声。斯白噪声:如果一个噪声,它的幅度分布服从高斯分布,而它的功

率谱密度又是均匀分布的,则称它为高斯白噪声。热噪声和散粒噪声是高斯白噪声。MATLAB中产生高斯白噪声非常方便,可以直接应用3个函数,一个是WGN,另一个是AWGN,还有一个randn,WGN用于产生高斯白噪声,AWGN则用于在某一信号中加入高斯白噪声,randn直接产生高斯分布序列。

1. WGN:产生高斯白噪声

y = wgn(m,n,p) 产生一个m行n列的高斯白噪声的矩阵,p以dBW 为单位指定输出噪声的强度。 y = wgn(m,n,p,imp) 以欧姆(Ohm)为单位指定负载阻抗。 y = wgn(m,n,p,imp,state) 重置RANDN的状态。在数值变量后还可附加一些标志性参数:

y = wgn(…,POWERTYPE) 指定p的单位。POWERTYPE可以是'dBW', 'dBm'或'linear'。线性强度(linear power)以瓦特(Watt)为单位。 y = wgn(…,OUTPUTTYPE) 指定输出类型。OUTPUTTYPE可以是'real'或

'complex'。

2. AWGN:在某一信号中加入高斯白噪声

y = awgn(x,SNR) 在信号x中加入高斯白噪声。信噪比SNR以dB为单位。x的强度假定为0dBW。如果x是复数,就加入复噪声。

y = awgn(x,SNR,SIGPOWER) 如果SIGPOWER是数值,则其代表以dBW为单位的信号强度;如果SIGPOWER为'measured',则函数将在加入噪声之前测定信号强度。 y = awgn(x,SNR,SIGPOWER,STATE) 重置RANDN的状态。

y = awgn(…,POWERTYPE) 指定SNR和SIGPOWER的单位。POWERTYPE 可以是'dB'或'linear'。如果POWERTYPE是'dB',那么SNR以dB为单位,而SIGPOWER以dBW为单位。如果POWERTYPE是'linear',那么SNR作为

比值来度量,而SIGPOWER以瓦特为单位。

3. 直接用randn函数产生高斯分布序列:

无论是WGN还是AWGN函数,实际上都调用Randn函数产生的噪声。即WGN函数中调用了Randn函数,而AWGN函数调用了WGN函数。

rand:rand(n):生成0到1之间的n阶随机数方阵。rand(m,n):生成0到1之间的m×n的随机数矩阵。

randn:randn()命令是产生白噪声的,白噪声应该是0均值,方差为1的一组数,同rand有randn(n),randn(m,n)。x=rand(1,N) 产生(0,1)区间均匀分布的长度为N的随机信号,x=randn(1,N)产生长度为N且具有零均值和单位方差的正态分布的随机信号。 (可以在前面扩大相应的倍数得到不同的随机数,比如10*rand(1)得到0-10的随机数)。

6语音信号的均衡和混响处理

6.1语音均衡实验

x=wavread('zmm.wav');%读取名为shao.wav的原语音信号

y=filter(hns,1,x); %带阻滤波,滤波器在FDA Tool中设计,并导到工空间,因本人的中低音太重,高音不足

%Hpass,FIR,Equiripple,Minmum

order,Fs=22050,Fpass1=100,Fstop1=1500,Fstop2=1600,Fpass2=3000,Apass1=1,Astop= 30,Apass=1.

yy=filter(hnh,1,y); %高通滤波,滤波器在FDA Tool中设计,并导到工空间,因本人的低音太重,高音不足

%Hpass,FIR,Equiripple,Minmum

order,Fs=22050,Fstop=10,Fpass=4000,Astop=20,Apass=1

wavwrite(yy,22050,'zmmjunheng.wav');%将经混响后的信转换为语音,shao2.wav的语音中的中低频分量将有所衰减.

6.2语音混响实验

%%%%%延时混响%%%%%%%

x=wavread('shao2.wav'); %读入原始声音

n=1200; %设定延迟时间t=n/fs秒,改变该数据可改变混响深度(时间间隔)

N=60; %y设定延迟级数为N级,改变该数据可改变次数

x1=[x;zeros(N*n,1)]; %将x通过补零延长到经N级延时后的长度

for i=1:N %进行N次延时,第一次延时在x前补n 个0,后补(N-1)*n个0

x2=[zeros(i*n,1);x;zeros((N-i)*n,1)]; %第i次延时在x前补i*n个0,后补(N-i)*n个0 x1=x1+1/(2*i)*x2; %将经延时的信号x1跟x逐次相加end

wavwrite(x1,22050,'shao3.wav'); %将混响后的数据转换为声音

1).在MA TLAB中打开名为dlaymusic.m的程序

2).运行该程序,将在work中产生另一个新的语音文件shao3.wav

3).通过试听对比shao.wav、shao2.wav和shao3.wav语音,看语音有可不同

7 合成和滤噪设计分析

在频域内,语音信号的频谱分量主要集中在300~3400Hz的范围内。利用这个特点,可以用一个防混叠的带通滤波器将此范围内的语音信号频率分量取出。

通过该课题采集的语音信号频谱主要是500~800HZ范围。加入高斯随机噪声后该语音信号的时域波形几乎和噪声波形相同,通过回放几乎声音全部没噪声淹没,因此要想得到语音信号必须加入一个滤波器,能有效的滤除噪声影响。

从原始信号频谱和加噪信号频谱可以得出,该高斯随机噪声的加入使得信号加入了很多高频成分,因此我们可以选用低通滤波器滤除该噪声的高频干扰,声音低频成分主要是500~800HZ范围,因此我们选用截止频率为1KHZ的低通滤波器来滤除高斯噪声。

7.1将两首语音全成一首

m1=wavread('yinjiazao.wav');%读取一首语音m1

m2=wavread('yinhunxiang.wav'); %读取另一首语音m2

if length(m1)>length(m2) %比较两首语音的长度,将短的补成跟长的相等

m3=[m2;zeros((length(m1)-length(m2)),1)];

else

m3=[m1;zeros((length(m2)-length(m1)),1)];

end

m=0.1*m1+m3; %将两个语音相加,为分辩明,将其中一个衰减

wavwrite(m,22050,'yinhe.wav'); %将合成后的信转为语音1).在MATLAB中打开名为musicadd.m的程序

7.2消除语音中的噪声

x=wavread('yinhe.wav');%读取原语音信号,mu中带有噪声.

%将带有噪声的语音信号x经过带阻滤波器进行滤波,以达到消噪目的.

y1=filter(hn,1,x); %Bndstop,FIR,Equiripple,Minimum order,Fs=22050,Fpass1=950,Fstop1=980,Fstop2=1020,Fpass2=1050,A pass1=1,Astop=60,Apass2=1

y2=filter(hn1,1,y1); %Bndstop,FIR,Equiripple,Minimum order,Fs=22050,Fpass1=1500,Fstop1=1850,Fstop2=2020,Fpass2=2050 ,Apass1=1,Astop=60,Apass2=1

y3=filter(hn2,1,y2); %Bndstop,FIR,Equiripple,Minimum order,Fs=22050,Fpass1=2500,Fstop1=2900,Fstop2=3020,Fpass2=3050 ,Apass1=1,Astop=60,Apass2=1

wavwrite(y3,22050,'yinxiaozao.wav');%将经带阻滤波消噪后的信号转换为语音,lei3中将不再有噪声

图7.1 合成语音信号的时域波形

图7.2 合成语音信号的频谱

8 设计总结

通过这次课程设计,使我对语音信号有了全面的认识,对数字信号处理的知识又有了深刻的理解,在之前数字信号与处理的学习以及完成课后的作业的过程中,已经使用过MATLAB,对其有了一些基础的了解和认识。通过这次练习是我进一步了解了信号的产生、采样及频谱分析的方法。以及其中产生信号和绘制信号的基本命令和一些基础编程语言。让我感受到只有在了解课本知识的前提下,才能更好的应用这个工具;并且熟练的应用MATLAB也可以很好的加深我对课程的理解,方便我的思维。这次设计使我了解了MATLAB的使用方法,学会分析滤波器的优劣和性能,提高了分析和动手实践能力。同时我相信,进一步加强对MATLAB 的学习与研究对我今后的学习将会起到很大的帮助。

非常感谢我的导师老师!在老师无微不至的教导下,我才能够顺顺利利的完成了毕业课程的设计。从课程设计材料的搜集到根据选题对素材的提取与整理,从Matlab的简易入手到程序的分析与设计,从理论与算法到程序的编写与仿真,每一步都有李老师的细心知道与耐心讲解。在平易近人学识渊博的老师的熏陶下,使我感觉到自己知识的浅薄,在浩瀚的知识海洋面前,使我感觉到自己要不断进取。

很感激学院让我们有这次学习的机会,这次学习对于我们没有真正实践经验的同学来说,绝对是一次成长的机会。

最后,再次向教授我《MTALAb课程设计》以及指导我完成此次课程设计的老师及其他老师和同学致以诚挚的感谢!

参考文献

1、陈怀琛.MATLAB及在电子信息课程中的应用[M].北京:电子工业出版社.2008,1

2、张文.基于MATLAB的语音信号的滤波与实现[J].山西电子技术.2008,2

3、徐靖涛.基于MATLAB的语音信号分析与处理[J].重庆科技学院学报2008,1

4、胡航.语音信号处理[M].哈尔滨:哈尔滨工业大学出版社,2002.

5、丁玉美.高西全.数字信号处理[M].西安电子科技大学出版社,2006.

6、张威.MATLAB基础与编程入门[M].西安电子科技大学出版社,2006.

附录

附录1

%程序1:用MATLAB对原始语音信号进行分析,画出它的时域波形和频谱fs=22050; %语音信号采样频率为22050

[x1]=wavread('yuyin.wav'); %读取语音信号的数据,赋给变量x1 sound(x1,22050); %播放语音信号

y1=fft(x1,1024); %对信号做1024点FFT变换

f=fs*(0:511)/1024;

figure(1)

plot(x1) %做原始语音信号的时域图形

title('原始语音信号');

xlabel('time(s)');

ylabel('幅值');

figure(3)

plot(f,abs(y1(1:512)));

title('原始语音信号频谱')

xlabel('Hz');

ylabel('幅值')

附录2

% 程序2 用randn函数给原始信号加入高斯随机噪声

%%%%%%在语音中加噪声%%%%%%%

x=wavread('zmm.wav');%读取原语音信号,muz中无噪声.

fs=22050; %原语音信的采样率为22050Hz

fn1=1050; %设定噪声1的频率为1050Hz

fn2=2070; %设定噪声1的频率为2070Hz

fn3=3020; %设定噪声1的频率为3020Hz

t=1:length(x); %设置噪声的度度跟原语音信一样长,

x1=1*sin(1*pi*fn1/fs*t);%产生幅度为1频率为fn的正弦波作为噪声. x2=1*sin(1*pi*fn2/fs*t);

x3=1*sin(1*pi*fn3/fs*t);

xa=x+0.1*x1'+0.1*x2'+0.1*x3'; %将原子核语音信号跟噪声相加,x为带有噪声的语音信号.

wavwrite(xa,22050,'zmmjiazao.wav');%将带有噪声的语音信号转换为声音,muzjiazao1中将有噪声

数字信号处理课程设计报告

抽样定理的应用 摘要 抽样定理表示为若频带宽度有限的,要从抽样信号中无失真地恢复原信号,抽样频率应大于2倍信号最高频率。抽样频率小于2倍频谱最高频率时,信号的频谱有混叠。抽样频率大于2倍频谱最高频率时,信号的频谱无混叠。 语音信号处理是研究用数字信号处理技术和语音学知识对语音 信号进行处理的新兴学科,是目前发展最为迅速的学科之一,通过语音传递信息是人类最重要,最有效,最常用和最方便的交换信息手段,所以对其的研究更显得尤为重要。 Matlab语言是一种数据分析和处理功能十分强大的计算机应用 软件,它可以将声音文件变换成离散的数据文件,然后用起强大的矩阵运算能力处理数据。这为我们的本次设计提供了强大并良好的环境! 本设计要求通过利用matlab对模拟信号和语音信号进行抽样,通过傅里叶变换转换到频域,观察波形并进行分析。 关键词:抽样Matlab

目录 一、设计目的: (2) 二、设计原理: (2) 1、抽样定理 (2) 2、MATLAB简介 (2) 3、语音信号 (3) 4、Stem函数绘图 (3) 三、设计内容: (4) 1、已知g1(t)=cos(6πt),g2(t)=cos(14πt),g3(t)=cos(26πt),以抽样频率 fsam=10Hz对上述三个信号进行抽样。在同一张图上画出g1(t),g2(t),g3(t)及其抽样点,对所得结果进行讨论。 (4) 2、选取三段不同的语音信号,并选取适合的同一抽样频率对其进 行抽样,画出抽样前后的图形,并进行比较,播放抽样前后的语音。 (6) 3、选取合适的点数,对抽样后的三段语音信号分别做DFT,画图 并比较。 (10) 四、总结 (12) 五、参考文献 (13)

信号与系统课程设计报告材料

课程设计报告 课程名称信号与系统课程设计指导教师 设计起止日期 学院信息与通信工程 专业电子信息工程 学生 班级/学号 成绩 指导老师签字

目录 1、课程设计目的 (1) 2、课程设计要求 (1) 3、课程设计任务 (1) 4、课程设计容 (1) 5、总结 (11) 参考文献 (12) 附录 (12)

1、课程设计目的 “信号与系统”是一门重要的专业基础课,MATLAB作为信号处理强有力的计算和分析工具是电子信息工程技术人员常用的重要工具之一。本课程设计基于MATLAB完成信号与系统综合设计实验,以提高学生的综合应用知识能力为目标,是“信号与系统”课程在实践教学环节上的必要补充。通过课设综合设计实验,激发学生理论课程学习兴趣,提高分析问题和解决问题的能力。 2、课程设计要求 (1)运用MATLAB编程得到简单信号、简单信号运算、复杂信号的频域响应图; (2)通过对线性时不变系统的输入、输出信号的时域和频域的分析,了解线性时不变系统的特性,同时加深对信号频谱的理解。 3、课程设计任务 (1)根据设计题目的要求,熟悉相关容的理论基础,理清程序设计的措施和步骤; (2)根据设计题目的要求,提出各目标的实施思路、方法和步骤; (3)根据相关步骤完成MATLAB程序设计,所编程序应能完整实现设计题目的要求; (4)调试程序,分析相关理论; (5)编写设计报告。 4、课程设计容 (一)基本部分 (1)信号的时频分析 任意给定单频周期信号的振幅、频率和初相,要求准确计算出其幅度谱,并准确画出时域和频域波形,正确显示时间和频率。 设计思路: 首先给出横坐标,即时间,根据设定的信号的振幅、频率和初相,写出时域波形的表达式;然后对时域波形信号进行傅里叶变化,得到频域波形;最后使用plot函数绘制各个响应图。 源程序: clc; clear; close all; Fs =128; % 采样频率 T = 1/Fs; % 采样周期 N = 600; % 采样点数 t = (0:N-1)*T; % 时间,单位:S x=2*cos(5*2*pi*t);

matlab频谱分析

设计出一套完整的系统,对信号进行频谱分析和滤波处理; 1.产生一个连续信号,包含低频,中频,高频分量,对其进行采样,进行频谱分析,分别设计三种高通,低通,带通滤波器对信号进行滤波处理,观察滤波后信号的频谱。 2.采集一段含有噪音的语音信号(可以录制含有噪音的信号,或者录制语音后再加进噪音信号),对其进行采样和频谱分析,根据分析结果设计出一合适的滤波器滤除噪音信号。 %写上标题 %设计低通滤波器: [N,Wc]=buttord() %估算得到Butterworth低通滤波器的最小阶数N和3dB截止频率Wc [a,b]=butter(N,Wc); %设计Butterworth低通滤波器 [h,f]=freqz(); %求数字低通滤波器的频率响应 figure(2); % 打开窗口2 subplot(221); %图形显示分割窗口 plot(f,abs(h)); %绘制Butterworth低通滤波器的幅频响应图 title(巴氏低通滤波器''); grid; %绘制带网格的图像 sf=filter(a,b,s); %叠加函数S经过低通滤波器以后的新函数 subplot(222); plot(t,sf); %绘制叠加函数S经过低通滤波器以后的时域图形 xlabel('时间(seconds)'); ylabel('时间按幅度'); SF=fft(sf,256); %对叠加函数S经过低通滤波器以后的新函数进行256点的基—2快速傅立叶变换 w= %新信号角频率 subplot(223); plot()); %绘制叠加函数S经过低通滤波器以后的频谱图 title('低通滤波后的频谱图'); %设计高通滤波器 [N,Wc]=buttord() %估算得到Butterworth高通滤波器的最小阶数N和3dB截止频率Wc [a,b]=butter(N,Wc,'high'); %设计Butterworth高通滤波器 [h,f]=freqz(); %求数字高通滤波器的频率响应 figure(3); subplot(221); plot()); %绘制Butterworth高通滤波器的幅频响应图 title('巴氏高通滤波器'); grid; %绘制带网格的图像 sf=filter(); %叠加函数S经过高通滤波器以后的新函数 subplot(222); plot(t,sf); ;%绘制叠加函数S经过高通滤波器以后的时域图形 xlabel('Time(seconds)'); ylabel('Time waveform'); w; %新信号角频率 subplot(223);

数字信号处理课设+语音信号的数字滤波

语音信号的数字滤波 ——利用双线性变换法实现IIR数字滤波器的设计一.课程设计的目的 通过对常用数字滤波器的设计和实现,掌握数字信号处理的工作原理及设计方法;熟悉用双线性变换法设计 IIR 数字滤波器的原理与方法,掌握利用数字滤波器对信号进行滤波的方法,掌握数字滤波器的计算机仿真方法,并能够对设计结果加以分析。 二.设计方案论证 1.IIR数字滤波器设计方法 IIR数字滤波器是一种离散时间系统,其系统函数为 假设M≤N,当M>N时,系统函数可以看作一个IIR的子系统和一个(M-N)的FIR子系统的级联。IIR数字滤波器的设计实际上是求解滤波器的系数和,它 是数学上的一种逼近问题,即在规定意义上(通常采用最小均方误差准则)去逼近系统的特性。如果在S平面上去逼近,就得到模拟滤波器;如果在z平面上去逼近,就得到数字滤波器。 2.用双线性变换法设计IIR数字滤波器 脉冲响应不变法的主要缺点是产生频率响应的混叠失真。这是因为从S平面到Z平面是多值的映射关系所造成的。为了克服这一缺点,可以采用非线性频率压缩方法,将整个频率轴上的频率范围压缩到-π/T~π/T之间,再用z=e sT转换 平面的-π/T~π到Z平面上。也就是说,第一步先将整个S平面压缩映射到S 1 /T一条横带里;第二步再通过标准变换关系z=e s1T将此横带变换到整个Z平面上去。这样就使S平面与Z平面建立了一一对应的单值关系,消除了多值变换性,也就消除了频谱混叠现象,映射关系如图1所示。 图1双线性变换的映射关系 为了将S平面的整个虚轴jΩ压缩到S1平面jΩ1轴上的-π/T到π/T段上,可以通过以下的正切变换实现

数字信号处理课程设计报告

《数字信号处理》课程设计报告 设计题目: IIR滤波器的设计 专业: 班级: 姓名: 学号: 指导教师: 2010年月日

1、设计目的 1、掌握IIR 滤波器的参数选择及设计方法; 2、掌握IIR 滤波器的应用方法及应用效果; 3、提高Matlab 下的程序设计能力及综合应用能力。 4、了解语音信号的特点。 2、设计任务 1、学习并掌握课程设计实验平台的使用,了解实验平台的程序设计方法; 2、录制并观察一段语音信号的波形及频谱,确定滤波器的技术指标; 3、根据指标设计一个IIR 滤波器,得到该滤波器的系统响应和差分方程,并根据差分方程将所设计的滤波器应用于实验平台,编写相关的Matlab 程序; 4、使用实验平台处理语音信号,记录结果并进行分析。 3、设计内容 3.1设计步骤 1、学习使用实验平台,参见附录1。 2、使用录音机录制一段语音,保存为wav 格式,录音参数为:采样频率8000Hz、16bit、单声道、PCM 编码,如图1 所示。 图1 录音格式设置 在实验平台上打开此录音文件,观察并记录其波形及频谱(可以选择一段较为稳定的语音波形进行记录)。 3、根据信号的频谱确定滤波器的参数:通带截止频率Fp、通带衰减Rp、阻带截止频率Fs、阻带衰减Rs。 4、根据技术指标使用matlab 设计IIR 滤波器,得到系统函数及差分方程,并记录得到系统函数及差分方程,并记录其幅频响应图形和相频响应图形。要求设计 第 1页出的滤波器的阶数小于7,如果不能达到要求,需要调整技术指标。 5、记录滤波器的幅频响应和系统函数。在matlab 中,系统函数的表示公式为:

因此,必须记录系数向量a 和b。系数向量a 和b 的可以在Matlab 的工作空间(WorkSpace)中查看。 6、根据滤波器的系统函数推导出滤波器的差分方程。 7、将设计的滤波器应用到实验平台上。根据设计的滤波器的差分方程在实验平台下编写信号处理程序。根据运行结果记录处理前后的幅频响应的变化情况,并试听处理前后声音的变化,将结果记录,写入设计报告。 3.2实验程序 (1)Rs=40; Fs=1400; Rp=0.7; Fp=450; fs=8000; Wp=2*pi*Fp;Ws=2*pi*Fs; [N,Wn]=buttord(Wp,Ws,Rp,Rs,'s'); [b1,a1]=butter(N,Wn,'s'); [b,a]=bilinear(b1,a1,fs); [H,W]=freqz(b,a); figure; subplot(2,1,1);plot(W*fs/(2*pi),abs(H));grid on;title('频率响应'); xlabel('频率');ylabel('幅值');、 subplot(2,1,2); plot(W,angle(H));grid on;title('频率响应'); xlabel('相位(rad)');ylabel('相频特性'); 3.3实验结果(如图): N =5 Wn=6.2987e+003 第 2页

数字信号处理课设共18页文档

数字信号处理课程设计 姓名:刘倩 学号:201014407 专业:信息与计算科学 实验一:常见离散信号产生和实现 一、实验目的: 1、加深对常用离散信号的理解; 2、掌握matlab 中一些基本函数的建立方法。 二、实验原理: 1.单位抽样序列 在MATLAB 中可以利用zeros()函数实现。 如果)(n δ在时间轴上延迟了k 个单位,得到)(k n -δ即: 2.单位阶越序列 在MATLAB 中可以利用ones()函数实现。 3.正弦序列 在MATLAB 中 4.复指数序列 在MATLAB 中 5.指数序列 在MATLAB 中

实验内容:由周期为10的正弦函数生成周期为20的余弦函数。 实验代码: n=0:30; y=sin(0.2*pi*n+pi/2); y1=sin(0.1*pi*n+pi/2); subplot(121) stem(n,y); xlabel ('时间序列n');ylabel('振幅');title('正弦函数序列y=sin(0.2*pi*n+pi/2)'); subplot(122) stem(n,y1); xlabel ('时间序列n');ylabel('振幅'); title('正弦函数序列y=sin(0.2*pi*n+pi/2)'); 实验结果: 实验二:离散系统的时域分析 实验目的:加深对离散系统的差分方程、冲激响应和卷积分析方法的理解。实验原理:离散系统 其输入、输出关系可用以下差分方程描述: 输入信号分解为冲激信号, 记系统单位冲激响应 则系统响应为如下的卷积计算式:

当N k d k ,...2,1,0==时,h[n]是有限长度的(n :[0,M]),称系统为FIR 系统;反之,称系统为IIR 系统。 在MATLAB 中,可以用函数y=filter(p,d,x)实现差分方程的仿真,也可以用函数 y=conv(x,h)计算卷积,用y=impz(p,d,N)求系统的冲激响应。 实验内容:用MATLAB 计算全解 当n>=0时,求用系数差分方程y[n]+y[n-1]-6y[n-2]=x[n]描述的一个离散时间系统对阶跃输入x[n]=8μ[n]的全解。 实验代码: n=0:7; >> [y,sf]=filter(1,[1 1 -6],8*ones(1,8),[-7 6]); >> y1(n+1)=-1.8*(-3).^n+4.8*(2).^n-2; >> subplot(121) >> stem(n,y); >> title('由fliter 函数计算结果'); >> subplot(122) >> stem(n,y1); >> title('准确结果'); 实验结果: 结果分析:有图可得由fliter 函数得出的结果与计算出的准确结果完全一致。 实验三FFT 算法的应用

信号分析课程设计报告书

信号分析课程设计 信号系统的时域分析 编程实现的卷积积分或卷积和 一、课程设计题目: 基于 MATLAB 的连续时间LTI 系统的时域分析 二、基本要求: ① 掌握连续时不变信号处理的基本概念、基本理论和基本方法; ② 学会 MATLAB 的使用,掌握 MATLAB 的程序设计方法; ③ 学会用 MATLAB 对信号进行分析和处理; ④ 编程实现卷积积分或卷积和,零输入响应,零状态响应; ⑤ 撰写课程设计论文,用信号处理基本理论分析结果。 三、设计方法与步骤: 一般的连续时间系统分析有以下几个步骤: ①求解系统的零输入响应; ②求解系统的零状态响应; ③求解系统的全响应; ④分析系统的卷积;⑤画出它们的图形. 下面以具体的微分方程为例说明利用MATLAB 软件分析系统的具体方法. 1.连续时间系统的零输入响应 描述n 阶线性时不变(LTI )连续系统的微分方程为: 已知y 及各阶导数的初始值为y(0),y (1)(0),… y (n-1)(0), 求系统的零输入响应。 建模 当LIT 系统的输入为零时,其零输入响应为微分方程的其次解(即令微分方程的等号右端为零),其形式为(设特征根均为单根) 其中p 1,p 2,…,p n 是特征方程a 1λ n +a 2λn-1+…+a n λ+a n =0的根,它们可以 用root(a)语句求得。各系数 由y 及其各阶导数的初始值来确定。对此有 1121111n n m n n m m n n m d y d y dy d u du a a a a y b b b u dt dt dt dt dt -++-++?????++=+????++1212()n p t p t p t n y t C e C e C e =++????+120n C C C y ++????+=11220 n n p C p C p C Dy ++????+=

信号的频谱分析及MATLAB实现

第23卷第3期湖南理工学院学报(自然科学版)Vol.23 No.3 2010年9月 Journal of Hunan Institute of Science and Technology (Natural Sciences) Sep. 2010信号的频谱分析及MATLAB实现 张登奇, 杨慧银 (湖南理工学院信息与通信工程学院, 湖南岳阳 414006) 摘 要: DFT是在时域和频域上都已离散的傅里叶变换, 适于数值计算且有快速算法, 是利用计算机实现信号频谱分析的常用数学工具. 文章介绍了利用DFT分析信号频谱的基本流程, 重点阐述了频谱分析过程中误差形成的原因及减小分析误差的主要措施, 实例列举了MATLAB环境下频谱分析的实现程序. 通过与理论分析的对比, 解释了利用DFT分析信号频谱时存在的频谱混叠、频谱泄漏及栅栏效应, 并提出了相应的改进方法. 关键词: MA TLAB; 频谱分析; 离散傅里叶变换; 频谱混叠; 频谱泄漏; 栅栏效应 中图分类号: TN911.6 文献标识码: A 文章编号: 1672-5298(2010)03-0029-05 Analysis of Signal Spectrum and Realization Based on MATLAB ZHANG Deng-qi, YANG Hui-yin (College of Information and Communication Engineering, Hunan Institute of Science and Technology, Yueyang 414006, China) Abstract:DFT is a Fourier Transform which is discrete both in time-domain and frequency-domain, it fits numerical calculation and has fast algorithm, so it is a common mathematical tool which can realize signal spectrum analysis with computer. This paper introduces the basic process of signal spectrum analysis with DFT, emphasizes the causes of error producing in spectrum analysis process and the main ways to decrease the analysis error, and lists the programs of spectrum analysis based on MATLAB. Through the comparison with the theory analysis, the problems of spectrum aliasing, spectrum leakage and picket fence effect are explained when using DFT to analyze signal spectrum, and the corresponding solution is presented. Key words:MATLAB; spectrum analysis; DFT; spectrum aliasing; spectrum leakage; picket fence effect 引言 信号的频谱分析就是利用傅里叶分析的方法, 求出与时域描述相对应的频域描述, 从中找出信号频谱的变化规律, 以达到特征提取的目的[1]. 不同信号的傅里叶分析理论与方法, 在有关专业书中都有介绍, 但实际的待分析信号一般没有解析式, 直接利用公式进行傅里叶分析非常困难. DFT是一种时域和频域均离散化的傅里叶变换, 适合数值计算且有快速算法, 是分析信号的有力工具. 本文以连续时间信号为例, 介绍利用DFT分析信号频谱的基本流程, 重点阐述频谱分析过程中可能存在的误差, 实例列出MATLAB 环境下频谱分析的实现程序. 1 分析流程 实际信号一般没有解析表达式, 不能直接利用傅里叶分析公式计算频谱, 虽然可以采用数值积分方法进行频谱分析, 但因数据量大、速度慢而无应用价值. DFT在时域和频域均实现了离散化, 适合数值计算且有快速算法, 是利用计算机分析信号频谱的首选工具. 由于DFT要求信号时域离散且数量有限, 如果是时域连续信号则必须先进行时域采样, 即使是离散信号, 如果序列很长或采样点数太多, 计算机存储和DFT计算都很困难, 通常采用加窗方法截取部分数据进行DFT运算. 对于有限长序列, 因其频谱是连续的, DFT只能描述其有限个频点数据, 故存在所谓栅栏效应. 总之, 用DFT分析实际信号的频谱, 其结果必然是近似的. 即使是对所有离散信号进行DFT变换, 也只能用有限个频谱数据近似表示连续频 收稿日期: 2010-06-09 作者简介: 张登奇(1968? ), 男, 湖南临湘人, 硕士, 湖南理工学院信息与通信工程学院副教授. 主要研究方向: 信号与信息处理

数字信号处理课程规划报告

数字信号处理课程设计报告《应用Matlab对信号进行频谱分析及滤波》 专业: 班级: 姓名: 指导老师: 二0 0五年一月一日

目录 设计过程步骤() 2.1 语音信号的采集() 2.2 语音信号的频谱分析() 2.3 设计数字滤波器和画出其频谱响应() 2.4 用滤波器对信号进行滤波() 2.5滤波器分析后的语音信号的波形及频谱() ●心得和经验()

设计过程步骤 2.1 语音信号的采集 我们利用Windows下的录音机,录制了一段开枪发出的声音,时间在1 s内。接着在C盘保存为WAV格式,然后在Matlab软件平台下.利用函数wavread对语音信号进行采样,并记录下了采样频率和采样点数,在这里我们还通过函数sound引入听到采样后自己所录的一段声音。通过wavread函数和sound的使用,我们完成了本次课程设计的第一步。其程序如下: [x,fs,bite]=wavread('c:\alsndmgr.wav',[1000 20000]); sound(x,fs,bite); 2.2 语音信号的频谱分析 首先我们画出语音信号的时域波形;然后对语音信号进行频谱分析,在Matlab中,我们利用函数fft对信号进行快速傅里叶变换,得到信号的频谱特性性。到此,我们完成了课程实际的第二部。 其程序如下: n=1024; subplot(2,1,1); y=plot(x(50:n/4)); grid on ; title('时域信号') X=fft(x,256); subplot(2,1,2); plot(abs(fft(X))); grid on ; title('频域信号'); 运行程序得到的图形:

数字信号处理课程设计

数字信号处理 课 程 设 计 院系:电子信息与电气工程学院 专业:电子信息工程专业 班级:电信班 姓名: 学号: 组员:

摘要 滤波器设计在数字信号处理中占有极其重要的地位,FIR数字滤波器和IIR 滤波器是滤波器设计的重要组成部分。利用MATLAB信号处理工具箱可以快速有效地设计各种数字滤波器。课题基于MATLAB有噪音语音信号处理的设计与实现,综合运用数字信号处理的理论知识对加噪声语音信号进行时域、频域分析和滤波。通过理论推导得出相应结论,再利用 MATLAB 作为编程工具进行计算机实现。在设计实现的过程中,使用窗函数法来设计FIR数字滤波器,用巴特沃斯、切比雪夫和双线性变法设计IIR数字滤波器,并利用MATLAB 作为辅助工具完成设计中的计算与图形的绘制。通过对对所设计滤波器的仿真和频率特性分析,可知利用MATLAB信号处理工具箱可以有效快捷地设计FIR和IIR数字滤波器,过程简单方便,结果的各项性能指标均达到指定要求。 关键词数字滤波器 MATLAB 窗函数法巴特沃斯

目录 摘要 (1) 1 引言 (1) 1.1课程设计目的 (1) 1.2 课程设计内容及要求 (1) 1.3课程设计设备及平台 (1) 1.3.1 数字滤波器的简介及发展 (1) 1.3.2 MATLAB软件简介 (2) 2 课程设计原理及流程 (4) 3.课程设计原理过程 (4) 3.1 语音信号的采集 (4) 3.2 语音信号的时频分析 (5) 3.3合成后语音加噪声处理 (7) 3.3.1 噪声信号的时频分析 (7) 3.3.2 混合信号的时频分析 (8) 3.4滤波器设计及消噪处理 (10) 3.4.1 设计IIR和FIR数字滤波器 (10) 3.4.2 合成后语音信号的消噪处理 (13) 3.4.3 比较滤波前后语音信号的波形及频谱 (13) 3.4.4回放语音信号 (15) 3.5结果分析 (15) 4 结束语 (15) 5 参考文献 (16)

信号与系统课程设计报告分析

成绩评定表 课程设计任务书

摘要 本文研究的是傅里叶变换的对称性和时移特性,傅里叶变换的性质有:对称性、线性(叠加性)、奇偶虚实性、尺度变换特性、时移特性、频移特性、微分特性、积分特性、卷积特性(时域和频域);从信号与系统的角度出发,给出了激励信号的具体模型;应用Matlab软件进行仿真,将研究的信号转化成具体的函数形式,在Matlab得到最终变换结果。使用傅里叶变换的方法、卷积的求解方法以及函数的微分等方法研究题目。 关键词: 傅里叶变换;对称性;时移特性;Matlab 目录 1、Matlab介绍................................................................................... 错误!未定义书签。

2.利用Matlab实现信号的频域分析—傅里叶变换的对称性与时移特性设计 (5) 2.1.傅里叶变换的定义及其相关性质 (5) 2.2.傅里叶变换的对称性验证编程设计及实现 (7) 2.3.傅里叶变换的时移特性验证编程设计及实现 (10) 3.总结 (13) 4.参考文献 (13) 1 、Matlab介绍 MATLAB作为一种功能强大的工程软件,其重要功能包括数值处理、程序设计、可视化显示、图形用户界面和与外部软件的融合应用等方面。 MATLAB软件由美国Math Works公司于1984年推出,经过不断的发展和完善,如今己成为覆盖多个学科的国际公认的最优秀的数值计算仿真软件。MATLAB具备强大的数值计算能力,许多复杂的计算问题只需短短几行代码就可在MATLAB中实现。作为一个跨平台的软件,MATLAB已推出Unix、Windows、Linux和Mac等十多种操作系统下的版本,大大方便了在不同操作系统平台下的研究工作。 MATLAB软件具有很强的开放性和适应性。在保持内核不变的情况下,MATLAB可以针对不同的应用学科推出相应的工具箱(toolbox),目前己经推出了

基于matlab的信号分析与处理

基于m a t l a b的信号分 析与处理 IMB standardization office【IMB 5AB- IMBK 08- IMB 2C】

山东建筑大学 课程设计说明书题目:基于MATLAB的信号分析与处理课程:数字信号处理课程设计 院(部):信息与电气工程学院 专业:通信工程 班级:通信111班 学生姓名: 学号: 指导教师: 完成日期: 2014年1月

目录4

摘要 这次是基于MATLAB的信号分析与处理。所谓数字滤波器,就是输入、输出都是数字信号的,通过数值计算处理改变输入信号所含频率成分的相对比例,或者滤除某些频率成分的数字器件或程序。常用的经典滤波器有低通、高通、带通、带阻。 首先产生一个连续信号,包含低频、中频、高频分量;对其进行采样,得到数字信号;对数字信号进行FFT频谱分析,绘制其频谱图;根据信号频谱分析的结果,分别设计高通、低通、带通滤波器,绘制滤波器的幅频及相频特性;用所设计的滤波器对信号滤波,并绘制出滤波后的频谱图。 关键词:MATLAB; FFT;滤波器;信号产生;频谱分析

1设计目的和要求 产生一个连续信号,包含低频,中频,高频分量,对其进行采样,进行频谱分析,分别设计三种高通,低通,带通滤波器对信号进行滤波处理,观察滤波后信号的频谱。 2设计原理 信号的采样要符合奈奎斯特采样定律,一般为被采信号最高频率的2倍,只有这样,才能保证频域不混叠,也就是采样出来数字信号中包含了被采信号的所有信息,而且没有引入干扰。这就是信号的时域采样。 频谱分析是指对信号进行频域谱的分析,观察其频域的各个分量的功率大小,其理论基础是傅立叶变换,现在一般采用数字的方法,也就是将时域信号数字化后做FFT,可以得到频域的波形。 数字滤波器是一种用来过滤时间离散信号的数字系统,通过对抽样数据进行数学处理来达到频域滤波的目的。可以设计系统的频率响应,让它满足一定的要求,从而对通过该系统的信号的某些特定的频率成分进行过滤,这就是滤波器的基本原理。 IIR滤波器的设计原理: IIR数字滤波器的设计一般是利用目前已经很成熟的模拟滤波器的设计方法来进行设计,通常采用模拟滤波器原型有butterworth函数、chebyshev函数、bessel函数、椭圆滤波器函数等。 IIR数字滤波器的设计步骤: (1)按照一定规则把给定的滤波器技术指标转换为模拟低通滤波器的技术指标; (2)根据模拟滤波器技术指标设计为响应的模拟低通滤波器; (3)很据脉冲响应不变法和双线性不变法把模拟滤波器转换为数字滤波器; (4)如果要设计的滤波器是高通、带通或带阻滤波器,则首先把它们的技术指标转化为模拟低通滤波器的技术指标,设计为数字低通滤波器,最后通过频率转换的方法来得到所要的滤波器。 本课程设计设计思想:首先利用MATLAB分别产生低频、中频、高频信号,然后进行叠加得到连续时间信号;对所产生的连续时间信号进行采样,得到数字信号;对信

数字信号处理实验报告92885

目录 实验1 离散时间信号的频域分析-----------------------2 实验2 FFT算法与应用-------------------------------7 实验3 IIR数字滤波器的设计------------------------12 实验4 FIR数字滤波器的设计------------------------17

实验1 离散时间信号的频域分析 一.实验目的 信号的频域分析是信号处理中一种有效的工具。在离散信号的时域分析中,通常将信号表示成单位采样序列δ(n )的线性组合,而在频域中,将信号表示成复变量e n j ω-或 e n N j π2-的线性组合。通过这样的表示,可以将时域的离散序 列映射到频域以便于进一步的处理。 在本实验中,将学习利用MATLAB 计算离散时间信号的DTFT 和DFT,并加深对其相互关系的理解。 二、实验原理 (1)DTFT 和DFT 的定义及其相互关系。序列x(n)DTFT 定义为()jw X e = ()n x n e ∞ =∞ ∑ω jn -它是关于自变量ω的复函数,且是以2π为周期的连续函数。 ()jw X e 可以表示为()()()jw jw jw re im X e X e jX e =+,其中,()jw re X e 和()jw im X e 分别是 ()jw X e 实部和虚部;还可以表示为 ()jw X e =()|()|jw j w X e e θ,其中, |()|jw X e 和{} ()arg ()j w X e ωθ=分别是()jw X e 的幅度函数和相位函数;它们都是ω的实函数,也是以2π为周期的周期函数。 序列()x n 的N 点DFT 定义为2211 ()()()()N N j k j kn kn N N N N n X k X e x n e x n W π π ---==== ∑∑,()X k 是周期为N 的序列。()j X e ω与()X k 的关系:()X k 是对()j X e ω)在一个周期 中的谱的等间隔N 点采样,即 2k |()()|jw w N X k X e π = = ,而()j X e ω 可以通过对()X k 内插获得,即

实验三用FFT对信号进行频谱分析和MATLAB程序

实验三 用FFT 对信号进行频谱分析 一 实验目的 1 能够熟练掌握快速离散傅立叶变换的原理及应用FFT 进行频谱分析的基本方法; 2了解用FFT 进行频谱分析可能出现的分析误差及其原因; 二 实验原理 1.用DFT 对非周期序列进行谱分析 单位圆上的Z 变换就是序列的傅里叶变换,即 ()()j j z e X e X z ωω== (3-1) ()j X e ω是ω的连续周期函数。对序列()x n 进行N 点DFT 得到()X k ,则()X k 是在区间[]0,2π上对()j X e ω的N 点等间隔采样,频谱分辨率就是采样间隔 2N π。因此序列的傅里叶变换可利用DFT (即FFT )来计算。 用FFT 对序列进行谱分析的误差主要来自于用FFT 作频谱分析时,得到的是离散谱,而非周期序列的频谱是连续谱,只有当N 较大时,离散谱的包络才能逼近连续谱,因此N 要适当选择大一些。 2.用DFT 对周期序列进行谱分析 已知周期为N 的离散序列)(n x ,它的离散傅里叶级数DFS 分别由式(3-2)和(3-3) 给出: DFS : ∑-=-=1 2)(1N n kn N j k e n x N a π , n =0,1,2,…,N -1 (3-2) IDFS : ∑-==1 02)(N k kn N j k e a n x π , n =0,1,2,…,N -1 (3-3) 对于长度为N 的有限长序列x (n )的DFT 对表达式分别由式(3-4)和(3-5)给出: DFT : ∑-=-=1 02)()(N n kn N j e n x k X π , n =0,1,2,…,N -1 (3-4) IDFT : ∑-==1 02)(1)(N k kn N j e k X N n x π , n =0,1,2,…,N -1 (3-5) FFT 为离散傅里叶变换DFT 的快速算法,对于周期为N 的离散序列x (n )的频谱分析便可由式(3-6)和(3-7)给出:

数字信号处理课程设计 1

(一)用窗函数法设计FIR数字滤波器 一、设计题目用窗函数法设计FIR数字低通滤波器 二、设计目的 1. 熟悉设计线性相位数字滤波器的一般步骤。 2. 掌握用窗函数法设计FIR数字滤波器的原理和方法。 3. 熟悉各种窗函数的作用以及各种窗函数对滤波特性的影响。 4. 学会根据指标要求选取合适的窗函数。 三、设计原理 窗函数法又称为傅里叶级数法,FIR数字滤波器的设计问题就是要所设计的FIR数字滤波器的响应H(ejw)去逼近所要求的理想滤波器的响应Hd(ejw)。从单位取样响应序列来看,就是使所设计的滤波器的h(n)逼近理想单位取样响应序列hd(n)。而且Hd(ejw)=逐段恒定的,且在频带边界处有不连续点,因此序列hd(n)是无限长的,通过直接截取无限长序列以得到有限长序列的办法,可以形象的比喻为h(n)通过一个窗口所看到的一段hd(n)。因此,h(n)也可以表达为hd(n)和一个窗函数w(n)的乘积,h(n)=w(n)hd(n)。这里的窗函数就是矩形序列RN(n)。 四、实现方法 用MATLAB编程实现给定指标要求的滤波器设计 五、设计内容及要求 1、各窗函数图(假设N=67;) N=67;

n=0:N-1; wn1=ones(1,N); stem(n, wn1);矩形窗 figure; wn2=hamming(N); stem(n, wn2);海明窗 figure; wn3=BARTLETT(N); stem(n, wn3);巴特列特 figure; wn4= Hanning(N); stem(n, wn4);汉宁窗 将窗函数分别画出来 2、计算理想低通滤波器单位冲激响应的源程序function[hd]=ideal(wc,N) q=(N-1)/2; n=0:N-1; m=n-q+eps; hd=sin(wc*m)./(pi*m); 3、计算频率响应的源程序 function[H]=fr(b,a,w); m=0:length(b)-1; l=0:length(a)-1; num=b*exp(-j*m'*w); den=a*exp(-j*l'*w); H=num./den;

数字信号处理实验报告

前言 《数字信号处理》是信息电子,通信工程等本科专业及其他相近专业的一门专业必修课。通过本课程的学习,学生应掌握以下基本概念、理论和方法:采样定理、离散序列的变换、离散信号的频谱分析;离散系统的传递函数、频率响应、离散系统的基本分析方法;数字滤波器的设计理论、滤波器的软件实现;离散傅立叶变换理论、快速傅立叶变换方法;有限字长效应。 为了使学生更好地理解和深刻地把握这些知识,并在此基础上,训练和培养学生掌握离散系统的基本概念和分析方法,数字滤波器的设计和实现,以及如何利用快速傅立叶变换等DSP技术对数字信号进行分析、滤波等处理,设置了以下三个实验: (1)离散时间序列卷积和MATLAB实现; 内容:使用任意的编程语言编制一个程序,实现两个任意有限序列的卷积和。 目的:理解线性非移变系统I/O关系和实现 要求:掌握使用计算机实现数字系统的方法 (2)FFT算法的MATLAB实现; 内容:使用MATLAB编程语言编制一个程序,实现任意有限序列的FFT。 目的:理解FFT算法的意义和实现 要求:掌握使用计算机实现FFT算法的方法 (3)数字滤波器的设计; 内容:使用MATLAB编程语言编制一个程序,实现FIR或IIR滤波器的设计目的:理解数字滤波器的设计技术 要求:掌握使用计算机进行数字滤波器设计的方法 (4)窗函数设计FIR滤波器; 内容:使用MATLAB编程语言编制一个程序,实现FIR或IIR滤波器的设计目的:理解数字滤波器的设计技术 要求:掌握使用计算机进行数字滤波器设计的方法 该实验指导书是参照该课程的教学大纲而编制的,适合于信息电子工程、通信工程等本科专业及其他相近专业。

应用MATLAB对信号进行频谱分析

数字信号处理课程设计报告书 2011年7 月 1日 课题名称 应用MATLAB 对信号进行频谱分析 姓 名 张炜玮 学 号 20086377 院、系、部 电气系 专 业 电子信息工程 指导教师 刘鑫淼 ※※※※※※※※※ ※※ ※※ ※※ ※※ ※※※※※ ※※ 2008级数字信号处理课程设计

应用MATLAB对信号进行频谱分析 20086377 张炜玮 一、设计目的 用MATLAB语言进行编程,绘出所求波形,并且运用FFT求对连续信号进行分析。 二、设计要求 1、用Matlab产生正弦波,矩形波,并显示各自的时域波形图; 2、进行FFT变换,显示各自频谱图,其中采样率、频率、数据长度自选,要求注明; 3、绘制三种信号的均方根图谱; 4、用IFFT回复信号,并显示恢复的正弦信号时域波形图。 三、系统原理 用FFT对信号作频谱分析是学习数字信号处理的重要内容。经常需要进行频谱分析的信号是模拟信号和时域离散信号。频谱分辨率直接和FFT的变换区间N 有关,因为FFT能够实现频率分辨率是2π/N。 x(n)是一个长度为M的有限长序列,则x(n)的N点离散傅立叶变换为: X(k)=DFT[x(n)]= kn N W N n n x ∑ - = 1 ) ( ,k=0,1,...,N-1 N j e N Wπ2- = 逆变换:x(n) =IDFT[X(k)]= kn N W k X N n N - ∑ - = 1 ) ( 1 ,k=0,1,...,N-1 但FFT是一种比DFT更加快速的一种算法,提高了DFT的运算速率,为数字信号处理技术应用于各种信号处理创造了条件,大大提高了数字信号处理技术的发展。本实验就是采用FFT,IFFT对信号进行谱分析。 四、程序设计 fs=input('please input the fs:');%设定采样频率 N=input('please input the N:');%设定数据长度 t=0:0.001:1; f=100;%设定正弦信号频率 %生成正弦信号 x=sin(2*pi*f*t);

数字信号处理课程设计(对音乐信号的各种处理)

实验1 1、音乐信号的音谱和频谱观察 ○1使用wavread语句读取音乐信号,获取抽样率; ○2输出音乐信号的波形和频谱,观察现象; ○3使用sound语句播放音乐信号,注意不同抽样率下的音调变化,解释现象。 clear all;close all;clc [a,fs,bit]=wavread('c:\MATLAB6p5\work\陪你一起看草原.wav'); size(a); y1=a(:,1); a1=y1(10000:60000) figure; subplot(2,1,1),plot(a); subplot(2,1,2),plot(a1); x1=resample(a1,2,1); %y=resample(x,p,q)返回量的长度是向量x的p/q倍sound(x1,fs); %sound(a,fs); N1=length(a1); F1=fft(a1,N1); w=2/N1*[0:N1-1]; %频谱图横坐标设置 figure; plot(w,abs(F1)); N2=length(a1); t=0:1/N2:1/N2*(N2-1); title('傅利叶变换'); %傅利叶变换; figure; plot(a1); title('时域波形'); %时域波形;

1,以二倍的抽样率听声音信号时,音乐播放的特别快,像被压缩了,播放的时间比原信号短。 2,以二分之一的抽样率听声音信号时,音乐播放的特别慢,像被拉长了,播放的时间比原信号长。 3,原信号频谱截止频率为0.5*pi 实验2 2、音乐信号的抽取(减抽样) ○1观察音乐信号频率上限,选择适当的抽取间隔对信号进行减抽样(给出两种抽取间隔, 代表混叠和非混叠); ○2输出减抽样音乐信号的波形和频谱,观察现象,给出理论解释; ○3播放减抽样音乐信号,注意抽样率的改变,比较不同抽取间隔下的声音,解释现象。 clear all;close all;clc [a,fs,bit]=wavread('c:\MATLAB6p5\work\陪你一起看草原.wav'); size(a); y1=a(:,1); a1=y1(10000:60000)

ASK信号的仿真分析matlab课程设计报告

课程设计任务书 学生姓名:_________ 专业班级:____通信0803班______ 指导教师:____魏洪涛____ 工作单位:_____信息工程学院____ 题目:ASK信号的仿真分析 课程设计目的: 1.较全面的了解常用的数据分析与处理原理及方法; 2.能够运用相关软件进行模拟分析; 3.掌握基本的文献检索和文献阅读的方法; 4.提高正确的撰写论文的基本能力。 课程设计内容和要求 1.内容:ASK信号的调制和解调 2.要求:调制信号:300Hz正弦信号,经过μ律PCM编码;载波频率:100kHz; 解调方式:同步解调;画出调制信号、已调信号、解调信号的波形、频谱以及误码率与输入信噪比的关系曲线; 初始条件 .matlab仿真平台 时间安排 第18周,安排任务 第18周,程序设计与计算 第21周,完成(答辩,提交报告,演示) 指导教师签名: 年月日系主任(或责任教师)签名: 年月日

目录 1. 2ASK系统介绍 0 . 2ASK系统的意义、主要功能 0 . 调制解调原理、系统性能分析 0 2. 设计流程 (1) . 产生2ASK信号产生 (1) . 功率谱分析 (1) . 对已调信号的相干解调 (2) 3. 源程序 (2) . μ律PCM编码 (2) . 信号的调制 (4) . 信道加噪 (7) . 信号的解调 (7) . ASK的误码率 (10) 4. 心得体会 (11) 5. 参考文献 (13)

摘要 MATLAB是由美国mathworks公司发布的主要面对科学计算、可视化以及交互式程序设计的高科技计算环境。它将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言(如C、Fortran)的编辑模式,代表了当今国际科学计算软件的先进水平。MATLAB和Mathematica、Maple并称为三大数学软件。它在数学类科技应用软件中在数值计算方面首屈一指。MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。MATLAB的基本数据单位是矩阵,它的指令表达式与数学、工程中常用的形式十分相似,故用MATLAB来解算问题要比用C,FORTRAN等语言完成相同的事情简捷得多,并且mathwork也吸收了像Maple等软件的优点,使MATLAB成为一个强大的数学软件。在新的版本中也加入了对C,FORTRAN,C++ ,JA V A的支持。可以直接调用,用户也可以将自己编写的实用程序导入到MATLAB函数库中方便自己以后调用,此外许多的MATLAB爱好者都编写了一些经典的程序,用户可以直接进行下载就可以用。 关键字:matlab,软件,编程,计算

相关主题
文本预览
相关文档 最新文档