Matlab仿真实验报告

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

Matlab仿真实验报告院系:专业:班级:学号:姓名:序号:实验一:数字信号的FFT分析1.实验内容及要求(1)离散信号的频谱分析设信号此信号的0.3pi和0.302pi两根谱线相距很近,谱线0.45pi的幅度很小,请选择合适的序列长度N和窗函数,用DFT分析其频谱,要求得到清楚的三根谱线。(2)DTMF信号频谱分析用计算机声卡采集一段通信系统中电话双音多频(DTMF)拨号数字0~9的数据,采用快速傅立叶变换(FFT)分析这10个号码DTMF拨号时的频谱。2.实验目的通过本次实验,应该掌握:(1)用傅立叶变换进行信号分析时基本参数的选择。(2)经过离散时间傅立叶变换(DTFT)和有限长度离散傅立叶变换(DFT)后信号频谱上的区别,前者DTFT时间域是离散信号,频率域还是连续的,而DFT在两个域中都是离散的。(3)离散傅立叶变换的基本原理、特性,以及经典的快速算法(基2时间抽选法),体会快速算法的效率。(4)获得一个高密度频谱和高分辨率频谱的概念和方法,建立频率分辨率和时间分辨率的概念,为将来进一步进行时频分析(例如小波)的学习和研究打下基础。(5)建立DFT从整体上可看成是由窄带相邻滤波器组成的滤波器组的概念,此概念的一个典型应用是数字音频压缩中的分析滤波器,例如DVDAC3和MPEGAudio。3.实验代码1)离散信号的频谱分析closeall;%关闭文件clear;%清除内存N=1000;n=0:N-1;%n=0,1,.....999xn=0.001*cos(0.45*n*pi)+sin(0.3*n*pi)-cos(0.302*n*pi-pi/4);%生成含有1000个元素的信号序列yn=fft(xn,N);%快速傅里叶变换stem(2*n/N,log(abs(yn)+1),'b');%abs(yn)表示求模,作脉冲图axis([0.25,0.5,-1,10])%限制坐标范围title('FFT频谱分析');%标题%ylabel('对X(k)的模取对数');%Y轴标签text(0.35,8,'电子4班,周爽,2012210931')2)DTMF信号频谱分析closeall;clear;tm=[1,2,3,65;4,5,6,66;7,8,9,67;42,0,35,68];%DTMF信号代表的16个数00010450303024().*cos(.)sin(.)cos(.)xnnnnN=205;f1=[697,770,852,941];%行频率向量f2=[1209,1336,1477,1633];TN=input('键入1位0-9的数字=');forp=1:4forq=1:4iftm(p,q)==abs(TN),break,end%检测码相符的列号qendiftm(p,q)==abs(TN),break,endendn=0:1023;x=sin(2*pi*n*f1(p)/8000)+sin(2*pi*n*f2(q)/8000);%构成双频信号X=fft(x',1024);X=abs(X);y=sort(X);fori=1:1024ifX(i)=y(1020)X(i)=0;end;endx=[1:512]./512*4000;X=X(1:512);fo=[];fori=1:512ifX(i)~=0fo=[fo,i];endendfo=round(fo*8000/1024);stem(x,X)%wucha=(fo-[f1(p),f2(q)])./[f1(p),f2(q)]*100;%wucha=strcat(['频率误差:','[',num2str(wucha),']','%']);text(2000,350,['所拨打的号码:',int2str(TN)])text(2000,300,['检测到的频率:',int2str(fo)]);text(2000,250,['查表所得频率:',int2str([f1(p),f2(q)])]);text(2000,200,wucha,'color','r');title('DTMF频谱分析与误差','color','r')disp(['检测到的频率为:',num2str(fo)])4.实验结果1)离散信号的频谱分析2)DTMF信号频谱分析输入数字0输入数字1输入数字2输入数字3输入数字4输入数字5输入数字6输入数字7输入数字8输入数字9实验二:DTMF信号的编码1.实验内容及要求(1)把您的联系电话号码通过DTMF编码生成为一个.wav文件。技术指标:(时域)根据ITUQ.23建议,DTMF信号的技术指标是:传送/接收率为每秒10个号码,每个号码100ms。每个号码传送过程中,信号存在时间至少45ms,且不多于55ms,100ms的其余时间是静音。在每个频率点上允许有不超过±1.5%的频率误差。任何超过给定频率±3.5%的信号,均被认为是无效的,拒绝接收。(其中关键是不同频率的正弦波的产生。可以使用查表方式模拟产生两个不同频率的正弦波。正弦表的制定要保证合成信号的频率误差在±1.5%以内,同时使取样点数尽量少)(2)对所生成的DTMF文件进行解码。DTMF信号解码可以采用FFT计算N点频率处的频谱值,然后估计出所拨号码。但FFT计算了许多不需要的值,计算量太大,而且为保证频率分辨率,FFT的点数较大,不利于实时实现。因此,FFT不适合于DTMF信号解码的应用。由于只需要知道8个特定点的频谱值,因此采用一种称为Goertzel算法的IIR滤波器可以有效地提高计算效率。其传递函数为:2/1121()12cos(2/)jkNkezHzkNzz2.实验目的(1)复习和巩固IIR数字滤波器的基本概念;(2)掌握IIR数字滤波器的设计方法;(3)掌握IIR数字滤波器的实现结构;(4)能够由滤波器的实现结构分析滤波器的性能(字长效应);(5)了解通信系统电话DTMF拨号的基本原理和IIR滤波器实现方法。3.实验代码1)把您的联系电话号码通过DTMF编码生成为一个.wav文件。tm=[1,2,3,65;4,5,6,66;7,8,9,67;42,0,35,68];%DTMF信号代表的16个数N=205;K=[18,20,22,24,31,34,38,42];f1=[697,770,852,941];%行频率向量f2=[1209,1336,1477,1633];%列频率向量wav=[];TN=input('请您拨出11位手机号码=');%输入8位数字TN2=TN;TNr=0;form=1:11d=fix(TN/10^(11-m));TN=TN-d*10^(11-m);forp=1:4;forq=1:4;iftm(p,q)==abs(d),break,end%检测码相符的列号qendiftm(p,q)==abs(d),break,endendn=1:400;%为了发声,加长序列x=sin(2*pi*n*f1(p)/8000)+sin(2*pi*n*f2(q)/8000);%构成双频信号wav=[wav,x,zeros(1,400)];endx=[1:8800]./8800*11;plot(x,wav)title('DTMF信号的时域波形,有半个周期的静音','color','b');text(2,4,['您拨打的手机号:',int2str(TN2)],'color','r');axis([0,12,-5,5])sound(wav,8000);wav=wav./2;wavwrite(wav,8000,'第一步_wav文件')2)对所生成的DTMF文件进行解码。tm=[1,2,3,65;4,5,6,66;7,8,9,67;42,0,35,68];%DTMF信号代表的16个数N=205;K=[18,20,22,24,31,34,38,42];f1=[697,770,852,941];%行频率向量f2=[1209,1336,1477,1633];%列频率向量TNr=0;%接收端电话号码初值为零wav=wavread('第一步_wav文件.wav');wav=wav.*2;figure(1)x=[1:8800]./8800*11;plot(x,wav)axis([0,12,-5,5])sound(wav,8000);figure(2)form=1:11%接收检测端的程序xulie=wav((m-1)*800+1:(m-1)*800+205);X=goertzel(xulie,K+1);%用Goertzel算法计算八点DFT样本val=abs(X);%列出八点DFT向量subplot(4,3,m);stem(K,val,'.');grid;;ylabel('|X(k)|')%画出8点DFT幅度axis([10500120])limit=80;fors=5:8;ifval(s)limit,break,end%查找列号endforr=1:4;ifval(r)limit,break,end%查找行号endTNr=TNr+tm(r,s-4)*10^(11-m);%将6位电话号码表示成一个6位数,以便显示hao=int2str(tm(r,s-4));title(hao,'color','r');enddisp('接收端检测到的号码为:')%显示接收到的字符disp(num2str(TNr))4.实验结果实验三:FIR数字滤波器的设计和实现1.实验内容及要求:录制自己的一段声音,(人声)长度为45(10)秒,取样频率32kHz,然后叠加一个高斯白噪声,使得信噪比为20dB。请采用窗口法(263)设计一个FIR带通滤波器,滤除噪声提高质量。提示:滤波器指标参考:通带边缘频率为4kHz,阻带边缘频率为4.5kHz,阻带衰减大于50dB;Matlab函数y=awgn(x,snr,'measured'),首先测量输入信号x的功率,然后对其叠加高斯白噪声;滤波效果,耳机,频谱图2.实验目的通过本次实验,掌握以下知识:FIR数字滤波器窗口设计法的原理和设计步骤;Gibbs效应发生的原因和影响;不同类型的窗函数对滤波效果的影响,以及窗函数和长度N的选择。3.实验代码[x,fs,nbits]=wavread('luyin.wav');Fs=32000;%取样频率为32kfigure(1)stem(abs(fft(x)),'.');title('原信号频率');sound(x,fs);pause(length(x)/fs+0.5);%以下为添加高斯白噪声y=awgn(x,20,'measured');%添加20dB的噪声figure(2)stem(abs(fft(y)),'.');title('添加白噪声后的信号频谱');sound(y,fs);pause(length(x)/fs+0.5);%以下为滤波器设计A=0.54;B=0.46;C=0;%使用汉明窗N=ceil(6.6*pi/(2*pi*500/Fs));t=(N-1)/2;n=0:N-1;wn=A-B*cos(2*pi*n/N)+C*cos(2*pi*n/N);hd=sin((n-t)*(2*pi*4250/Fs))./((n-t)*pi);h=wn.*hd;%FIR冲击响应figure(3)stem(abs(fft(h)),'.');title('滤波器的频率响应');%以下为滤除噪声z=filter(h,1,y);figure(4)stem(abs(fft(z)),'.');title('经过低通滤波器后的频谱');sound(z,fs);4.实验结果【实验结论】通过这次MATLAB实验,我感受到了MATLAB软件强大的功能。Matlab是一款非常好用,易上手的数学编程软件。Matlab软件拥有强大的函数库,通过调用丰富的函数,可以实现强大数字处理的功能。MATLAB的程序并不复杂,但是在编写过程中更要注意逻辑和细节。在第一题中为了更清晰的显示各频率波形,我采用stem()取代传统的plot()函数作脉

1 / 15
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功