免费预览已结束,剩余68页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
毕业论文题目(信号与系统教学实验辅助软件的设计)1 课题研究背景“信号与线性系统”是电类各专业本科生的一门重要的专业基础课, 也是电子信息类研究生入学考试科目。该课程一方面以“高等数学”,“工程数学”及“电路理论”等课程为基础, 同时又是后继的“数字信号处理”、“通信原理”和“自动控制原理”等专业课程的基础, 在教学环节中起着承上启下的作用1。该课程理论性较强且具一定的实践性, 其基本方法和原理广泛应用于信号处理和系统分析的各个领域。随着近几年对大学生素质要求的提高单纯的理论教学已远远不能现在教学任务的需要,试验教学的地位显示出越来越重要的地位,以前也没有对“信号与线性系统”教学实验教学辅助软件,在这种形似下开发一种教学实验软件是十分必要的,经我院信号教研室的老师研究决定把该课题的研发工作列为今年毕业设计之列,希望通过老师和学生的共同努力来完成这一课题。 “信号与线性系统”课程所用数学工具较多, 因为其核心内容就是三大变换, 即傅里叶变换、卷积计算和z 变换, 而物理概念往往来源于复杂的数学运算及推导, 这就导致学生将大量的时间用于数学运算, 所以学生在学习的过程中感到大部分时间是在学数学, 而未真正理解最本质的物理意义。为了减轻学生在数学运算上的负担, 使学生把注意力集中到对课程最本质的概念和方法的把握上, 我们初步决定利用研制可用于教学和实验的软件系统, 用直观的形式把结果显示出来2。我们设想用一种可视语言设计界面用一种计算能力强的软件来完成后台的计算工作,matlab 现已成为计算机辅助分析和仿真分析中的重要分析软件,并逐步成为工科研究生必须掌握的基本工具语言。matlab也存在自身的缺陷,如只提供c 和fortran 3语言使用的编程接口无法在vb、vc 中直接调用,编写可视化界面的能力弱等。这就给开发带来了一定的困难但经过研究这一课题的同学和老师努力和探讨这一问题最终得以解决下面我们将在各章中详细的讨论该课题的实现以及在设计过程中所遇到的困难和解决方案以及该设计的不足与改进方案。2 方案论证 经讨论决定用vb设计界面,在vb环境下输入数据后台的计算工作由matlab来完成。vb是1991年microsoft 公司推出了windows应用程序开发工具v isualbasic。v isual 意为“可视化的” 4, 指的是一种开发图形用户界面(gui) 的方法, 所以visual basic 是基于basic的可视化的程序设计语言5。在visualbasic 中, 既继承了先辈basic 所具有的程序设计简单易用的特点, 其编程系统又采用了面向对象6, 事件驱动的编程机制, 用一种巧妙的方法w indows 的编程复杂性封装起来7, 提供了一种所见即所得的可视界面设计方法8, 给广大的用户学习、使用、研究和开发windows 环境下的应用程序带了福音。在此有两个问题:(1):如何在vb环境下实现对matlab程序的调用9;(2):但matlab也存在自身的缺陷,如只提供c 和fortran 语言使用的编程接口没有vb的编程接口如何实现两种语言的数据交换呢!2.1:如何在vb下进行matlab的调用 经翻阅大量的资料发现能实现调用的方法用一下几种: (1):采用动态链接库dll 方法10 (2):采用动态数据交换dee 方法11 (3):采用activex 自动化技术122.1.1 动态链接库dll 方法在介绍这种方法前我们首先引入一种软件matcom,matcom 是一个从ma tlab 到c+的编译器, 它可以节省用户的运算时间和内存要求。math tools 公司利用matcom4 技术编写了mideva 工具软件, 它可以借用c+编译器将matlab下的m - 文件转换为可被vb调用的dll或独立便可执行文件。vb 中要使用dll , 必须vb 工程中包含dll 的声明文件(即模块文件) , 同时还要将dll 放在工程文件所在的目录下。在使用前先安装matcom (安装方法查附录)如下操作可以一个m - 文件编译成dll,启动matcom4的mideva, 点菜单file/compile, 选要转换的m - 文件应该是能作为函数被其他集城环境调用的m-文件, 设文件名为(myfile)。编译完成后, 在对应的debug 或release 目录下, 可以找到一些编译生成的文件如要编译hwplot.m文件成dll文件则启动maths tools4.5/mideva界面如下图2-1所示:图2-1:mideva界面然后单击file/compile to dll在对话框中选择browse在路径中找到你所要编辑的文件单击“ok”即可界面如下图2-2所示:图2-2:编辑界面图完成后在对应的debug 或release 目录下即可找到.dll,.bas,.cls文件13。vb 中调用dll 实际是调用和hwplot.cls 接口,然后通过该接口实现调用system 目录下的dll,这是mideva4.5 新增加的功能,以前在要调用dll ,必须通过矩阵句柄进行,很不方便准备工作很简单,只需将hwplot.bas 和hwplot.cls 文件以模块和类模块的形式加入到vb当前工程,除此之外还要在vb所建的工程中引用一个动态连接库即可把hwplot.bas文件当作vb的一个公用模块直接调用14。2.1.2 采用动态数据交换dee 方法matlab 提供客户服务器功能vb 应用程序作为系统工程, 用m altab 作为后台应用程序完成简明复杂计算任务与绘画功能,maltab与vb应用程序间通过dde 协议进行数据交换,dde (dynamic data exchange) 是一种开放的、与语言无关的、基于消息的协议, 是应用程序通过共享内存进行进程通信的一种方式。vb 应用程序首先通过确定服务器名和主题( topic) 建立与matlab 的dde会话15。服务器名和主题惟一地确定作为客户端,m altab作为服务端,客户端与服务器端可以就确定的项目( item ) 交换数据。关于vb与dde功能可以参考文献。vb应用程序中需要指明的matlab的服务器为maltab,matlab 有system 和engine 两个主题,在system 主题下可以列出ma tlab 所提供的详细的dde 功能,在engine 主题下可以充分实现ma tlab 的服务功能。利用vb 具有的dde 客房端功能, 使用ma tlab 的engine 主题支持的三种操作,vb应用程序可以向matlab传送可执行命令,从matlab中读取数据以及向matlab中传送数据。vb 为用户提供支持通信的控件有: 窗体( form )、多文档窗体(md i form )、标签(l abel)、文本框(text box) 和图片框(p icture box)。form 相应于dde 协议, 这些控件提供了完成任务一次dde链接需要的属性和事件, 以及设置必要参数和响应dde 过程中的事件。服务器应用程序开发涉及到的主要属性如下:(1)l ink mode: 对于一个v isual basic 程序来说, 作为一个服务器程序和作为一个客户程序时,它们的l inkmode属性的取值是不一样的。当一个程序visual basic作为服务程序时,l ink mode 属性只是指针form 的, 它的取值为“1source”. 此时, 这个form 中的p icture box 控件、text box 控件和l abel 控件就可以作为客户程序的信息源15。(2)l ink topic: 如同l inkmode 属性一样。对于服务器程序和客房程序来说, 属性有不同的意义。l ink topic 属性是针对form 的, 用户可以将服务器程序中的form 的属性设置为任何一个名字, 该名字在客户应用程序中使用16。(3)l ink item: 是指通过一个dde 链接传输的数据容器, 它是标签(l abel)、文本框(text box) 和图片框(p icture box) 的名称。下面以一个具体的例子来说明该项方法:在vb 主窗体中设置text1、text2 两个文本框, 当text1 的内容有变化, 则x 矩阵获得变化后的数据, 而后在函数myfunc 中进行矩阵相乘运算,并把结果返回至text2 控件中。在实际应用中,my2func 函数可以是任意复杂的数据处理函数和控制算法函数17。程序清单:channel= ddeinit (server,dde) ;rc= ddeadv (channel,text,myfunc,x ,1, 0 ) ;pause;rc= ddeunadv (channel,text1, 1, 0 ) ;rc= ddeterm (channel) ;其中myfunc 为自定义的matlab 函数:function ymyfunc (x3 x) ;rc= ddepoke (channel, y, 1, 0 ) ;注意: 利用动态数据交换调用ma tlab 时,ma tlab 的命令窗口必须在建立dde 会话之前已经运行。2.1.3 采用activex 自动化技术activex 自动化(ole自动化) 协议是一种允许一个应用程序(控制端) 去控制另一个应用程序的协议。由于vb 支持activex 自动化控制端协议,ma tlab 支持a ctivex 自动化服务器协议, 如果已经建立了一个vb 应用程序和matlab之间的activex 自动化连接, 那么一个vb 应用程序中就可以调用matlab的命令向matlab传送或从matlab接收矩阵数组。在vb 应用程序中创建matlab的activex 对象以后可以使用这个对象所包含的各种方法来实现对matlab的调用。matlab application 对象含有3 个方法, 可以实现决定matlab 的功能。现简单介绍它们的用法:(1) execute (command as string) 方法: 执行本方法将调用ma tlab 执行一条command 字符串决定的ma tlab 命令, 同时返回一条字符串表示命令的执行情况。任何能在ma tlab 命令行窗口执行的命令均可以被包括在command 字符串中17。(2) getfull m atrix 方法: 该方法用来将ma t2lab 中的一个矩阵变量传送到vb 程序的一个一维数组或二维数组中。(3) putfull matrix 方法: 该项方法是将vb 程序中的一个一维数组或二维数组传送至matlab中的一个矩阵变量中。(4)void minimize command window ( ) 方法:该方法用ma tlab 使命令行窗口最小化, 具体调用如下: call matlab minimize command window ().(5)void maximize command window () 方法: :该方法用ma tlab 使命令行窗口最大化, 具体调用如下: call matlab maximize command window ().下面用具体例子说明如何使用该方法18。在以后的阐述中我们采用的是第一种方法即execute(command as string)方法实现(在第四章中将有详细介绍)在此不在一一骜述。2.2 vb与matlab的数据交换vb与matlab实现数据交换的方法很多常见的有execute (command as string),void maximize command window (),putfull matrix,void minimize command window ( ) ,getfull m atrix几种函数实现方法但这些实现都过于的繁琐,我经过翻阅大量的资料查阅了一些书终于发现利用读写文件去控制信号某一参量的变化简单快捷具体实现方法如下:如参数由文本框输入后,由vb程序传递到matlab中进行相应的设计。这时可采用如下文件操作来完成:在vb中利用文件操作语句将需要传递到matlab中的参数存到文件中(如d:dat.txt),在matlab中再利用文件操作语句将所需参数读入后进行相关的设计(具体操作见设计示例)19。启动vb新建一个工程新加一个form1窗体添加三个标签label 1- label 3分别通过修改label属性命名为“请输入数据”和三个text1-text3三个文本框通过修改text属性命名为“”和两个按钮button1-button2 两个命令按钮通过修改caption属性命名为“计算”和“退出” 具体界面如下图2-3所示2-3:数据交换界面图双击界面上的任一控件或单击工具栏上的“视图”选择“代码窗口”会弹出代码编辑窗口输入控件代码:dim matlab as objectprivate sub command1_click()unload meform2.check1.value = 0end subprivate sub command2_click()dim x as stringdim y as stringx = text2.texty = text3.textfhnd1 = freefileopen d:/pnum.txt for output as #fhnd1print #fhnd1, xclose #fhnd1fhnd2 = freefileopen d:/pden.txt for output as #fhnd2print #fhnd2, yclose #fhnd2set matlab = createobject(matlab.application)label4.caption = matlab.execute(text1.text)end sub然后修改text1的multiline属性为“true”使文本框变为可变行输入的形式把已编写好的matlab程序通过text1的text属性粘贴到文本框中如2-4图所示:2-4:数据交换图运行结果如2-5所示:2-5:运行结果由此可见在vb环境下输入的34和5可以成功的完成数据交换和显示,用此办法来进行控制信号某一参数的变化效率很高是此项设计进行数据交换的最佳选择。2.3:设计方案的总框架 经过上述讨论设计中所遇到的问题都得到解决,此项设计的总体设计思想为:通过matlab的外部接口,以vb作为前台,matlab作为后台,实现vb与matlab的混合编程。在设计过程中我们设计两个小系统一是:单纯的演示系统;二是:试验教学辅助系统;下面我们分别讨论两个系统的总体框架。2.3.1:采用动态连接库实现试验演示系统结构和框图此系统的最大优点是可以脱离matlab运行环境独立运行系统结构界面为:2-6:演示系统界面结构图例如进行单位脉冲序列的演示单击“文件/选择”然后单击界面上的“选择”按钮这时“单位脉冲序列生成”别选中在单击“文件/运行”就会出现如2-6所示的运行结果。2-7:单位脉冲序列生成运行结果2.3.2 采用activex 自动化技术实现实验教学辅助系统结构图此系统的最大优点是可以对输入信号的某一参数通过数据通信进行控制而且系统所执行的matlab程序可读性强有利于老师应用于教学系统结构界面为:2-8:试验教学辅助系统结构图假如要完成离散基本信号的生成选中“成离散基本信号的生成”会弹出下图界面2-9:离散信号界面图输入12和4两位数单击计算按钮与行结果如下:2-10:离散信号运行结果3 采用动态连接库实现实验演示系统设计上一章我们详细叙述了系统的设计方案下面我们来详细讨论一下此设计各项功能实现的具体过程。3.1 工程界面的设计运行vb新建一个窗体form1单击“工具/菜单编辑器”弹出菜单编辑器对话框如图3-1所示3-1:建立菜单界面在标题栏中键入“文件”名称栏中键入”munfile” 然后点击“下一个”按钮键入在标题栏中键入“选择”名称栏中键入“munfselect” 并设为二级菜单,如此键入“运行”“munfrun” ,”退出“”quit”,然后单击ok即可。在form1窗体中添加check1-check10 十个复选框;command1-command20二十个命令按钮;一个text1一个文本框,一个标签label1和一个timer控件排列好后如3-2所示3-2:添加控件框图并通过修改caption属性分别把十个复选分别命名为:绘图函数hnwplot ;单位脉冲序列生成函数;卷积演示;离散信号matlab表述方法;时域离散系统线性性质验证;二阶巴特沃斯低通滤波器的频率响应;序列x(n)的移位与周期延拓;fir数字滤波器;离散时间傅立叶变换;z变换;把text1通过修改text属性命名为“试验演示小系统;把前十个命令按钮通过修改相同的的属性命名为“选择”,后十个命名为“清除”label1通过修改相同的属性为空形成如图3-3所示的图样。3-3:form1窗体界面在此工程完成的功能只是试验的演示因此不发生数据传递,函数中要把所有的变量赋值传递和返回的值都是空值。把编写的matlab源程序文件名分别为btws.m、conv1.m、fir.m、fly.m、hnwplot.m、impseq.m、lisan.m、zbh.m、zqyt.m、syyz.m如2.1.1所述用matcom进行转换在c:/matcom4.5/release路径下找: btws.bas、btws.cls、hnwplot.bas、btws.dll、hnwplot.cls、hnwplot.dll、conv1.bas、co_nv1.cls、conv1.dll、conv1.bas、conv1.cls、conv1.dll、fir.bas、fir.cls、fir.dll、fly.bas、fly.cls、fly.dll、impseq.bas、impseq.cls、impseq.dll、lisan.bas、lisan.cls、lisan.dll、zbh.bas、zbh.cls、zbh.dll、zqyt.bas、zqyt.cls、zqyt.dll、syyz.bas、syyz.cls、syyz.dll文档复制到当前工程所在的目录下分别以添加模块和添加类模块的添加当前的工程中点击“工程/添加模块”会弹出如3-4下对话框然选择现存若是新建的话就选择“新建”在这里我们添加现存的后选中你要添加的模块点击“打开”即可20。3-4:添加模块对话框添加类模块大致相同点击“ 工程/添加类模块“会弹出如3-5所示的选择现存点击你所要添加的类模块点击“打开”即可。3-5:添加类模块对话框把上面所述的.bas和.cls文件分别加入到工程中加完后如下图3-6所示3-6 添加模块后工程截面图将须将支持的库文件拷贝到系统所在的目录下包括mmatrix.dll、v4500v.dll ago4500.dll、c4500v.dll、 msvcrt.dll由于mmatrix.dll是com服务器所以必须在操作系统中注册方可使用注册时可使用 如下命令语句:regsvr32 mmatrix.dll,为发挥mmatrix.dll的作用须在新建的工程中引用它即点击”project 工程/reference引用”是引入到工程中则可在编程中直接调用模块具体如下图所示:3-6:引用mmatrix.dll示意图点击“ok”即完成引用。这样前期工作都全部完成在接下来的编程中就可以对模块进行直接的引用。3.2 vb调用程序的编写双击3-6所示的任意控件或单击工程中的“视图/代码窗口”打开编程窗口如3-7所示3-7:代码窗口图窗口左边的下拉单中选择你所要编辑代码的控件,右边下拉单中选择的是触发“事件”的条件程序代码见附录一。“实验演示小系统”设计到此完成,它的缺点在于只是单纯的演示而无法进行对信号某一参量进行控制。在第四章中我们将详细讨论能实现参数控制教学辅助系统的设计。4 信号与线性系统实验辅助系统的设计上一章我们设计了采用动态连接库实现了一些在信号与系统教学中常用实验的演示,这一章我们将重点讨论基于activex自动化服务技术的实验辅助系统的设计。activex部件是microsoft公司提供的一种用于模块集成的新协议,它是visual basic 工具箱的扩充部分。activex 部件是一些遵循activex 规范编写的可执行代码,比如一个. exe,. dll 或.ocx 文件。在程序中加入a ct ivex 部件后, 它将成为开发和运行环境的一部分, 并为应用程序提供新的功能。activex 部件保留了一些普通vb 控件的属性、事件和方法。activex 部件特有的方法和属性大大地增强了程序设计者的能力和灵活性。a ct ivex 实际上是在调用一种部件,而无需要求该部件对应的程序正在运行, 这会使得其功能更加强大,下面我们来详细介绍该系统的设计过程21。4.1 利用vb设计系统界面4.1.1 进入系统窗体设计利用第三章方法所述新建一个工程,新添加一个窗体form24在窗体中添加两个标签label1label2 ,一个timer1,image1控件,按下表一设置控件属性:表一:form24窗体控件清单双击窗体的任意控件打开代码窗口键入以下代码:option explicitdim i as longprivate sub form_load()timer1.enabled = trueme.timer1.interval = 10 label2.caption = 指导老师:任景英 + vbcrlf + 设计人:李朋宾* 褚博 me.label1.autosize = true me.label1.left = -me.label1.width i = -me.label1.widthend subprivate sub image1_click()form1.showunload meend subprivate sub timer1_timer() i = i + 50 me.label1.move i, (me.height - me.label1.height * 2) / 3 if i = (me.width - me.label1.width) / 2 then timer1.enabled = false end ifend sub运行效果图如下所示: 4-1:进入系统界面运行效果图4.1.2 主窗体的设计新添加一窗体在界面中添加check1check6六个复选框,一个文本框text1,一个标签label1和一个时钟控件timer1,通过修改caption属性把六个复选框依次命名为:频譜图绘制,基本离散信号生成,基本连续信号生成,序列的基本运算,常用的变换,常见滤波器,点击复选框1的font属性如图4-2所示对其所名字的字体进行修改为“粗体”“小二号”点击“确定”即可,把txet1命名为“实验教学辅助系统” ;label1命名为“空”并进行如上所述同样的字体修改排列好其位置如图4-3所示4-2:font属性修改对话框4-3:主界面图图4-3显得有些单调我们可以添加一幅图画作为背景点击form1的picture属性弹出下列如图4-4所示对话框通过对其路径的选择找到你所要添加的图片选中后点击“打开”即可,到此主窗体设计完成如图4-5所示。4-4:加载图片对话框4-5:主窗体图4.2 频谱图绘制4.2.1 幅频特性绘制 点击“工程/添加窗体”弹出如下4-6的对话框然后单击“打开”即完成窗体添加,在窗体中添加两个复选框分别命名为:幅频特性绘制,h(n),|h(ejw)|计算与绘图函数hnwplot;再添加一个命令按钮命名为:“退出”,修改字体为适当的大小然后再导入背景图排列好次序即为4-7图所示4-6:添加窗体对话框4-7:频譜图绘制窗体下的一级子窗体图后述添加子窗体的方法也是如此因此我们就不一一叙述,为简明采用把每个窗体上的控件的名称和使用的非默认状态下的属性以表格的形式表述出来,你选中4-7窗体上名为“相频特性绘制”时会弹出如下窗体(4-8所示)4-8:幅频特性绘制框图在添加窗体后在窗体中添加三个标签label1label3,三个个文本框text1text3 ,两个命令按钮command1 command2详细信息如下表格二所示表二:控件表把所要执行的matlab源程序通过text1的text属性文本的方式显示出来这样有利于程序的可读性,双击4-7所示的任意控件打开代码窗口进行程序编写:dim matlab as object;此句通过activex把matlab当作vb一个对象可以调用窗体卸载程序:private sub command1_click()unload meform2.check2.value = 0end sub完成matlab数据交换和调用的核心程序22private sub command2_click()dim x as stringdim y as stringdim a, b as stringx = text2.texty = text3.textfhnd1 = freefileopen d:/pnum.txt for output as #fhnd1print #fhnd1, xclose #fhnd1fhnd2 = freefileopen d:/pden.txt for output as #fhnd2print #fhnd2, yclose #fhnd2set matlab = createobject(matlab.application)label3.caption = matlab.execute(text1.text)end sub4.2.2 幅频特性绘制新添加一窗体单击图4-7 check2控件弹出新添加的窗体,双击check2查看完成成这一调用的代码:private sub check1_click()if form2.check1.value = 1 thenform12.visible = true;end if;end sub在添加窗体后在窗体中添加三个标签label1label3,三个个文本框text1text3 ,两个命令按钮command1 command2详细信息如上图表格一一样界面如4-9示。4-9:h(n),|h(ejw)|计算与绘图函数hnwplot界面输入13和1后点击计算可出现如下图4-10运行结果:4-10:运行结果效果图4.3 基本离散信号生成界面设计与功能实现点击4-5图所示的“基本离散信号生成”复选框弹出如下界面4-11所示完成这一功能的vb程序为该复选框的click事件:private sub check6_click()if check6.value = 1 thenform7.visible = trueend ifend sub4-11基本离散信号生成界面图其它部分与完成 “幅频特性绘制”功能设计相同所用控件也与表一所述相同,在以后各界面建立及功能实现过程中若不再作出特别的强调则与建立“幅频特性绘制”界面时相同实现的功能的核心程序也相同各控件的属性也以表一为基准。在4-11界面中分别输入10和5点击“计算”按钮时运行结果图如4-12所示。从图中可以清楚的看到两个数据一个控制的是信号发生跳变的数据一个控制的是横坐标的范围。4-12:运行结果图4.4 基本连续信号生成窗体设计与功能实现新添加一窗体双击4-5中 “基本连续信号生成“复选框添加如下程序:private sub check3_click()if check3.value = 1 thenform4.visible = trueend ifend sub就可以实现新添加窗体与主窗体的连接。label1label3,三个个文本框text1text3 ,两个命令按钮command1 command2详细信息如上图表格一一样界面如4-13示。若在下列界面中输入10和4两个数点击“计算”按钮可以得到如下图4-14所述的结果图。4-13:基本连续信号生成界面图4-14:运行效果图4.5 序列基本运算窗体设计及功能的实现新添加一窗体,双击4-1所示的“check5”复选框在代码窗中添加如下代码:private sub check3_click()if check5.value = 1 thenform5.visible = trueend ifend sub这一代码完成的是当单击“check5”时弹出form5窗体在该窗体中添加check1 check4和一个command1命令按钮各控件的属性如下表三所示排列好顺序后窗体如4-15所示:表三:控件明细表4-15:序列其本运算窗体4.5.1 多项式补零相加新添加一窗体“form13”双击4-15图所示“多项式补零相加”在代码窗体中添加private sub check1_click()if vorm5.check5.value = 1 thenform13.visible = trueend ifend sub在添加窗体后在窗体中添加三个标签label1label3,三个个文本框text1text3 ,两个命令按钮command1 command2详细信息如前文表格一所示;排列好各控件的位置后输入数点击“计算”按钮窗体如下4-16所示: 4-16:序列补零相加窗体和运行结果效果图4.5.2 离散信号的移位,相加和相乘新添加一窗体“form15”双击4-15图所示“离散信号的移位,相加和相乘”在代码窗体中添加private sub check2_click()if form5.check2.value = 1 thenform15.visible = trueend ifend sub在添加窗体后在窗体中添加三个标签label1label3,三个个文本框text1text3 ,两个命令按钮command1 command2详细信息如前文表格一所示;排列好各控件的位置后窗体如下4-17所示:4-17:离散信号的移位,相加和相乘窗体图输入10和5点击“计算”按钮后运算结果如下4-18所示:4-18:运行效果图4.5.3序列基本变换新添加一窗体“form14”双击4-15图所示“序列基本变换”在代码窗体中添加private sub check3_click()if form5.check3.value = 1 thenform14.visible = trueend ifend sub在添加窗体后在窗体中添加三个标签label1label3,三个个文本框text1 ,两个命令按钮command1 command2详细信息如下表格四所示;排列好各控件的位置后按前文所述添加matlab源程序输入数据点击“计算”按钮后结果及窗体如下4-19所示:表四:form14窗体控件明细表因为通过读写文件不能进行矩阵的交互而矩阵的计算也非信号所以在此设计就不进行数据交换了,即使设计成可以发生数据交换的也没什么实际的意义在此希望读者能明白。4-19:序列基本变换窗体及运行效果图4.5.4 序列x(n)的移位和周期延拓新添加一窗体“form16”双击4-15图所示“序列x(n)的移位和周期延拓”在代码窗体中添加private sub check4_click()if form5.check4.value = 1 thenform16.visible = trueend ifend sub在添加窗体后在窗体中添加三个标签label1label3,四个个文本框text1text4,两个命令按钮command1 command2详细信息如下表格四所示;排列好各控件的位置后按前文所述添加matlab源程序输入数据点击“计算”按钮后结果及窗体如下4-20所示:表四:form16控件明细表4-20:序列x(n)的移位和周期延拓框图输入10和5两个数据点击“计算”按钮运行结果如下图4-21所示:4-21:序列x(n)的移位和周期延拓运行效果图4.6:一些常用变换新添加一窗体,双击4-1所示的“check5”复选框在代码窗中添加如下代码:private sub check5_click()if check5.value = 1 thenform10.visible = trueend ifend sub这一代码完成的是当单击“check5”时弹出form5窗体在该窗体中添加check1 check6具体属性与名称如下表格五所示排列好各控件的位置后窗体如下4-22所示表五: form10控件明细表4-22:常用变换窗体4.6.1 任意长度序列卷积演示添加一新窗体“form8”双击4-22所示 “任意长度序列卷积演示”复选框在代码窗中填写运行form8的代码如下:private sub check1_click()if form10. check1.value = 1 thenform8.visible = trueend ifend sub在添加窗体后在窗体中添加三个标签label1label3,三个个文本框text1text3 ,两个命令按钮command1 command2详细信息如上文表格一所示,排列好个控件的位置把matlab源程序填写到text1中窗体如下4-23所示 :4-23:任意长度序列卷积演示窗体界面运行工程后输入10和5两个数点击“计算”按钮运行结果如下图4-24所示4-24:任意长度序列卷积演示窗体运行效果4.6.2 卷积积分计算双击4-22所示 “卷积积分计算”复选框在代码窗中填写运行form8的代码如下:private sub check2_click()if form10. check2.value = 1 thenform6.visible = trueend ifend sub新添加窗体form6 在添加窗体后在窗体中添加三个标签label1label3,三个个文本框text1text3 ,两个命令按钮command1 command2详细信息如上文表格一所示,排列好个控件的位置把matlab源程序填写到text1中窗体如下4-24所示4-24:卷积积分计算界面窗口输入10和5两数据点击“计算”按钮后运行结果如4-25所示:4-25:卷积积分计算运行效果图4.6.3 序列卷积运算双击4-22所示 “序列卷积运算”复选框在代码窗中填写运行form8的代码如下:private sub check3_click()if form10. check3.value = 1 thenform7.visible = trueend ifend sub新添加窗体form6 在添加窗体后在窗体中添加三个标签label1label3,三个个文本框text1text3 ,两个命令按钮command1 command2详细信息如上文表格一所示,排列好个控件的位置把matlab源程序填写到text1中窗体如下4-26所示4-26:序列卷积运算窗体图输入10和5两数运行结果如4-27所示:4-27:序列卷积运算运行效果图4.6.4 计算z变换双击4-22所示 “计算z变换”复选框在代码窗中填写运行form17的代码如下:private sub check4_click()if form10. check4.value = 1 thenform17.visible = trueend ifend sub新添加窗体form17 在添加窗体后在窗体中添加三个标签label1label3,三个个文本框text1text3 ,两个命令按钮command1 command2详细信息如上文表格一所示,排列好个控件的位置把matlab源程序填写到text1中窗体输入上述数之后运行结果如下4-27所示:4-27:计算z变换运行效果图4.6.5 傅立叶变换双击4-22所示 “傅立叶变换”复选框在代码窗中填写运行form8的代码如下:private sub check5_click()if form10. check5.value = 1 thenform18.visible = trueend ifend sub新添加窗体form18 在添加窗体后在窗体中添加三个标签label1label3,三个个文本框text1text3 ,两个命令按钮command1 command2详细信息如上文表格一所示,排列好个控件的位置把matlab源程序填写到text1中输入窗体所示两数据点击“计算”按钮运行效果图如4-28和4-29所示23:4-28:傅立叶变换窗体效果图4-29:运行结果效果图4.6.6 时域离散系统线性性质验证双击4-22所示 “时域离散系统线性性质验证”复选框在代码窗中填写运行form8的代码如下:private sub check6_click()if form10. check6.value = 1 thenform9.visible = trueend ifend sub新添加窗体form9 在添加窗体后在窗体中添加三个标签label1label3,三个个文本框text1text3 ,两个命令按钮command1 command2详细信息如上文表格一所示,排列好个控件的位置把matlab源程序填写到text1中输入窗体所示两数据点击“计算”按钮运行效果图如4-30和4-31所示:4-30:时域离散系统线性性质验证窗体图4-31:时域离散系统线性性质验证运行效果图4.7 常见滤波器设计新添加一窗体form19,双击4-2所示的“check6”复选框在代码窗中添加如下代码:private sub check6_click()if check6.value = 1 thenform119.visible = trueend ifend sub这一代码完成的是当单击“check5”时弹出form5窗体在该窗体中添加check1 check6具体属性与名称如下表格六所示排列好各控件的位置后窗体如下4-32所示表六:form19控件明细表4-32:常见滤波器设计窗体效果图4.7.1 二阶巴特沃斯低通滤波器的频率响应双击4-32所示 “二阶巴特沃斯低通滤波器的频率响应”复选框在代码窗中填写运行form19的代码如下:private sub check1_click()if form19. check1.value = 1 thenform20.visible = trueend ifend sub新添加窗体form20 在添加窗体后在窗体中添加三个标签label1label3,二个个文本框text1text2 ,两个命令按钮command1 command2详细信息如上文表格七所示,排列好个控件的位置把matlab源程序填写到text1中输入窗体所示数据点击“计算”按钮运行效果图如4-33和4-34所示:表七:form20控件明细4-33:二阶巴特沃斯低通滤波器的频率响应窗体图4-34:二阶巴特沃斯低通滤波器的频率响应运行效果图4.7.2 用各种窗函数实现fir数字滤波器双击4-32所示 “用各种窗函数实现fir数字滤波器”复选框在代码窗中填写运行form19的代码如下:private sub check1_click()if form19. check1.value = 1 thenform22.visible = trueend ifend sub新添加窗体form22 在添加窗体后在窗体中添加三个标签label1label3,二个个文本框text1text2 ,两个命令按钮command1 command2详细信息如上文表格七所示,排列好个控件的位置把matlab源程序填写到text1中输入窗体所示数据点击“计算”按钮运行效果图如4-34和4-35所示:4-34:用各种窗函数实现fir数字滤波器窗口效果图4-35:用各种窗函数实现fir数字滤波器运行效果4.7.3 梳妆滤波器幅频特性及极点位置双击4-32所示 “梳妆滤波器幅频特性及极点位置”复选框在代码窗中填写运行form19的代码如下:private sub check1_click()if form19. check1.value = 1 thenform21.visible = trueend ifend sub新添加窗体form21 在添加窗体后在窗体中添加三个标签label1label3,二个个文本框text1text2 ,两个命令按钮command1 command2
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2023年银川辅警招聘考试题库附答案详解(研优卷)
- 2023年阿里辅警招聘考试题库含答案详解(b卷)
- 2024年北海辅警招聘考试真题含答案详解(黄金题型)
- 2024年天水辅警招聘考试题库附答案详解(夺分金卷)
- 安徽定远县炉桥中学2025年数学高二上期末达标检测模拟试题含解析
- 河北省郑口中学2026届化学高二第一学期期末考试试题含解析
- 2025-2026学年上海市同济大学附属七一中学数学高二上期末质量跟踪监视试题含解析
- 福建省宁德市福安第六中学2025年高二上生物期末调研模拟试题含解析
- 荆门职业学院《房地产开发与经营》2024-2025学年第一学期期末试卷
- 2025年河北省武邑中学高二上化学期末质量检测模拟试题含解析
- 抵押过户借款合同范本
- 2025年学位英语历年试题及答案
- 水文地质学基础试题库及参考答案
- 医院培训课件:《心肺复苏 (CPR)》
- 第42讲 电场能的性质-(原卷版)
- 【2025年】江苏省宿迁市辅警协警笔试笔试真题(含答案)
- 生产工艺基础知识培训课件
- 2026国家能源集团新能源院校园招聘备考考试题库附答案解析
- 汽配安全生产培训内容课件
- 2025版《煤矿安全规程》权威逐条解读第五编职业病危害防治
- 胆管癌指南解读
评论
0/150
提交评论