《matlab仿真实验报告.doc》由会员分享,可在线阅读,更多相关《matlab仿真实验报告.doc(9页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、matlab仿真实验报告 8 个频率分为高频群和低频群两组,分别作为列频和行频。每个字符的信号由来自列频和行频的两个频率的正弦信号叠加而成。频率组合方式如下图所示。根据图片即可得到各个数字对应的DTFM 信号。通过 zeros 全零矩阵来设置占空比,以达到题目要求。得到信号后,使用sound 函数来播放拨号音, writewave 将信号写入声音文件。在解码时, 使用 Goertzel 算法。滤波器调谐到这8 个频率之上后, 在相应的频率上的频谱值最大,通过与标准值的对比找出在DTMF 图中的行和列,再对应出相应的拨号数字。查阅资料知, 205 点的 FFT 最佳,而且每个频率对应的K 值都已
2、经给定(如 K=18 对应 696hz;K=20 对应 770hz;K=22 对应 852HZ ),则根据频谱图上最大值对应的K 值,就可以求出相应的频率,从而比对得出数字。代码及注释N=800;fs=8000; 每个号码100ms 800 8000tm=49,50,51,65;52,53,54,66;55,56,57,67;42,48,35,68;n=1:N; 取样点flow=697 770 852 941; 低频fhigh=1209 1336 1477 1633; 高频1=sin(2piflow(1)n/fs)+sin(2pifhigh(1)n/fs); 12=sin(2piflow(3)
3、n/fs)+sin(2pifhigh(2)n/fs); 8 3=sin(2piflow(2)n/fs)+sin(2pifhigh(2)n/fs); 5 4=sin(2piflow(1)n/fs)+sin(2pifhigh(1)n/fs); 1 5=sin(2piflow(1)n/fs)+sin(2pifhigh(1)n/fs); 1 6=sin(2piflow(1)n/fs)+sin(2pifhigh(3)n/fs); 3 7=sin(2piflow(1)n/fs)+sin(2pifhigh(3)n/fs); 3 8=sin(2piflow(3)n/fs)+sin(2pifhigh(3)n/f
4、s); 9 9=sin(2piflow(1)n/fs)+sin(2pifhigh(2)n/fs); 2 10=sin(2piflow(2)n/fs)+sin(2pifhigh(2)n/fs); 5 11=sin(2piflow(3)n/fs)+sin(2pifhigh(1)n/fs); 7 =1,2,3,4,5,6,7,8,9,10,11; 组成矩阵1z=1,zeros(1,800); 补零2z=2,zeros(1,800);3z=3,zeros(1,800);4z=4,zeros(1,800);5z=5,zeros(1,800);6z=6,zeros(1,800);7z=7,zeros(1,
5、800);8z=8,zeros(1,800);9z=9,zeros(1,800);10z=10,zeros(1,800);11z=11,zeros(1,800);z=1z,2z,3z,4z,5z,6z,7z,8z,9z,10z,11z;z=z/ma(abs(z);subplot(2,1,1);plot(z);sound(z);audiowrite(#;mjlnum.wav#;,z,fs);写入声音文件k=18 20 22 24 31 34 38 42;N=205;subplot(2,1,2);k=fft(z);mk=abs(k);disp(#; 解码得到的号码是:#;)for i=1:11m=
6、800(i-1);=goertzel(m+1:m+N),k+1);goertzel算法做变换v=abs(); 求模k2=v.2;stem(k,v,#;.#;); 画脉冲图grid;label(#;k#;);ylabel(#;(k)#;);set(gcf,#;color#;,#;w#;);shg;pause;limit=80;k2for s=5:8;if v(s)limit,break,endendfor r=1:4;if v(r)limit,break,endenddisp(setstr(tm(r,s-4)end结果截图:解码得到的号码是:遇到的问题和解决方法在开始的时候并没有设置占空比,结果
7、导致拨号音过快。后来通过在信号后补零来进行占空比设置。在将信号写入声音文件时,上网查得函数audiowrite 及其用法。实验三: FIR数字滤波器的设计和实现实验内容及要求录制自己的一段声音, 长度为 10 秒,取样频率 32kHz ,然后叠加一个高斯白噪声,使得信噪比为 20dB 。请采用窗口法设计一个FIR 带通滤波器,滤除噪声提高质量。提示:b)滤波器指标参考:通带边缘频率为4kHz ,阻带边缘频率为4.5kHz ,阻带衰减大于50dB;其实是低通滤波器c)Matlab 函数y = awgn(,snr,#;measured#;) ,首先测量输入信号 的功率,然后对其叠加高斯白噪声;2、
8、实验目的:通过本次实验,掌握以下知识:FIR 数字滤波器窗口设计法的原理和设计步骤;bbs 效应发生的原因和影响;iii.不同类型的窗函数对滤波效果的影响,以及窗函数和长度N 的选择。实验分析先确定滤波器的设计指标:滤波器通带边缘为4KHZ ,阻带边缘频率为4.5Khz ,阻带衰减大于 50db。使用汉明窗。加噪声时使用 awgn 函数。使用作图函数分别画出加噪声后的声音信号和去噪声后的声音信号的时域和频域波形。使用 matlab 库函数 hamming 来进行滤波。再作出滤波后的图形。最后作出滤波器的幅频特性图。代码及注释fs=320;,fs=audioread(#;sound.wav#;)
9、;snr=20;信噪比为20dB2=awgn(,snr,#;measured#;,#;db#;);叠加高斯白噪声?audiowrite(#;soundnoise.wav#;,fs);t=0:1/fs:(size(2)-1)/fs;wp=8000pi/320;ws=9000pi/320;wdelta=ws-wp;N=ceil(11pi/wdelta);取整wn=(ws+wp)/2;b=fir1(N,wn/pi,blackman(N+1); 选择窗函数,并归一化截止频率 figure(1)freqz(b,1,512)f2=filter(b,1,2);title(#; 滤波器幅频、相频特性#;);f
10、igure(2)subplot(2,1,1)plot(t,2)title(#; 滤波前时域波形#;);subplot(2,1,2)plot(t,f2)title(#; 滤波后时域波形#;);F0=fft(f2,1024);f=fs(0:511)/1024;figure(3)y2=fft(2,1024);subplot(2,1,1)plot(f,abs(y2(1:512);title(#; 滤波前频谱 #;)label(#;Hz#;);ylabel(#; 幅度 #;);subplot(2,1,2)F2=plot(f,abs(F0(1:512);title(#; 滤波后频谱 #;)label(#;
11、Hz#;);ylabel(#; 幅度 #;);audiowrite(#;filterable.wav#;,f2,fs);结果截图 :遇到的问题和解决方法在选择窗函数时, 因为理论课还没有学习相关知识, 不知道选择什么类型的窗好, 在阅读课本相关章节后选定 blackman 窗作为滤波器窗函数。在使用 matlab 进行滤波时,不知道如何操作。在网上查阅相关资料后学习到了使用matlab 进行滤波的方法。实验总结这次实验把matlab 与数字信号处理的相关知识很好的联系到一起,让我能在实验的过程中更加深刻的理解数字信号处理的相关内容,让我觉得受益颇深。通过这次试验, 使我更加深刻的理解FFT、DTMF 以及 FIR 数字滤波器的原理和应用,我更好的理解了用傅里叶变换进行信号分析时基本参数的选择、离散时间傅里叶变换和有限长度离散傅里叶变换后信号频谱上的区别、 离散傅里叶变化的基本原理、特性,以及经典的快速算法的效率,也更好的掌握了 FIR 数字滤波器的设计方法、实现结构及其性能。虽然课程很快结束了,但是在这次实验中我不仅巩固了数字信号处理的内容知识,也复习了matlab 仿真软件的运用,为我今后的学习打下了良好的基础。第 9 页 共 9 页
限制150内