信号分析与处理课程设计29635.docx
- 文档编号:23896887
- 上传时间:2023-05-22
- 格式:DOCX
- 页数:29
- 大小:318.58KB
信号分析与处理课程设计29635.docx
《信号分析与处理课程设计29635.docx》由会员分享,可在线阅读,更多相关《信号分析与处理课程设计29635.docx(29页珍藏版)》请在冰豆网上搜索。
信号分析与处理课程设计29635
《信号分析与处理(自)》课程设计
任务书
一、目的与要求
是使学生通过上机使用Matlab工具进行数字信号处理技术的仿真练习,加深对《信号分析与处理(自)》课程所学基本理论和概念的理解,培养学生应用Matlab等工具进行数字信号处理的基本技能和实践能力,为工程应用打下良好基础。
二、主要内容
1.了解Matlab基本使用方法,掌握Matlab数字信号处理的基本编程技术。
掌握数字信号的基本概念。
1)使用Matlab(生成几种典型数字信号(正弦信号、周期信号、高斯随机信号等),2)编程计算离散信号的特征值(均值、方差等)。
3)进行信号加减运算。
2.Matlab编程实现典型离散信号(正弦信号、周期信号、随机信号)的离散傅立叶变换,显示时域信号和频谱图形(幅值谱和相位谱);以正弦周期信号为例,观察讨论基本概念(混叠、泄漏、整周期截取、频率分辨率等)。
3.设计任意数字滤波器,并对某类型信号进行滤波,并对结果进行显示和分析。
三、进度计划
序号
设计(实验)内容
完成时间
备注
1
布置课程设计任务、示范讲解Matlab程序使用方法
0.5天
2
上机进行课程设计
3天
3
整理课程设计报告
1天
4
演示课程设计内容并答辩
0.5天
四、设计成果要求
1.提交完成设计内容的程序
2.提交设计报告
五、考核方式
课程设计报告、设计内容演示和答辩相结合。
考核内容:
考勤、纪律、课程设计报告、实际编程能力和基本概念掌握程度等。
学生姓名:
指导教师:
2011年12月29日
一、了解Matlab基本使用方法,掌握Matlab数字信号处理的基本编程技术。
掌握数字信号的基本概念。
1、使用Matlab生成几种典型数字信号:
正弦信号、周期信号、非周期信号和高斯随机信号并编程计算离散信号的特征值(均值、方差等)。
1)正弦信号:
编程如下:
k1=-20;k2=20;
k=k1:
k2;
w=pi/8;
f=sin(k*w);
stem(k,f,'filled');title('正弦序列');
xlabel('时间(k)');ylabel('幅值f(k)');
fprintf('正弦信号的均值为%.4f方差为%.4f\n',mean(f),var(f,1));
运行结果如下:
正弦信号的均值为0.0000方差为0.5122
2)周期信号
编程如下:
k1=0;k2=3;
k=k1:
k2;
Ts=1;f=k*Ts;
xtilde=f'*ones(1,8);
xtilde=xtilde(:
);
xtilde=xtilde';
subplot(2,1,1);stem(k,f,'filled');
title('一个周期');xlabel('时间(k)');ylabel('幅值f(k)');
subplot(2,1,2);stem(xtilde,'filled');
title('周期序列');xlabel('时间(k)');ylabel('幅值f(k)');
fprintf('周期信号的均值为%.4f方差为%.4f\n',mean(xtilde),var(xtilde,1));
运行结果如下:
周期信号的均值为1.5000方差为1.2500
3)非周期信号
编程如下:
n=0:
10;
x=[zeros(1,2),ones(1,5),zeros(1,4)];
stem(n,x,'filled');title('非周期信号');
xlabel('时间(n)');ylabel('幅值f(n)');
fprintf('非周期信号的均值为%.4f方差为%.4f\n',mean(x),var(x,1));
运行结果如下:
非周期信号的均值为0.4545方差为0.2479
4)高斯随机信号
编程如下:
n=300;
xn=randn(1,n);
stem(xn,'filled');
xlabel('n');ylabel('x(n)');title('高斯随机信号');
fprintf('随机信号的均值为%.4f方差为%.4f\n',mean(xn),var(xn,1));
运行结果如下:
随机信号的均值为-0.0524方差为0.8510
2、进行信号加减运算。
编程如下:
x1=[1,5,2,-4,5,-1,5];%序列1
x2=[7,6,5,4,3,2,1];%序列2
n=1:
length(x1);
figure
(1);holdon;
subplot(2,2,1);stem(n,x1,'filled');title('x1');
subplot(2,2,2);stem(n,x2,'filled');title('x2');
subplot(2,2,3);stem(n,x1+x2,'filled');title('x1+x2');
subplot(2,2,4);stem(n,x1-x2,'filled');title('x1-x2');
y=fliplr(x2);%反转
t=-length(y):
-1;
figure
(2);holdon;
subplot(2,2,1);stem(n,x1,'filled');title('x1');
subplot(2,2,2);stem(n,x2,'filled');title('x2');
subplot(2,2,3);stem(n,x1.*x2,'filled');title('x1*x2');
subplot(2,2,4);stem(t,y,'filled');title('x2(-n)');
运行结果如下:
1)对序列1和序列2相加减:
2)对序列1和序列2相乘,对序列2进行反转:
二、Matlab编程实现典型离散信号(正弦信号、周期信号、随机信号)的离散傅立叶变换,显示时域信号和频谱图形(幅值谱和相位谱);以正弦周期信号为例,观察讨论基本概念(混叠、泄漏、整周期截取、频率分辨率等)。
1、离散信号的离散傅里叶变换
1)正弦信号
编程如下:
N=64;
k=0:
N-1;
w=pi/6;
f=sin(k*w);
f1=dft(f,N);
figure
(1);holdon;
stem(k,f,'filled');xlabel('k');ylabel('f');gridon;title('时域信号');
figure
(2);holdon;
subplot(2,1,1);stem(abs(f1),'filled');ylabel('幅值');title('幅频特性');gridon;
subplot(2,1,2);stem(angle(f1),'filled');ylabel('相角');title('相频特性');gridon;
运行结果如下:
2)周期信号
编程如下:
k1=0;k2=3;
k=k1:
k2;
Ts=1;f=k*Ts;
xtilde=f'*ones(1,8);
xtilde=xtilde(:
);
xtilde=xtilde';
ff=dft(xtilde,32);
figure
(1);holdon;stem(xtilde,'filled');
title('周期序列');xlabel('时间(k)');ylabel('幅值f');gridon;
figure
(2);holdon;
subplot(2,1,1);stem(abs(ff),'filled');
ylabel('幅值');title('幅频特性');gridon;
subplot(2,1,2);stem(angle(ff),'filled');
ylabel('相角');title('相频特性');gridon;
运行结果如下:
时域信号为
频域信号为
3)随机信号
编程如下:
n=200;
xn=randn(1,n);
fxn=dft(xn,n);
figure
(1);holdon;
stem(xn,'filled');
xlabel('n');ylabel('x(n)');title('高斯随机信号');
figure
(2);holdon;
subplot(2,1,1);
stem(abs(fxn),'filled');ylabel('幅值');title('幅频特性');gridon;
subplot(2,1,2);
stem(angle(fxn),'filled');ylabel('相角');title('相频特性');gridon;
运行结果如下:
时域信号为
频域信号为
2、以正弦周期信号为例,观察讨论基本概念。
1)时域混叠分析
编程如下:
w=pi/8;
n=[0:
64];
xn=sin(w*n);
xk1=fft(xn,128);%计算xn的128点dft
xn1=ifft(xk1,128);
xk2=fft(xn,32);%计算xn的32点dft
xn2=ifft(xk2,32);
k=0:
127;
wk=2*k*pi/128;%产生128点dft对应的采样点频率
subplot(5,1,1);stem(n,xn,'.');%原始信号
xlabel('n');ylabel('xn');title('
(1)正弦信号');gridon
subplot(5,1,2);stem(wk,abs(xk1),'.');%128点dft的幅频特性图
xlabel('wk');ylabel('幅值');title('
(2)128点dft的幅频特性图');gridon
subplot(5,1,3);stem(0:
length(xn1)-1,xn1,'.');%128点dft的还原信号
xlabel('n');ylabel('xn');title('(3)128点dft的还原信号');gridon
subplot(5,1,4);stem(abs(xk2),'.');%32点dft的幅频特性图
xlabel('wk');ylabel('幅值');title('(4)32点dft的幅频特性图');gridon
subplot(5,1,5);stem(0:
length(xn2)-1,xn2,'.');%32点dft的还原信号
xlabel('n');ylabel('xn');title('(5)32点dft的还原信号');gridon
运行结果如下:
结果分析:
序列xn为有限序列,长度为64,当频域采样点数为128(大于序列长度64)时,可以将频域采样回复原序列;当频域采样点数为32(小于序列长度64)时,产生时域混叠现象,不能回复原序列。
2)频谱泄露分析
编程如下:
n1=[0:
64];%加一较短长度的矩形窗
xn1=sin(w*n1);
xk1=fft(xn1,128);%计算xn1的128点dft
n2=[0:
128];%加一较长长度的矩形窗
xn2=sin(w*n2);
xk2=fft(xn2,128);%计算xn2的128点dft
k=0:
127;
wk=2*pi*k/128;%产生128点dft对应的采样点频率
subplot(4,1,1);stem(n1,xn1,'.');
xlabel('n1');ylabel('xn1');title('
(1)短长度信号');gridon
subplot(4,1,2);stem(wk,abs(xk1),'.');
xlabel('wk');ylabel('幅度');title('
(2)短信号128点dft的幅频特性图');gridon
subplot(4,1,3);stem(n2,xn2,'.');
xlabel('n2');ylabel('xn2');title('(3)长长度信号');gridon
subplot(4,1,4);stem(wk,abs(xk2),'.');
xlabel('wk');ylabel('幅度');title('(4)长信号128点dft的幅频特性图');gridon
运行结果如下:
结果分析:
正弦信号是无限长序列,而DFT是对有限长序列进行的变换,要用DFT分析正弦序列的频谱,必须进行截断处理。
用矩形窗截断后,原来的离散谱线向附近展宽,使频谱变模糊,谱分辨率降低,这种现象称为频谱泄露。
图
(2)截取了4个周期,图(4)截取了8个周期,由图
(2)和图(4)对比可知,矩形窗的长度越长,展宽就越窄,就可以减小频谱泄露效应。
3)整周期截取分析
编程如下:
w=pi/8;
n1=[0:
128];%整周期截取
xn1=sin(w*n1);
xk1=fft(xn1,128);%计算xn1的128点dft
n2=[0:
70];%非整周期截取
xn2=sin(w*n2);
xk2=fft(xn2,128);%计算xn2的128点dft
k=0:
127;
wk=2*pi*k/128;%产生128点dft对应的采样点频率
subplot(4,1,1);stem(n1,xn1,'.');
xlabel('n1');ylabel('xn1');title('
(1)整周期截取信号');gridon
subplot(4,1,2);stem(wk,abs(xk1),'.');
ylabel('幅度');title('
(2)整周期信号128点dft的幅频特性图');gridon
subplot(4,1,3);stem(n2,xn2,'.');
xlabel('n2');ylabel('xn2');title('(3)非整周期截取信号');gridon
subplot(4,1,4);stem(wk,abs(xk2),'.');
ylabel('幅度');title('(4)非整周期信号128点dft的幅频特性图');gridon
运行结果如下:
结果分析:
图
(2)为整周期截取信号后的128点dft的幅频特性图,图(4)为非整周期截取信号后的128点dft的幅频特性图,由图
(2)和(4)对比可知,在截取长度不是很长时,必须要整周期截取,这样才能是截断误差更小,获得更好的效果。
4)频率分辨率分析
编程如下:
w=pi/8;
n1=[0:
16];%观察时间较小
xn1=sin(w*n1);
xk1=fft(xn1,64);%计算xn1的64点dft
xk10=fft(xn1,128);%计算xn1的128点dft
n2=[0:
64];%观察时间较大
xn2=sin(w*n2);
xk2=fft(xn2,64);%计算xn2的64点dft
k1=0:
63;
wk1=2*pi*k1/64;%产生64点dft对应的采样点频率
k2=0:
127
wk2=2*pi*k2/128;%产生128点dft对应的采样点频率
subplot(5,1,1);stem(n1,xn1,'.');
xlabel('n1');ylabel('xn1');title('
(1)观察时间较小的信号');gridon
subplot(5,1,2);stem(wk1,abs(xk1),'.');
ylabel('幅度');title('
(2)观察时间较小信号64点dft的幅频特性图');gridon
subplot(5,1,3);stem(wk2,abs(xk10),'.');
ylabel('幅度');title('(3)观察时间较小信号128点dft的幅频特性图');gridon
subplot(5,1,4);stem(n2,xn2,'.');
xlabel('n2');ylabel('xn2');title('(4)观察时间较大的信号');gridon
subplot(5,1,5);stem(wk1,abs(xk2),'.');
ylabel('幅度');title('(5)观察时间较大信号64点dft的幅频特性图');gridon
运行结果如下:
结果分析:
图
(2)为观察时间N=16的64点dft的幅频特性图,图(5)为观察时间N=64的64点dft的幅频特性图,对比可知,增大观察时间可以使谱线间隔更小,使频率分辨能力更高。
图(3)为观察时间N=16的128点dft的幅频特性图,和图
(2)对比可得,在有效数据后补零可以得到原频谱中更多的频谱值,但频谱的波形为改变,不能提高DFT的频率分辨能力,只能提高“计算分辨率”。
三、设计任意数字滤波器,并对某类型信号进行滤波,并对结果进行显示和分析。
1、IIR数字滤波器的设计
编程如下:
fp=0.3;fs=0.5;
rp=0.5;rs=30;
wp=2*pi*fp;ws=2*pi*fs;%通带、阻带截止数字频率
[n,wn]=buttord(wp,ws,rp,rs,'s');%确定巴特沃兹模拟滤波器的阶次
[z,p,k]=buttap(n);%设计归一化巴特沃兹模拟低通滤波器
[bp,ap]=zp2tf(z,p,k);%转换为Ha(p)表示
[bs,as]=lp2lp(bp,ap,wp);%Ha(p)去归一化转换为Ha(s)表示
[bz,az]=bilinear(bs,as,1/2);%双线性变换为H(z)
figure
(1);
freqz(bz,az);title('巴特沃兹低通滤波器幅频特性');
x=0:
0.1:
60;
y1=5*sin(0.3*pi*x);%正弦信号
y2=10*sin(8*pi*x);%噪音信号
figure
(2);holdon;
subplot(2,1,1);
plot(x,y1);grid;title('正弦信号');
subplot(2,1,2);
plot(x,y2);grid;title('噪音信号');
y3=y1+y2;%滤波前信号(含噪音)
figure(3);
subplot(2,1,1);
plot(x,y3);grid;title('滤波前信号(含噪音信号)');
y=filter(bz,az,y3);%滤波后信号
subplot(2,1,2);
plot(x,y);grid
title('滤波后信号');
运行结果如下:
巴特沃兹低通滤波器幅频特性:
未加噪音信号时的原信号与噪音信号:
滤波前的信号(含噪音信号)及滤波后的信号:
结果分析:
IIR数字滤波器设计中,选用未含噪音信号的初信号为一正弦信号y1=5*sin(0.3*pi*x);噪音信号为具有高频率的另一正弦信号y2=10*sin(8*pi*x);需要被滤波的信号为y3=y1+y2,该信号通过所涉及滤波器后,高频信号被滤去,基本恢复最初正弦信号,滤波效果良好。
2、IIR数字滤波器的设计
编程如下:
N=20;%窗长度
K=256;
b1=fir1(N,0.3);%求FIR低通滤波器的单位脉冲响应,用汉宁窗作为窗函数
b2=fir1(N,0.3,boxcar(N+1));%求FIR低通滤波器的单位脉冲响应,用矩形窗作为窗函数
b3=fir1(N,0.3,hamming(N+1));%求FIR低通滤波器的单位脉冲响应,用汉明窗作为窗函数
h1=freqz(b1,1,K);%求汉宁窗数字滤波器的频率响应(K=256点)
h2=freqz(b2,1,K);%求矩形窗数字滤波器的频率响应(K=256点)
h3=freqz(b3,1,K);%求汉明窗数字滤波器的频率响应(K=256点)
k=0:
20;
L=0:
(K-1);
figure
(1);holdon;
subplot(2,1,1);stem(k,b1,'filled');title('汉宁窗频谱图');
subplot(2,1,2);plot(L/K,abs(h1));title('汉宁窗频谱图');
x=0:
0.1:
60;
y1=5*sin(0.3*pi*x);%正弦信号
y2=10*sin(8*pi*x);%噪音信号
y3=y1+y2;%滤波前信号(含噪音信号)
figure
(2);holdon;
subplot(2,1,1);plot(x,y1);
title('正弦信号');grid;
subplot(2,1,2);plot(x,y2);
title('噪音信号');grid;
yh1=filter(h1,1,y3);%分别经三种窗函数滤波器过滤后的信号
yh2=filter(h2,1,y3);
yh3=filter(h3,1,y3);
figure(3);
subplot(4,1,1);plot(x,y3);
title('滤波前信号(含噪音信号)');grid
subplot(4,1,2);plot(x,yh1);
title('汉宁窗滤波后信号');grid
subplot(4,1,3);plot(x,yh2);
title('矩形窗滤波后信号');grid
subplot(4,1,4);plot(x,yh3);
title('汉明窗滤波后信号');grid
运行结果如下:
汉宁窗频谱图:
未加噪音信号时的正弦信号与噪音信号:
滤波前的信号(含噪音信号)及滤波后的信号:
结果分析:
在FIR设计中,仍采用IIR中的信号,y3经过汉宁窗、矩形窗、汉明窗滤波器后的波形分别为如上图所示,在本设计中,三种滤波效果无太大差异。
四、课程设计总结
1、课程设计的时间虽然不长,但却使我受益匪浅,让我对信号分析与处理这门课程有了进一步的理解,对MATLAB软件的使用也有了新的了解。
在查阅有关资料时,还注意到matlab在自动控制原理等专业课程实践中很重要。
2、这段时间自己的动手、动脑让我感觉,只有把知识真正用出来,那才是自己学到的,所以,在以后的学习中,要加强理论与实践的结合,认真、积极参与各种实验与课程设计。
3、一个人的学习和知识总是有限的,我们要学会与他人交流,取长补短,以使自己更快地进步。
4、在课程设计中,遇到一些困难与问题,究其原因,还是因为平时学得不扎实,掌握不牢固,思维有些单一,所以,在今后的学习中,要更加踏实努力、积极思考。
五、参考文献
1、杨育霞许珉廖晓辉信号分析与处理中国电力出版社
2、郭仕剑王宝顺贺志国杨可心等MATLAB7.x数字信号处理人民邮电出版社
3、李杰张猛邢笑雪信号处理MATLAB实验教程北京大学出版社
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 信号 分析 处理 课程设计 29635