北邮MATLab仿真实验报告DSP.docx
- 文档编号:6964756
- 上传时间:2023-01-13
- 格式:DOCX
- 页数:14
- 大小:168.87KB
北邮MATLab仿真实验报告DSP.docx
《北邮MATLab仿真实验报告DSP.docx》由会员分享,可在线阅读,更多相关《北邮MATLab仿真实验报告DSP.docx(14页珍藏版)》请在冰豆网上搜索。
北邮MATLab仿真实验报告DSP
北京邮电大学
matlab仿真实验报告
姓名:
班级:
学号:
班内序号
实验一:
数字信号的FFT分析
1.实验内容及要求
离散信号的频谱分析:
设信号
此信号的0.3pi和两根谱线相距很近,谱线0.45pi的幅度很小,请选择适合的序列长度N和窗函数,用DFT分析其频谱,要求取得清楚的三根谱线。
2.实验分析
要取得清楚的三根谱线,用matlab内置函数fft对时域信号进行快速傅里叶变换,需要选好变换点数N,以幸免显现频谱模糊现象。
程序当选择N=1000
由于谱线的幅度很小,在作图时需要对坐标比例进行操纵。
利用axis函数实现。
3.代码及注释
频谱分析:
clf;
closeall;%关闭所有图形窗口
N=1000;%DFT点数
n=[1:
1:
N];
x=0.001*cos(0.45*n*pi)+sin(0.3*n*pi)-cos(0.302*n*pi-pi/4);
y=fft(x,N);
mag=abs(y);%对FFT结果求模
w=2*pi/N*[0:
1:
N-1];%数字角频率w
subplot(2,1,1);%将图形窗分为2行1列
stem(n,x,'.');%画脉冲图
title('时域');
xlabel('n');
ylabel('x(n)');
subplot(2,1,2);
stem(w/pi,mag);%归一化角频率
axis([00.502]);%操纵坐标范围以使谱线幅度适合
title('1000点DFT');
xlabel('数字频率');
ylabel('X(k)');
gridon;
4.结果截图
5.碰到的问题和解决方式
在进行第一题的DFT变换时,不明白该选取多大的取样点数N才能取得清楚的三根谱线。
通过在网上查阅资料后才选定了N=1000。
实验二:
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滤波器能够有效地提高计算效率。
其传递函数为:
fs=8kHz.
2.实验分析
DTMF 信号是将拨号盘上的 0~F 共16 个数字,用音频范围的 8 个频率来表示的一种编码方式。
8 个频率分为高频群和低频群两组,别离作为列频和行频。
每一个字符的信号由来自列频和行频的两个频率的正弦信号叠加而成。
通过zeros全零矩阵来设置占空比,以达到题目要求。
取得信号后,利用sound函数来播放拨号音,writewave将信号写入声音文件。
在解码时,利用Goertzel算法。
滤波器调谐到这8个频率之上后,在相应的频率上的频谱值最大,通过与标准值的对照找出在DTMF图中的行和列,再对应出相应的拨号数字。
查阅资料知,205点的FFT最正确,而且每一个频率对应的K值都已经给定(如K=18对应696hz;K=20对应770hz;K=22对应852HZ),那么依照频谱图上最大值对应的K值,就能够够求出相应的频率,从而比对得出数字。
3.代码及注释
k=[1820222431343842];
N=205;
subplot(2,1,2);
disp(['½âÂëµÃµ½µÄºÅÂëÊÇ£º'])
fori=1:
11
m=800*(i-1);
X=goertzel(x(m+1:
m+N),k+1);%goertzelËã·¨×ö±ä»»
v=abs(X);%ÇóÄ£
stem(k,v,'.');%»Âö³åͼ
grid;
xlabel('k');
ylabel('x(k)');
set(gcf,'color','w');
shg;
pause;
limit=80;
fors=5:
8;
ifv(s)>limit,break,end
end
forr=1:
4;
ifv(r)>limit,break,end
end
disp([setstr(tm(r,s-4))])
end
4.结果截图
声音的时域和频域图像
随后按下回车即可查看解码结果和各数字对应的频域波形。
5.碰到的问题和解决方式
在开始的时候并无设置占空比,结果致使拨号音过快。
后来通过在信号后补零来进行占空比设置。
在将信号写入声音文件时,上网查得函数wavwrite。
实验三:
FIR数字滤波器的设计和实现
1.实验内容及要求
a)录制自己的一段声音,长度为10秒,取样频率32kHz,然后叠加一个高斯白噪声,使得信噪比为20dB。
请采纳窗口法设计一个FIR带通滤波器,滤除噪声提高质量。
提示:
b)滤波器指标参考:
通带边缘频率为4kHz,阻带边缘频率为,阻带衰减大于50dB;实际上是低通滤波器
c)Matlab函数y=awgn(x,snr,'measured'),第一测量输入信号x的功率,然后对其叠加高斯白噪声;
2、实验目的:
d)通过本次实验,把握以下知识:
i.FIR数字滤波器窗口设计法的原理和设计步骤;
ii.Gibbs效应发生的缘故和阻碍;
iii.不同类型的窗函数对滤波成效的阻碍,和窗函数和长度N的选择。
2.实验分析
先确信滤波器的设计指标:
滤波器通带边缘为4KHZ,阻带边缘频率为,阻带衰减大于50db。
利用汉明窗。
加噪声时利用awgn函数。
利用作图函数别离画出原始声音信号和加噪声后的声音信号的时域和频域波形。
利用matlab库函数hamming来进行滤波。
再作出滤波后的图形。
最后作出滤波器的幅频特性图。
3.代码及注释
closeall;
%ÔʼÉùÒôÐźÅƵÆ×
fs=38000;
N=4096;
[s1,fs,nbits]=wavread('xx.wav');
k=1:
4096;
s1k=fft(s1,N);
fprintf('»Ø³µ¡ª¡ªÔÉùÒôÐźÅƵÆ×\r');
pause;
figure
(1);
subplot(2,1,1);
plot(s1);
title('ÔÉùÒôÐźţ¨Ê±Óò');
subplot(2,1,2);
plot(32/4096*k,abs(s1k));%ƵÂÊ·Ö±æÂÊ=fs/N
axis([0607]);
xlabel('f(kHz)');
ylabel('s1(k)');
title('ÔÉùÒôÐźţ¨ÆµÓò£©');
%µþ¼ÓÔëÉù
s2=awgn(s1,20,'measured','db');
fprintf('»Ø³µ¡ª¡ªµþ¼ÓÔëÉùºóƵÆ×\r');
pause;
s2k=fft(s2,N);
figure
(2);
subplot(2,1,1);
plot(s2);
title('ʱÓò£¨ÓÐÔëÉù£©');
wavwrite(s2,48000,'zf_noi.wav');
subplot(2,1,2);
plot(32/4096*k,abs(s2k));
title('ƵÓò£¨ÓÐÔëÉù£©');
xlabel('f(kHz)');
ylabel('s2(k)');
axis([0607]);
%Â˲¨
fp=4000;
fr=4500;
wp=2*pi*fp/fs;
wr=2*pi*fr/fs;
width=wr-wp;
N1=ceil(6.6*pi/width)+1;
n=0:
1:
N1;
wc=(wr+wp)/2;
alpha=(N1-1)/2;
n=0:
1:
N1-1;
m=n-alpha+eps;
hd=sin(wc*m)./(pi*m);
b=fir1(N1,wc/(4*pi/3.65));%·µ»Ø½ØֹƵÂÊΪwcµÄN1½×Â˲¨Æ÷hn£¬ººÃ÷´°
w_hamming=(hamming(N1))';
h=hd.*w_hamming;
[H,w]=freqz(h,[1],1000,'whole');
H=(H(1:
1:
501))';
w=(w(1:
1:
501))';
mag=abs(H);
db=20*log10((mag+eps)/max(mag));
pha=angle(H);
delta_w=2*pi/1000;
s3=filter(b,1,s2);%¶Ôs2½øÐÐÂ˲¨
wavwrite(s3,48000,'zf_fil.wav');
%½øÐÐÉùÒô´¦Àí
fprintf('»Ø³µ¡ª¡ª½øÐÐÂ˲¨\r');
pause;
figure(3);
subplot(2,1,1);
plot(s3);
title('ʱÓò£¨Â˲¨ºó£©');
s3k=fft(s3,N);
subplot(2,1,2);
plot(32/N*k,abs(s3k));
axis([0607]);
xlabel('f(kHz)');
ylabel('s3(k)');
title('ƵÓò£¨Â˲¨ºó£©');
%Â˲¨Æ÷ÌØÐÔ
fprintf('»Ø³µ¡ª¡ªÂ˲¨Æ÷ƵÆ×ͼ\r');
pause;
figure(4);
plot(w/pi,db);
axis([01-1500]);
title('Â˲¨Æ÷£¨db£©');
xlabel('f');
ylabel('deg');
4.结果截图
5.碰到的问题和解决方式
在选择窗函数时,因为理论课尚未学习相关知识,不明白选择什么类型的窗好,在阅读讲义相关章节后选定hamming窗作为滤波器窗函数。
在利用matlab进行滤波时,不明白如何操作。
在网上查阅相关资料后学习到了利用matlab进行滤波的方式。
实验总结
这次实验主若是利用matlab作为工具来对信号进行分析和变换。
是对DSP理论课程的延伸和实践。
通过实验,我巩固了在理论课中学习的相关知识,如FFT、滤波等等,又学习到了一些新的知识,如DTMF双音多频信号的编码和解码,汉明窗滤波等等。
同时,温习了大学一年级学习的matlab的代码书写语法和操作方式,学到了利用matlab进行信号处置的大体方式。
尽管一开始碰到了很多困难,可是通过书本学习、上网阅读、同窗交流等,一一找到了解决方式。
在这一进程中,我熟悉了利用matlab进行数字信号处置的流程,为尔后的专业学习和实践打下了基础。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 北邮 MATLab 仿真 实验 报告 DSP