首页 优秀范文 gui设计论文

gui设计论文赏析八篇

时间:2023-03-21 17:10:20

gui设计论文

gui设计论文第1篇

关键词:教学辅助;非线性方程求根;用户图形界面

中图分类号:TP319文献标识码:A文章编号:1009-3044(2012)13-3140-03

The Application of MATLAB GUI in Numerical Analysis Course Teaching

CHEN Li-hong, ZHOU Zhi-gang

(Department of Mathematics and Computer College, Wuhan Textile University, Wuhan 430073, China)

Abstract:According to the difficult in numerical analysis course teaching, it is discussed that the MATLAB GUI(Graphical User Interfaces,GUI) application in numerical analysis course teaching with solving nonlinear equations as example. the view is proposed that designing MATLAB GUI for numerical analysis will fully arouse teachers and students both aspects of the enthusiasm to improve quality of numerical analysis course combined with MATLAB GUI function.

Key words:auxiliary teaching;solving nonlinear equations;MATLAB GUI

《数值分析》是理工科院校数学、力学、物理、计算机等专业的教材,它在专业课程体系中占有重要地位。该课程的主要任务是研究用计算机解决数学问题的数值方法及其理论,它的内容包括函数的数值逼近、数值微分与数值积分、非线性方程数值解、数值线性代数、微分方程数值解等,这些均与计算机紧密结合在一起。如果采用传统的教学方式,一方面需要花大量的时间在黑板上绘图和计算,在有限的学时内无法进行内容的扩展;另一方面学生理解和接授知识时感觉枯燥、难度大。MATLAB软件的推出为该门课的教学提供了有利工具,利用MATLAB强大的绘图及仿真功能,可以将抽象的内容以形象的图形表示出来,既可演示复杂系统的未知结果,又可改变系统参数,演示系统随参数变化的变化结果或变化趋势,有助于学生对抽象理论的理解。然而在课堂上应用MATLAB演示所讲授内容,需要临时编程,这对于有限的课堂时间多有不便,而且界面也不直观,若能将MATLAB的可开发的GUI功能结合数值计算中的典型算法构造开放式的用户界面,既可充分发挥MATLAB的强大的计算功能,又可避免记忆繁琐的命令,不仅方便老师在课堂直观演示,而且便于学生课下自己设计系统,添加代码实现更多的演示功能,将会充分调动教师和学生两方面的积极性,全面提高课程的教学质量。

1图形用户界面设计简介

图形用户界面是由窗口、光标、按键、菜单、文字说明等对象(Objects)构成的一个用户界面,用户通过一定的方法(如鼠标或键盘)选择激活这些图形对象,使计算机产生某种动作或变化,如实现计算或绘图等。MATLAB的GUI编程可以用两种方式实现。一是GUI设计工具GUIDE,它的优点是非常容易入手,风格很像VB,相关控件可以随意拖动,GUI设计简单、省时,但GUIDE的一个严重缺点是无法直接创建核心对象;二是利用M函数构建GUI,即M文件界面设计,这种方法需要解决数据传递问题,如何正确实现回调函数中用户菜单或控件的句柄传送是M文件成功创建GUI的关键。事实上,不管采用哪种设计方法,事先都要分析界面所要求实现的主要功能,明确设计任务,并站在使用者的角度审查界面功能及界面的控件布局,然后进行代码编写,对功能进行逐项检查,调整完善界面功能。图形用户界面设计的一个基本原则要求具有简单性,即设计界面时应力求简洁、清晰地体现出界面的功能和特征,为此要尽量使用用户所熟悉的标志和符号,尽量删去可有可无的功能,尽量多采用图形结果,尽量减少窗口数目,力避在不同窗口之间进行来回切换。

2实例仿真及分析

非线性方程的迭代解法求根是数值分析课程的一个重要内容,初始迭代点及迭代函数的正确选取是求根的关键,为了使学生对迭代法求根有清醒的认识,下面以非线性方程迭代法求根的GUI实现说明MATLAB GUI对数值分析课程的辅助教学功能。

不动点迭代法求根中需要选取迭代公式,确定迭代初始点、精度,不动点迭代法求根的界面如图1。图1不动点迭代法求根的GUI界面

界面中设置了五个edit控件,分别用于输入方程f(x)、迭代公式、迭代初始点x0、精度tol和最大迭代次数;四个Push Button控件,分别用于绘图、求解、重设参数和退出界面;一个axes控件,用于显示函数f(x)的图像;为体现设计的简洁性,界面中只设置一个List? box控件,所有的结果都将在Listbox控件中显示,这样设计使界面更加合理化。系统能输入任意的方程,通过huatu_pushbutton3控件得到其图像,很容易判断该方程在零点的大致位置,即迭代初始点x0。输入方程后,单击画图控件,可以得到函数f(x)的图像,并显示在界面中。用编制好的GUI演示求解程f(x)=x3-x-1=0在x0=1.5附近的根x*,并用两种迭代公式求根,迭代公式分别为x= 3,初始点x0=1.5,精度tol=0.000001,最大迭代次数N=20,左键单击不动点求解控件,得到求根运行界面,如图2。在运行界面中得到运行结果,并且在函数图像中标出了通过运行得到的方程的根。

选取迭代公式x=x3-1,初始点x0=1.5,精度tol=0.000001,最大迭代次数N=50的运行界面,左键单击不动点求解控件,得到如图3的求根界面。图2,图3分别为同一方程取不同迭代函数求根的运行界面,由此可以让学生直观的看出不动点迭代法求根在选取不同迭代函数时,得到的收敛效果不同,直观的体现了迭代函数的重要性。

用Newton法来求方程f(x)=x3-x-1=0在x0=1.5附近的根,精度tol=0.000001,最大迭代次数N=20。编制的GUI演示结果可以让学生感受到Newton法求根的收敛速度比不动点迭代法求根的收敛速度快。

学生通过以上非线性方程求根的GUI,很容易体会到不动点迭代求根选取迭代函数的重要性及不动点迭代与Newton法求方程根的区别。同时设计的GUI具有开放性,可以让学生课后添加控件与代码,实现GUI更多的功能,这样不仅能够提高学生对数值算法的理解,而且极大提高学生学习数值分析课程的兴趣及编程解决实际问题的能力。

3结束语

将MATLAB GUI与数值分析课程结合起来,教师可以现场演示数值方法,开阔了学生学习数值分析课程的思路。若针对数值分析课程的所有教学重点内容编制一个辅助教学仿真软件,这对于数值分析课程的可视化教学、学生的数值实验更有意义。

参考文献:

[1]张志涌.精通MATLAB [M].北京:北京航空航天大学出版社,2000.

[2]陈垚光,王正林,毛涛涛.精通MATLAB GUI设计[M].北京:电子工业出版社,2008.

[3]尚涛,石端伟,安宁,等.工程计算可视化与MATLAB实现[M].武汉:武汉大学出版社,2002.

gui设计论文第2篇

【关键词】人机交互;用户界面;图形用户界面;用户研究

1 人机交互界面

UI的本意是用户界面,是英文User和Interface的缩写。从字面上看是用户与界面2个组成部分,但实际上还包括用户与界面之间的交互关系,所以这样可分为3个方向,它们分别是:用户研究、交互设计、界面设计。UI实际上是体现在我们生活中的每一个环节,例如我们切菜的时候刀把手是这个界面,开车时候方向盘和仪表盘是这个界面,看电视的时候遥控器和屏幕就也这个界面,用电脑的时候键盘和显示器还是这个界面。于是我们可以把UI可以分成两大类:硬件界面和软件界面。

UI也可以被看作是一个系统,在这个系统中用户可以和机器(软件)进行良好的交互。用户界面包括硬件部分(物理因素)和软件部分(逻辑因素)两个元素,它存在于各种各样的系统当中,它的存在主要有这两方面的意义:1)输入――允许用户对系统进行操控。2)输出――允许操作系统显示用户操作之后的效果。

对于工业设计领域中的人机交互设计就是指人和机器之间发生交互的时候能够高效率、舒适的对机器进行操控,在操作者需要对机器的操作做出决定的同时也能够帮助机器快速的给用户以反馈。当我们设计一个用户界面的时候一定要考虑到用户界面的适用性,同时也会运用到人机工程学以及设计心理学等学科的内容。界面设计不是单纯的美术绘画,它需要考虑使用者、使用环境、使用方式,并且最终实现为用户而设计,是纯粹的科学性的艺术设计。检验一个界面的标准既不是某个项目开发组领导的意见也不是项目成员投票的结果,而是最终用户的感受。所以界面设计要和用户研究紧密结合,最终为用户设计出一个高效、舒适人性化的交互界面。

2 图形化交互界面(GUI)

2.1 GUI定义及各组成元素

GUI(GraphicalUserInterface)是一种结合计算机科学、美学、心理学、行为学,及各商业领域需求分析的人机系统工程,强调“人――机――环境”三者作为一个系统进行总体设计。GUI是人机交互图形化用户界面设计,准确说就是屏幕产品的视觉体验和互动操作部分。GUI的出现则是意味着更加的用户友好型界面。这种面向客户的系统工程设计其目的是优化产品的性能,使操作更人性化,减轻使用者的认知负担,使其更适合用户的操作需求,直接提升产品的市场竞争力。GUI结合了各种科技和设备来为用户提供一个可以交互的平台,这个平台的目的就是收集和产生信息。一系列的GUI元素构成了一种可视性语言,在GUI中最常用的元素就是“WIMP”:窗口、标志、菜单和指针。WIMP元素在个人电脑上的使用尤为突出。

2.2 GUI用户界面和交互设计

设计这些视觉元素和GUI的时序行为是软件应用程序的很重要的一部分。设计的目标是提高使用效率和使以逻辑设计为基础的储存程序更加容易使用,这就是我们所熟知的设计原则可用性设计。以用户为中心的设计可以确保将视觉语言元素很好的引入到界面当中,并且能够使得操作任务更加高效、准确、舒适的完成。通常情况下,用户通过操控可视性控件来对信息进行交换。一个精心设计的交互控件能够高效的支持用户去实现自己的目标任务。一个模型化的图标可以有灵活的构成形式,在结构当中控件界面是一个独立的形式并且间接的与应用的功能性相连接。所以,GUI可以很容易为用户专门定制。这样可以允许用户去选择或自己设定不同的皮肤,而且更加方便设计师去改变界面以适应用户需要。

3 UI与GUI的关系

在人和机器的互动过程中,有一个层面,即我们所说的界面。从心理学意义来分,界面可分为感觉(视觉、触觉、听觉等)和情感两个层次。用户界面设计是屏幕产品的重要组成部分。界面设计是一个复杂的有不同学科参与的工程,认知心理学、设计学、语言学等在此都扮演着重要的角色。用户界面设计的三大原则是:置界面于用户的控制之下;减少用户的记忆负担;保持界面的一致性。UI设计从工作内容上来说分为3个方向,它主要是由UI研究的3个因素决定的,其分别是研究工具、研究人与界面的关系、研究人。

GUI的广泛应用是当今计算机发展的重大成就之一,它极大地方便了非专业用户的使用,人们从此不再需要死记硬背大量的命令,取而代之的是可以通过窗口、菜单、按键等方式来方便地进行操作。准确来说GUI就是屏幕产品的视觉体验和互动操作部分,是在图形环境下控制机器的部分。通常情况下,控制计算机是通过键盘鼠标,所有输入和输出的信息都会通过GUI在屏幕上显示。通过GUI实现控制并不局限于个人电脑,GUI已经被用在了越来越大的机器上了。这些机器都有一个共同点就是它们是被可编程逻辑控制器所控制或驱动。像这类自动化操作的机器都非常的适合应用GUI。UI是一个集合,而GUI就是UI里的一个子集,即UI的“研究工具”方向。用户界面不仅指的是某种特定的机器、网站或应用,它可以被描述成任何形式的一个平台,通过这个平台用户可以为执行特定的任务与其进行交互。UI可以分为好多种:CLI―命令行界面,VUI―语音用户界面,GUI―图形用户界面等等。其它的界面还包括一些硬件,比如机器、键盘、显示屏等等。所以任何帮助用户去完成某项目标的实施行动都可以被当作是用户界面。这可以适用与任何物体。

现在人们经常把UI和GUI当作同一种东西。但实际上,UI指的是用户界面设计,GUI指的是图形化用户界面设计。GUI在图形可用性方面已经划分的非常具体,(图片、图标、色彩、按键、滚动条、菜单等等)去帮助用户去完成目标任务。在早期,电脑软件上的许多应用根本没有GUI,仅仅是有一些简单的文本化的UI设计。

gui设计论文第3篇

关键词:嵌入式Linux GUI 应用与移植 中文化

引言

嵌入式GUI为嵌入式系统提供了一种应用于特殊场合的人们交互接口。嵌入式GUI要求简单、直观、可靠、占用资源小且反应快速,以适应系统硬件资源有限的条件。另外,由于嵌入式系统硬件本身的特殊性,嵌入式GUI应具备高度可移植性与可裁减性,以适应不同的硬件条件和使用需求。总体来讲,嵌入式GUI具备以下特点:

*体积小;

*运行时耗用系统资源小;

*上层接口与硬件无关,高度可移植;

*高可靠性;

*在某些应用场合应具备实时性。

1 基于嵌入式Linux的GUI系统底层实现基础

一个能够移植到多种硬件平台上的嵌入式GUI系统,应用至少抽象出两类设备:基于图形显示设备(如VGA卡)的图形抽象层GAL(Graphic Abstract Layer),基于输入设备(如键盘,触摸层等)的输入抽象层IAL(Input Abstract Layer)。GAL层完成系统对具体的显示硬件设备的操作,极大程度上隐蔽各种不同硬件的技术实现细节,为诮程序开发人员提供统一的图形编程接口。IAL层则需要实现对于各类不同输入设备的控制操作,提供统一的调用接口。GAL层与IAL层的设计概念,可以极大程序地提高嵌入式GUI的可移植性,如图1所示。

目前应用于嵌入式Linux系统中比较成熟,功能也比较强大的GUI系统底层支持库有SVGA lib、LibGGI、Xwindow、framebuffer等。

2 三种嵌入式GUI系统的分析与比较

2.1 Microwindows

Microwindows是一个典型的基于Server/Clinent体系结构的GUI系统,基本分为三层,如图2所示。

最底层是面向图形显示和键盘、鼠标或触摸屏的驱动程序;中间层提供底层硬件的抽象接口,并进行窗口管理;最高层分别提供兼容于X Window和ECMA APIW(Win32子集)的API。其中使用Nano-X接口的API与X接口兼容,但是该接口没有提供窗口管理,如窗口移动和窗口剪切等高级功能,系统中需要首先启动nano-X的Server程序nanoxserver和窗口管理程序nanowm。用户程序连接nano-X的Server获得自身的窗口绘制操作。使用ECMA APIW编写的应用程序无需nanox-server和nanowm,可直接运行。

Microwindows提供了相对完善的图形功能和一些高级的特性,如Alpha混合、三维支持和TrueType字体支持等。该系统为了提高运行速度,也改进了基于Socket套接字的X实现模式,采用了基于消息机制的Server/Client传输机制。Microwindows也有一些通用的窗口控件,但其图形引擎存在许多问题,可以归纳如下:

*无任何硬件加速能力;

*图形引擎中存在许多低效算法,如在圆弧图函数的逐点判断剪切的问题。

由于该项目缺乏一个强有力的核心代码维护人员,2003年Microwindows推出版本0.90后,该项目的发展开始陷于停滞状态。

2.2 MiniGUI

MiniGUI是由国内自由软件开发人员设计开发的,目标是为基于Linux的实时嵌入式系统提供一个轻量级的图形用户界面支持系统。MiniGUI的体系架构如图3所示。

MiniGUI分为最底层的GAL层和IAL层,向上为基于标准POSIX接口中pthread库的Mini-thread架构和基于Server/Client的Mini-Lite架构。其中前者受限于thread模式对于整个系统的可靠性影响——进程中某个thread的意外错误可能导致整个进程的崩溃,该架构应用于系统功能较为单一的场合。Mini-Lite应用于多进程的应用场合,采用多进程运行方式设计的Server/Client架构能够较好地解决各个进程之间的窗口管理、Z序剪切等问题。MiniGUI还有一种从Mini-Lite衍生出的standalone运行模式。与Lite架构不同的是,standalone模式一次只能以窗口最大化的方式显示一个窗口。这在显示屏尺寸较小的应用场合具有一定的应用意义。

MiniGUI的GAL层技术SVGA lib、LibGGI、基于framebuffer的native图形引擎以及哑图形引擎等,对于Trolltech公司的QVFB在X Window下也有较好的支持。IAL层则支持Linux标准控制台下的GPM鼠标服务、触摸屏、标准键盘等。

MiniGUI下丰富的控件资源也是MiniGUI的特点之一。当前MiniGUI的最新版本是1.3.3。该版本的控件中已经添加了窗口皮肤、工具条等桌面GUI中的高级控件支持。

2.3 QT/Embedded

Qt/Embedded是著名的Qt库开发商Trolltech公司开发的面向嵌入式系统的Qt版本。因为Qt是KDE等项目使用的GUI支持库,许多基于Qt的X Window程序因此可以非常方便地移植到Qt/Embedded上。Qt/Embedded同样是Server/Client结构。

Qt/Embedded延续了Qt在X上的强大功能,在底层摒弃了X lib,仅采用framebuffer作为底层图形接口。同时,将外部输入设备抽象为keyboard和mouse输入事件,底层接口支持键盘、GPM鼠标、触摸屏以及用户自定义的设备等。

Qt/Embedded类库完全采用C++封装。丰富的控件资源和较好的可移植性是Qt/Embedded最为优秀的一方面。它的类库接口完全兼容于同版本的Qt-X11,使用X下的开发工具可以直接开发基于Qt/Embedded的应用程序QUI界面。

与前两种GUI系统不同的是,Qt/Embedded的底层图形引擎只能采用framebuffer。这就注定了它是针对高端嵌入式图形领域的应用而设计的。由于该库的代码追求面面俱到,以增加它对多种硬件设备的支持,造成了其底层代码比较凌乱,各种补丁较多的问题。Qt/Embedded的结构也过于复杂臃肿,很难进行底层的扩充、定制和移植,尤其是用来实现signal/slot机制的moc文件。

Qt/Embedded当前的最新版本为3.3.2,能够支持Trolltech的手持应用套件Qtopia的Qt/Embedded最高版本为2.3.8。Trolltech公司将于2004年末推出的Qt/Embedded 3为基础的Qtopia 2应用套件。

3 三种嵌入式GUI的移植与中文化

在进行以上三种嵌入式GUI的研究和移植过程中,硬件平台采用自行设计的以Motorola MC9328 MX1为核心的开发系统。该系统采用CPU内部LCD控制器和320×240分辨率的16bpp TFT LCD作为显示设备,使用I2C总线扩展出16按键的键盘,同时配置了9位A/D量化精度的电阻触摸屏作为鼠标类输入设备;同时移植了ARM Linux作为操作系统。以下分别讨论这三种嵌入式GUI的底层移植和中文化技术。

移植以上三种嵌入式GUI系统,需要首先实现Linux内核中的framebuffer驱动。对应于开发系统为MC9328中的LCD控制器,该部分驱动程序必须以静态方式编译进内核,在系统启动时由传递进内核的启动参数激活该设备。I2C键盘的驱动程序和触摸屏的驱动程序实现后,作为Linux内核模块在使用时动态加载。

3.1 Microwindows的移植

Microwindows驱动层相应的源码目录为src/drivers/。其中以scr*开头的源码是针对显示设备的驱动接口,以mou*开头的源码文件为鼠标设备(包括触摸屏)的驱动接口,以kbd*开头的源码文件针对键盘设备的驱动接口。移植过程中需要实现自己的设备驱动接口提供给Microwindows使用,就必须按照指定的接口格式编写相应的scr、mou、kbd的底层支持。这种方式实现简单,条理也很清晰。

显示设备驱动接口:Microwindows的图形发生引擎支持framebuffer,修改src/中的config文件指定使用framebuffer作为底层图形支持引擎;但需要注意嵌入式Linux的framebuffer较少支持控制台字符模式,需要修改Microwindows中对framebuffer的操作部分以关闭显示模式的转换。

在应用程序开发移植中需要注意的是:使用E

CMAAPIW接口设计的程序无需nano-X的Server程序和nanowm,如图2所示。系统中可以直接启动使用该接口编写的用户程序;但需要注意的是,一个系统中如同时存在使用两种不同的API接口编写的进程,会造成nano-X的Server与ECMA APIW的进程对系统硬件资源的使用竞争,双方的程序将无法正常显示或响应应用户输入。

在为Microwindows增加中文显示的支持时,主要工作包括两个部分。一部分是系统字体的中文支持。此处使用等宽光栅字体,主要负责窗口标题和内置控件的中文绘制,将字体编译进Microwindows内核中,光栅信息作为一维数组,显示时按照字符偏移量从该数组中调出相应的光栅信息显示即可。除此之外,当程序调用CreateFont时,需要在内部实现为打开文件系统中的字体文件。通过修改src/engine/devfont.c中的GdCreateFont部分,添加相应的hzk(汉字库)支持,便可以实现在CreateFont时创建出一个支持GB2312字符集的逻辑字体,并使用外部字体进行显示。在应用程序设计时,如果没有调用SelectObjectu将外部字体选入,中文显示时将默认使用系统字体。

3.2 MiniGUI

由于MiniGUI较好地将硬件设备抽象为GAL层和IAL层,移植时只需要针对自身的硬件特点按照GAL层调用接口和IAL层调用接口来做内部实现即可。图4为MiniGUI的GAL层结构示意,IAL层结构类似。

实现了framebuffer的Linux驱动后,配置MiniGUI选择Native的GAL引擎,便可以使用framebuffer作为MiniGUI的图形发生引擎。

gui设计论文第4篇

【关键词】多点 无线通信系统 设计 实现

一、点对多点无线通信系统处理

(1)无线通信系统的信号处理。

点对多点无线通信系统处理之一是无线通信系统的信号处理。基于Maflab的无线通信系统中通信信号处理功能的实现,是利用Matlab自身提供的工具箱Toolbox中各种通信信号处理函数对信号进行处理。通信信号处理的GUI设计和实现,是基于无线通信信号处理系统各个细分模块的功能要求,选取工具箱中适宜的信号处理函数,根据函数的输入、输出各种参数类型要求,在GUI界面中利用按钮、单选按钮、编辑文本框和列表框等界面控件来实现各种调制/解调方式、编码/解码方式和信道类型的选择,和各种输入参数的设定。界面既要实现与用户交流的友好性,还要更加注重界面的简洁性和系统的功能性,将内部功能部署和外部实体界面有机结合起来,使无线通信系统的用户图形界面得以实现。

(2)通信信号处理的GUI设计。

点对多点无线通信系统处理之二是通信信号处理的GUI设计。通信信号处理的GUI设计,第一,必须根据无线通信信号设置的功能,该信号系统可以分为多个模块,因为每个模块的部署不同,所以确定通信信号处理的GUI设计功能就不同。第二,针对通信信号每个模块设计,设计每个模块组成的图形用户界面的功能,以完成通信信号设计的GUI功能。最后,在信号编程中,必须建立好各系统模块之间的联系。通信信号处理,通信模拟信号和数字通信信号仿真系统设计分为用户界面,通信信号处理的GUI设计,有利于点对点无线通信接收信息。例如:下图表所示。

二、点对多点无线通信系统设计

(1)信号输入模块设计。

点对多点无线通信系统设计之一是信号输入模块设计。针对于输入到通信系统中的相关信号,它可以将工作空间的相关信息作为输入的对象,与此同时也可以选择指定的信号作为输入对象,例如:语音信号,它主要运用单选按钮来调控屏蔽设置。当选择实时采集的语音信号时,必须点击“开始”按钮,就会弹出文件对话框,程序设置对WaV格式的文件进行筛选,从而完成信号输入模块工作。

(2)控制面板系统设计。

点对多点无线通信系统设计之二是控制面板系统的合理设计。在控制面板系统设计时,应该采取相应的频率作为数据参数,针对于无线通信文件设计时,必须要进行该程序的编写,合理的运用有关的函数的参数,保证相关信息的及时读取,充分地利用点对多点无线通信系统的文件,来满足各个变量之间的相应参数传递,为此必须利用按钮给予控制,特别是“开始通信”等一系列的性能控件,就此启动通信信号的对话框,再进行传输通信信号,设置相应的传输参数。

(3)点对多点的通信界面设计。

点对多点无线通信系统设计之三是点对多点的通信界面设计。首先选定GUl对象,在经过设计GUIDE应用程序,来确定GUIDE组态,在进行通信界面设计分析过程中,针对于信号处理的系统中抽象出来的各项编程环节必须给予认真的设计。对话框的选项包括窗口重画行为,命令行访问、生成文件选择、生成回调函数原型,不选择或选择无线通信系统的设计,整体配置的图形用户界面设计的背景颜色。Matlab接口设计编辑器组件的平台,其中包含所有的用户界面,图形用户界面,以及单选按钮、编辑框、静态文本、列表框、弹出菜单控制。应采取确保各部件的名称或属性是不同的,使用GUI之间的差异,可以存在于一个或多个GUI组件。用户可以使用属性来检查每个组件的性能。

三、点对多点无线通信系统实现

(1)应用无线通信系统程序。

点对多点无线通信系统实现的表现之一是应用无线通信系统程序。应用无线通信系统程序中,首先可以建立相应的应用程序,由它来提供与GUI控制程序相关的体系框架。这种框架是一项特别有效的无线通信系统程序编程,所有的代码必然要采用无线通信程序中的M文件来实现,这使得M文件会有多个不同的项目采用GUI程序的使用以及GUI的任何程序帮助无线通信系统程序初始化。M文件的应用程序相关代码创建,可以指导GUI应用程序功能的发挥。

(2)信号发送系统应用。

点对多点无线通信系统实现的表现之二是信号系统中发送功能的应用。信号系统中发送功能的应用,是运用发送系统的编码模块进行,它一般包括信源编码和信道编码两种。信号发送中相应的数字信号,通道信号发送系统,对循环码的编码和错码进行统计。信源编码函数执行M文件编辑设备,可以充分发挥信源编码功能,在信道编码的执行时,可以使用工具箱中的信源编码功能进行了相应的矩阵转换,开始重新编码,同时也要在信道编码中输入变量的函数。

(3)无线通信接收流程。

点对多点无线通信系统实现的表现之四是无线通信接收流程。无线通信接收流程,必须适当地提高TRX--CE的高度,当Tr-EN为低时,nRF905也开始进入Shock-BurstTM接收模式,然而在650us后,nRF905会得到有效的监测,可以有效的进行数据接收。

在nRF905检测时,必须到相关的频段载波,载波检测会在一定程度上被置高;与此同时,无线通信接收,必然会有相应的地址与之相匹配,然而,针对于数据的接收,nRF905必然会得到地址以及相关的CRC校验位,就此也会被得到相应的提高。微控制器一再将TRX-CE置低,然而nRF905就会进入空闲模式,它主要通过SPI口,保证其第一时间开始进入ShockBurstTM接收模式,其次分别进入发送模式,最后进入关机模式。当正在接收一个数据包时,TRX等相关的设备就会就会发生相应的改变,nRF905随即就会改变其工作模式,避免有关的数据丢失。当微处理器接到地址匹配引脚的信号之后,其就知道nRF905正在接收数据包,其可以决定是让nRF905继续接收状态。

gui设计论文第5篇

关键词:线性代数;数学实验;MATLAB;图形用户界面;GUI

中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2012)31-7513-03

线性代数是大学数学教育中的一门基础课程,是用数学知识解决实际问题的一个强有力的工具。传统的线性代数教学偏重自身的理论体系,强调基本定义、定理的讲解以及复杂的计算过程。随着计算机技术和工程科技的发展,科学与工程计算日益重要。线性代数实验课程就是使用计算机以及应用软件,将先进技术工具引入线性代数教学过程的一种有用的学习手段。借助于线性代数实验,使学生通过对特定例子的计算和观察,直观的理解抽象的教学内容,同时通过对数据的可视化,从中发现和归纳有意义的规律并进行理论的验证。本文尝试将线性代数课程学习与MATLAB软件的使用以及编程方法解决线性代数问题结合起来,借助于MATLAB的图形用户开发环境(GUI)设计和实现线性代数实验课程教学平台系统。

1 实验平台内容体系设计

1.1 实验平台内容体系结构设计

根据线性代数课程的内容和线性代数教学改革的要求出发,该实验平台主要设计以下几个方面的内容,如图1。

其中行列式计算与矩阵方程求解平台主要实现方阵的行列式和逆矩阵求解以及输入和显示矩阵方程及其确定其解;矩阵代数和矩阵运算平台主要实现矩阵加法、数乘、乘法、求秩运算的输入和显示;矩阵的分解与求基平台主要实现化矩阵为行简化矩阵形式、求矩阵的LU和QR分解以及确定齐次线性方程组的基础解系等运算;线性方程组求解平台主要实现AX=b的解的存在性判定和求解;线性变换及其特征平台实现线性变换AX=Y的输入和显示,确定变换矩阵A的特征值,特征变量以及给出它们在线性变换中的几何意义的动画演示;多项式插值问题求解平台实现数据点(X,Y)的输入和确定插值多项式以及绘制数据点和插值多项式对应的的图形。

1.2 实验平台实验类型设计

系统从线性代数的内容和教学需要为划分标准,从以下几个方面设计实验类型。

1)线性代数基本计算实验平台:主要实现线性代数的矩阵和行列式的基本计算和演示。如实验平台1、2、3。

2)演示式实验平台:通过实验揭示抽象的线性代数概念并演示其数学规律和图形规律,且动态的呈现出来。例如线性变换及其特征平台,通过该平台的实验可以绘制变量变换前后的图形,并将变换矩阵的特征值和特征向量的关系通过动画显示出来,使学生从图形变化的感性认识上升到抽象的理性认识。

3)验证式实验平台:通过数据的输入和图形演示,对线性代数中的定理和公式归纳和验证。

2 实验平台界面体系设计

线性代数实验系统是通过MATLAB的图形用户界面GUI设计和实现的。GUI是使用图形对象(按钮、文本框、滚动条、菜单等)创建的用户界面,这些对象对用户而言具有明确的含义。实现一个GUI的过程包括两个基本的任务:一是GUI的组件布局,另外一个是GUI组件编程。

2.1 线性代数实验系统界面组件布局

实验界面组件布局的设计要保持一致性。包括使用标准的控件,相同的信息表现方法。外观体现应用程序的协调性。布局力求简洁和方便操作。如图2线性变换及其特征实验平台布局。在这个平台的主界面上方的左侧布局了菜单栏:实验室、实验目的、实验任务、实验帮助,主要实现各个实验之间的转换和对实验的要求和步骤说明。中上部的两个编辑框实现实验数据的输入。中间左侧是文本框,用于实现数据转换形式的显示,右侧是数据的图像演示。下侧的两个多选框实现不同实验步骤的转换。按钮实现数据的重置和实验前后的选择。整个布局既满足实验的要求又体现了协调、简洁和一致性的要求。

2.2 线性代数实验系统界面组件的软件设计

图形界面功能是通过对界面的控件的操作来完成的,这些操作是通过函数代码的执行来完成。下面从图2界面说明各控件功能的软件设计和实现方法。

gui设计论文第6篇

μC/GUI是美国Micrium公司出品的一款针对嵌入式系统的优秀图形软件。与μC/OS一样,μC/GUI具有源码公开、可移植、可裁减、稳定性和可靠性高的特点[1]。采用μC/GUI,开发人员可以很方便地在液晶上显示文本、曲线、图形以及各种窗口对象如按钮、编辑框、滑动条等,可完全产生类似于Windows的显示效果。另外,μC/GUI提供了在VC下的仿真库,这使得用户完全可以在Windows下仿真μC/GUI的各种效果。

采用μC/GUI,可以大大降低嵌入式系统中显示设计的难度,但μC/GUI的使用需针对不同的液晶编写相应的驱动程序才能实现。本文通过移植μC/GUI到MSGl9264液晶的过程,介绍了μC/GUI移植的原理以及移植中应注意的事项。

1 开发工具和运行环境

为了实现μC/GUI的移植,选用MSP430F149。MSP430F149是一款16位超低功耗单片机,具有强大的处理能力(RISC结构、125ns的指令周期)和丰富的片内外设(如硬件乘法器、ADC、定时器、看门狗等)。 它内部具有2KB的RAM和60KB的FLASH,能基本满足μC/GUI运行的需要[2]。

软件开发环境采用IAR公司的集成开发环境IAR EW430 2.10A。相对于较早的EW430 1.26A版本,2.10版本在各个方面有了较大改进,尤其是项目管理和调试上有了较大的改动,这使得移植μC/GUI更加方便。

2 μC/GUI移植

μc/GUI针对不同的液晶控制器提供了多种驱动程序,如KS0713、SEDl335、T6963等控制器都有对应的液晶驱动程序。但在很多情况下,用户采用的液晶,μC/GUI并没有提供其对应的驱动程序,需自己着手编写特定液晶的驱动程序。

2.1 液晶显示器工作原理

为了能编写正确的液晶驱动程序,了解相应液晶的显示原理非常重要。本文采用的MSGl9264液晶为192x64点阵单色液晶,其中包含一个行驱动器KS0107B和三个列驱动器KS0108B,每个列驱动器KS0108B对应一块64x64的液晶[3]。

MSGl9264液晶的控制线为R/W、RS、CSA、CSB和LCDEN,数据线为D0~D7。RS用于指示当前的操作是数据还是寄存器,R/W用于表明当前是读还是写,CSA、CSB用于选择相应的列驱动器(其选择关系可见图1)。RS和R/W的功能可见表1,液晶显示器的读写时序见图2。

MSGl9264模块一共提供7种指令(由RW、RS及数据总线的电子决定),用于对该模块状态及显示进行控制。这7种指令包括显示开关控制、设起始行、设起始列、设页地址、读状态、读/写显示内容。通过这些指令的组合,可以控制液晶显示各种图形。

    2.2 μC/GUI结构

μC/GUI的软件体系结构如图3所示。μC/GUI函数库为用户程序提供GUI接口,包含的函数有文本、数值、二维图形、输入设备以及各种窗口对象。其中,输入设备可以是键盘、鼠标或触摸屏;二维图形包括图片、直线、多边形、园、椭圆、圆弧等;窗口对象包括按钮、编辑框、进度条、复选框等。μC/GUI函数库可以通过GUIConf.h文件进行配置,配置的内容包括是否采用内存设备,是否采用窗口管理器,是否支持操作系统、触摸屏,以及配置动态内存的大小等。

在LCDConf.h文件中定义了与硬件有关的各种属性,如液晶的大小、颜色以及与液晶的接口函数。而LCD驱动文件则负责把μC/GUI的各种函数解释成LCDConf.h文件中定义的液晶接口函数,这个文件与具体的硬件连接无关。

μC/GUI与LCD的硬件接口通过驱动文件把硬件接口函数转化为LCDConf.h中定义的LCD读写函数。

2.3 移植过程

2.3.1 修改LCDConf.h

LCDConf.h定义了LCD的大小、颜色,对应的LCD控制器以及与硬件连接有关的LCD读写函数。按照μC/GUI的规定,底层的读写LCD函数包括LCD_WRITE_A1()(即写LCD命令)、LCD_WRITE_A0()(写LCD数据)、LCD_READ_A0()(读LCD状态)、LCD_READ_A1()(读LCD数据)。这些函数的实现与底层硬件有关,必须根据硬件连接的具体情况编写这些函数。

    MSP430F149是一款低功耗单片机,其供电电压为1.8~3.6V,而MSGl9264液晶为5V供电液晶,输入高电平为3.3V。为确保与液晶的输入电平兼容,MSP430F149的供电电压可设置为3.6V,这样就可以把MSP430F149与液晶直接连接而无需额外的驱动芯片。MSP430F149与LCD的接口电路如图4所示。

LCD_WRITE A1()函数的具体实现如下:

#define LCD_WRITE_A1(Byte) //定义写LCD控制命令函数

{ //参数Byte为要写入液晶的数据。

P40UT:Byte; //把数据放到LCD的数据线上

_NOP(); //空指令,确保能可靠地写入

P1OUT&=0xef; //LCDRS=0,表示写命令

P10UTI=Ox20; //LCDEN=1

_NOP(); //空指令

P1OUT&=0xcf; //LCDEN=0,把数据写入LCD

显示RAM

_NOP();

}

2.3.2 编写LCD驱动文件

图3中的μC/GUI硬件接口函数主要由表2所示函数构成。

    μC/GUI提供的函数库和各种显示效果都是通过表2所示接口函数在LCD上实现,所以LCD驱动文件的实现也就是把这些硬件接口函数的实现。 由于MSGl9264液晶与μC/GUI提供的LCDSLin较相似,所以笔者以μC/GUI提供的LCDSLin.C文件为基础,编写针对MSGl9264液晶的驱动程序。

通过分析LCDSLin文件可以发现,液晶驱动程序的核心是画点函数,大部分硬件接口函数都可由画点函数实现。因此,改造画点函数及其调用函数成为移植的重点问题。

画点函数的要求是改变液晶上任意点的颜色而不影响其他点的颜色。考虑到单片机MSP430F149的输入电压不能超过3.6V,笔者没有采取读液晶显示器内部显示RAM的方法,而是在MSP430F149的RAM中定义一个数组存储LCD显示的数据。此数组可定义为unsigned char Cache[((LCD_YSIZE+7)>>3)xLCD_XSIZE]。LCD_XSIZE、LCD_YSIZE表示液晶的大小,在LCDConf.h文件中定义。考虑到液晶的长度可能不是8的整倍数,可定义数组大小为(LCD_YSIZE+7)>>3)xLCD_XSIZE。

在定义了Cache的基础上,画点函数可如下实现:

static void_SetPixel(int x,int y,LCD_PIXELINDEX c) {

//画点函数

U8 Mask=1<<(y&7); //屏蔽字

int Adr=XY20FF(x,y); //由x,y的绝对位置得到

Cache中的相对位置

//XY20FF(x,y)可被定义为((y>>3)+x×((64+7)>>3))

U8 CacheByte=Cache[Adrl; //获得显示RAM的数值

if(c) //根据颜色修改显示RAM的值

CacheBytel=Mask; //对应位“置1”

else

CacheByte&=~Mask; //对应位清零

LCD_WRITE(Adr,CacheByte);

//把CacheByte写入液晶显存并更改

Cache[Adr]的值为CacheByte

}

函数的参数x,y代表要画点的位置(x为横坐标,y为纵坐标),参数c代表要画点的颜色。在函数内部,U8为μC/GUI提供的数据格式(相当于unsigned char),Mask为屏蔽字,Adr为x,y对应显示Cache的地址。

以把液晶的(5,5)处点亮为例,此时x=5,y=5,c=1,可计算出Mask=00100000,Adr=40(表示在Cache[40]处存有(5,5)点的颜色值)。由于c=1,所以应把Cache[40]中对应位“置1”,这是通过CacheByte的值“或”上Mask的值00100000实现的。最后通过调用LCD_WRITE函数把得到的新CacheByte值写入液晶对应的地址即可点亮该点。类似地,若要使某点不亮(c=0),则应该把对应位“清零”,这可以通过CacheByte&=~Mask这条命令实现。

画点函数中调用的LCD_Write函数可如下实现:

static void LCD_Write(int Adr,U8 Byte){

if(CacheIAdrl!=Byte){ //若写入值与原值不符则

把写入值保存到显示RAM中

Cache[Adr]=Byte;

if(LCD_Adr!=Adr){

LCD_SETADR(Adr); //设置液晶的起始行、起始列和CSA、CSB

}

LCD_WRITEl(Bytc);

}}

由于此液晶由三块64x64的液晶组成,LCD_SETADR函数除了设置液晶的起始行、起始列外还应根据Adr的值设置CSA和CSB的值,才能写到对应的液晶屏上。此外,在LCD_WRITEl()函数中通过调用LCDConf.h文件中的LCD_WRITE_A1()和LCD_WRITE_A0()实现液晶显示。

除了_SetPixel()函数,基本函数还包括_GetPixel()函数和XorPixel()函数。_GetPixel()函数可以返回指定点的颜色信息,XorPixel()则可以对指定点颜色取反,实现“反白”的效果。由于这两个函数较简单,这里不再给出具体代码。

以函数_SetPixel()、_GetPixel()和XorPixel()为基础,结合MSGl9264液晶的7种指令就可以实现表1所给的硬件接口函数,以此构成了LCD驱动文件。

表1 RS和R/W的功能

RSR/W功  能

00写命令01读液晶状态(主要用于判忙)10写液晶的显示RAM数据11读液晶的显示RAM数据3 讨论

为了能使用μC/GUI,必须调用GUI_Init()初始化。与硬件有关的初始化如CPU时钟频率的选择等既可以放在GUI_Init()中,也可以单独编写一个函数初始化。

表2 硬件接口函数的名称和功能

函数名称功     能LCD_L0_InIt()显示初始化LCD_L0_ReInIt()重新初始化而不擦除显示内容LCD_L0_OFF关显示LCD_L0_ON开显示LCD_L0_DrawBitmap()画图LCD_L0_DrawPixel()以指定颜色画点LCD_L0_DrwaVline()画水平线LCD_L0_DrwaVline()画垂直线LCD_L0_FillRect()填充一矩形LCD_L0_XorPixel()翻转指定点颜色调试时应从基本的显示字符串开始,逐渐增加显示的功能和复杂度。

由于笔者采用单色液晶, 在LCDConf.h中定义LCD_FIXEDPALETFE为1;若为彩色液晶,应根据液晶支持的颜色设置LCD_FIXEDPALETYE,具体可参考手册。

若使用窗口对象,则在GUI_Conf.h中定义GUI—WINSUPPORT为1。

在GUIConf.h中定义GUI_ALLOC_SIZE为动态内存的大小,应根据需要合理选择。窗口对象(如按钮)的创建需要申请内存,若申请不到内存则无法创建,相应地创建函数值为0。可由此判断GUI_ALLOC_SIZE已经不能满足需要,一方面可以考虑增加GUI_ALLOC_SIZE(受制于芯片内存的大小);另一方面也可以删除不用的窗口对象,释放内存,再创建新的窗口对象。

采用内存设备能有效克服闪烁现象,获得更快的显示速度,但它需要额外的内存。由于MSP430F149内存较小,笔者没有采用内存设备。

可以设置窗口对象的默认字体及颜色以获得更好的显示效果。在单色液晶中,简单地改变背景颜色和字体颜色即可获得反显效果。

可以通过μC/GUI提供的软件(位图转换器和字体转换器)转换需要的图像或字体为μC/GUI格式。

gui设计论文第7篇

关键词: “信号与系统”教、学一体化平台 Matlab GUI

1.引言

《信号与系统》是高校电子信息类专业的核心基础课。由于Matlab软件可以帮助完成数值计算、信号与系统分析,可更快速、准确、形象、直观地得到可视化计算机模拟与仿真,达到较好的教学效果[1][2],因此将Matlab引入《信号与系统》课程的理论[3]-[5]和实践[6]-[8]教学中,是近年来高校《信号与系统》教学改革的一种思路[9][10]。例如,在佐治亚理工大学、麻省理工学院、加州大学伯克利分校等,Matlab已经成为《信号与系统》的基本教学工具;在《信号与系统》部级精品课程网站(西安电子科技大学、东南大学、北京交通大学等)及省级精品课程(清华大学、武汉大学、北京理工大学等)中,无一例外地出现基于Matlab软件的《信号与系统》仿真实验。现有的基于Matlab的“信号与系统”仿真实验教学方式大致分为两种:一是基于Matlab源代码形式;二是基于图形用户界面(GUI)形式,两者都有缺陷。

1.1基于Matlab源代码形式

早在2008年举办的“信号与系统国家精品课程培训”班级讨论中,来自东南大学、上海大学及温州大学等知名高校的数十位教授就对课程中Matlab的使用弊端进行了讨论,他们一致认为:在使用Matlab进行仿真实验时,由于学生的积极性不高及对软件工具的掌握情况不理想,很多需要学生独立完成的实验无法正常进行,最后往往会出现给出程序学生照抄,不给程序学生不会的情况。

1.2基于图形用户界面形式

为了解决上述基于Matlab源代码的实验仿真中所存在的问题,近年来兴起了一种利用Matlab图形用户界面(GUI)来开发设计的“信号与系统”仿真演示系统[7],[11],[12]。整个系统由实验主界面和单个实验界面组成,每个实验界面可以由用户自行设置和修改实验参数,实现实验结果的动态显示。但是,美中不足的是:学生在使用该系统时,只要一输入数据和确定相应参数后便立即得到正确的结果,而对于该结果是怎么来的却完全不思考。

综上所述,基于源代码的仿真实验教学方式让学生负担过重,而基于图形用户界面的仿真实验教学方式又完全“解放”了学生。因此本文对现有的图形用户界面仿真进行重新设计,让学生在操作环节思考得出正确结果的方法或步骤,充分发挥学生的主观能动性,从而实现教、学一体化。

2.信号与系统互动式教、学一体化平台设计

2.1平台总体设计步骤

围绕信号与系统课程的主要内容,进行了基于Matlab图形用户界面的“信号与系统”教、学一体化平台设计。总体设计步骤如下:

2.1.1对信号与系统知识点进行甄选,确定应该且适合用于该平台的内容。并对所选内容的表现方式进行分类:a.纯演示型;b.用户可自定义参数型;c.互动型。

2.1.2结合实验大纲要求确定能设计成实验的内容。

2.1.3利用m语言编写及调试单个程序。

2.1.4在单个程序基础上,利用Matlab GUI设计图形用户界面,并编写相应的Callback函数。

2.1.5编写每个用户界面的“帮助”文档,以及可用于实验的实验指导书。

2.1.6系统总体调试和完善。

2.2平台所包含的内容

利用Matlab GUI开发的“信号与系统”教、学一体化平台包括七大模块:(1)“信号生成与运算”;(2)“系统时域分析”;(3)“频域仿真分析”;(4)“复频域仿真分析”;(5)“离散系统时域分析”;(6)“z域仿真分析”;(7)“状态空间分析”。以上界面中均设有可调参数。

3.典型互动模块设计

以“连续信号卷积”界面设计为例,介绍教、学一体化平台设计的思想和方法。

利用“初始化”按钮给出两个将进行卷积运算的图形信号。界面设计有5个单选按钮分别为“变换”“平移”“反褶”“积分”“相乘”,利用Matlab的图形显示、相乘、积分等功能设计出上述5个单选按钮对应的图形,但并不预先显示出来。界面还有一个提示窗口,给出了信号卷积的定义式,并对接下的操作步骤的正确性做出判断,如图1所示。接下来操作者如果需要得到这两个信号的卷积结果,就要依次选择正确的步骤。当步骤选择正确时,相应的图形也就显现出来,反之提示窗口会给出“错误,请重试!”的提示信息。此外,界面中还有一个红色“帮助”按钮,按下后界面将以序号的方式:(1),(2),……给出卷积计算的正确步骤,并显示出所有步骤对应的图形,如图2所示。

与输入两个信号后直接给出卷积结果的方式相比,通过该界面,操作者需要充分发挥主观能动性,从而加深对该部分内容的理解,巩固甚至可以自学卷积计算的物理含义,实现了该部分内容的教、学一体化。

4.结语

文章提出了基于Matlab GUI的“信号与系统”教、学一体化平台。与现有类似的GUI界面相比,克服了确定输入即得输出的弊端,让学生在使用的过程中不得不对相关知识点进行复习或自学,从而充分发挥Matlab GUI在“信号与系统”课程中的优势。该平台实现了实验教学、理论教学、自学的一体化,促进学生对教学内容的理解与掌握,从而增强教学效果,提高教学质量。此外,该平台的设计思想可以拓展至其他类似课程中,如《数字信号处理》等课程。

参考文献:

[1]Steven T.Karris.Signals and Systems with MATLAB Computing and Simulink Modeling 4th Edition[M].Orchard Publications,2008.

[2]徐利民,舒君,谢优忠.基于MATLAB的信号与系统实验教程[M].清华大学出版社,2011.

[3]童峰,李霞.Matlab在”信号与系统”课程教学中的应用[J].电气电子教学学报,2007,29(1):82-84.

[4]廖延娜.Matlab在《信号与系统》课程教学中的应用[J].西安邮电学院学报,2009,14(5):194-196,204.

[5]郭宝龙,朱娟娟,吴宪祥,闫允一.“信号与系统”课程可视化教学的实践探索[J].电气电子教学学报,2010,23(5).

[6]林霖,杨丰,张志德.基于Matlab的“信号与系统”课程演示软件的应用[J].电气电子教学学报,2009,31(5):98-100.

[7]金波.基于Matlab的“信号与系统”实验演示系统[J].实验技术与管理,2010,27(12):104-107.

[8]陈怀侠,蔡火操,黄建林,等.设计性实验教学的实践与思考[J].实验技术与管理, 2006,23(11):105-107.

[9]刘锋,段红,熊庆旭,等.信号与系统实验教学改革[J].实验技术与管理,2008,25(3):118-120.

[10]赵琰.信号与系统实验教学改革初探[J].实验室科学,2010,13(4):32-34.

[11]张小凤,金永幸,等.基于Matlab 的信号与系统综合实验系统研发[J].现代电子技术,2011,34(20):24-26.

gui设计论文第8篇

【关键词】MATLAB;全球定位系统;七参数;四参数

Design and Implementation of Coordinate Transformation Software Based on MATLAB GUI

YANG Zhao-ying DU Ming-yi CAI Guo-yin

(Beijing University of Civil Engineering and Architecture “City Mapping” State Key Laboratory of

National Adiminstration of Surveying,Mapping and Geoinformation,Beijing 100044,China)

【Abstract】MATLAB software based on the matrix as a unit for data and processing operations, In the MATLAB program design process , object handle is a very important concept . Each object has its own separate handler,by operating the handle, to achieve the object of the control and modify .GPS survey results are based on WGS84 ellipsoid latitude, longitude coordinates and geodetic height, And we need to use the actual application is Beijing Geodetic Coordinate System 1954 or Xi'an Geodetic Coordinate System 1980 Plane Coordinate or local coordinates, Therefore, there exists a coordinate transformation problem. This article describes two coordinate conversion method: Three-dimensional coordinate space conversion seven-parameters method and Two-dimensional four-parameter conversion method,Through the use of these two methods MATLAB interface design and programming to achieve the coordinate data in Excel coordinate conversion.

【Key words】MATLAB GUI;GPS;Seven-parameters;Four-patameters

0 引言

MATLAB软件是“矩阵实验室”――Matrix Laboratory的缩写,是用C语言进行编写的。它具有语言书写简单,语句功能强大,封装了丰富的数学函数,我们可以直接调用这些数学函数。MATLAB对于数学运算,特别是矩阵运算,非常高效,而文件批量坐标转换又涉及复杂的数据计算,这就是为什么利用其进行程序编写实现的原因。

Excel是微软公司的办公软件Microsoft office的组件之一,它可以进行各种数据的处理、统计分析和辅助决策操作。将原始数据存放在Excel中,Excel可以批量对原始数据进行预处理,达到我们想要的数据格式,可以将文本导入到Excel中,读取与存储都易于操作。

随着全球导航定位系统的发展,尤其是美国的GPS技术发展,其具有全天候,连续性,实时性等优势,已经逐渐取代了传统的测量方式。GPS测量成果是基于WGS84椭球的大地坐标,即:大地纬度B,大地精度L,大地高H。而我们通常所需要的是基于克拉索夫斯基椭球的北京54坐标系或基于第16届IGUU大会推荐的1975年国际椭球的西安80坐标系。因此我们需要将GPS所测的WGS84大地坐标转换成我们所需的北京54或西安80坐标。

本文主要介绍两种坐标转换方法:七参数空间坐标转换方法和四参数平面坐标转换方法,通过MATLAB设计界面并编写程序实现这两种方法,然后通过转换得到的坐标比较分析这两种的精度及适用范围。

1 MATLAB简介

1.1 MATLAB系统概述

MATLAB是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和Simulink两大部分。

MATLAB是英文“矩阵实验室”――Matrix Laboratory的缩写,其全部采用C语言编写。具有如下特点:

(1)基本数据单位是矩阵,矩阵运算如同其他高级语言中的变量操作一样方便,矩阵无需定义即可采用;

(2)高效的数值计算及符号计算功能,能使用户从繁杂的数学运算分析中解脱出来;

(3)具有完备的图形处理功能,实现计算结果和编程的可视化;

(4)友好的用户界面及接近数学表达式的自然化语言,使学者易于学习和掌握;

(5)功能丰富的应用工具箱(如信号处理工具箱、通信工具箱等) ,为用户提供了大量方便实用的处理工具。

1.2 MATLAB程序编写的基本原则

突破以往其它程序语言经常采用的循环思想,尽量采用MATLAB矩阵式语言书写程序,使得程序简洁,执行效率高。在程序设计中尽量避免重复的脚本代码,多用MATLAB提供的函数。系统中的函数要比用一般代码编写的函数执行效率高很多。在编写比较大的程序时,应该对各个细节以函数或子过程方式处理,避免矩阵混淆。

在程序编制过程中,各个功能部分尽量封装在函数中,这样不但可以减少全局变量个数,而且对各个函数的修改要比对整个程序的修改方便得多。

1.3 MATLAB的文件类型

M文件:用于存储函数过程;

Figure文件:用于显示、存储图像;

在MATLAB中,最常用的是M文件。MATLAB是一种解释性语言,用户发出的指令需要送到MATLAB系统内解释,而M文件实际上就是记录指令的文本,用以统一将命令送入系统内进行解释。

M文件有命令式(Script)和函数式(Function)两种形式。命令式文件就是MATLAB内部命令的简单叠加,MATLAB会按顺序执行文件中的命令,这种方式常用来形成主函数。函数式文件用以解决参数传递和函数调用的问题,每个具体的功能一般用此方式实现,它的第一句以Function语句为引导。

2 坐标转换相关理论

2.1 三维空间坐标转换

WGS84与BJ54的坐标转换问题,实质是WGS-84椭球体到BJ54椭球体的转换问题。

如果我们是需要把WGS84的经纬度坐标转换成BJ54的高斯投影坐标,那就还会涉及到投影变换问题。而如果我们所需的坐标是地方坐标,那么我们还要利用四参数法将北京54坐标转换成北京地方坐标。因此,这个转换过程,一般的GPS数据处理软件都是采用下述步骤进行的:

1)WGS84(B,L)――WGS84(X,Y,Z),空间大地坐标到空间直角坐标的转换。

2)WGS84(X,Y,Z)――北京54(X,Y,Z),坐标基准的转换,即Datum转换。通常有三种转换方法:七参数、简化三参数、Molodensky。

3)北京54(X,Y,Z)――北京54(B,L),空间直角坐标到空间大地坐标的转换。

4)北京54(B,L)――北京54(x,y), 高斯投影正算。

5)北京54(x,y)――地方坐标(x,y),四参数转换。

通过下面的流程图,我们可以更清晰地了解整个流程。

图1 WGS84、北京54、北京地方坐标转换流程图

2.2 二维平面坐标转换

二维坐标转换适用于小范围内GPS坐标向地方坐标的转换,在实际测量时,必须将GPS接收机测得的大地经纬度坐标B、L(基于WGS一84椭球)转换成本地平面直角坐标x、y(基于本地椭球) 。其转换过程为:

(1)将公共点的WGS84坐标投影到其对应椭球的高斯平面上,得到WGS84的平面坐标;

(2)利用两个以上的点,采用最小二乘方法求解四参数;

(3)先将需要进行坐标转换的WGS84坐标投影到其对应椭球的高斯平面上,得到WGS84的平面坐标,然后根据第二步求得的四参数,将其转换为本地平面直角坐标。

为了使上面的过程更为清晰,现以WGS84的大地坐标与转换到北京54坐标所作的流程图为例进行说明:

图2 二维平面坐标转换流程图

3 MATLAB GUI界面设计及程序实现

通过参考南方测绘GPS数据处理中的坐标转换软件和Coord MG坐标转换软件界面,经过综合分析比较,我设计出了这款基于MATLAB GUI实用、简洁、界面友好的zbjh2013坐标转换软件,zbjh2013主要用七参数和四参数两种转换方法进行三维空间和二维平面坐标转换。

3.1 MATLAB GUI相关内容介绍

MATLAB具有创建图形用户界面(GUI)的功能。GUI是用户与计算机或计算机程序的接触点或交互渠道,是包含诸如窗口、图标、菜单和文本等图形对象的可操作界面。通过定制用户与MATLAB交互的命令窗口,GUI能有效组织数据流程,使处理方法易于使用和推广,同时也使人机交互更加友好。

在这次坐标转换软件设计与实现过程中主要用到了以下几种控件:

(1)面板(Panel):Panel是GUI对象的容器,当移动Panel的位置进行GUI编辑时,Panel的子对象也随之移动,并保持它们在Panel中的相对位置。

(2)弹起式菜单(Pop-up Menu):Pop-up Menu与Listbox类似,都使用String属性显示一组选项,区别为:①Pop-up Menu更节省界面空间,需要左键单击才能调出这些选项;②Pop-up Menu不能同时选择多个选项。

(3)单选按钮(Radio Button):Radio Button通常组合使用,用于显示一组互斥的状态。

(4)复选框(Check Box):Check Box与Radio Button类似,用于显示一对互斥的状态,通过鼠标左键单击,可在“选中”与“未选中”两种状态之间切换。

(5)静态文本(Static Text):Static Text通常用于显示其它对象的数值、状态。

(6)可编辑文本(Edit Text):Edit Text允许用户修改文本内容,用于数据的输入与显示。若Max-Min>1,允许Edit Text显示多行文本;否则,只允许单行输入。

(7)列表框(Listbox):Listbox用于显示一组选项,通过鼠标单击左键,可选中任意一个或多个选项,当Max-Min>1时,允许同时选中多个选项;否则,只允许一次选择一项。

(8)触控按钮(Push Button):通过点击Push Button可以调用回调函数,实现某项功能。

(9)表格(Table):Table为二维的可视化表格,可用于显示控制点坐标,通过编写程序来实现点击按钮添加和删除数据。

(10)选项卡控件(TabStrip Control),通过TabStrip Control可以进行局部区域界面之间进行切换。

3.2 MATLAB程序实现相关代码

框架搭建好之后,在MATLAB GUI对应的M文件进行程序编写过程中,解决以下几个难点:

(1)不同GUI间参数传递、回调函数调用问题;

主界面的代码

[scs1,scs2,scs3,scs4] = conversionMethod;

handles.dx = scs1;

handles.dy = scs2;

handles.xzj = scs3;

handles.cdyz = scs4;

子界面的代码

varargout{1} = handles.scs1;

varargout{2} = handles.scs2;

varargout{3} = handles.scs3;

varargout{4} = handles.scs4;

delete(handles.conMet_scs);

(2)将子界面的所有控件复制到主界面上,通过TabStrip实现选项卡功能;

将子界面的所有控件复制到主界面上的代码

hSub = Sub('Visible','off');

hPal2 = copyobj(findobj(hSub,'Tag','fileTransfer_uipanel'),hObject);

set(hPal2,'Position',get(handles.Point_uipanel,'Position'),... 'Visible','off');

handles.hPal2 = hPal2;

delete(hSub);

通过点击选项卡实现点坐标与文件坐标转换的切换的代码

Tabstripval = hObject.SelectedItem.index;

switch Tabstripval

case 1

set(handles.Point_uipanel,'Visible','on');

set(handles.hPal2,'Visible','off');

case 2

set(handles.Point_uipanel,'Visible','off');

set(handles.hPal2,'Visible','on');

end

(3)对table空间的操作,通过点击相应按钮逐行添加和删除数据。

逐行添加数据的代码

global coord;

B = str2double(get(handles.edit1,'string'));

L = str2double(get(handles.edit2,'string'));

x = str2double(get(handles.edit3,'string'));

y = str2double(get(handles.edit4,'string'));

raw = {B,L,x,y };

coord = [coord;B L x y];

set(handles.calculateQCS_uitable1,'Data',coord);

逐行删除数据的代码

data = get(handles.calculateQCS_uitable1,'Data');

[row,column] = size(data);

for k = row:-1:1

data(row,:) = [];

set(handles.calculateQCS_uitable1,'Data',data);

end

3.3 MATLAB GUI设计界面

图3 主界面1(单点坐标转换)

图4 主界面2(坐标批量转换)

图5 投影设置界面

图6 四参数设置及计算四参数界面

图7 七参数设置及计算七参数界面

(1)选择源椭球类型,待转转换坐标类型;

(2)选择目标椭球类型,目标坐标类型;

(3)通过点击菜单“设置”“投影设置”,通过投影设置界面,设置投影方式、中央子午线,投影尺度及X常数和Y常数;

(4)通过点击菜单“设置”“四参数”或“七参数”,选择一种坐标转换方式,通过四参数或七参数设置界面,输入四参数或七参数,如果四参数或七参数未知,则通过点击四参数或七参数设置界面中的计算四参数或七参数进行四参数或七参数的求解,四参数需要至少两个控制点坐标,而七参数需要至少三个已知控制点坐标,配置好参数坐标转换方式之后,选中转换设置中的投影设置和四参数或七参数复选框;

(5)通过选项卡进行单点坐标或以文件的形式批量坐标转换。

4 结论

将MATLAB GUI与坐标转换相关知识结合起来,MATLAB具有矩阵运算的特长避免了程序中出现大量循环体。GUI界面设计简洁、直观、友好。既能够实现单个点的坐标转换,有可以Excel文件的形式实现批量坐标转换。不管是三维空间或二维平面坐标,转换得到的成果完全能够满足工作的精度要求,到达最初的设计目标。

通过大地测量学课本与坐标转换相关的知识及网上下载的一些论文的阅读学习,对坐标转换的理论认知更加深入,受益匪浅。

【参考文献】

[1]孔祥元,郭际明,刘宗泉.大地测量学基础[M].武汉:武汉大学出版社,2008.

[2]罗华飞.MATLAB GUI设计学习手记[M].2版.北京:北京航空航天大学出版社,2011.

[3]林立贵.坐标转换计算程序[J].测绘与空间地理信息,2006(6):64-65.

[4]王玉林,葛蕾,李艳斌.新型界面开发工具[J].工程实践及应用技术,2008,34(6):50-52.

[5]陈杰.MATLAB宝典[M].北京:电子工业出版社,2007:667-816.

[6]张喜海.浅谈WGS84与北京54之间的转换[J].城市建设理论研究,2012(18).

优秀范文