logo资料库

dsp实验报告.doc

第1页 / 共10页
第2页 / 共10页
第3页 / 共10页
第4页 / 共10页
第5页 / 共10页
第6页 / 共10页
第7页 / 共10页
第8页 / 共10页
资料共10页,剩余部分请下载后查看
MatLab 仿真试验总结 实验一:数字信号的 FFT 分析 1、实验内容及要求 (1) 离散信号的频谱分析: . 0 001 ( ) x n   sin( . 0 3 n   ) 4 ) cos( .  0 302 n   *cos( . ) 0 45 n  设信号 此信号的 0.3pi 和 0.302pi 两根谱线相距很近,谱线 0.45pi 的幅度很 小,请选择合适的序列长度 N 和窗函数,用 DFT 分析其频谱,要求得到清楚 的三根谱线。 (2) DTMF 信号频谱分析 用计算机声卡采用一段通信系统中电话双音多频(DTMF)拨号数字 0~9 的数据,采用快速傅立叶变换(FFT)分析这 10 个号码 DTMF 拨号时的频 谱。 2、实验目的 通过本次实验,应该掌握: (a) 用傅立叶变换进行信号分析时基本参数的选择。 (b) 经过离散时间傅立叶变换(DTFT)和有限长度离散傅立叶变换(DFT) 后 信号频谱上的区别,前者 DTFT 时间域是离散信号,频率域还是连续的,而 DFT 在两个域中都是离散的。 (c) 离散傅立叶变换的基本原理、特性,以及经典的快速算法(基 2 时间抽选法), 体会快速算法的效率。 (d) 获得一个高密度频谱和高分辨率频谱的概念和方法,建立频率分辨率和时间 分辨率的概念,为将来进一步进行时频分析(例如小波)的学习和研究打下基础。 (e) 建立 DFT 从整体上可看成是由窄带相邻滤波器组成的滤波器组的概念,此 概念的一个典型应用是数字音频压缩中的分析滤波器,例如 DVD AC3 和 MPEG Audio。 3、实验结果 (1) 离散信号的频谱分析: 【实验代码】: N=5000; n=1:1:N; x=0.001*cos(0.45*pi*n)+sin(0.3*pi*n)-cos(0.302*pi*n-pi/4); y=fft(x,N); magy=abs(y(1:1:N/2+1)); k=0:1:N/2;w=2*pi/N*k; stem(w/pi,magy); axis([0.25,0.5,0,50]) 【实验波形】: 1
(2) DTMF 信号频谱分析 【实验代码】: clear close all column=[1209,1336,1477,1633]; line=[697,770,852,941]; fs=8000; N=1024; ts=1/fs; n=0:N-1; f=0:fs/N:fs/N*(N-1); key=zeros(16,N); key(1,:)=cos(2*pi*column(1)*ts*n)+cos(2*pi*line(1)*ts*n); key(2,:)=cos(2*pi*column(2)*ts*n)+cos(2*pi*line(1)*ts*n); key(3,:)=cos(2*pi*column(3)*ts*n)+cos(2*pi*line(1)*ts*n); key(4,:)=cos(2*pi*column(1)*ts*n)+cos(2*pi*line(2)*ts*n); key(5,:)=cos(2*pi*column(2)*ts*n)+cos(2*pi*line(2)*ts*n); key(6,:)=cos(2*pi*column(3)*ts*n)+cos(2*pi*line(2)*ts*n); key(7,:)=cos(2*pi*column(1)*ts*n)+cos(2*pi*line(3)*ts*n); key(8,:)=cos(2*pi*column(2)*ts*n)+cos(2*pi*line(3)*ts*n); 2
key(9,:)=cos(2*pi*column(3)*ts*n)+cos(2*pi*line(3)*ts*n); key(10,:)=cos(2*pi*column(2)*ts*n)+cos(2*pi*line(4)*ts*n); figure; for i=1:10 subplot(4,4,i) plot(f,abs(fft(key(i,:)))); grid; end 【实验波形】: 实验二: DTMF 信号的编码 1、实验内容及要求 1)把您的联系电话号码 通过 DTMF 编码生成为一个 .wav 文件。  技术指标:  根据 ITU Q.23 建议,DTMF 信号的技术指标是:传送/接收率为 每秒 10 个号码,或每个号码 100ms。  每个号码传送过程中,信号存在时间至少 45ms,且不多于 55ms, 100ms 的其余时间是静音。  在每个频率点上允许有不超过 ±1.5% 的频率误差。任何超过给定 频率 ±3.5% 的信号,均被认为是无效的,拒绝接收。 (其中关键是不同频率的正弦波的产生。可以使用查表方式模拟产生两个不同频率的正弦 波。正弦表的制定要保证合成信号的频率误差在±1.5%以内,同时使取样点数尽量少) 2)对所生成的 DTMF 文件进行解码。DTMF 信号解码可以采用 FFT 计算 N 点频率处的频谱值,然后估计出所拨号码。但 FFT 计算了许多不需要的值,计算量太大, 3
而且为保证频率分辨率,FFT 的点数较大,不利于实时实现。因此,FFT 不适合于 DTMF 信号解码的应用。  由于只需要知道 8 个特定点的频谱值,因此采用一种称为 Goertzel 算法 的 IIR 滤波器可以有效地提高计算效率。其传递函数为:  ( ) H z k  j  1 e  1 2cos(2    2  / k N z / ) k N z 1  1  2  z 2、实验目的 (a)复习和巩固 IIR 数字滤波器的基本概念; (b)掌握 IIR 数字滤波器的设计方法; (c)掌握 IIR 数字滤波器的实现结构; (d)能够由滤波器的实现结构分析滤波器的性能(字长效应); (e)了解通信系统电话 DTMF 拨号的基本原理和 IIR 滤波器实现方法。 3、实验结果 【实验代码】: d=input('请键入电话号码: ','s'); % 输入电话号码 sum=length(d); total_x=[]; sum_x=[]; sum_x=[sum_x,zeros(1,800)]; for a=1:sum symbol=abs(d(a)); % 求输入的 ASCII 码 %循环 sum 次 tm=[49,50,51,65;52,53,54,66;55,56,57,67;42,48,35,68]; % DTMF 表中键的 16 个 ASCII 码 for p=1:4; for q=1:4; if tm(p,q)==abs(d(a)); break,end % 检测码相符的列号 q end if tm(p,q)==abs(d(a)); break,end % 检测码相符的行号 p end f1=[697,770,852,941]; f2=[1209,1336,1477,1633]; % 行频率向量 % 列频率向量 % 为了发声,加长序列 n=1:400; x=sin(2*pi*n*f1(p)/8000) + sin(2*pi*n*f2(q)/8000); % 构成 双频信号 x=[x,zeros(1,400)]; sum_x=sum_x+x; 4
total_x=[total_x x]; %将所编码连接起来 end wavwrite(total_x,'soundwave') sound(total_x); % 发出声音 subplot(2,1,1); plot(total_x); title('DTMF 信号时域波形') xk=fft(x); mxk=abs(xk); subplot(2,1,2); k=(1:800)*sum*8000/800; plot(k,mxk); xlabel('频率'); title('DTMF 信号频谱'); % disp('双频信号已生成并发出') % 接收检测端的程序 k = [18 20 22 24 31 34 38 42]; N=205; disp(['接收端检测到的号码为']) for a=1:sum m=800*(a-1); X=goertzel(total_x(m+1:m+N),k+1); % 要求的 DFT 样本序号 % 用 Goertzel 算法计算八 点 DFT 样本 val = abs(X); %stem(k,val,'.');grid;xlabel('k');ylabel('|X(k)|') % 画出 DFT(k)幅度 %set(gcf,'color','w') %shg,disp('图上显示的是检测到的八个近似基频的 DFT 幅度');pause % limit = 80; for s=5:8; % 列出八点 DFT 向量 % 置图形背景色为白 % if val(s) > limit, break, end % 查找列号 end for r=1:4; if val(r) > limit, break, end % 查找行号 end disp([setstr(tm(r,s-4))]) % 显示接收到的字符 end 【实验波形】: 5
实验三:FIR 数字滤波器的设计和实现 6
1、实验内容及要求:  录制自己的一段声音,长度为 45 秒(十多秒以上)取样频率 32kHz,然后 叠加一个高斯白噪声,(知道噪声分布,知道噪声功率,只要知道输入信号 功率),使得信噪比为 20dB。请采用窗口法。设计一个 FIR 带通滤波器, 滤除噪声提高质量。  提示:  滤波器指标参考:通带边缘频率为 4kHz,阻带边缘频率为 4.5kHz,阻带衰 减大于 50dB;  Matlab 函数 y = awgn(x,snr,'measured') ,首先测量输入信号 x 的功率, 然后对其叠加高斯白噪声; 2、实验目的  通过本次实验,掌握以下知识:  FIR 数字滤波器窗口设计法的原理和设计步骤;  Gibbs 效应发生的原因和影响;  不同类型的窗函数对滤波效果的影响,以及窗函数和长度 N 的选 择。 (效果,耳机听前后声音,或者看前后的频谱图:2,看一下大家设计的滤波器的频谱图) 3、实验结果: 【实验代码】: [x,fs,bits]=wavread('C:\Documents and Settings\Administrator\桌面 \baozhiying\3\wo.wav'); snr=20; x2=awgn(x,snr,'measured'); wavwrite(x2,32000,16,'C:\Documents and Settings\Administrator\桌面 \baozhiying\3\wo-1.wav'); t=0:1/fs:(size(x2)-1)/fs; wp=8000*pi/32000; ws=9000*pi/32000; wdelta=ws-wp; N=ceil(11*pi/wdelta);%取整 wn=(ws+wp)/2; b=fir1(N,wn/pi,blackman(N+1)); figure(1) freqz(b,1,512) f2=filter(b,1,x2); figure(2) subplot(2,1,1) plot(t,x2) title('滤波前时域波形'); 7 %选择窗函数,并归一化截止频率
subplot(2,1,2) plot(t,f2); title('滤波后时域波形'); F0=fft(f2,1024); f=fs*(0:511)/1024; figure(3) y2=fft(x2,1024); subplot(2,1,1); plot(f,abs(y2(1:512))); title('滤波前频谱') xlabel('Hz'); ylabel('幅度'); subplot(2,1,2) F2=plot(f,abs(F0(1:512))); title('滤波后频谱') xlabel('Hz'); ylabel('幅度'); wavwrite(f2,32000,16,'C:\Documents and Settings\Administrator\桌面 \baozhiying\3\wo-2.wav'); 【实验波形】: 8
分享到:
收藏