1、其中,Matlab的主要特点是,它的一套工具箱在滤波器的设计中都可以使用。不足的是,使用这些工具箱,需要相当长的时间去掌握它们,新手才能使用它们。更重要的是,Matlab不善于开发接口。相反,VB中有一个友好的设计用户界面和开发应用程序,但它不能够计算,尤其是在数字滤波器的设计中。因此,如果我们能够在开发的过程中,利用Matlab做计算和数据图形显示的工作,并用VB写的Windows应用程序和分析计算结果,集成VB和Matlab各自的优点,将很大的提高开发效率。本文的结构如下:在第二节中,我们将用VB和Matlab引入混合编程,这是基于COM(组件对象模型)的方法;在第三节中我们将展示使用的方
2、法,设计几种不同类型的滤波器,如巴特沃斯滤波器,切比雪夫I型和II型滤波器等;在第四节中,我们将使用信号来检验设计的滤波器的效果。2. 混合编程的实现方法 在如何解决与其他应用程序交互的问题,2002年, Mathworks公司带来了MATLAB 6.5,其中的COM生成器模块增加了,在COM Builder提供了一个易于使用的图形用户界面,帮助用户将M文件自动快速转换成独立的COM组件。COM组件保存为. DLL(ActiveX DLL )的形式,并且可以使用支持COM组件的应用程序,例如,Visual Basic 、 Microsoft Excel、 C / C + +等。它的优点是在VB
3、调用COM组件时,可以以最快的速度得到,因为它没有必要进行环境切换。一个项目包含了所有必要的元素使用COM来构建一个可部署的应用程序.COM Builder组件是通过Visual Basic ,C + + ,或任何支持COM的其他语言对COM对象的访问。COM是组件对象模型的一个缩写,它是微软的对象互操作性二进制标准。每个COM对象公开一个或多个类的Visual Basic编程环境。每个类都包含了一组函数调用的方法,对应于包括在该组件项目的MATLAB函数。创建一个组件时,你必须另外提供一个或多个类名。组件名称表示要创建的DLL文件的名称。类名表示,在运行时执行一个特定的方法时调用的类的名称。
4、组件名和类名,以及各种方法(MATLAB函数)之间的关系进入一个特定的类,是纯粹的组织。作为一般规则,编制许多MATLAB函数时,它有助于确定函数类的方案,并创建一个单独的类。每个类的名称应该是描述性的类功能。2.1. 在Matlab中创建COM组件因为不是所有的编译器都能产生微软兼容的COM对象,COM生成器仅支持这些编译器的选择: Borland C+ + Builder 4, Borland C+ + Builder 5, Borland C+ + Builder 6,微软的Visual Studio5.0,微软的Visual Studio6.0,微软的Visual S。选择安装上述六个
5、编译器之一后,您必须运行matlab编译MyWibes支持工具以及设置参数。利用Matlab的COM Builder创建一个COM组件是一个需要四个简单步骤的过程.创建项目:要开始创建项目,在命令行中输入MATLAB命令comtool。出现了Matlab生成器窗口。选择:文件新建项目,在这个窗口来查看新的项目设置对话框。组件名称表示以后在构建过程中创建的DLL名称。当您输入组件名称时,图形用户界面会自动进入一个类名相同的组件。你可以改变类的名称更具说明性。虽然组件名和类名可以相同,但该组件添加到项目中的名称不能与任一M或MEX文件的名称相同。将类添加到您的组件时,请在类名称字段中的类名单击添加
6、。新增加的类别现在出现在类列表中。一旦你通过单击确定新建项目设置对话框的这些设置,他们将成为你项目工作区的一部分,并与M或MEX文件保存到一起,添加到项目名称项目文件中。 .CBL的项目文件将自动保存到项目目录。管理的m文件和MEX文件:当你创建一个项目,建立Matlab的组件菜单选项生成器窗口。添加M文件和或MEX文件到项目中,通过单击添加文件按钮或选择Project - 添加文件菜单。你可以一次添加一个文件到项目中。建设项目:在定义项目设置并添加所需的M-函数和MEX函数,你可以建立一个可部署的DLL。选择建立 - COM对象调用matlab编译,写中间的源文件, src和输出文件需要部署
7、到包装组件来创建包含这些文件的自解压可执行文件。文件Purposecomponentname.exe.自解压可执行_install.bat脚本的运行、自解压componentname_projectversion.dll编译组件mglinstaller.exeMATLAB数学和图形安装程序mwcomutil.dllCOM生成器实用程序库mwregsvr.exe可执行文件,注册在目标计算机上的DLL表1 由COM Builder创建的文件2.2. 应用COM组件在VB当发布应用程序时,成功创建组件应登记到使用该应用程序的目标计算机。从 DISTRIB复制输出文件到目标计算机,并执行自解压可执行文
8、件,然后生成新的程序(mglinstaller.exe和mwregsvr.exe)并自解压。该mglinstaller.exe将Matlab数学和图形文件写入$ DISTRIB BIN win32中,mwregsvr.exe将注册mwcomutil.dll和.dll复制到目标电脑。最后复制所有的DLL文件$ DISTRIB BIN WIN32到$ Windows System32下,以便计算机可以找到Matlab数学和图形文件的位置 。然后打开项目/参考VB的对话框,你可以参考COM直接选择后的类型库中可用的参考清单。3. 滤波器的设计 现在我们将采用上述方法来开发一种软件,该软件将过滤采样数
9、据,并与滤波后的采样数据的波形比较。该软件的用户界面是由VB设计,并且滤波器的设计和数据图形显示的函数利用Matlab完成。对于IIR数字滤波器的设计最有名的和最常用的方法是经典模拟滤波器( the Butterworth ,切比雪夫I和II ,和椭圆滤波器),双线性变换。这种技术的优点之一是通式为这些过滤器的存在。该软件提供了两种类型的滤波器 -低通滤波器和高通滤波器, 4种设计方法 - 巴特沃斯,切比雪夫I型,切比雪夫II型,椭圆型和FFT和数据的图形显示的功能。为了满足用户的要求,用户需要在用户界面中向过滤器输入一些参数,例如:采样频率,截止频率等等。软件的开发可以通过以下步骤来完成。3
10、.1. Matlab程序设计Matlab程序设计将实现四个设计方法和数据的图形显示。 Matlab的信号处理工具箱提供了一些功能,能够快速,方便地设计滤波器。巴特沃斯滤波器是在动态分析中最常用的数字滤波器中的一个。巴特沃斯滤波器的频率响应在通带内是最平坦的(没有波纹),并朝零滚降在阻带。巴特沃斯滤波器的设计:使用函数buttord ( )来计算的顺序和截止频率巴特沃斯滤波器和使用功能butter()来实现巴特沃思模拟和数字滤波器的设计切比雪夫滤波器是具有陡峭的滚降多通带纹波( I型)或停止带内波动( II型)的模拟或数字滤波器。切比雪夫滤波器具有滤波器理想化特性与实际之间的误差很小的性质,但波
11、纹停止在通带频带内。切比雪夫I型滤波器设计:使用函数cheb1ord ( )来计算切比雪夫I型过滤顺序和使用功能cheby1 ( )来实现切比雪夫I型滤波器的设计。切比雪夫II型滤波器设计:使用函数cheb2ord ( )来计算切比雪夫II型滤波器的顺序和使用功能cheby2 ( )来实现切比雪夫II型滤波器的设计。椭圆滤波器(也称为考尔滤波器)是滤波器与均衡纹波(等波纹)作用在通带和阻带中。波纹在每个频带是独立可调的,对于波纹的给定值(纹波是否相等),任何其它滤波器具有在通带和阻带之间的过渡速度增益。波纹在阻带趋近于零,过滤器变成一个切比雪夫型滤波器。波纹在通频带接近于零,滤波器变成切比雪夫
12、II型滤波器,最后,因为这两个纹波值接近于零,过滤器变成一个巴特沃斯滤波器。椭圆滤波器设计:使用函数ellipord()来计算最小参数为椭圆滤波器,并使用功能ellipord()来实现椭圆滤波器的设计。具有相同系数的四个不同种参数得到的过滤器如图1。图1:四种不同类型的滤波器FFT滤波器设计:使用FFT函数()和IFFT()来实现的离散傅里叶变换和反变换。数据图形显示的程序如下:function VPlot(fs,t,y,yp)% y is the sample datayp is the data after filtering fh=figure(1); set(gcf,Visible,o
13、ff); %figure(1) is invisibleplot(fs*t(1:50),y(1:50),bLineWidth,1);% Plot the waveform of the sample data hold on;50),yp(1:r,2);% Plot the waveform after filteringlegend( the sample data the data after filtering set(fh,NumberTitleName the waveform ah=gca;set(gca,XLim,1 50);xlabel(time (1/fs seconds)
14、print -dmeta; % Hard copy of the graphics close(gcf); % Close the figure(1)Matlab程序设计,我们可以用上面的混合编程方法来创建COM 组件,然后可以用VB转介。3.2. VB程序设计打开VB的工程/引用对话框中,然后就可以通过现有参考的列表中选择 n) ThenMsgBox (Please check whether the sampling number is correct!)Close #1Exit Sub End If LoopClose #1然后调用在cmdFilter_Click的接口函数()模块来过滤
15、采样数据: Call iop.vcheb2(1, yp, Wp, Ws, Rp, Rs, ftype, y) and Call iop.vplot(fs, t, y, yp).Get graphics from the clipboard: Figure.Picture = Clipboard.GetData().Save the data after filtering:Open E:data.txt For Output As #1For i = 1 To nWrite #1, yp(1, i) Next i最后,编译并执行.图 2. 用VB开发用户界面4. 上述软件进行测试最近,它是基于
16、该共混物一种新的方法,GPS RTK技术高度信号和升沉信号,呈现在精确的多波束数据处理。混合 RTK高度信号和升沉信号必须分别使用滤波器来提取有效部分。在本节中,我们将使用预处理的RTK高度信号,以测试上述设计的滤波器。RTK高度信号的低频部分是有效的。因此,我们使用了低通巴特沃斯滤波器来处理信号。可根据实际需要,采样频率为1Hz和截止频率被设定为0.2Hz。图3. RTK高度信号测试的结果从该结果可以发现,该软件可以满足用户的需求,实现了信号和数据图形的分析。更重要的是,与M-Files比较,代码的效率大大提高,。该软件的主要特点是,应用程序是完全脱离Matlab的工作环境,而且编程的难度降
17、低,因为Matlab的数学库和工具箱中包含的各种功能,并且该算法的保密性可以得到保证,最为COM组件的形式。 致谢这项研究由中国自然科学基金委员会(NSFC)赞助,授权号码40776048。 参考文献1贝兹 - 洛佩兹,D.;贝兹-Yillegas,四,基于MatlabC的滤波器设计,在教育工作会议上,第三卷,第F4D前沿 - 12-6 2001年10月。2岳玉芳; 尤忠生; 张玉芳, 基于COMJ的计算机工程设计,卷用VB与Matlab混合编程。 26,第1号,第61-2,65,2005年1月。3赵德安; 潘天虹, 基于VB和Matlab的谷物白粉病人工神经网络模式识别软件的鉴定J,网络,传
18、感与控制,2008。 ICNSC2008 IEEE国际会议ON6 - 2008年4月8日第808 - 811。4范新浩; 苗庆敏; 安刚, 基于Delphi6的研究J,计算机应用与Softerware,第21卷,第11号,第38-9,40,2004年11月巴特沃斯数字滤波器的设计与应用。5欧金成; 林德杰;彭蓓展, 调用Matlab从VB实现图形和界面研究J,计算机工程与设计,卷联盟。 23日,第12号,第64-6,2002年12月。6李腾飞; 张辉, LabWindows/ CVI和Matlab设计滤波器的研究J,电子科学,与技术,第3期,2007年3月。7杨凡林; 赵建虎; 张红梅; 韩晓
19、东, RTK身高信号和冻胀信号的融合及精度分析J,测绘与信息科学武汉大学学报,Vol。 32,第3期, 225-8页,2007年3月。Design of Digital Filter Based on VB and MatlabAbstract The core of digital signal processing is the design of digital filter. At present, most digital filters are designed by Matlab, which is a high-performance numerical calculation
20、 software and provides a powerful function of graphical display. Matlab is widely used in engineering calculation, numerical analysis and other fields, but it is less able to develop interface. In this paper, a method of hybrid programming with VB and Matlab is introduced to design digital filter. T
21、he integrated software can take full advantages of VB and Matlab, and the process of realization indicates that this method is simple and convenient.Key words : digital filter, visual basic, matlab, component object model.1.INTRODUCTIONNowadays, filters have a relevant importance in electronic syste
22、ms because they are present in almost any electronic system. For example, communication systems make intensive use of filter to separate unwanted noise from the desired signal. Power supplies use filters to reject ripple and improve the quality of the DC signal. Audio equalizers use filters to ampli
23、fy or attenuate bands in the audio range to improve audio quality depending upon room acoustic characteristics. Digital video needs digital filters to reduce noise due to coding and transmission through a noisy channel, and so on. However, filter design is an intensive computational task requiring a
24、 significant amount of numerical calculations to obtain either the parameters of a filter transfer function or the element values for a filter circuit realization. On the other hand, computer usage has reached every corner in everyday life. Thus, computer software development has become an important
25、 part of technological development. An area that has been most influenced by this development is education. Today, there exists a large number of software packages which can be used to design filter, and Matlab is one of them. Matlab, developed by Mathworks company,is a high-performance numerical ca
26、lculation software and provides a powerful function of graphical display, which is widely used in engineering calculation, numerical analysis and other fields. Matlab is now available in any university or industry, and it is used, among many other things, in the design of circuits and systems. One o
27、f the main characteristics of Matlab is the availability of a set of toolboxes almostready to be used in the design of filters. Unfortunately, the use of these toolboxes requires a considerable length of time to master them, thus discouraging novice users to use them. Whats more, Matlab is less able to develop interface. Contrarily, VB has a friendly user interface to design and develop applications, but less able to calculate and plot, especially for the digital filter
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1