目 录
1绪论 - 1 -
2系统分析和开发软件概述 - 6 -
2.1 需求分析 - 6 -
2.2系统开发环境和运行环境 - 6 -
2.3 Matlab图形用户界面(GUI) - 6 -
2.4 系统主要目标及功能 - 7 -
2.4.1 系统目标 - 7 -
2.4.2 系统主要功能 - 8 -
3系统软件平台的设计 10
3.1系统整体框图 10
3.2系统设计步骤 10
3.3系统模块 11
3.3.1模块划分简介 11
3.3.2模块具体设计 11
3.4生成可执行文件 28
4系统测试余分析 30
4.1 测试结果 30
4.2 测试分析 36
5结论 37
致 谢 38
参考文献 39
附录:主要代码 41
2.4 系统主要目标及功能
2.4.1 系统目标
本课题开发目标是利用Matlab软件开发一套集可视化图形与动态仿真为一体的教学演示型软件,主要是面对初学者,用可视化的仿真模拟图形配合老师的讲课内容给大家演示《信号系统》课程中部分信号的传输波形、卷积、傅立叶变换以及滤波器设计等,帮助他们直观、感性地了解和掌握信号系统的概念、基本特征等,深化对通信概念的理解。
2.4.2 系统主要功能
本系统主要功能包括基本序列计算、基本信号产生、卷积、傅立叶变换、滤波器设计。简单基础地涵盖了《信号系统》部分主要章节, 用可视化的仿真模拟图形为大家演示部分基本信号的传输波形和调制变换,部分交互式界面可直接输入合适的值使大家更直观、感性地了解和掌握信号系统的概念、传输性能、基本特征等,为课程的学习打下基础。界面上的文字说明帮助大家了解本图形的特性或功能。整套系统采取图文并茂、循序渐进、从感性到理性的方式,首先让初学者在掌握基本信号模拟和运算。
3系统软件平台的设计
3.1系统整体框图
本实验系统整体结构设计由两部分组成: 界面模块设计和菜单模块设计。其中, 界面模块总共包括八个模块: 开始引导模块、主模块、序列基本计算模块、基本信号的产生模块、卷积模块、傅里叶变换模块、滤波器设计模块和说明模块。一个实验界面模块下面又有下一级实验界面模块, 如滤波器设计模块下面还有 FIR 滤波器设计模块和 IIR滤波器设计模块, 其中 FIR 滤波器模块又包含 FIR 滤波器线性的判断实验界面、窗函数的频率响应实验界面和 FIR 滤波器的设计实验界面; IIR 滤波器模块又包含完全 IIR 滤波器的设计实验界面和典型 IIR 滤波器实验界面; 主界面中还包含了说明模块。在菜单设计时, 在实验子界面中除使用系统约定的菜单条外, 还增加了几个控制背景和退出实验的菜单。
2.4 系统主要目标及功能
2.4.1 系统目标
本课题开发目标是利用Matlab软件开发一套集可视化图形与动态仿真为一体的教学演示型软件,主要是面对初学者,用可视化的仿真模拟图形配合老师的讲课内容给大家演示《信号系统》课程中部分信号的传输波形、卷积、傅立叶变换以及滤波器设计等,帮助他们直观、感性地了解和掌握信号系统的概念、基本特征等,深化对通信概念的理解。
2.4.2 系统主要功能
本系统主要功能包括基本序列计算、基本信号产生、卷积、傅立叶变换、滤波器设计。简单基础地涵盖了《信号系统》部分主要章节, 用可视化的仿真模拟图形为大家演示部分基本信号的传输波形和调制变换,部分交互式界面可直接输入合适的值使大家更直观、感性地了解和掌握信号系统的概念、传输性能、基本特征等,为课程的学习打下基础。界面上的文字说明帮助大家了解本图形的特性或功能。整套系统采取图文并茂、循序渐进、从感性到理性的方式,首先让初学者在掌握基本信号模拟和运算。
t=1/10000:1/10000:3;
s1=sin(2*pi*300*t);
s2=sin(2*pi*500*t);
s3=sin(2*pi*1000*t);
s=s1+s2+s3;
figure(1);
subplot(2,1,1);
ss=fft(s,4096);
SS=(abs(ss(1:1:2049)));
k1=0:2048;
w1=(1/4096)*k1*10000;
plot(w1,SS);grid
title('原信号频谱(3个频率的正弦信号300Hz、500Hz、1000Hz)')
ws1=1000;
wp1=600;wc=5000;
wp=wp1/wc;ws=ws1/wc;
[n,wn]=buttord(wp,ws,1,30);
[b,a]=butter(n,wn);
subplot(2,1,2);
sb=3*filter(b,a,s);
ssb=fft(sb,4096);
SSb=abs(ssb(1:1:2049));
k1=0:2048;
w1=(1/4096)*k1*10000;
plot(w1,SSb);grid
title('经过低通滤波器(通带600Hz,阻带100Hz)后的信号频谱')
ws1=1000;
wp1=600;wc=5000;
wp=wp1/wc;ws=ws1/wc;
[n,wn]=buttord(wp,ws,1,30);
[b,a]=butter(n,wn);
subplot(3,1,2);
sb=3*filter(b,a,s);
ssb=fft(sb,4096);
SSb=abs(ssb(1:1:2049));
k1=0:2048;
w1=(1/4096)*k1*10000;
plot(w1,SSb);grid
title('经过低通滤波器(通带600Hz,阻带100Hz)后的信号频谱')
ws1=[600 1400];
wp1=[980 1020];
wc=5000;wp=wp1/wc;ws=ws1/wc;
[n,wn]=cheblord(wp,ws,4,45,'s');
[bd,ad]=cheby1(n,4,wn,'bandpass');
subplot(3,1,3);sd=3*filter(bd,ad,s);
k1=0:2048;w1=(1/4096)*k1*10000;
ssd=fft(sd,4096);SSd=abs(ssd(1:1:2049));
plot(w1,SSd);grid
title('')
figure(2)
freqz=(b,a,4096,10000);axis([0,4000,-70,1]);
figure(3)
freqz(bd,ad,4096,10000);axis([0,4000,-70,1]);
sound(s,10000);pauss(5);
sound(sb,10000);pauss(5);
sound(sd,10000);
figure('units','normalized',...
'position',[0.4 0.4 0.4 0.3]);
h=uicontrol('Style','Text','Fontsize',26);
string={'我们可以联想到系统函数',...
'H(s)=Y(s)/F(s)',...
'在时域内则是卷积形式',...
'y(s)=h(s)*f(s)'};
[outstring,newpos]=textwrap(h,string);
set(h,'String',outstring,'Position',newpos);