信号与系统课设报告.docx
《信号与系统课设报告.docx》由会员分享,可在线阅读,更多相关《信号与系统课设报告.docx(16页珍藏版)》请在冰豆网上搜索。
信号与系统课设报告
信号与系统课设报告
课程名称信号与系统课程设计实验
实验项目傅里叶变换分析
连续时间系统分析
离散时间系统分析
音频加解扰
实验仪器计算机、MATLAB软件
系别___光电学院_________
专业__________
班级/学号___
学生姓名_______
实验日期
成绩_______________________
指导教师________
一.实验目的:
“信号与系统”是一门重要的专业基础课,MATLAB作为信号处理强有力的计算和分析工具是电子信息工程技术人员常用的重要工具之一。
本课程设计基于MATLAB完成信号与系统综合设计实验,以提高学生的综合应用知识能力为目标,是“信号与系统”课程在实践教学环节上的必要补充。
通过课设综合设计实验,激发学生理论课程学习兴趣,提高分析问题和解决问题的能力。
2、课设内容:
傅里叶变换
1、实验要求:
1.周期信号的谱分析,要求任意给定单频周期信号,能够准确计算出其幅度谱和相位谱,并画出图形,要求正确显示频率。
2.非周期信号的频谱分析,要求分析语音信号的幅度谱和相位谱,并画出图形。
3.对于方波,设计程序计算其傅里叶级数,仿真吉伯斯现象。
2、实验过程
1.1周期信号的谱分析
1)代码
clear,clc,closeall%清屏
f0=500;%设定正弦的频率
N=100;
n=0:
N;%设置采样点
Ts=0.0001;%抽样时间间隔
%生成正弦波形
y=sin(2*pi*f0.*n*Ts);
subplot(3,2,1);
plot(n*Ts,y);
title('y=sin(t)');
xlabel('s');
legend('sin(t)');
%fftshift的作用正是让正半轴部分和负半轴部分的图像分别关于各自的中心对称。
%因为直接用fft得出的数据与频率不是对应的,fftshift可以纠正过来
Y=fftshift(fft(y));
subplot(3,1,2);
stem((n-N/2)/N/Ts,abs(Y),'g');%画出信号的幅度谱
title('Y的幅度频谱');xlabel('Hz')
subplot(3,1,3);
stem((n-N/2)/N/Ts,angle(Y),'g');%画出信号的相位谱
title('Y的相位频谱');xlabel('Hz')
2)运行结果图像及其分析:
图像分析
先设置正弦信号频率为500Hz,在生成正弦信号后,对其做傅里叶变换,再将其做集中使之与频率相对应,紧接着将它的频度和相位算出来,画图!
1.2非周期信号的频谱分析
1)代码
clear,clc,closeall
N=4000;%设定采样点数
n=[0:
N-1];
[x1,fs1,nbits]=wavread('F:
\fmt.wav');%进行采样
sound(x1,fs1,nbits);%播放歌曲
x=x1(1:
N);%取部分点数
X=fft(x);%傅里叶变换并集中
f=n/N*fs1;%把点数转换成频率
subplot(3,1,1);
plot(n/fs1,x);%画出采样的信号
ylabel('原歌曲信号');
xlabel('时间/s');
subplot(3,1,2);
plot(f,abs(X));%画出采样信号的幅度谱
ylabel('语音的幅度谱');
xlabel('频率/Hz');
subplot(3,1,3);
plot(f,angle(X));%画出采样信号的相位谱
ylabel('语音的相位谱');
xlabel('频率/Hz');
2)运行结果图像及其分析:
图形分析
用适当的时间间隔对语音信号进行采集,然后将它的幅度和相位计算出来,并画在图上!
1.3方波分析,计算其傅里叶级数,仿真吉伯斯现象。
1)代码
closeall;
clc;
clearall;%清屏
t=-pi:
0.01:
pi;%设置显示的时间范围
a=0;
T=input('T=')%由用户指定要T次谐波
forn=1:
2:
T
b=sin(n*t+n*pi/2)/n;%n次谐波
a=a+b;
end
y=4*a/pi;
x=square(t+pi/2);%原先的方波
plot(t,y,'b',t,x,'r')%画出图像
1.3运行结果图像
N=10N=40
N=100N=250
程序分析:
计算出它的傅里叶系数,然后按指定的要求将它的吉伯斯想象画出来。
连续时间系统分析:
(一)实验要求:
1、自行设计一个有初始条件的微分方程,至少二阶。
2、解出其零输入解,并画出图形,与手工计算相比较。
3、解出其单位冲激响应,并画出图形,与手工计算相比较。
4、设定某一激励信号,用卷积方法解出其零状态响应,并画出图形,与手工计算相比较。
5、计算系统的幅频响应和相频响应,并画出图形。
(二)程序代码
clearall,closeall,clc;
A=[0,1;-3,-2];
B=[0;1];
C=[31];
D=[0];
sys=ss(A,B,C,D);%状态方程及输出方程四个矩阵
x0=[-1,4];%状态变量初始值,要从初始状态r(0-)=1,r'(0-)=2计算而得
t=[0:
0.01:
10]';
e=1*(t>=0);
ezi=0*(t>=0);%生成零输入信号的抽样值,e(t)=0
rzs=lsim(sys,e,t);%仿真零状态响应
rzi=lsim(sys,ezi,t,x0);%仿真零输入响应
rf=lsim(sys,e,t,x0);
%验证,与手工计算比较
rzs_manul=-2*exp(-t)+0.5*exp(-2*t)+1.5;%零状态响应手工计算值
error_rzs=rzs-rzs_manul;
rzi_manul=4*exp(-t)-3*exp(-2*t);%零输入响应手工计算值
error_rzi=rzi-rzi_manul;
rf_manul=2*exp(-t)-2.5*exp(-2*t)+1.5;%全响应手工计算值
error_rf=rf-rf_manul;
%画图
figure
subplot(2,2,1)
holdon,boxon;
title('系统的零输入响应、零状态响应、完全响应')
set(gca,'FontSize',10);
plot(t,e,'b.','linewidth',3);
plot(t,rzs,'r-','linewidth',3);
plot(t,rzi,'g-.','linewidth',3);
plot(t,rf,'y','linewidth',3);
legend('input','rzs','rzi','rf');
xlabel('t/s');axis([-0.010-14])
%画手工得到的响应
subplot(2,2,2);
plot(t,rzs_manul,'r:
','linewidth',3);
holdon;
plot(t,rzi_manul,'g-.','linewidth',3);
plot(t,rf_manul,'k','linewidth',3);
legend('零状态响应','零输入响应','全响应');
title('手工得到的响应')
xlabel('时间/s');axis([-0.010-14])
(三)运行结果图像及其分析
系统的零输入响应、零状态相应、完全响应和手工计算的零输入响应、零状态相应、完全响应,以及单位冲激响应和卷积之后的零状态响应
图像分析:
将系统的零输入响应、零状态响应和完全响应计算出来,并与手工相比较,差距不大。
并画出来,再将系统的冲击响应求出来,用将激励响应和冲激响应做卷积,把系统的零状态响应求出来,画在图上!
系统的幅频响应和相频响应
系统的幅度在500Hz时有一个冲击,系统的相位在500Hz时发生翻转。
离散时间系统分析:
(一)实验要求:
1.自行设计某离散时间系统函数,至少是二阶的系统,画出零极点图,判断系统的稳定性。
2.求出单位样值响应,并画出图像。
3.求出系统的幅频响应和相频响应,并画出图形。
(二)程序代码
clearall,closeall,clc;%清屏
%建立一个二阶系统
%系统的差分方程为y(n)-5y(n-1)+0.6y(n-2)=5x(n)+2x(n-1)+x(n-2)
den=[1,5,0.6];%定义左侧系数
num=[5,2,1];%定义右侧系数
t=[-5;0.01;5]';%设置时间范围
sys=tf(num,den);
poles=roots(den)%计算多项式的根
figure;
subplot(2,1,1)
%pzmap(sys);
zplane(num,den,'r');%画出sys所描述系统的零极点图
h=filter(num,den,t);%计算样值响应
subplot(2,1,2)
%plot(h);
impz(num,den);%画出系统的样值响应
figure,freqz(num,den);%计算并画出系统的幅频响应和相频响应
(三)运行结果图像及其分析
零极点图,单位样值响应
建立一个二阶系统,并将它的零极点求出,极点并没有全部在单位圆内,零点都在单位圆内;求出系统的样值响应;画出图像。
在将系统的幅频响应和相频响应做出来。
系统的幅频相频
这是一个带阻滤波器,因为它在零时刻为高,之后为低,然后再为高!
音频加解扰:
(1)实验要求:
利用AM调制解调的基本原理和滤波算法实现音频扰频和解扰功能。
首先对信号频率进行翻转,即将高频信号反转到低频处,将低频信号反转到高频处;然后再通过一个0.2-3.4kHz的带通滤波器进行滤波,其输出信号就是扰频信号。
当扰频信号通过另一个运行同样程序的系统时,该信号就被解扰,恢复为原始可以被接听的语音信号。
1、编写扰频解扰程序,对于语音输入,画出语音信号的频谱、滤波器的响应曲线、扰频信号的频谱,要求扰频输出时能用耳机听到干扰声音。
2、利用扰频解扰程序进行解扰,画出解扰后信号的频谱,要求解扰后能听到恢复的声音。
(二)代码
clear,clc,closeall%清屏
N=40000;%采样点数
n=[0:
N-1];
[x1,fs1,nbits]=wavread('F:
\fmt.wav');%采语音信号
%sound(x1,fs1,nbits);%播放歌曲
x=x1(1:
N);
Ts=1/fs1;%抽样时间间隔
X=fft(x);%傅里叶变换
f=n/N*fs1;%把点数转换成频率
b=abs(X);
subplot(2,1,1);
plot(f,b);
title('语音的幅度谱');
xlabel('频率/Hz');
%翻转频谱
f1=4000;
y=x'.*exp(j*2*pi*f1.*n*Ts);%进行翻转
Y=fft(y);
subplot(2,1,2);
plot(f,abs(Y));%画出翻转后的幅度图
title('翻转后语音的幅度谱');
xlabel('频率/Hz');
%理想滤波器
lv=[ones(1,N/2-313),zeros(1,626),ones(1,N/2-313)];
e=Y.*lv;
figure;
subplot(2,1,1)
plot(f,abs(e));%画出滤波后的幅度谱
title('滤波后的幅度谱');
xlabel('频率/Hz');
%解扰过程
ir=ifft(e);%反傅里叶变换
is=ir.*exp(j*2*pi*f1.*n*Ts);%第二次翻转
ig=fft(is);
subplot(2,1,2);
plot(f,abs(ig))%画出第二次翻转后的频谱
title('恢复后语音的幅度谱');
xlabel('频率/Hz');
%第二次通过滤波器
hi=is.*lv;
smax=max(abs(hi));
hi=hi/smax;
sound(real(hi),fs1,nbits);%播放恢复后的声音
(三)运行结果和图像
图像分析:
首先采集语音信号,对信号幅频进行翻转,即将高频信号反转到低频处,将低频信号反转到高频处;然后再通过一个带通滤波器进行滤波,其输出信号就是扰频信号。
当扰频信号通过另一个运行同样程序的系统时,该信号就被解扰,恢复为原始可以被接听的语音信号。
六.课设心得体会: