数字信号处理实习报告.docx
- 文档编号:2578347
- 上传时间:2023-05-04
- 格式:DOCX
- 页数:25
- 大小:765.88KB
数字信号处理实习报告.docx
《数字信号处理实习报告.docx》由会员分享,可在线阅读,更多相关《数字信号处理实习报告.docx(25页珍藏版)》请在冰点文库上搜索。
数字信号处理实习报告
实验一
一.实验内容
设线性时不变(LTI)系统的冲激响应为h(n),输入序列为x(n)
1、h(n)=(0.8)n,0≤n≤4;x(n)=u(n)-u(n-4)
2、h(n)=(0.8)nu(n),x(n)=u(n)-u(n-4)
3、h(n)=(0.8)nu(n),x(n)=u(n)
求以上三种情况下系统的输出y(n),显示输入和输出波形。
二.实验目的
1,熟悉离散卷积的实现过程
2,掌握离散卷积的计算方法
三.算法设计
离散卷积定义为
当序列为有限长时,则
这里我们把冲激响应h(n)与输入序列x(n)分别输入到程序中,然后调用离散卷积函数y=conv(x.,h)即可得到所要求的结果。
四.程序代码、运行结果与结果对比分析
程序代码如下:
x1=[1111];nx1=0:
3;
nh1=0:
4;
h1=0.8.^nh1;
[y1,ny1]=conv_m(x1,nx1,h1,nh1);
figure
(1);
subplot(221);stem(nx1,x1);title('序列x1');
xlabel('n');ylabel('x(n)');
subplot(222);stem(nh1,h1);title('序列h1');
xlabel('n');ylabel('h(n)');
subplot(223);stem(ny1,y1);title('序列y1');
xlabel('n');ylabel('y(n)');
x2=[1111];nx2=0:
3;
nh2=0:
20;
h2=0.8.^nh2;
[y2,ny2]=conv_m(x2,nx2,h2,nh2);
figure
(2);
subplot(221);stem(nx2,x2);title('序列x2');
xlabel('n');ylabel('x(n)');
subplot(222);stem(nh2,h2);title('序列h2');
xlabel('n');ylabel('h(n)');
subplot(223);stem(ny2,y2);title('序列y2');
xlabel('n');ylabel('y(n)');
x3=ones(1,20);nx3=0:
19;
nh3=0:
20;
h3=0.8.^nh3;
[y3,ny3]=conv_m(x3,nx3,h3,nh3);
figure(3);
subplot(221);stem(nx3,x3);title('序列x3');
xlabel('n');ylabel('x(n)');
subplot(222);stem(nh3,h3);title('序列h3');
xlabel('n');ylabel('h(n)');
subplot(223);stem(ny3,y3);title('序列y3');
xlabel('n');ylabel('y(n)');
function[y,ny]=conv_m(x,nx,h,nh)
nyb=nx
(1)+nh
(1);nye=nx(length(x))+nh(length(h));
ny=[nyb:
nye];
y=conv(x,h);
end
运行结果如图1、图2、图3所示:
图1
图2
图3
结果对比分析:
有限长序列的离散卷积计算结果与理论值一致,而存在无限长序列做卷积时,由于在程序处理时是用比较长有限长序列代替的,所以与理论值基本相同。
五.实验小结
总体来说这次实验的内容很简单,这里我们只要掌握有限长序列和无限长序列的输入方法,然后直接调用函数y=conv(x,h)即可得到想要的结果,通过本次实验,让我对数字信号处理中的一些基础知识有了一些回顾,对原来所学过的知识也熟悉了一些。
实验二
一.实验内容
设有离散序列:
x(n)=cos(0.48πn)+cos(0.52πn)
分析下列三种情况下的幅频特性。
(1)采集数据长度N=16,分析16点的频谱,并画出幅频特性。
(2)采集数据长度N=16,并补零到64点,分析其频谱,并画出幅频特性。
(3)采集数据长度N=64,分析46点的频谱,并画出幅频特性。
观察三幅不同的幅频特性图,分析和比较它们的特点及形成原因。
二.实验目的
1,了解DFT及FFT的性质和特点
2,利用FFT算法计算信号的频谱
三.算法设计
读入离散序列x(n)=cos(0.48πn)+cos(0.52πn),采集长度为N=16的数据,这里我们调用函数fft(x,16)与fft(x,64)对其作离散傅里叶变换得到16点、64点的频谱。
采集数据长度为N=64,我们调用函数fft(x,64)对其作离散傅里叶变换得到64点的频谱。
四.程序代码、运行结果与结果对比分析
程序代码如下:
n1=0:
1:
15;
x1=cos(0.48*pi*n1)+cos(0.52*pi*n1);
y1=fft(x1,16);
figure
(1);
subplot(121);
stem(x1);title('x1');
subplot(122);
stem(abs(y1));title('y1');
n2=0:
1:
15;
x2=cos(0.48*pi*n2)+cos(0.52*pi*n2);
x2=[x2zeros(1,48)];
y2=fft(x2,64);
figure
(2);
subplot(121);
stem(x2);title('x2');
subplot(122);
stem(abs(y2));title('y2');
n3=0:
1:
63;
x3=cos(0.48*pi*n3)+cos(0.52*pi*n3);
y3=fft(x3,64);
figure(3);
subplot(121);
stem(x3);title('x3');
subplot(122);
stem(abs(y3));title('y3');
运行结果如图4,图5,图6所示:
图4
图5
图6
结果对比分析:
N点DFT的频谱分辨率是2π/N。
一节指出可以通过补零观察到更多的频点,但是这并不意味着补零能够提高真正的频谱分辨率。
这是因为x[n]实际上是x(t)采样的主值序列,而将x[n]补零得到的x'[n]周期延拓之后与原来的序列并不相同,也不是x(t)的采样。
因此是不同离散信号的频谱。
对于补零至M点的x'的DFT,只能说它的分辨率2π/M仅具有计算上的意义,并不是真正的、物理意义上的频谱。
频谱分辨率的提高只能通过提高采样频率实现。
五.实验小结
通过这次实习,我进一步了解了离散傅里叶变换的特点和性质,也体会到了时域、频域信号的对应关系,对采样频率的含义有了深刻的认识,同时也加深了对采样信号频谱周期性的理解,收获还是挺大的。
实验三
一.实验内容
1,设计一个Butterworth数字低通滤波器,设计指标如下:
通带截止频率:
0.2π,幅度衰减不大于1分贝
阻带截止频率:
0.3π,幅度衰减大于15分贝
2,分析不同滤波器的特点和结果。
3,编程设计实现IIR滤波器。
二.实验目的
1,掌握IIR滤波器的性质和特点
2,学会设计常用的IIR滤波器
三.算法设计
输入通带截止频率Wp,阻带截止频率Ws,通带衰减Rp,阻带衰减Rs,然后将数字指标Wp,Ws,转换为模拟指标wp1,ws1,公式为Ω=2/Ttan(w/2),通过这些数值调用[N,Wn]=buttord(wp1,ws1,Rp,Rs)函数计算巴特沃斯模拟滤波器的阶数N和截止频率Wn,再根据阶数N通过函数[b,a]=butter(N,Wn),即可得到所要的巴特沃斯滤波器。
这里我们使用双线性变换法实现模拟滤波器到数字滤波器的转换。
四.程序代码与运行结果
程序代码如下:
wp=0.2*pi;%通带截止频率
ws=0.3*pi;%阻带截止频率
Rp=1;%通带衰减
Rs=15;%阻带衰减
wp1=tan(wp/2);%将数字指标转换成模拟指标(T=2)
ws1=tan(ws/2);
[N,Wn]=buttord(wp1,ws1,Rp,Rs,'s');%选择滤波器的最小阶数
[b,a]=butter(N,Wn,'s');
[bz,az]=bilinear(b,a,0.5);%用双线性变换法实现模拟滤波器到数字滤波器的转换
[h,w]=freqz(bz,az);
plot(w/pi,20*log10(abs(h)));
grid;
xlabel('w/pi')
ylabel('频率响应幅度')
title('IIR低通滤波器')
运行结果如图7所示:
图7
五.实验小结
通过本次实习,我熟悉和巩固了Butterworth数字低通滤波器的设计方法和原理,刚开始有些地方不是太懂,比如将数字指标转换为模拟指标中涉及到采样频率的问题,后来仔细看了一下课本,才算是搞明白了,只有将理论与实践相结合才能更好地掌握所学的知识。
实验四
一.实验内容
选取合适窗函数设计一个线性相位FIR低通滤波器,使它满足如下性能指标:
通带截止频率:
ωp=0.5π,通带截止频率处的衰减不大于3分贝;
阻带截止频率:
ωs=0.66π,阻带衰减不小于40分贝。
二.实验目的
1,掌握用窗函数法设计FIR滤波器的原理和方法
2,熟悉线性相位滤波器特性
3,了解各种窗函数对滤波器特性的影响
三.算法设计
通过其通带截止频率ωp与阻带截止频率ωs算出其过渡带的宽度与滤波器的长度,从而得到理想滤波器的截止频率,由于其通带截止频率处的衰减不大于3分贝与阻带衰减不小于40分贝,可以选择汉明窗来实现。
四.程序代码、运行结果与结果分析
程序代码如下:
wp=0.5*pi;
ws=0.66*pi;
Rp=3;
Rs=40;
wdelta=ws-wp;
N=ceil(8*pi/wdelta);%取整
wn=(wp+ws)/2;
[b,a]=fir1(N,wn/pi,hamming(N+1));%选择窗函数,并归一化截止频率
figure
(1);
freqz(b,a,512);
title('FIR低通滤波器');
运行结果如图8所示:
图8
结果分析:
1,通带和阻带之间存在过渡带,过渡带宽度取决于窗函数频响的主瓣宽度。
2,通带和阻带区间有纹波,这是由窗函数的旁瓣引起的,旁瓣越多,纹波越多。
增加窗函数的宽度N,其主瓣宽度减小,但不改变旁瓣的相对值。
为了改善滤波器的性能,要求窗函数的主瓣宽度尽可能窄,以获得较窄的过渡带;旁瓣衰减尽可能大,数量尽可能大,从而改善纹波状况,使实际频响H(ejω)更好地逼近理想频响Hd(ejω)
五.实验小结
窗函数法设计FIR数字滤波器是傅立叶变换的典型运用。
通过这次实习有益于数字滤波器的理解,并提高使用傅立叶变换分析解决实际问题的能力。
这次实习的内容属于课本上比较难的知识点了,原先学习的时候对窗函数法设计FIR数字滤波器的认识很抽象,这次通过实践之后才有了很具体的理解。
综合
一.实验内容
录制一段自己的语音信号,并对录制的信号进行采样;画出采样后语音信号的时域波形和频谱图;给定滤波器的性能指标,采用窗函数法或双线性变换设计滤波器,并画出滤波器的频率响应;然后用自己设计的滤波器对采集的语音信号进行滤波,画出滤波后信号的时域波形和频谱,并对滤波前后的信号进行对比,分析信号的变化;回放语音信号;最后,用MATLAB设计一信号处理系统界面。
二.实验目的
1,掌握GUI界面的设计方法
2,加强自己综合处理的能力
三.程序代码、运行结果与结果分析
程序代码:
functionpushbutton1_Callback(hObject,eventdata,handles)
%hObjecthandletopushbutton1(seeGCBO)
%eventdatareserved-tobedefinedinafutureversionofMATLAB
%handlesstructurewithhandlesanduserdata(seeGUIDATA)
x1=wavread('E:
\数字信号实习\语音.wav');
fs=1000;
t=(0:
length(x1)-1)/1000;
y1=fft(x1);
figure
(1);
subplot(121);
plot(t,x1);%做原始信号的时域波形
title('原始语音信号');
xlabel('time(s)');
ylabel('幅度');
subplot(122);
plot(abs(y1));%做原始信号的FFT频谱
title('原始语音信号的FFT频谱')
xlabel('Hz');
ylabel('幅度');
functionpushbutton2_Callback(hObject,eventdata,handles)
%hObjecthandletopushbutton2(seeGCBO)
%eventdatareserved-tobedefinedinafutureversionofMATLAB
%handlesstructurewithhandlesanduserdata(seeGUIDATA)
x2=wavread('E:
\数字信号实习\语音.wav');
fs=1000;
t=(0:
length(x2)-1)/1000;
wp=0.04*pi;%通带截止频率
ws=0.06*pi;%阻带截止频率
Rp=1;%通带衰减
Rs=15;%阻带衰减
wp1=2*fs*tan(wp/2);%将数字指标转换成模拟指标
ws1=2*fs*tan(ws/2);
[N,Wn]=buttord(wp1,ws1,Rp,Rs,'s');%选择滤波器的最小阶数
[b,a]=butter(N,Wn,'s');
[bz,az]=bilinear(b,a,1000);%用双线性变换法实现模拟滤波器到数字滤波器的转换
[h,w]=freqz(bz,az);
figure
(1);
plot(w/pi,20*log10(abs(h)));
grid;
xlabel('w/pi');
ylabel('频率响应幅度');
title('IIR低通滤波器');
f1=filter(bz,az,x2);
figure
(2);
subplot(211);
plot(t,x2);%画出滤波前的时域图
title('IIR低通滤波器滤波前的时域波形');
subplot(212);
plot(t,f1);%画出滤波后的时域图
title('IIR低通滤波器滤波后的时域波形');
y2=fft(f1);
y3=fft(x2);
figure(3);
subplot(211);
plot(abs(y3));%画出滤波前的频谱图
title('IIR低通滤波器滤波前的频谱')
xlabel('频率/Hz');
ylabel('幅值');
subplot(212);
plot(abs(y2));%画出滤波后的频谱图
title('IIR低通滤波器滤波后的频谱')
xlabel('频率/Hz');
ylabel('幅值');
functionpushbutton3_Callback(hObject,eventdata,handles)
%hObjecthandletopushbutton3(seeGCBO)
%eventdatareserved-tobedefinedinafutureversionofMATLAB
%handlesstructurewithhandlesanduserdata(seeGUIDATA)
x3=wavread('E:
\数字信号实习\语音.wav');
fs=1000;
t=(0:
length(x3)-1)/1000;
wp=0.04*pi;
ws=0.06*pi;
Rp=3;
Rs=40;
wdelta=ws-wp;
N=ceil(8*pi/wdelta);%取整
wn=(wp+ws)/2;
[b,a]=fir1(N,wn/pi,hamming(N+1));%选择窗函数,并归一化截止频率
figure
(1);
freqz(b,a,512);
title('FIR低通滤波器');
f2=filter(b,a,x3);
figure
(2);
subplot(211);
plot(t,x3);
title('FIR低通滤波器滤波前的时域波形');
subplot(212);
plot(t,f2);
title('FIR低通滤波器滤波后的时域波形');
y2=fft(f2);
figure(3);
y3=fft(x3);
subplot(211);
plot(abs(y3));
title('FIR低通滤波器滤波前的频谱');
xlabel('频率/Hz');
ylabel('幅值');
subplot(212);
plot(abs(y2));
title('FIR低通滤波器滤波后的频谱');
xlabel('频率/Hz');
ylabel('幅值');
functionpushbutton4_Callback(hObject,eventdata,handles)
%hObjecthandletopushbutton4(seeGCBO)
%eventdatareserved-tobedefinedinafutureversionofMATLAB
%handlesstructurewithhandlesanduserdata(seeGUIDATA)
x1=wavread('E:
\数字信号实习\语音.wav');
sound(x1);%播放原始语音信号
functionpushbutton5_Callback(hObject,eventdata,handles)
%hObjecthandletopushbutton5(seeGCBO)
%eventdatareserved-tobedefinedinafutureversionofMATLAB
%handlesstructurewithhandlesanduserdata(seeGUIDATA)
x2=wavread('E:
\数字信号实习\语音.wav');
fs=1000;
t=(0:
length(x2)-1)/1000;
wp=0.04*pi;%通带截止频率
ws=0.06*pi;%阻带截止频率
Rp=1;%通带衰减
Rs=15;%阻带衰减
wp1=2*fs*tan(wp/2);%将数字指标转换成模拟指标
ws1=2*fs*tan(ws/2);
[N,Wn]=buttord(wp1,ws1,Rp,Rs,'s');%选择滤波器的最小阶数
[b,a]=butter(N,Wn,'s');
[bz,az]=bilinear(b,a,1000);%用双线性变换法实现模拟滤波器到数字滤波器的转换
f1=filter(bz,az,x2);
sound(f1);%播放滤波后的语音信号
functionpushbutton6_Callback(hObject,eventdata,handles)
%hObjecthandletopushbutton6(seeGCBO)
%eventdatareserved-tobedefinedinafutureversionofMATLAB
%handlesstructurewithhandlesanduserdata(seeGUIDATA)
x3=wavread('E:
\数字信号实习\语音.wav');
fs=1000;
t=(0:
length(x3)-1)/1000;
wp=0.04*pi;
ws=0.06*pi;
Rp=3;
Rs=40;
wdelta=ws-wp;
N=ceil(8*pi/wdelta);%取整
wn=(wp+ws)/2;
[b,a]=fir1(N,wn/pi,hamming(N+1));%选择窗函数,并归一化截止频率
f2=filter(b,a,x3);
sound(f2);%播放滤波后的语音信号
运行结果如下所示:
数字信号处理界面:
选择原始信号的FFT频谱按钮:
选择IIR滤波器处理效果按钮:
选择FIR滤波器处理效果按钮:
结果分析:
通过低通滤波器之后,滤波后的时域波形对滤波前的时域波形看起来相对光滑一些,滤波后的频谱图,滤除了高频成分,保留了低频成分,语音效果也改善了不少,变得很柔和。
而通过比较双线性变换法与窗函数设计的滤波器可以看出,它们的滤波效果相似。
四.实验小结
这次的实习比较难一点,首先自己通过查阅相关资料熟悉了GUI界面的设计,由于水平不够,设计的界面比较简单,但能实现全部功能。
这一阶段的实习让我体会到了能读懂程序和自己编写程序的差距是很大的,理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,经过大量的亲身实践后才能够得到更深的掌握,最终达到融会贯通的效果。
数字信号处理实习总结:
数字信号处理这门课本身理论性强、公式推导较多、概念比较抽象,通过上机的实践可加深对课本理论知识的理解和认识。
最开始看题目时,感觉很多知识都生疏了,不知道该如何下手,也只有通过翻阅课本来回顾这些知识点,而且自己的编程能力中规中矩,也不是太好,但只要自己认真仔细一点,这方面还是没有什么太大的问题,在实习过程中遇到的一些问题通过与同学探讨和查阅资料也得到了解决。
这次实习总体来说收获还是挺大的,不但对数字信号处理这门课的相关知识有了更好的认识,同时也提高了应用MATLAB处理实际问题的能力。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数字信号 处理 实习 报告