资源描述:
《Wav信号的波形分析》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、武汉大学教学实验报告电子信息学院电子信息科学类专业2009年05月03日实验名称Wav信号的波形分析指导教师黄根春姓名朱铖年级07学号200731200078成绩一、预习部分1.实验目的2.实验基本原理3.主要仪器设备(含必要的元器件、工具)1.实验目的借助本实验帮助同学们巩固傅里叶变换及其反变换的知识,学习从时域和频域两个角度来观察信号,并尝试利用短时傅里叶变换分析非平稳信号的频谱变化。2.实验原理借助傅里叶变换,信号可以时间函数或频率函数两种形式描述,特别是周期信号和准周期信号(前者由一个基频成分和若干谐波成分,后者虽可分解为几个正弦分量,但它们的周期
2、没有公倍数),从频率域可以很清楚地了解它们由哪些正弦分量组成。而对于非平稳信号,最典型的例子就是语音信号,它是非周期的,频谱随时间连续变化,因此由傅里叶变换得到的频谱无法获知其在各个时刻的频谱特性。最直观的想法就是用中心在某一时刻的时间窗截取一段信号,对其做傅里叶变换,得到这一时刻的频谱;然后将窗在时间轴上移动,从而得到不同时刻的频谱,这就是短时频谱的原理。最简单的窗就是矩形窗,即直接从原信号中截取一段。3.主要仪器设备MATLAB仿真平台二、实验操作部分1、实验数据、表格及数据处理2、实验操作过程(可用图表示)3、实验结论71.实验内容本实验利用matl
3、ab提供的工具来采集和分析声音信号的频谱,由以下几个部分组成:(1)声音的采集Matlab提供了读入、录制和播放声音以及快速傅里叶变换的函数,分别是wavread、wavrecord、wavplay和fft。阅读这几个函数的帮助文档,熟练使用。(2)持续音的频谱分析将Windows的系统目录下的ding.wav文件读入,这是一个双声道的声音,选择任一声道的信号,使用fft求取其频谱,并用plot显示它的幅度度,观察主要的正弦分量;分别求取2048、1024点FFT,观察产生的不同频谱;用ifft函数求取频谱的反傅里叶反变换,比较反变换后的信号波形与原始信号
4、的波形;从频谱中找到幅度最大的正弦分量,构造一个同样幅度的正弦信号,将其波形与原始信号比较,并且试听一下。(3)时变音的短时频谱分析使用”loadchirp”载入matlab自带的一个时变音;从信号中依次截取1024个点,利用上述方法求取其幅度谱,并显示出来,观察幅度谱随时间的变化情况。2.实验结果(1)声音的采集及频谱分析①信号的采集与分析2048个点的fft变换1024个点的fft变换7信号频谱(1024个点)fft反变换及与原信号的对比对应的MATLAB代码:[y,fs]=wavread('ding.wav');yr=y(:,2);yr=yr(1:1
5、024);YR2048=fft(yr,2048);figure('numbertitle','off','name','2048µãFFT');plot(linspace(-pi,pi,2048),fftshift(abs(YR2048)));YR1024=fft(yr,1024);figure('numbertitle','off','name','1024µãFFT');plot(linspace(-pi,pi,1024),fftshift(abs(YR1024)));yr1024=real(ifft(YR1024));figure('numberti
6、tle','off','name','1024µãfftµÄ·´±ä»»');subplot(2,1,1);plot(yr1024)title('1024µãfftµÄ·´±ä»»')subplot(2,1,2);plot(yr);title('ÔÐźÅ');②正弦信号的重构:从频谱中找到幅度最大的正弦分量,构造一个同样幅度的正弦信号,将其波形与原始信号比较用7最大正弦分量重构正弦信号对应的MATLAB代码:[y,fs]=wavread('ding.wav');yr=y(:,2);yr=yr(1:1024);YR1024=fft(yr,1024);yr1
7、024=real(ifft(YR1024));[maxpeak,peaki]=max(abs(YR1024(1:512)));MAXSIN=zeros(1,1024);MAXSIN(peaki)=maxpeak;MAXSIN(1026-peaki)=maxpeak;maxsin=ifft(MAXSIN);figure('numbertitle','off','name','ÓÃ×î´óÕýÏÒ·ÖÁ¿Öع¹ÐźÅ');subplot(2,1,1)plot(maxsin);title('Öع¹µÄÐźÅ');subplot(2,1,2);plot(y
8、r1024);title('ÔʼÐźÅ');wavplay(y