2011-2012学年的计算机辅助分析的课程设计。
笔者花了好几个星期的课余时间,将其初略的完成了。
这段时间里可以说是现学现用,因为笔者所学的Matlab课程中没有设计到GUI的相关内容。
正是如此,整个设计中难免会有差错,或者说是理解不深的地方。
还是希望那些要借鉴此设计的朋友甄选辨别一下,再做决定。
整个设计尚不完善,还在进一步的修改中。
今笔者将其上传。
本来有个源文档,很是占页数。
因为里面程序较多。
笔者想了一下,大无上传的必要。
这些程序就算复制下来,也不能单独运行,传上来反而增加大家阅读的负担。
所以将打印稿传至百度文库,供大家参考。
课程名称:计算机辅助分析设计题目:基于GUI的误差分析院系:电气工程系专业:电子信息工程年级:2010 级姓名:XXX学号:XXXX指导教师:XXXX西南交通大学峨眉校区2011年12月16日第一章摘要 (3)第二章想法的提出 (5)第三章相关设想 (6)第四章需要解决的问题: (7)1 程序功能方面 (7)2 数据结构方面: (7)3 控件方面: (7)4 函数的使用: (8)第五章过程(思路和方法) (9)1 GUI学习 (9)1-I GUI架构(向导) (9)1-II 基本控件: (9)1-III 控件属性设置: (9)1-IV 控件回调函数(Callback Routine) (10)2 数据结构: (10)2-I 细胞矩阵 (10)2-II 结构体变量(见课本82页) (10)2-III 局部变量和全局变量 (10)2-IV GUI中的类、对象: (11)3 选择数据的构造方式及选择编程方法 (11)3-I 第一种想法:依据数据层次建立数据结构,当时写了一个模型的样本文件如下: (11)3-II 第二种想法:依据表格中的数据位置进行构造 (14)3-III 比较一二两种算法: (15)4 窗口界面的建立和界面的完善及程序的编写和调试 (15)5 程序的编写和调试: (16)5-I 程序的变量命名: (16)5-II 程序的数据架构: (17)5-III 函数: (17)5-IV 编程的难点: (21)5-V 功能介绍和使用方法: (22)6 程序对比 (30)第六章附录 (33)1 用到的课本知识: (33)2 函数说明: (33)3 参考文献: (33)第一章摘要关于GUI(Graphical User Interface)图形用户界面,是指采用图形方式显示的计算机操作用户界面。
与早期计算机使用的命令行界面相比,图形界面对于用户来说在视觉上更易于接受。
Matlab整个系统中集成了大量的GUI函数,这些函数与Matlab本身兼容良好,调用极为方便。
同时,用户亦可通过编程创建新的GUI函数,这样大大拓展了Matlab的GUI的创造力。
Matlab的工程师们为了用户编程方便提供了一个简便易用的GUI工具,GUIDE(向导)。
GUIDE本身就是一个GUI程序,用于帮助用户直观快速的生成控件的基本代码。
每当用户向GUIDE界面增添控件后,点击运行,便可自动生成与控件相关的程序,减少不必要的书写。
这样使每个初学GUI的朋友快速上手!本次课程设计,笔者是依靠GUIDE来完成窗口函数的建立的。
程序功能简介此次编写的程序功能简单,主要针对一维数据,对它们求和、求均值、求A类不确定度、B类不确定度、直接合成不确定度以及间接测量合成不确定度。
用户输入数据时,会根据这些数据绘制原始数据的直角坐标连线图,方便查看数据的变化趋势。
用户可以从Excel表格中导入数据,进行相应的计算;也可以将计算好的数据以表格的形式输出到Excel文件中。
计算过程中会产生各种量的更替,这些更替可以保存到*.datM文件中,在下次进行计算时可直接导入。
如果不需要数据可以先将此状态文件导入,再输入数据或者导入数据,这样先前*.datM中的数据将被覆盖,但是相应的设置未变。
处理关系复杂的数据时可以将计算分成多个部分,依次处理。
数据输入或计算好后可以进行简单的绘图。
程序特点(架构):现阶段所完成的程序是一个底层,后续的设计将会在这个底层基础上建立模型及库文件,这些模型或库可以描述各种各样数据结构的表格。
这样只需花少量的人力和时间,在文本文档中用易懂的语言描述表格的特征,导入软件就可以实现对这类表格的数据处理。
关键词:GUI 误差分析Excel表格状态导出状态载入绘图模型库第二章想法的提出笔者向来热爱物理,更喜欢动手实验。
来到大学之前,一直认为大学将给每个学子以一个更为开放和自由的环境。
可是让人失望的是依旧有许许多多的无奈。
而这种种无可奈何中,又以实验最为让人无奈。
我本无心于对制度指指点点,又提不出任何有建设性的方案。
但对于实验,我确实极为不满,不得不抱怨一下。
实验目的是在于发掘事物间的规律。
实验可以发现一些问题,透过这些问题,我们或可发现规律,或可检验理论,或可掌握知识,或可培养兴趣。
而笔者现在所做过的那么多的大学实验(电路,物理,模电),没有哪个是完完全全的投入精神和时间去完成的!倒是在平日的时间里,笔者自己用有限的材料和器材完成的探索和实验让笔者兴趣百倍,记忆深刻。
平时的实验冲忙而又浮躁,还有各种制约。
要那样要这样,不要那样不要这样,必须写实验报告,必须计算结果,必须是这个结果,不准迟到,不准乱动仪器……实验早就成为了一种负担,笔者大部分的可用课余时间都被满纸的实验报告占据,有时还为实验数据(结果)处理焦头烂额。
这种情况不仅仅是出现在笔者一个人身上。
我们大家都不得不去做那些得花一个小时抄报告还弄不清楚上边是什意思的实验。
用身边朋友调侃的话来说,不是每个人都有这样历经高考磨难,交了钱来做这种实验的机会,我们该庆幸啊!在这种情况下,笔者果断地将Matlab的大作业定为了——误差分析与数据处理。
主要还是因为这个课程设计若完成,在笔者一直没有鼓起勇气逃离制度的情况下,还是非常有用的,至少处理数字型的实验可以派上用场。
二来,能在误差分析方面更深入了解一些,这些知识在今后的工程工作中大有用处。
这个课题大的方面就已经确定好了。
细想一下,只做误差分析和数据处理好像内容过于单调。
加之,要是做一个完完全全依赖于Matlab的程序,这样也不太好用。
如果将这个程序放在一个独立的界面上运行的话,就可以称之为一个小型的简易数据处理软件,这样既便于使用,也更加独立,通用性更强。
于是笔者将题目定为了“基于GUI的误差分析和数据处理”。
除此之外,还有个原因,笔者确实对面向对象的编程饶有兴趣,希望能够找到机会学习,而现在机会来了!课程设计由此展开,到后来这个程序的复杂程度渐渐增大,时间又紧迫,一方面课程设计需要在第十六周之前完成;另一方面,期末已至,这学期笔者花在课外的时间较多,预习兼复习的任务艰巨。
所以在只勉强完成了“误差分析”的功能后,没有更多的时间去完成更多的功能。
若以后能腾出时间,必要好好将程序完善。
第三章相关设想程序及界面(不设置运行数据模型):Excel表格文件:读入和保存为表格文件;界面美化:窗口背景,按钮图标;多窗口:依靠主窗口可产生其他副窗口;工具栏:有一些快捷的工具按钮提示音:错误时有提示声音;数据自动保存不改变已知表格的数据数据校检(可略)界面输入数据图像输出和保存数据模型:考虑单位变换求和、求均值、A类不确定度、B类不确定度设置最为基本的模型结构,在无加载模型的情况下使用该模型下的文件输出,输出工作状态和计算结果库(写出基本库:密立根油滴和偏振光研究,电阻、电压、电流关系等)模型B类不确定度的置信因子:正态分布、均匀分布和三角分布A类不确定度的扩展倍数(设置初始值1(不能为空))计算A类不确定度计算B类不确定度计算直接合成不确定度计算间接测量合成不确定度区分表达式的属性(加减还是乘除)计算函数关系计算相对误差将计算好的结果覆盖到源数据所在位置其他细节:完善帮助文档、完善错误提示、优化窗口结构、光标的指示说明注:红色标注的表示尚未实现的功能或想法,其他的都是或多或少完成了的。
2011-12-14第四章需要解决的问题:1程序功能方面什么是面向对象?什么是GUI?Matlab的GUI怎么用?怎么学习Matlab的GUI?应该用怎样的结构来描述尽可能多的表格,和表格中数据的计算?(程序设计的核心)怎么控制程序获得对象数据的起始和终结地址?行或列的数据读取方向(变量的取值方向)怎么确定?计算结果的个数?计算结果的存放在何处?图像该怎么标注一些文字?模型名称怎么控制? 变量在程序中的名称如何控制?变量的个数怎么知道?变量单位的转换(+-*/(关系式略))如何获得?怎么转换这个单位?表头文字的单位问题绘图的图像变量范围怎么确定?计算的常量(如固定光的波长,固定频率,测量温度)怎么获得?获得了怎么处理?各个量的函数关系怎么建立?函数的变量怎么获得数值?2数据结构方面:什么是细胞?什么是结构体?Matlab有哪些的数据结构?怎么建立细胞变量?怎么获得细胞的行列数?怎么调用细胞的数据?怎么调用细胞里的细胞?怎么建立结构体变量?什么是域?怎么调用结构体变量中的域?什么是类?什么是对象?该怎么安排数据的类?怎么让变量可以被所有函数调用和修改?全局变量的建立和删除怎么用?退出GUI时如何把全局变量中的值清空?什么是符号变量?怎么申明符号变量?怎么将符号变量用具体数值代换计算结果?怎么将字符串转换成符号变量?怎么将符号变量变成字符串?怎么求偏导?符号运算怎么调用函数?3控件方面:怎么设置uitable的行列值?怎么设置uitable不可编辑?如何读取uitable的内容?当uitable 的数值发生改变时,怎么获取改变位置?怎么让uitable显示数字和文本?怎么删除uitable 的某行或某列?怎么关闭一个开启的窗口?绘图时怎么连接两个点?怎么用极坐标绘图?怎么调整网格线的疏密程度?怎么将图片放置到剪切板?剪切板怎么调用?为什么背景图遮挡住其他控件?怎么解决这个问题?怎么设置窗口的最大最小化?怎么显示其他图标?怎么让窗口置顶?在buttongroup中怎么获取两个radiobutton的状态?怎么Group的创建选择函数?4函数的使用:怎么用matlab 提取字符串中的数字?什么是正则表达式?他有什么作用?语法规则是怎么样的?怎么添加超链接?怎么调用对话框?怎么利用程序(函数)复制文件?什么是中断?eval函数怎么用?eval函数左边可以获得结果吗?怎么设置控件的字体?时钟(定时器)怎么回事?怎么设置?怎么在定时器中断时调用书写好的中断响应函数?怎么用Matlab生成独立的可执行文件?怎么获取当前工作路径? Matlab如何检查非当前目录下某文件是否存在?怎么读取Excel文件?怎么将文件保存为Excel?怎么读取图片文件?怎么显示图片?怎么读取声音文件?怎么播放声音?第五章过程(思路和方法)1GUI学习1-IGUI架构(向导)(打印稿略,详见原稿)1-II基本控件:•Select:用来指示在GUIDE中控件的选中状态。