信号与系统课程设计报告.docx
《信号与系统课程设计报告.docx》由会员分享,可在线阅读,更多相关《信号与系统课程设计报告.docx(20页珍藏版)》请在冰豆网上搜索。
信号与系统课程设计报告
课程设计报告
课程名称信号与系统课程设计
指导教师
设计起止日期
学院信息与通信工程
专业电子信息工程
学生姓名
班级/学号
成绩
指导老师签字
1、课程设计目的
“信号与系统”是一门重要的专业基础课,MATLAB作为信号处理强有力的计算和分析工具是电子信息工程技术人员常用的重要工具之一。
本课程设计基于MATLAB完成信号与系统综合设计实验,以提高学生的综合应用知识能力为目标,是“信号与系统”课程在实践教学环节上的必要补充。
通过课设综合设计实验,激发学生理论课程学习兴趣,提高分析问题和解决问题的能力。
2、课程设计要求
(1)运用MATLAB编程得到简单信号、简单信号运算、复杂信号的频域响应图;
(2)通过对线性时不变系统的输入、输出信号的时域和频域的分析,了解线性时不变系统的特性,同时加深对信号频谱的理解。
3、课程设计任务
(1)根据设计题目的要求,熟悉相关内容的理论基础,理清程序设计的措施和步骤;
(2)根据设计题目的要求,提出各目标的实施思路、方法和步骤;
(3)根据相关步骤完成MATLAB程序设计,所编程序应能完整实现设计题目的要求;
(4)调试程序,分析相关理论;
(5)编写设计报告。
4、课程设计内容
(一)基本部分
(1)信号的时频分析
任意给定单频周期信号的振幅、频率和初相,要求准确计算出其幅度谱,并准确画出时域和频域波形,正确显示时间和频率。
设计思路:
首先给出横坐标,即时间,根据设定的信号的振幅、频率和初相,写出时域波形的表达式;然后对时域波形信号进行傅里叶变化,得到频域波形;最后使用plot函数绘制各个响应图。
源程序:
clc;clear;
closeall;
Fs=128;%采样频率
T=1/Fs;%采样周期
N=600;%采样点数
t=(0:
N-1)*T;%时间,单位:
S
x=2*cos(5*2*pi*t);
n=0:
N-1;
figure;subplot(3,1,1)
plot(t,x);
xlabel('时间/S');
ylabel('振幅');title('时域波形');gridon;
y=fft(x,N);
y1=fftshift(y);
n1=-(N-1)/2:
(N-1)/2;
f=n1*Fs/N;
subplot(3,1,2)
plot(f,10*log10(abs(y1)));%绘出Nyquist频率之前随频率变化的振幅
xlabel('频率/Hz');
ylabel('幅度');title('幅值谱');gridon;
subplot(3,1,3)
plot(f,angle(y1));%绘出Nyquist频率之前随频率变化的相位
xlabel('频率/Hz');
ylabel('相位');title('相位谱');gridon;
结果图:
结果分析:
cos函数波形为周期信号,其频域响应为两个冲击函数,并且符合对偶性。
(2)傅里叶级数分析
分析周期三角波的傅里叶级数系数,用正弦信号的线性组合构成三角波,要求谐波次数可以任意输入,分析不同谐波次数所构成的三角波,解释是否存在吉伯斯现象。
设计思路:
根据原理——任意周期信号都可以表达成傅里叶级数的形式,对周期三角波进行傅里叶级数分解,利用for循环完成级数求和运算。
当N值较小时,傅里叶级数的逼近效果不是很理想,随着N值变大,傅里叶级数越来越接近理想值。
源程序:
clc;clear;
closeall;
t=-6:
6/1000:
6;
N=input('pleaseinputthenunber:
');
w0=pi;
XN=zeros(1,length(t));
tao=0;%0.0000001;
forn=1:
N;
fn=-4*(sin(n*pi/2))^2/((n+tao)^2*pi^2);
XN=XN+fn*cos(n*w0*t);
end
XN=XN+0.5;
figure;plot(t,XN);
title(['Gibbs,N=',num2str(N)]);
xlabel('Time(sec)');
ylabel(['X',num2str(N),('t')]);
结果图;
结果分析:
随着N值的增大,傅里叶级数与理想的周期三角波越来越接近,符合预期效果。
(3)系统分析
任意给定微分方程或差分方程描述的系统,画出系统的幅频响应和相频响应。
设计思路:
根据微分方程、差分方程与系统函数的对应关系,结合matlab自带的freqs和freqz两个函数,分析系统的幅频特性和相频特性。
源程序:
clc;clear;
closeall;
%---微分方程
b=[10];%y的系数
a=[132];%x的系数
figure;freqs(b,a);
%---差分方程
b=[01];%y的系数
a=[1-22];%x的系数
figure;freqz(b,a);
结果图;
结果分析:
微分方程所代表的系统具有高通特性,差分方程所代表的系统具有低通特性。
(4)音乐合成程序设计
对于任意一小段音乐,利用“十二平均律”计算该音乐中各个乐音的频率,产生并播放这些乐音。
分析音乐的频谱,从中识别出不同的乐音。
设计思路:
根据时间长短来区别各个音符拍长短,根据频率高低来区别各个音符的音调,具体细节参考“十二平均律”,将每段乐音连接起来,使用sound函数播放乐音。
对每段乐音进行傅里叶变换,分析其频谱。
源程序:
clc;clear;
closeall;
f=8000;%音乐采样频率,可改为4000或者16000
t2=0:
1/f:
1;%2拍,时间长短不同
t4=0:
1/f:
0.5;%1拍
t8=0:
1/f:
0.25;%1/2拍
misc_note5=523.25;%不同音符频率
misc_note6=587.33;
misc_note2=392;
misc_note1=349.23;
misc_note6_down=293.66;
m1=sin(2*pi*misc_note5*t4);%波形
m2=sin(2*pi*misc_note5*t8);
m3=sin(2*pi*misc_note6*t8);
m4=sin(2*pi*misc_note2*t2);
m5=sin(2*pi*misc_note1*t4);
m6=sin(2*pi*misc_note1*t8);
m7=sin(2*pi*misc_note6_down*t8);
m8=sin(2*pi*misc_note2*t2);
m=[m1m2m3m4m5m6m7m8];
%save('DongFangHong','m');
sound(m);
N=1024;%傅里叶变换点数
flabel=0:
f/N:
f/2-f/N;
figure;holdon;
H_m=fft(m1,N);plot(flabel,10*log10(abs(H_m(1:
N/2))));
H_m=fft(m2,N);plot(flabel,10*log10(abs(H_m(1:
N/2))));
H_m=fft(m3,N);plot(flabel,10*log10(abs(H_m(1:
N/2))));
H_m=fft(m4,N);plot(flabel,10*log10(abs(H_m(1:
N/2))));
H_m=fft(m5,N);plot(flabel,10*log10(abs(H_m(1:
N/2))));
H_m=fft(m6,N);plot(flabel,10*log10(abs(H_m(1:
N/2))));
H_m=fft(m7,N);plot(flabel,10*log10(abs(H_m(1:
N/2))));
H_m=fft(m8,N);plot(flabel,10*log10(abs(H_m(1:
N/2))));
holdoff;
xlabel('频率');
ylabel('幅度响应');
gridon;
axis([01000-1530]);
结果图;
结果分析:
根据乐谱编写程序,能够听到预期的歌曲;分析其频谱,包含几个不同频率的脉冲,同样符合预期。
(5)调制
分析单位冲激响应为
的系统的滤波特性,画出其幅频响应曲线。
设计思路:
根据傅里叶变换特性,时域相乘对应频域卷积,将题目中的时域波形进行分解,并将两个函数分别对应的傅里叶变换进行卷积。
参考常用的傅里叶变换对,所求的频域特性为方波和冲击函数的卷积。
源程序:
clc;clear;
closeall;
f=800;%采样频率
t=-0.2:
1/f:
0.2;%时域长度
x_t=zeros(1,length(t));
fork=1:
length(t)
ift(k)==0
x_t(k)=0;
else
x_t(k)=sin(50*pi*t(k))*sin(100*pi*t(k))/(pi*t(k));
end
end
figure;subplot(2,1,1);
plot(t,x_t);%时域波形
xlabel('时间');
ylabel('时域波形');
gridon;
N=1024;%傅里叶变换点数
H_x=fft(x_t,N);
flabel=0:
f/N:
f/2-f/N;
subplot(2,1,2);
plot(flabel,10*log10(abs(H_x(1:
N/2))));
xlabel('频率');
ylabel('频率响应');
gridon;
结果图;
结果分析:
中心在0频的方波搬移到了50Hz,符合预期。
(二)提高部分
(7)频分复用
a、自行给出二路语音信号,分别显示其频谱,并播放语音。
b、对二路语音信号进行频分复用,显示复用后的频谱,播放语音。
c、设计程序对频分复用的信号进行解调,显示解调结果,并回放语音。
设计思路:
对信号的处理主要包括以下几个部分:
a、根据语音信号文件,使用matlab的函数wavread进行读取,并结合fft观察信号的时域波形和频域波形;
b、两路信号分别于不同频率的载波相乘,再相加,得到复用之后的信号;
c、根据所发送信号的特性和其对应的载波,设计带通滤波器,从复用信号中分别滤出两路信号;
d、对高频的调制信号进行解调至0频;
e、设计低通滤波器,并将解调后的信号通过该滤波器,得到预期的发送信号,播放该信号,观察其与发送信号的异同。
源程序:
clc;clear;
closeall;
N=14000;
n=0:
N-1;
[e1,fs1]=wavread('msg.wav');%信号a
y1=e1(1:
N);
[e2,fs2]=wavread('sys.wav');%信号b
y2=e2(1:
N);
figure;subplot(2,1,1);
plot(y1);%输出a的时域波形
xlabel('t');
ylabel('y1');
title('a的波形');
sound(y1,fs1);
Fy1=fft(y1,N);
f=n/N*fs1;
subplot(2,1,2);
plot(f,abs(Fy1));%a的幅度谱
xlabel('t');
ylabel('Fy1');
title('a的幅频响应');
bw1=fs1/2;%信号1的采样带宽
figure;subplot(2,1,1);
plot(y2);%b的时域波形
xlabel('t');
ylabel('y2');
title('b的波形');
sound(y2,fs2);
Fy2=fft(y2,N);
subplot(2,1,2);
plot(f,abs(Fy2));%b的幅度谱
xlabel('f');
ylabel('Fy2');
title('b的幅频响应');
bw2=fs2/2;
%---调制
fca=20000;
fcb=60000;
fs=160000;
Ts=1/fs;
fn=n/N*fs;
y1cos=cos(2*pi*fca.*n*Ts);%第一个载波信号
y2cos=cos(2*pi*fcb.*n*Ts);%第二个载波信号
y=y1'.*y1cos+y2'.*y2cos;%调制相加得到复合信号
F=fft(y,N);
figure;subplot(211);
plot(y);
xlabel('t');
ylabel('y');
title('复合信号的波形');
subplot(212);
plot(fn,abs(F));
xlabel('fn');
ylabel('|F|');
title('复合信号的幅频响应');
%---设计滤波器
dat=zeros(1,N);
dat(round((fca-bw1)/fs*N:
(fca+bw1)/fs*N))=1;%
dat(round((fs-fca-bw1)/fs*N:
(fs-(fca-bw1))/fs*N))=1;
fi1=dat;%a滤波器
dat=zeros(1,N);
dat(round((fcb-bw2)/fs*N:
(fcb+bw2)/fs*N))=1;
dat(round((fs-(fcb-bw2)-2*bw2)/fs*N:
(fs-(fcb-bw2))/fs*N))=1;
fi2=dat;%b滤波器
figure;subplot(211);
plot(fn,fi1);
axis([016000001.5]);
title('滤波器fi1');
xlabel('Hz');
ylabel('fi1');
subplot(212);
plot(fn,fi2);
axis([016000001.5]);
xlabel('Hz');
ylabel('fi2');
title('滤波器fi2');
fily1=F.*fi1;%滤波
fily2=F.*fi2;
%---混频
hy1=ifft(fily1).*y1cos;%a混频
hy2=ifft(fily2).*y2cos;%b混频
figure;subplot(211);
plot(abs(fft(hy1)));
xlabel('Hz');
ylabel('Fya');
title('a混频后的幅频响应');
subplot(212);
plot(abs(fft(hy2)));
xlabel('Hz');
ylabel('Fyb');
title('b混频后的幅频响应');
%---低通滤波
filter=zeros(1,N);
filter(1:
round(bw1/fs*N))=1;
filter(round((fs-bw1)/fs*N):
N)=1;
filter1=filter;
filter(1:
round(bw2/fs*N))=1;
filter(round((fs-bw2)/fs*N):
N)=1;
filter2=filter;
Fya=fft(hy1).*filter1;
ya=ifft(Fya);
figure;subplot(211);
plot(n,real(ya));
xlabel('t');
ylabel('ya');
title('a的解调');
sp3=max(abs(ya));
sound(real(ya/sp3),fs1)
Fyb=fft(hy2).*filter2;
yb=ifft(Fyb);
subplot(212);
plot(n,real(yb));
title('b的解调');
xlabel('t');
ylabel('yb');
sp4=max(abs(yb));
sound(real(yb/sp4),fs1)
结果图:
5、总结
这次课程设计,尝到了各种滋味,有在困惑中的苦恼,在迷茫中的挣扎,也有在学习中的快乐,在成功中的兴奋,这是一个独立思考和挑战自己恒心的过程。
实验中学到的不仅仅是MATLAB的应用和一些课题的解决方法,更重要的是锻炼了自己的意志,在做基础部分的时候,我在对MATLAB一无所知中苦苦摸索,一次一次地编写代码,试验函数的用法,慢慢地学会了怎么写一些简单的程序。
我发现课本知识在实践面前很脆弱,不是说课本知识不重要,我们在学好课本知识的同时更要注重联系实际,要能解决实际问题,把课本上学到的东西应用到课程设计里面来,比如说频分复用,频分复用就是课本上讲过的一个应用,但是具体到自己设计,就要考虑各种问题,比如说载波的选择、滤波器的设计,这些课本上只是提到但是怎么解决得靠自己想办法。
这次课程设计对我的启发很大,我懂得了遇到困难首先要思考,查找解决办法,耐心分析错误原因,做事要有耐心,我会在以后的学习中注重实践。
参考文献
[1]郑君里、应启珩、杨为理,信号与系统引论,北京:
高等教育出版社,2009年3月.
[2]谷源涛、应启珩、郑君里,信号与系统——MATLAB综合实验,北京:
高等教育出版社,2008年1月.
[3]梁虹等,信号与系统分析及Matlab实现,北京:
电子工业出版社,2002年2月.
附录
MATLAB程序清单:
basic1.m
basic2.m
basic3.m
basic4.m
basic5.m
enhanced7.m
辅助文件:
msg.wav
sys.wav
WelcomeTo
Download!
!
!
欢迎您的下载,资料仅供参考!