




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、基于MATLAB的计算器制作从入门到高级项目一、建立GUI框架1,双击MATLAB图标(本实例使用的是MATLAB R2014),打开软件2,打开GUI操作界面。有两种方式:a、在命令行窗口 输入guide,然后点击回车。b、先点击新建图标,在选择图形用户界面。得到如下窗口:左上方有两个按钮:新建GUI,打开现有GUI。对于新建GUI:下方的选择框内有你可以选择建立的GUI类型,对于初学者一般选择第一个。下方是用来设置保存文件位置的。对于打开现有GUI :初学者可能会在网上下载一些GUI源程序,使用打开现有GUI,再浏览到文件所在位置便可。3、构建GUI框架:在选择新建GUI并且确定后,会弹出
2、如下窗口:在窗口的左边会有很多选项,可以一个个拖动编辑框内; 是不是发现这些选项发挥的作用刚好就是我们平常打开一个网页或者一个软件进行操作时的选择按钮。比较常见的有:按钮、单选按钮、拖动条、弹出式菜单等。看到这里细心地朋友就会发现,MATLAB GUI似乎可以开发出大型软件哦,只要你有足够的想象力,当你从一个小白进阶到一个高手之后,你可以做到的。 本次计算器制作只需要用到静态文本(或者是动态文本)用来做显示器,按钮(用来操作)。也可以添加一个面板用来修饰。在拖出的选项上双击,会得出该选项的属性栏,比如说双击一个按钮选项,你会得到:这个属性框比较复杂,没有必要一个个说清楚(有兴趣的可以自己研究,
3、其实理解起来也挺简单的) 本次计算器制作,我们只需要知道以下几个:u a、BackgroundColor取值为颜色的预定义字符或RGB数值;缺省(就是默认的意思)值为浅灰色;u b、ForegroundColor取值为颜色的预定义字符或RGB数值,该属性定义控件对象标题字符的颜色;缺省值为黑色;u c、String取值为字符串矩阵或块数组,定义控件对象标题或选项内容;u d、FontName取值为控件标题等字体的字库名;u e、FontSize取值为数值,控制字体大小;u f、Tag取值为字符串,定义了控件的标识值,在任何程序中都可以通过这个标识值控制该控件对象;u g、Style取值可以是p
4、ushbutton(缺省值), radiobutton, checkbox, edit, text, slider, frame, popupmenu 或listbox;项目二、简单加法器的制作1、框架准备加法器:使用静态文本,在 string 处将文本修改为(加法器),在 fontsize可修改字体大小,在BackgroundColor处可修改背景颜色。白色编辑框:使用可编辑文本,同样在 string 处把文本清除,在 fontsize修改字体大小。加号(+)、等号(=)按钮:同理按上述方法修改文本和字体大小。2、程序准备:先点击加号右键选择查看回调callback。会得到绿色字体(一般为M
5、ATLAB程序注释)包围的程序,这个 + 程序就编辑在此段程序的下方,代表点击该按钮后将要执行的命令。% - Executes on button press in pushbutton1.function pushbutton1_Callback(hObject, eventdata, handles)% hObject handle to pushbutton1 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and us
6、er data (see GUIDATA)a=get(handles.edit1,string);b=get(handles.edit2,string);c=str2num(a)+str2num(b);set(handles.edit3,string,c)3、程序阅读 a=get(handles.edit1,string); MATLAB的一大亮点就是它包含了大量功能强大的函数,初学者在编写MATLAB命令时,只需要明确函数调用时的格式,再输入相应的数据即可。通常可以百度搜索函数格式、功能及其用法。或者借助MATLAB本身的help命令:在命令行窗口中输入 help get 再按回车便会得到检
7、索结果(再点击get的参考页)。这里有详细的函数介绍(全英文,要求有一定的英文水平哦)回到程序段a=表示把右边的运算结果赋值给a get是函数,()内为运用该函数时需要输入的一些相关量 handles.(注意符号哦,此处为点而不是逗号),为函数句柄,不深究。edit1,string:表示获取edit1的字符串,string 是该函数内不能缺少的一个量,string字面意思是字符串,通俗来说就是edit1中的内容为字符串。这里又涉及到edit1和字符串两个概念 edit1双击编辑框按钮打开属性:找到如下两个选项上文提到Tag取值为字符串,定义了控件的标识值,在任何程序中都可以通过这个标识值控制该
8、控件对象;既然要对可编辑文本进行操作,那么函数中自然免不了加入文本的标识值(记住它放在get函数中的位置就行) 字符串在MATLAB中一串数字可以有两个身份:数字和字符串。当它是数字的时候可以正常的运算,而当他是字符时,就类似一段文字,没有办法对它进行运算处理的(当然作为字符串处理时有它的优势)。我们可以调用相关函数来达到字符串和数字的相互转换。a=get(handles.edit1,string); 通过以上分析,这条代码的意思就很明确了:获取edit1内的字符串(string)再赋值给ab=get(handles.edit2,string);意思同上c=str2num(a)+str2num
9、(b);现在a和b的属性都是字符串。函数str2num的功能是把字符转换成数字,转换之后就可以计算了。set(handles.edit3,string,c)set为输出函数,格式与get类似,括号内多了一个c,意思很明显了,当然就是输出c的值了(这里数字可以不用转换可以直接作为字符串输出)。4、代码总结: 1、a=get(handles.edit1,string); 2、b=get(handles.edit2,string);3、c=str2num(a)+str2num(b);4、set(handles.edit3,string,c)(1)、把edit1内的字符串赋值给a;(2)、把edit2
10、内的字符串赋值给b;(3)、分别把a、b字符串转换成数字,相加后赋值给c;(4)、在edit3内输出字符串c。5、运行结果在a框中输入25,b框中输入23.再点击+,结果35显示在c框项目三、简单可编辑计算器的制作1、框架准备材料:可编辑文本、静态文本,按钮。说明:除了项目2介绍的操作方法外,在设置可编辑文本时,在属性栏中有:可以设定对其方式,一般选定向右对齐。2、程序准备:a=get(handles.edit1,string);b=eval(a);set(handles.edit1,string,b):a=get(handles.edit1,string);a=;set(handles.ed
11、it1,string,a);3、程序阅读:a=get(handles.edit1,string);把edit1中的字符串赋给ab=eval(a);计算字符串a的表达式,并传递给bset(handles.edit1,string,b)在edit2中输出b:a=get(handles.edit1,string);把edit1中的字符串赋给aa=;把a清空set(handles.edit1,string,a);在edit2中输出a4、代码总结eval:串演算指令。例:a=12+13;(单引号表示12+13为一个字符串)b=eval(a)结果:5、运行结果1、输入 12+232、点击计算按钮得到结果3
12、53、点击清空,回到初始状态项目四、简易入门计算器的制作1、框架准备:材料:面板、静态文本、按钮、辅助线说明:添加一个面板可以起到修饰作用,布局时一般使用辅助线对齐,从坐标处下拉即可。2、程序准备:a=get(handles.text1,string);b=strcat(a,1);set(handles.text1,string,b)(对应的其他数字只需修改:b=strcat(a,1);处的1,改成对应的数字即可):a=get(handles.text1,string);b=strcat(a,+);set(handles.text1,string,b)(对应的其他数字只需修改:b=strcat
13、(a,+);处的+,改成对应的符号即可):a=get(handles.text1,string);b=eval(a)set(handles.text1,string,b):a=get(handles.text1,string);n=length(a)a=a(1:n-1);set(handles.text1,string,a):a=get(handles.text1,string);a=;set(handles.text1,string,a)3、程序阅读:a=get(handles.text1,string);%text1中字符串赋给ab=strcat(a,1); %在字符串a后面再添加一个1s
14、et(handles.text1,string,b)%在text1中输出b:a=get(handles.text1,string);b=strcat(a,+);set(handles.text1,string,b)(解释同上):a=get(handles.text1,string);%text1中字符串赋给an=length(a) %把a字符串的长度的值赋给na=a(1:n-1);%a由n个字符变成n-1个,去掉最后一个set(handles.text1,string,a)% 在text1中输出a与见项目三4、代码总结strcat函数:字符串连接。例:Length函数:本来是查看向量的维数,因
15、为这里的字符串只有一行,所以可以用来查看字符串的长度。例:5、运行结果点击按钮输入 1+3-6*8/5:点击=按钮点击back按钮:点击C按钮:项目五、计算器的第一次改进问题1:当随意点击符号按钮是,静态文本中的显示结果显然不符合常理。改进原则:随意点击符号按钮时只出现最后一次点击的符号问题2、当输入的数字过多时无法全部显示。改进原则:字体达到一定数量时自动缩放问题3、一般的计算器待机时,显示屏上都会显示0,但是项目四制作的计算器没有任何显示。改进原则:待机时静态文本中显示0问题1解决方案1、程序设计:a=get(handles.text1,string);l=length(a); if(a(
16、l)=+|a(l)=-|a(l)=*|a(l)=/) a=a(1:l-1); end%这是一个条件语句:当在点击本按钮前,如果字符串a的最后一个字符是+或-或*或/时,先删除此字符,再显示该按钮内的字符。b=strcat(a,*);set(handles.text1,string,b)2、代码总结上述代码使用了if循环,结合了或(|)判断字符或(|)且(&)非()。例:3、运行结果:略问题2解决方案程序设计(注:此处以1键为例,其他数字键包括=、back键做同样的修改):a=get(handles.text1,string);b=strcat(a,1);n=length(b)if(n10&n1
17、5&n20&n25&n=50) size=8;end%此if循环是通过检测字符串b的长度来不断变换size的值,在下面的set函数中有fontsize,sizefontsize:字体大小控制标识Size: 字体大小set(handles.text1,string,b,fontsize,size)代码总结:set(handles.text1,string,b,fontsize,16) 如果我们把函数 set 通俗化有:Set(句柄(handles).控制tag为text1的静态文本(text1),静态文本以字符串的形式存在( string),要输出的量(b),调整字体大小( fontsize),
18、字体的确切大小(数字)(size)运行结果: 数字变多时,字体自动减小: 点击=输出结果,因结果字数较少,字体有自动变大问题3解决方案前期准备:先双击静态文本,弹出属性框,找到如下选项输入数字0,这样每次启动计算器是,显示器中就有0了。程序准备:(其它符号键做一致修改):a=get(handles.text1,string);n=length(a)if(n10&n15&n20&n25&n=50) size=8;end if(strcmp(a,0)=1)%判断字符串a是否是0 set(handles.text1,string,1,fontsize,size)%如果是,在静态文本中输出1elsea=strcat(a,1);&如果不是,在字符串a后面再添加1set(handles.text1,string,a,fontsize,size)end:a=get(handles.text1,string);a=0;%不完全清空,最后在静态文本中输出0set(handles.text1,string,a):a = get
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论