基于matlab的计算器编程附代码

合集下载

根据matlab的计算器制作

根据matlab的计算器制作

基于MATLA啲计算器制作从入门到高级项目一、建立GUI框架1,双击MATLAB图标(本实例使用的是MATLAB R2014 ,打开软件H 22,打开GUI操作界面。

有两种方式:a、在命令行窗口输入guide,然后点击回车。

b、先点击新建图标,在选择‘图形用户界面’。

得到如下窗口:左上方有两个按钮:‘新建GUI',‘打开现有GUI' 对于‘新建GUI':下方的选择框内有你可以选择建立的GUI类型,对于初学者一般选择第一个。

下方是用来设置保存文件位置的。

对于‘打开现有GUI':初学者可能会在网上下载一些GUI源程序,使用‘打开现有GUI',再浏览到文件所在位置便可。

3、构建GUI框架:在选择新建GUI并且确定后,会弹出如下窗口:在窗口的左边会有很多选项,可以一个个拖动编辑框内;是不是发现这些选项发挥的作用刚好就是我们平常打开一个网页或者一个软件进行操作时的选择按钮。

比较常见的有:按钮、单选按钮、拖动条、弹出式菜单等。

看到这里细心地朋友就会发现,MATLAB GU似乎可以开发出大型软件哦,只要你有足够的想象力,当你从一个小白进阶到 一个高手之后,你可以做到的。

本次计算器制作只需要用到静态文本(或者是动态文本) 用来做显示器,按钮(用来操作)。

也可以添加一个面板 用来修饰。

这个属性框比较复杂,没有必要一个个说清楚(有兴趣的 可以自己研究,其实理解起来也挺简单的)本次计算器制作,我们只需要知道以下几个:在拖出的选项上双击,会得出该选项的属性栏,比如说 双击一个按钮选项,你会得到:劃灿I ■ ■E- Backqrowrdcolcwe 匚二1二Beir^De^eted! dt *也艺|M> doubleForTCAngl*[0 0^2 23®旬MHrruil*船5eriF> Fonduer F^nHlnit>1 Fcn^Wdi^lEiwmal4 出IForie-^rDLindCpIcr f ■HnrdlllcVr^jbpE * HlTeitE| HofiJCirl^lAl! fomentLWter■■LWirUpable3|*mbenTopL91.9匚3整 C-illbirlc□ippingi C -TMtHFcri C'EleteFcn EriacronIt RfirtwnMna 、BackgroundColor 取值为颜色的预定义字符或RGB数值;缺省(就是默认的意思)值为浅灰色;b 、 ForegroundColor 取值为颜色的预定义字符或 数值,该属性定义控件对象标题字符的颜色;缺省值 为黑色;c 、 String 取值为字符串矩阵或块数组,定义控件对 象标题或选项内容;d 、 FontName 取值为控件标题等字体的字库名; e 、 FontSize 取值为数值,控制字体大小;f 、 Tag 取值为字符串,定义了控件的标识值,在任何 程序中都可以通过这个标识值控制该控件对象;g 、 Style 取值可以是 pushbutton (缺省值), radiobutton, checkbox, edit, text, slider, frame, popupmenu 或 listbox ;项目二、简单加法器的制作1、框架准备 ‘加法器':使用静态文本,在 string 处将文本修改为 (加法器),在 fontsize 可修改字体大小,在 BackgroundColor 处可修改背景颜色。

简单的以MATLAB作数值计算

简单的以MATLAB作数值计算

简单的以MATLAB作数值计算内容结构M函数的编写;微分方程的数值解;积分的数值计算;插值与拟合, 神经网络.一. M函数的编写M函数文件的格式有严格的规定,它必须以“function”开头,比较简单的格式为:function输出变量=函数名称(输入变量)语句;例单击指令窗口工具栏的按钮,进入MA TLAB的程序编辑器窗口后,输入:function y=egfun(c,t)y=c(1)*exp(c(2)*t);保存以后(命名为egfun),在指令窗口输入:clear;egfun([22],2)%函数可以传递参数结果为:ans =109.1963又输入:syms t u v %令t,u,v为符号变量egfun([u,v],t)%函数可以传递参数结果为:ans =u*exp(v*t)任意M文件中的第1个函数称为主函数.主函数可以有任意多个子函数,它们可以作为主函数的子函数.大多数情况下,主函数是M文件中可以从MA TLAB命令或从另一个M文件函数调用的唯一函数.调用该函数时,使用定义该函数的M文件的名称.例average 函数在文件average.m中.function y =average(x) % 计算矢量元素的平均值 y =sum(x)/length(x);可以从MA TLAB 命令行用下面的命令计算3个数的平均值average([2 5 2])注意:一般使主函数的名称与M 文件的相同.如果函数名与文件名不同,必须用文件名调用函数.总结函数式M 文件比较标准的格式为:function <因变量>=<函数名>(<自变量>)例,function [x ,y]=myfun(a ,b ,c) %函数定义行% H1行 用一行文字来综述函数的功能% 帮助文本 用一行或多行文本解释怎么使用函数 % 在命令行输入“help <functionname >”时可以使用它 % 函数体 一般从第一个空白行后开始% 注释 描述函数的行为,输入输出的类型% 在命令行输入“help <functionname >”时不会显示注释文本 x =prod(a ,b); % 开始编写函数代码 例 编写求平均值和均方差的函数M 文件.function [mean ,stdev]=stat(x)% stat mean and standard deviation% for a vector x ,stat(x) returns the mean and standard deviation of x% for a matrix x ,stat(x) returns two row vectors containing ,respectively , % the mean and standard deviation of each column . [m n]=size(x); if m ==1m =n ; % handle case of a row vector endmean =sum(x)/m ;stdev =sqrt(sum(x.^2)/m-mean.^2);输入:x =[2 5 -7 8 3]; [xm ,xd]=stat(x) 结果为:xm =2.2000 xd =5.0359.简单图形的绘制例 在同一窗口中绘制函数sin(),2sin ,3sin 63y x y x y x ππ⎛⎫⎛⎫==+=+ ⎪ ⎪⎝⎭⎝⎭的图形.程序为:x=0∶pi/100∶2*pi;y1=sin(x);y2=2*sin(x+pi/6);y3=3*sin(x+pi/3);plot(x,y1,‘-r’,x,y2,‘∶g’,x,y3,‘-.b’)gridhold onlegend(‘sin(x)’,‘2sin(x+pi/6)’,‘3sin(x+pi/3)’)title(‘sine函数系’)xlabel(‘X轴’)ylabel(‘Y轴’)gtext(‘sin(x)’)gtext(‘2sin(x+pi/6)’)gtext(‘3sin(x+pi/3)’)hold off例统计图形随机产生一个三阶矩阵,画此矩阵的直方图.程序为:rand(‘seed’,5)y=fix(10*rand(3));subplot(2,2,1);bar(y);title(‘直方图’);subplot(2,2,2);bar3(y);title(‘三维直方图’);subplot(2,2,3);pie(y);title(‘饼图’);subplot(2,2,4);pie3(y,[0 1 0 0 1 0 0 1 1]);title(‘三维饼图’);二微分方程的数值解实际问题中一些较为复杂的微分方程,尽管为一阶,但也很难求出其解析解.即使求出了解析表达式,而计算相应已知变量的函数值或者已知函数值反过来计算相应的自变量的值也是比较困难的.在这种情况下就需要求微分方程的数值解.微分方程及方程组解析解;微分方程近似解的欧拉折线法;用龙格-库塔法求微分方程的数值解.一、常微分方程(组)的MATLAB解析解方法那些可以用积分方法求解的微分方程和微分方程组,可以用dsolve命令来求通解或特解.函数调用格式:y=dsolve(f1,f2,…,fm)或y =dsolve(f1,f2,…,fm ,‘x’)参数f1,f2,…,fm 既可以是微分方程,又可以是初始条件. 用Dy 表示y ',用Dny 表示y 的n 阶导数,如D2y 表示y ''; 还可以用D2y(0)=1这类符号来表示y (0)''=1这样的初始条件;‘x ’的作用是指明自变量,默认为t ;在自变量不用t 表示时,必须指明哪个是自变量. 如果找不到解析解,则返回警告信息.例 求二阶微分方程cos(2)y x ''=的通解以及满足初始条件(0)1,y = (0)0y '=的特解.程序为:y =dsolve(‘D2y =cos(2*x)’,‘x’) % 自变量不用t 表示,必须指明自变量 y =dsolve(‘D2y =cos(2*x)’,‘y (0)=1’,‘Dy (0)=0’,‘x’) 结果为:y =-1/4*cos(2*x)+C1*x+C2 y =-1/4*cos(2*x)+5/4即二阶微分方程cos(2)y x '=的通解为121cos(2)4y x C x C =-++ (1C 、2C 为相互独立的任意常数)其满足初始条件(0)1,(0)0y y '==的特解为15cos(2)44y x =-+.例 求微分方程25e cos 2xy y y x '''-+=的通解.程序为clear ;simplify(dsolve(‘D2y -2*Dy+5*y =exp(x)*cos(2*x)’, ‘x ’)) 结果为: ans =1/8*exp(x)*(8*sin(2*x)*C2+8*cos(2*x)*C1+cos(2*x)+2*sin(2*x)*x) 即线性微分方程25e cos 2xy y yx '''-+=的通解为211(8sin 28cos 2cos 22sin 2)8xy e C x C x x x x =+++ (1C 、2C 为相互独立的任意常数) .另外,解微分方程组时的命令格式为:[x ,y]=dsolve(‘Dx =f(x ,y)’,‘Dy =g(x ,y)’)或s =dsolve(‘Dx =f(x ,y)’,‘Dy =g(x ,y)’)例 求微分方程组d 2e d d 0d tx x y t y x y t⎧++=⎪⎪⎨⎪--=⎪⎩在初始条件001,0t t xy==⎧=⎪⎨=⎪⎩下的特解.程序为:clear ;[x ,y]=dsolve(‘Dx =-x -2*y+exp(t)’,‘Dy =x+y ’,‘x(0)=1’,‘y(0)=0’) 结果为: x = cos(t) y =1/2*sin(t)-1/2*cos(t)+1/2*exp(t)或程序为:s =dsolve(‘Dx =-x -2*y+exp(t)’,‘Dy =x+y’,‘x(0)=1’,‘y(0)=0’) s.x ,s.y 结果为: s =x: [1x1 sym] y: [1x1 sym] ans =cos(t) ans =1/2*sin(t)-1/2*cos(t)+1/2*exp(t)即满足初始条件的特解为cos 111sin cos 222tx t y t t e =⎧⎪⎨=-+⎪⎩.二 常微分方程(组)初值问题的数值解1.编写向前欧拉公式法(折线法)的MATLAB 计算程序欧拉折线法的思想为: 给定微分方程(,)y f x y '=和初始条件00()y x y =,考虑()y x 的线性近似:000()()()()L x y x y x x x '=+-如果x 在包含0x 的较小的区间内,则函数()L x 是()y x 的较好的近似.欧拉折线法是通过一系列线性近似得到在较大区间内()y x 的近似解.用折线法求解近似解的一般步骤为:10d x x x=+,1000(,)d y y f x y x=+21d x x x =+,2111(,)dy y f x y x=+ … …1d n n x x x -=+,111(,)d n n n n y y f x y x---=+连接点 00112233(,),(,),(,),(,),x y x y x y x y的折线就是微分方程(,)y f x y '=满足初始条件00()y x y =的一个近似解.例 用折线法解初值问题:01,(0)1(0,d 0.1)y y y x x '=+===程序为:clear clf szy =[ ]; y =1;szy =[szy ;y]; for x =0.1∶0.1∶1 y =y+(1+y)*0.1; szy =[szy ;y]; endszy 输出为:szy = 1.0000 1.2000 1.4200 1.66201.92822.2210 2.5431 2.89743.2872 3.71594.1875% 用折线法算出的初值问题在点0:0.1:1x =处的数值解(存放在数组中)而输入:y =dsolve(‘Dy =1+y ’,‘y(0)=1’,‘x ’) 可以算得此微分方程初值问题的精确解:y =-1+2*exp(x)为了比较精确解和近似解的误差,编写程序算出精确解在点0:0.1:1x =处的纵坐标(存放在数组jqy 中)jqy =[ ];for x =0∶0.1∶1 y =-1+2.*exp(x); jqy =[jqy ;y];end jqy现在将折线和曲线在同一坐标系中画出来,如图5-1所示. x =0∶0.1∶1;plot(x ,szy ,‘o ’,x ,jqy)折线法的数值解与函数真实值从输出结果容易观察到:此方法在经过多步以后,其误差会积累起来.现在输入:err=jqy-szy输出为:err =0 0.0103 0.0228 0.0377 0.05540.0764 0.1011 0.13010.1639 0.2033 0.2491%在点0:0.1:1x 处的精确解与近似解相除所得的差.从输出容易观察到:此方法在经过多步以后,其误差会积累起来.为了减少误差,一种方法是减少步长d x的值.另外,在近似算法上也有很多改进办法.改进的此法可以算出此问题的数值解,存放在数组gjszy中.程序为:x=0∶0.1∶1;h=0.1;gjszy=[ ];y=1;gjszy=[gjszy;y];for i=1∶length(x)-1y1=y+(1+y)*h;y=y+(1+y+1+y1)*h/2;gjszy=[gjszy;y];endgjszyplot(x,gjszy,‘o’,x,jqy,‘r’)比较结果如图5-2所示.改进方法的数值解与函数真实值2.用MATLAB 求解的函数微分方程(组)那些不可以用积分方法求解的微分方程初值问题,可以用MA TLAB 的函数,如二三阶龙格-库塔法ode23或四五阶龙格-库塔法ode45命令来求其数值解.对于微分方程(组)的初值问题T T11T 000010()(,),(,,),(,,)(),(,,)n n n x t f t x x x x f f f x t x x x x ⎧===⎪⎨==⎪⎩可用下面的MA TLAB 命令实现计算:[t,x]=ode23(odefun ,ts ,x0,options)[t,x]=ode45(odefun ,ts ,x0,options)这里ode23用的是3级2阶的龙格-库塔法公式, ode45用的是5级4阶的龙格-库塔公式.输入参数odefun 是待解方程写成的函数M 文件或inline 格式的函数(,)f t x .function dx =f(t,x) dx =[f1;f2;…;fn];或fun =inline(‘f1’,‘f2’,…,‘fn’,‘t’,‘x’);如果输入ts =[t0,t1,…,tf],则输出为在指定时刻t0,t1,…,tf 的函数值.如果输入ts ∶k ∶tf ,则输出为在[t0,tf]内以k 为间隔的等分点处的函数值.x0为函数初值(n 维向量). options 可用于设定误差限(options 默认时设定相对误差310-,绝对误差610-),命令为:options =odeset(‘reltol ’,rt ,‘abstol ’,at) 这里rt ,at 分别为设定的相对误差和绝对误差.命令的输出t 为由输入指定的ts ,x 为相应的函数值(n 维向量).例 求初值问题1.2(1)(1)0,1xy y xy y y'++-==在区间[1.2,4]上的近似解,并作图.程序为:fun =inline(‘(1+x*y)*y/(x*y -1)’,‘x ’,‘y ’); [x,y]=ode45(fun ,[1.2,4],1); [x,y]ode45(fun ,[1.2,4],1) % 或 plot(x ,y) 其数值解如图5-3所示.初值问题的数值解例求方程23,0.5x y y x y ='=+=的近似解(0 1.5)x ≤≤.程序为:fun =inline(‘y^2+x^3’,‘x ’,‘y ’); ode23(fun ,[0,1.5],0.5)% 绘制初值问题的数值曲线,命令中的[0, 1.5]表示x 的区间,0.5表示y 的初值. % 输出为圆圈表示计算过程中选取的点,并得到该点的坐标. 其近似解如图5-4所示.初值问题的数值解如果输入:[x,y]=ode23(fun ,[0,1.5],0.5); [x,y] % 显示点处的坐标 输出结果略.例 求V an der Pol 方程2(1)0,0,0.5x x y y y y yy ==''''--+===-在区间[0, 20]上的近似解.令12d ,d y y y y x==,则原方程转化为方程组1222121d d d (1)d y y x y y y y x⎧=⎪⎪⎨⎪=--⎪⎩编写M 函数vdp.mfunction dydt =vdp(t,y)dydt =[y(2); (1-y(1)^2)*y(2)-y(1)];回到MA TLAB 命令窗口,输入求V an der Pol 方程近似解命令[t,y]=ode23(@vdp ,[0, 20], [0,-0.5]);plot(t ,y(:,1));可以观察到近似解(见图5-5).初值问题的数值解三 数值积分如果函数是用离散数据给出的,或者无法找出原函数的积分,这时可以用数值积分法得到积分近似值.用梯形近似代替小曲边梯形得到的积分算法,叫做梯形求积算法.在此基础上为计算更加快速、精确而对算法作一些优化,可以得到很多算法.这里给出三种算法.梯形求积分函数trapz( ),辛普生(Simpon)自适应法quad( ), Newton-Cotes 高阶自适应法quad8( ).一 梯形求积分函数trapz( )常用格式有:trapz(Y), trapz(X,Y)X ,Y 是同维向量,trapz(Y)表示对被积函数Y 以间距为1取点,根据所得到的函数值Y 进行梯形积分计算,如果取点时是以a 为间距取的,则实际积分值为trapz(Y)*a ; 当间距不均匀时,采用trapz(X,Y),它是求Y 关于X 的积分值.例采集到的函数s i n xx的一列函数值如表3-8所示,据此用梯形函数trapz(),计算ππ2sindxxx⎰.程序如下:x=[0.5*pi,0.6*pi,0.7*pi,0.75*pi,0.85*pi,0.95*pi,pi];y=[0.6366,0.5046,0.3679,0.3001,0.1700,0.0524,0];trapz(x,y)运行结果:ans =0.4817如果以间距π20取点进行计算.程序如下:x=[pi/2∶pi/20∶pi];y=sin(x)./x;%注意这时函数的写法,通常的“/”用“./”代替trapz(x,y)运行结果:ans =0.4814由于数据增加,结果更加精确.二辛普生(Simpon)自适应法quad( )该函数的常用格式为:quad(f,x1,x2),quad(f,x1,x2,e)计算函数f从x1到x2的积分值21dx x f x⎰,e为指定误差范围,默认是610-.例用函数quad()计算ππ2s i ndxxx⎰.程序如下:syms xquad(‘sin(x)./x’,pi/2,pi) 运行结果:ans =0.4812三 Newton-Cotes 高阶自适应法quad8( )使用格式与quad( )相同,一般而言更加精确.例 用函数quad8( )计算210ed xx x ⎰.程序如下: syms xf =‘exp(x.^2).*x ’ quad8(f ,0,1) 运行结果:ans =0.8591 例人造地球卫星的轨道可以视为平面上的椭圆,中国第一颗人造地球卫星的近地点距离地球表面439 km ,远地点距离地球表面6 371 km ,求该卫星的轨道长度.问题分析与数学模型由于人造地球卫星的轨道可以视为平面上的椭圆,因此卫星轨道的参数方程为cos ,02πsin ,x a t t y b t =⎧⎨=⎩≤≤, a b分别为轨道椭圆的长、短半轴.根据计算参数方程弧长的公式,卫星轨道的长度可以用下面公式计算:4d L t=⎰于是卫星的轨道长度为4d L t=⎰模型求解与问题解答在MATLAB 中分别用梯形求积分法与辛普生自适应法进行计算如下. 梯形求积方法在MATLAB 命令窗口输入: a =8755;b =6810;t =[0∶pi/20∶pi/2];Y =sqrt(a^2*sin(t).^2+b^2*cos(t).^2); L1=4*trapz(t ,Y) L1 =4.9090e+004 辛普生自适应法编写m 文件L2.m 为:syms ty =‘sqrt(8755^2*sin(t).^2+6810^2*cos(t).^2)’;L2=4*quad(y ,0,pi/2) 运行程序:>> L2 L2 =4.9090e+004于是卫星的轨道长度的近似长度为44.90910⨯km .四 插值与拟合插值问题的提法是已知1+n 个节点),,1,0)(,(n j y x j j =,这里j x 互不相同,不妨设01n a x x x b =<<<= ,求任一插值点)(*j x x ≠处的插值*y .节点),(j j y x 可以看成是由某个函数)(x g y =产生的,g 的解析表达式可能十分复杂,或不存在解析形式,只是由节点给出的离散数据.求解的基本思路是,构造一个相对简单的函数)(x f y =,称为插值函数,使)(x f 通过全部的节点,即),,1,0()(n j y x f j j ==,再利用)(x f 计算插值,即*)(*x f y =.常用的有, 拉格朗日多项式插值, 分段线性插值, 三次样条插值, 牛顿均差插值, Hermite 插值, 分段三次插值和分段三次Hermite 插值.线性插值,样条插值和三次插值的MATLAB 程序是现成的,现在分析其用法. 一维插值程序:函数interp1进行一维插值.一维插值是进行数据分析和曲线拟合的重要手段.interp1函数使用多项式技术,用多项式函数拟合提供的数据,并计算目标插值点上的插值函数值.常用的语法形式是:yi=interp1(x ,y ,xi ,method)x 和y 为给定数据的矢量,长度相同.xi 为包含要插值的点的矢量, method 是一个可选的字符串,指定一种值方法,包括最近邻插值(method='nearest'): 该方法将插值点的值设置为已知数据点中距离最近的点的值.线性插值(method='linear'): 该方法用线性函数拟合每对数据点,并返回xi处的相关函数值.三次样条插值(method='spline'): 该方法用三次样条函数拟合每对数据点,用spline 函数在插值点处进行三次样条插值.或y=spline(x0,y0,x)这里x0,y0为节点数组(同长度),x 为插值数组,端点为边界条件. spline 命令还可处理上述第一类端点条件, 将原来的输入数组y0改为yy0=[a y0 b],这里a ,b 分别为)(),(0n x S x S ''.三次插值(method='pchip'或'cubic'): 该方法用pchip 函数对矢量x 和y 作分段三次Hermite 插值.以上这几种方法在速度,内存和平滑性等方面有差别,使用时可以根据需要选择.最近邻插值是最快的方法,但是得到的结果平滑性最差.线性插值比最近邻插值要占用更多的内存,运行时间略长.与最近邻法不同,它生成的结果是连续的.三次样条插值的运行时间最长,内存消耗比三次插值略少.它生成的结果平滑性最好.三次插值需要更多内存,而且运行时间比最近邻法和线性插值的长.但是,使用此法时,插值数据及导数是连续的. 例 已知数据x=[0 0.1 0.12 0.17 0.2 0.3 0.32 0.37 0.6 0.75 1]; y=[0.3 0.32 1 1.2 1.7 1.75 1.9 0.6 0.51 0.75 2];求数据xi=[0.7 0.05]的值程序如下:x=[0 0.1 0.12 0.17 0.2 0.3 0.32 0.37 0.6 0.75 1];y=[0.3 0.32 1 1.2 1.7 1.75 1.9 0.6 0.51 0.75 2]; xi=[0.7 0.05]yi=interp1(x ,y ,xi ,'linear') 用MATLAB 作二维插值如果在某区域测量了多个点的高程(节点),为了画出较精确的等高线图,得先插入多的点(插值点),计算这些点的高程(插值),就是二维插值,插值函数是二元函数.二维值在图像处理和数据可视化方面有很重要的应用.MATLAB 用函数interp2来二维插值.该函数的一般形式为:ZI=interp2(X ,Y ,Z ,XI ,YI ,method)Z是一个矩形数组,包含二维函数的值,X和Y为大小相同的数组.XI和YI为包含插值点数据的矩阵,method表示插值方法,为可选参数.MATLAB提供了三种不同的插值方法来二维插值.最近邻插值(method= 'neareast'): 该方法用分段常数曲面拟合数据,插值点的值是最近点的值.双线性插值(method= 'bilinear'): 该方法用双线性曲面拟合数据点,插值点的值是四个最近点的值的组合.此方法是分段双线性的,比双三次插值方法快,并且内存消耗更少.双三次插值(method= 'bicubic'): 该方法用双三次曲面拟合数据点,插值点的值是16个最近点的值的组合.此方法是分段三次的,结果的平滑性比前面两种的要好.这些方法要求X和Y数据是单调的,即从点到点,要么是递增的,要么是递减的.应该用meshgrid函数准备这些矩阵.另外,非等距插值的调用格式为:ZI=griddata(X,Y,Z,XI,YI,'指定插值方法')插值方法有:linear %线性插值(默认)bilinear %双线性插值cubic %三次插值bicubic %双三次插值nearest %最领域插值例用随机数据生成地貌图再做插值程序为:x=rand(100,1)*4-2;y=rand(100,1)*4-2;z=x.*exp(-x.^2-y.^2);ti=-2:0.25:2;[xi,yi]=meshgrid(ti,ti);zi=griddata(x,y,z,xi,yi);mesh(xi,yi,zi)hold onplot3(x ,y ,z ,'o')结果为:此例的数据为随机生成的,而函数griddata 可以处理无规则的数据.拟合拟合方法的求解思路有别于插值,以多项式拟合为例.对于给定的数据),(,),,(11n n y x y x ,选取适当阶数的多项式,例如二次多项式0122)(a x a x a x g ++=(也可以选取其他形式的函数),使)(x g 尽可能逼近这些数据.这可以通过求解如下的最小化的问题来实现:21022210,,1min()ni i i a a a i a x a x a y =++-∑也就是说,设法寻找多项式,使得它与观测数据最为逼近,但拟合多项式并不一定通过全部节点.曲线拟合是数据分析最常见的任务之一,MATLAB 提供了多种函数和工具来作曲线拟合. 最小二乘拟合假设一般的拟合函数形式为011()()m m y x x ββαβα=+++这里)(,),(1x x m αα 为m 个函数(多项式拟合取为幂函数).如果有n 组观测数据(,),1,,i i x y i n = ,)(m n >,将它代入上面的模型得到)()(110i m m i i x x y αβαββ+++≈此方程不一定有解.所谓拟合,就是确定参数m βββ,,,10 的一组值,使得计算得到的数值逼近观测数据i y .这些参数可通过解最小得到02011,,1m in((()())) (7)mnii m m i i yx x ββββαβα=-+++∑常见的最小二乘法包括线性最小二乘,加权线性最小二乘,非线性最小二乘等.求解非线性最小二乘问题有高斯—牛顿法和Levenberg —Marquart 法. 多项式曲线拟合MATLAB 的多项式拟合函数为polyfit 和polyval . MATLAB 用于多项式拟合的命令为:[p ,c]=polyfit(x0,y0,m) %作m 次多项式拟合这里p 为m 次多项式的系数向量.对于这个拟合好的多项式可以用y=polyval(p ,x)计算在x 处多项式的值y .用polyfit 函数计算拟合数据集的多项式在最小二乘意义上的系数,调用形式为:p=polyfit(x ,y ,n)这里x 和y 是包含要拟合的x 和y 数据的矢量, n 是多项式的阶次.例 数据x=[ 2 2.2 5 7 7.5],y=[5.2 43 75 25 85]作用三次多项式拟合程序为:p=polyfit(x ,y ,3)在一个更好的范围内计算polyfit 函数的估计值,并通过绘图比较. 程序为:x=[ 2 2.2 5 7 7.5]; y=[5.2 43 75 25 85]; p=polyfit(x ,y ,3) x0=1:.1:7.5; y0=polyval(p ,x0); plot(x ,y ,'o',x0,y0) grid on神经网络程序例据统计,20世纪60年代世界人口数据如表所示.表60年代世界人口数据有人根据表中数据,预测公元2000年世界人口会超过60亿.这一结论在20世纪60年代末令人难以置信,但现在已成为事实.而作出这一预测结果所用的方法就是数据拟合方法.根据数学模型,构造出能逼近表中数据的拟合函数.正是拟合函数反映了人口增长的趋势.根据表7-2的数据构造拟合函数,并预测公元2000年时的世界人口.问题分析与数学模型据人口增长的统计资料和人口理论数学模型知,当人口总数N 不是很大时,在不太长的时期内,人口增长接近于指数增长.因此,采用指数函数=N+e a bt对数据进行拟合.为了计算方便,将上式两边同取对数,得=+ln N a bt令lny N=,这样变换后的拟合函数为=+y t a bt()由人口数据取对数(ln=),在MATLAB命令窗口输入:y N>> x=[29.72 30.61 31.51 32.13 32.34 32.85 33.56 34.2034.83];>> y=log(x)y =Columns 1 through 63.3918 3.4213 3.4503 3.4698 3.4763 3.4920Columns 7 through 93.5133 3.5322 3.5505可得表.表 人口数据取对数后的结果根据表的数据及拟合函数()y t a bt =+,可以得到下面的方程组1960 3.39181961 3.42131962 3.5031963 3.46981964 3.47631965 3.49201966 3.51331967 3.53221968 3.5505a b a b a b a b a b a b a b a b a b +=⎧⎪+=⎪⎪+=⎪+=⎪⎪+=⎨⎪+=⎪+=⎪⎪+=⎪⎪+=⎩模型求解与问题解答在MATLAB 命令窗口输入:>> t =1960∶1968;>> y =[3.3918 3.4213 3.4503 3.4698 3.4763 3.4920 3.5133 3.5322 3.5505] ; >> A =[ones(9,1)t’] ; >> A\ y’ ans =-33.0431 0.0186 所以,方程组的解为33.0431, 0.0186a b =-=.代入拟合函数ea btN+=,有33.04310.0186()etN t -+=在MATLAB 命令窗口输入: >> exp(-33.0431+0.0186*2000) ans =63.8732所以2000年的世界人口预测为63.8732亿.这一数据虽然不是十分准确,但也基本反映了人口变化趋势.。

matlab简易计算器

matlab简易计算器

电子信息工程系实验报告课程名称:MATLAB语言Array实验项目名称:MATLAB图形用户界面设计实验时间:2010-5-8 班级:姓名:学号:实验目的: 1、熟悉MATLAB的主要控件使用方法。

2、熟悉MATLAB的GUI设计流程。

实验环境:硬件配置( Pentium(R) 4 CPU 2.40GHz,1GB内存)操作系统(Windows XP)编程软件:MATLAB7.0实验内容与结果:使用MATLAB的GUI接口设计一个简单的计算器。

效果图:程序源码部分函数及相关注释:%0~9数字键及小数点按钮代码范例%全局变量locaval用于存储用户输入的多位数值%全局变量gloval2用于存储待处理的第二位数值function pushbutton1_Callback(hObject, eventdata, handles)global locaval;a = get(handles.pushbutton1,'String');locaval=strcat(locaval,a);set(handles.text1,'String',locaval);global gloval2gloval2=locaval;guidata(hObject, handles);%运算符按钮处理“+、-、*、\”范例%全局变量flagnum存储运算符标志%全局变量global1用于储存第一个待处理数值function pushbutton10_Callback(hObject, eventdata, handles)a = get(handles.pushbutton10,'String');b = get(handles.text1,'String');set(handles.text1,'String',a);global flagnumglobal gloval1global locavallocaval=' ';flagnum=1;gloval1=b;guidata(hObject, handles);%取相反数按钮“+\-”代码%算法实现:用零减去文本框现在的值,再赋值给文本框function pushbutton14_Callback(hObject, eventdata, handles)global locaval;locaval=str2num(locaval);locaval=0-locaval;locaval=num2str(locaval);set(handles.text1,'String',locaval);global gloval2gloval2=locaval;guidata(hObject, handles);% 等号按钮运算实现%根据flagnum运算标志用switch决策语句实现相应计算%需注意相应数据类型的转化function pushbutton17_Callback(hObject, eventdata, handles)global flagnumglobal gloval1global gloval2global locavallocaval=' ';gloval1=str2num(gloval1);gloval2=str2num(gloval2);case1=gloval1/gloval2;case2=gloval1*gloval2;case3=gloval1-gloval2;case4=gloval1+gloval2;case1=num2str(case1);case2=num2str(case2);case3=num2str(case3);case4=num2str(case4);switch flagnum;case 1set(handles.text1,'String',case1);case 2set(handles.text1,'String',case2);case 3set(handles.text1,'String',case3);case 4set(handles.text1,'String',case4);endguidata(hObject,handles)% BackSpace按钮函数%算法实现:MA TLAB是用矩阵存储数据的,相应的可以取文本框的前N-1实现其功能function pushbutton19_Callback(hObject, eventdata, handles)textString = get(handles.text1,'String');if(strcmp(textString,'0.')==1)set(handles.text1,'String','0.') ;elsess=char(textString);l=length(textString);textString=ss(1:l-1);set(handles.text1,'String',textString)endguidata(hObject,handles)%C清除按钮函数%把全局变量locaval清零function pushbutton20_Callback(hObject, eventdata, handles)global locavallocaval=' ';set(handles.text1,'String','0.');guidata(hObject,handles)%开平方函数function pushbutton22_Callback(hObject, eventdata, handles)textString = get(handles.text1,'String');textString=str2num(textString);textString=sqrt(textString);textString=num2str(textString);set(handles.text1,'String',textString);locaval=' ';guidata(hObject,handles)%取1/x函数function pushbutton24_Callback(hObject, eventdata, handles)global locavallocaval=str2num(locaval);locaval=1/locaval;set(handles.text1,'String',locaval);locaval=' ';guidata(hObject,handles)实验心得:!、通过MATLAB简单计算器的设计,初步了解了关于MATLAB图形用户界面的部分控件的使用方法。

基于matlab的计算器编程附代码

基于matlab的计算器编程附代码

1.需求分析本次的实验要求是设计一个计算器,主要功能如下:(1)实现基本数学运算(加减乘除等),而且要能进行混合运算(2)实现部分函数功能,如求平方根、求倒数等(3)能实现小数运算界面与标准计算器界面类似根据要求以及以前的学习情况,决定使用matlab进行编程。

Matlab强大的计算功能以及便捷的GUI设计,可以较为简便的实现所要求的功能。

按照要求,数据输入和输出支持小数点,支持四则混合运算,决定使用如下几个数据进行分析:(1+3)*5Sqrt(4)1/2Sin4用以检验是否可以进行加减乘除四则运算、平方根、倒数、正弦的运算。

2.程序设计M atlab的程序设计较为简便,用GUI设计出一个计算器的模型,然后系统会自动生成一个框架,在框架中,写入每一个按键对应的程序就可以实现功能。

3.调式分析编程的过程中遇到的问题不是很多,基本就是找要实现各个功能的子程序,通过上网和去图书馆,加上自己的编写,终于实现了实验要求的功能。

但是有一点很重要,matlab不支持中文,所以从路径到文件名必须是全英文的,不然就无法识别。

此外,给每个按键命名也是很重要的,不然在生成的程序框架里面,就无法识别各个按键的作用,编写程序的时候也就无法做到一一对应。

4.使用说明程序的使用比较简单,由于是可视化界面,直接打开matlab,然后建立一个GUI 工程,再打开生成的fig文件,就是一个计算器的界面,直接按照市面上卖的计算器的方法,按键使用即可。

5.测试结果计算结果为204sqrt=2Sin4结果为1/2=0.5经过计算,这些结果均与实际结果相吻合,计算器的功能实现的较为完好。

6.心得体会本次试验由于不限制语言,于是计算功能强大,操作简便的matlab变成了首选,matlab的GUI设计,操作是较为简单的,首先建立一个GUI工程,然后用可视化界面,设计出计算器的大致外观,为每一个按键设置预计的功能,然后就是将对应的函数写到框架生成的程序中,然后每个按键就可以实现对应的功能。

MATLAB科学计算器设计——GUI设计(含源代码)

MATLAB科学计算器设计——GUI设计(含源代码)

MATLAB科学计算器设计——GUI设计(含源代码)目录计算器的效果图............................................................................ 错误!未定义书签。

第一章GUI设计界面 .. (4)1.1打开GUI (4)1.2.添加按钮 (5)1.3.根据按钮的作用及视觉效果做一定的修改 (5)1.4.保存、添加功能函数 (6)1.4.1 数字键编写 (6)1.4.2 符号键的编写 (6)1.4.3 运算符“=”的编写 (6)1.4.4 按键“←back”的编写 (7)1.4.5 按键“清空”的编写 (7)1.4.6 按键“退出”的编写 (7)1.4.7 按键“二进制数转十进制数”的编写 (7)1.4.8 按键“十进制数转二进制数”的编写 (7)第二章计算器的使用 (7)2.1 除法运算(÷) (7)2.2 平方运算(^2) (8)2.3 函数cos (∏/3)的计算 (8)2.4 函数arctan (∏/3)的计算 (9)2.5 以2为底的对数(log 2)的计算 (9)2.6 十进制数转二进制数的计算 (10)2.7 二进制数转十进制数的计算 (11)第三章各按键的程序源代码 (12)第四章问题和解决方法 (17)第五章心得体会 (16)参考文献 (17)计算器的效果图:第一章GUI设计界面:1.1打开GUI输入Guide 回车或者在工具栏上点击图标打开Guide 窗口:图 11.2.添加按钮图21.3.根据按钮的作用及视觉效果做一定的修改双击按钮(Puch Button)进入按键属性修改显示字符串大小、字体和颜色,然后对按钮的位置进行排布,尽量使按钮集中在静态文本框下面。

1.4.保存、添加功能函数把做好的按钮及静态文本框保存后自动弹出Editor的M文本,对然后对相应的pushbutton添加功能函数。

用MATLAB制作简单计算器

用MATLAB制作简单计算器

用M A T L A B制作简单计算器Company number:【0089WT-8898YT-W8CCB-BUUT-202108】安阳工学院电子信息与电气工程学院《MATLAB编程与应用》课程大作业题目:用MATLAB制作简单计算器班级:电子信息工程(专升本)教师成绩由以下评分标准累计得出1、设计和仿真结果正确,分析清晰合理。

40%2、大作业报告重点突出、阐述清晰。

30%3、陈述清晰正确、有说服力,能够正确回答问题。

30%总分(上述成绩由教师填写)学生自评分值(该表格全部由学生填写)大作业总成绩(该表格“姓名”和“学号”由学生填写,“成绩”由教师填写)1.计任务: 1、熟悉MATLAB的主要控件使用方法。

2、熟悉MATLAB的GUI设计流程。

2.设计方案利用MATLAB GUI设计实现一个图形用户界面的计算器程序,要求实现:A.实现十进制数的加、减、乘、除、简单计算。

B. 科学计算函数,包括正弦、余弦、正切、(余切、开方、指数等函数运行。

C. 能够保存上次历史计算的答案,先是答案存储器中得内容。

D. 有清除键,能清除操作。

3.方案实施通过MATLAB的gui程序设计较为简单,在gui设计中主要用到两种控件,显示框用到文本编辑框(edit text),说明框用到静态文本框(Static text),数字以及运算等按钮用到命令按钮(push button)。

然后在通过各个按钮的回调函数,实现简单的计算功能。

4.方案施舍首先用MATLAB GUI功能,在绘制一个静态文本框和一个文本编辑框,以及24个命令按钮,调整好各控件大小、颜色,整体布局如图所示:图-1一、布局GUI1.打开Matlab,输入Guide 回车或者在工具栏上点击图标出现Guide 窗口:图–22.然后双击“Blank GUI(Default)”出现GUI窗口图-33.添加按钮图-44.根据按钮的作用及视觉效果做一定的修改把按钮的字符串大小、颜色进行设置,对按钮的位置进行排布,尽量使按钮集中在静态文本框下面。

用MATLAB制作简单计算器

用MATLAB制作简单计算器

用M A T L A B制作简单计算器Last updated on the afternoon of January 3, 2021安阳工学院电子信息与电气工程学院《MATLAB编程与应用》课程大作业题目:用MATLAB制作简单计算器班级:电子信息工程(专升本)教师成绩由以下评分标准累计得出1、设计和仿真结果正确,分析清晰合理。

40%2、大作业报告重点突出、阐述清晰。

30%3、陈述清晰正确、有说服力,能够正确回答问题。

30%总分(上述成绩由教师填写)学生自评分值(该表格全部由学生填写)大作业总成绩(该表格“姓名”和“学号”由学生填写,“成绩”由教师填写)1.计任务: 1、熟悉MATLAB的主要控件使用方法。

2、熟悉MATLAB的GUI设计流程。

2.设计方案利用MATLAB GUI设计实现一个图形用户界面的计算器程序,要求实现:A.实现十进制数的加、减、乘、除、简单计算。

B. 科学计算函数,包括正弦、余弦、正切、(余切、开方、指数等函数运行。

C. 能够保存上次历史计算的答案,先是答案存储器中得内容。

D. 有清除键,能清除操作。

3.方案实施通过MATLAB的gui程序设计较为简单,在gui设计中主要用到两种控件,显示框用到文本编辑框(edit text),说明框用到静态文本框(Static text),数字以及运算等按钮用到命令按钮(push button)。

然后在通过各个按钮的回调函数,实现简单的计算功能。

4.方案施舍首先用MATLAB GUI功能,在绘制一个静态文本框和一个文本编辑框,以及24个命令按钮,调整好各控件大小、颜色,整体布局如图所示:图-1一、布局GUI1.打开Matlab,输入Guide 回车或者在工具栏上点击图标出现Guide 窗口:图–22.然后双击“Blank GUI(Default)”出现GUI窗口图-33.添加按钮图-44.根据按钮的作用及视觉效果做一定的修改把按钮的字符串大小、颜色进行设置,对按钮的位置进行排布,尽量使按钮集中在静态文本框下面。

psnr的matlab代码

psnr的matlab代码

psnr的matlab代码PSNR是一种视频或图像质量评估指标,通常用于衡量重建后的像素数据与原始像素数据之间的差异。

PSNR值越高,则表示重建图像的质量越好。

在这篇文章中,我们将介绍如何使用MATLAB编写一个PSNR计算器。

该程序将读取两个图像文件,并计算它们之间的PSNR值。

下面是实现此功能的步骤:步骤1:导入图像文件为了计算图像的PSNR值,我们首先需要导入两个图像文件。

我们可以使用imread函数来读取图像文件,如下所示:img1 = imread('image1.jpg');img2 = imread('image2.jpg');在这个例子中,我们假设有两个图像文件:image1.jpg和image2.jpg。

它们作为输入被导入到变量img1和img2中。

步骤2:比较两张图像接下来,我们比较这两张图像。

我们可以使用psnr函数来计算它们之间的PSNR值。

函数的基本语法如下所示:psnrval = psnr(image1, image2)在我们的代码中,我们将使用以下命令:psnrval = psnr(img1, img2);这将返回图像文件img1和img2之间的PSNR值,保存在变量psnrval 中。

步骤3:显示PSNR值最后,我们可以在MATLAB命令窗口中显示PSNR值,如下所示:disp(['The PSNR value is ', num2str(psnrval)]);这将输出一条消息,显示PSNR值。

消息将看起来像这样:The PSNR value is 23.9157这就是我们的程序!这里是完整的MATLAB代码:% 导入图像文件img1 = imread('image1.jpg');img2 = imread('image2.jpg');% 比较两个图像psnrval = psnr(img1, img2);% 显示PSNR值disp(['The PSNR value is ', num2str(psnrval)]);我们希望这篇文章能够帮助你学习如何使用MATLAB编写一个简单的PSNR计算器。

最新matlab简易计算器

最新matlab简易计算器

m a t l a b简易计算器电子信息工程系实验报告课程名称:MATLAB语言Array实验项目名称:MATLAB图形用户界面设计实验时间:班级:姓名:学号:实验目的: 1、熟悉MATLAB的主要控件使用方法。

2、熟悉MATLAB的GUI设计流程。

实验环境:硬件配置( Pentium(R) 4 CPU 2.40GHz,1GB内存)操作系统(Windows XP)编程软件:MATLAB7.0实验内容与结果:使用MATLAB的GUI接口设计一个简单的计算器。

效果图:程序源码部分函数及相关注释:%0~9数字键及小数点按钮代码范例%全局变量locaval用于存储用户输入的多位数值%全局变量gloval2用于存储待处理的第二位数值function pushbutton1_Callback(hObject, eventdata, handles) global locaval;a = get(handles.pushbutton1,'String');locaval=strcat(locaval,a);set(handles.text1,'String',locaval);global gloval2gloval2=locaval;guidata(hObject, handles);%运算符按钮处理“+、-、*、\”范例%全局变量flagnum存储运算符标志%全局变量global1用于储存第一个待处理数值function pushbutton10_Callback(hObject, eventdata, handles)a = get(handles.pushbutton10,'String');b = get(handles.text1,'String');set(handles.text1,'String',a);global flagnumglobal gloval1global locavallocaval=' ';flagnum=1;gloval1=b;guidata(hObject, handles);%取相反数按钮“+\-”代码%算法实现:用零减去文本框现在的值,再赋值给文本框function pushbutton14_Callback(hObject, eventdata, handles) global locaval;locaval=str2num(locaval);locaval=0-locaval;locaval=num2str(locaval);set(handles.text1,'String',locaval);global gloval2gloval2=locaval;guidata(hObject, handles);% 等号按钮运算实现%根据flagnum运算标志用switch决策语句实现相应计算%需注意相应数据类型的转化function pushbutton17_Callback(hObject, eventdata, handles) global flagnumglobal gloval1global gloval2global locavallocaval=' ';gloval1=str2num(gloval1);gloval2=str2num(gloval2);case1=gloval1/gloval2;case2=gloval1*gloval2;case3=gloval1-gloval2;case4=gloval1+gloval2;case1=num2str(case1);case2=num2str(case2);case3=num2str(case3);case4=num2str(case4);switch flagnum;case 1set(handles.text1,'String',case1);case 2set(handles.text1,'String',case2);case 3set(handles.text1,'String',case3);case 4set(handles.text1,'String',case4);endguidata(hObject,handles)% BackSpace按钮函数%算法实现:MATLAB是用矩阵存储数据的,相应的可以取文本框的前N-1实现其功能function pushbutton19_Callback(hObject, eventdata, handles)textString = get(handles.text1,'String');if(strcmp(textString,'0.')==1)set(handles.text1,'String','0.') ;elsess=char(textString);l=length(textString);textString=ss(1:l-1);set(handles.text1,'String',textString)endguidata(hObject,handles)%C清除按钮函数%把全局变量locaval清零function pushbutton20_Callback(hObject, eventdata, handles)global locavallocaval=' ';set(handles.text1,'String','0.');guidata(hObject,handles)%开平方函数function pushbutton22_Callback(hObject, eventdata, handles)textString = get(handles.text1,'String');textString=str2num(textString);textString=sqrt(textString);textString=num2str(textString);set(handles.text1,'String',textString);locaval=' ';guidata(hObject,handles)%取1/x函数function pushbutton24_Callback(hObject, eventdata, handles)global locavallocaval=str2num(locaval);locaval=1/locaval;set(handles.text1,'String',locaval);locaval=' ';guidata(hObject,handles)实验心得:!、通过MATLAB简单计算器的设计,初步了解了关于MATLAB图形用户界面的部分控件的使用方法。

Matlab实现的简易计算器程序代码

Matlab实现的简易计算器程序代码

function varargout = jisuanqi(varargin)% JISUANQI M-file for jisuanqi.fig% JISUANQI, by itself, creates a new JISUANQI or raises the existing % singleton*.%% H = JISUANQI returns the handle to a new JISUANQI or the handle to % the existing singleton*.%% JISUANQI('CALLBACK',hObject,eventData,handles,...) calls the local % function named CALLBACK in JISUANQI.M with the given input arguments. %% JISUANQI('Property','Value',...) creates a new JISUANQI or raises the % existing singleton*. Starting from the left, property value pairs are % applied to the GUI before jisuanqi_OpeningFcn gets called. An% unrecognized property name or invalid value makes property application % stop. All inputs are passed to jisuanqi_OpeningFcn via varargin. %% *See GUI Options on GUIDE's Tools menu. Choose "GUI allows only one % instance to run (singleton)".%% See also: GUIDE, GUIDATA, GUIHANDLES% Edit the above text to modify the response to help jisuanqi% Last Modified by GUIDE v2.5 20-Jul-2011 09:45:20% Begin initialization code - DO NOT EDITgui_Singleton = 1;gui_State = struct('gui_Name', mfilename, ...'gui_Singleton', gui_Singleton, ...'gui_OpeningFcn', @jisuanqi_OpeningFcn, ...'gui_OutputFcn', @jisuanqi_OutputFcn, ...'gui_LayoutFcn', [] , ...'gui_Callback', []);if nargin && ischar(varargin{1})gui_State.gui_Callback = str2func(varargin{1});endif nargout[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});elsegui_mainfcn(gui_State, varargin{:});end% End initialization code - DO NOT EDIT% --- Executes just before jisuanqi is made visible.function jisuanqi_OpeningFcn(hObject, eventdata, handles, varargin) handles.current_str='';%´ËΪ´æ´¢µ±Ç°µÄ×Ö·û´®handles.L1_str='';handles.L2_str='';%´ËΪ´æ´¢ÉÏÒ»¸öÊý×ÖµÄ×Ö·û´®% This function has no output args, see OutputFcn.% hObject handle to figure% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)% varargin command line arguments to jisuanqi (see VARARGIN)% Choose default command line output for jisuanqihandles.output = hObject;% Update handles structureguidata(hObject, handles);% UIWAIT makes jisuanqi wait for user response (see UIRESUME)% uiwait(handles.figure1);% --- Outputs from this function are returned to the command line. function varargout = jisuanqi_OutputFcn(hObject, eventdata, handles) % varargout cell array for returning output args (see VARARGOUT);% hObject handle to figure% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)% Get default command line output from handles structurevarargout{1} = handles.output;% --- Executes on button press in Number_0.function Number_0_Callback(hObject, eventdata, handles)%Á¬½Óµ±Ç°µÄ×Ö·û´®ºÍ0£¬Èç¹û°´ÁË0¼üµÄ»°¡£handles.current_str=strcat(handles.current_str,'0');handles.L1_str=strcat(handles.L1_str,'0');%ÔÚÊä³öµ±Ç°µÄ×Ö·û´®set(handles.edit1,'String',handles.current_str);guidata(hObject, handles);% hObject handle to Number_0 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)% --- Executes on button press in xiaoshudian.function xiaoshudian_Callback(hObject, eventdata, handles)handles.current_str=strcat(handles.current_str,'.');guidata(hObject, handles);%СÊýµã% hObject handle to xiaoshudian (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)% --- Executes on button press in jia_jian.function jia_jian_Callback(hObject, eventdata, handles)% hObject handle to jia_jian (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)% --- Executes on button press in Number_1.function Number_1_Callback(hObject, eventdata, handles)% hObject handle to Number_1 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)%Á¬½Óµ±Ç°µÄ×Ö·û´®ºÍ1£¬Èç¹û°´ÁË1¼üµÄ»°¡£handles.current_str=strcat(handles.current_str,'1');handles.L1_str=strcat(handles.L1_str,'1');%ÔÚÊä³öµ±Ç°µÄ×Ö·û´®set(handles.edit1,'String',handles.current_str);guidata(hObject, handles);% --- Executes on button press in Number_2.function Number_2_Callback(hObject, eventdata, handles)%Á¬½Óµ±Ç°µÄ×Ö·û´®ºÍ2£¬Èç¹û°´ÁË1¼üµÄ»°¡£handles.current_str=strcat(handles.current_str,'2');handles.L1_str=strcat(handles.L1_str,'2');%ÔÚÊä³öµ±Ç°µÄ×Ö·û´®set(handles.edit1,'String',handles.current_str);guidata(hObject, handles);% hObject handle to Number_2 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)% --- Executes on button press in Number_3.function Number_3_Callback(hObject, eventdata, handles)%Á¬½Óµ±Ç°µÄ×Ö·û´®ºÍ3£¬Èç¹û°´ÁË3¼üµÄ»°¡£handles.current_str=strcat(handles.current_str,'3');handles.L1_str=strcat(handles.L1_str,'3');%ÔÚÊä³öµ±Ç°µÄ×Ö·û´®set(handles.edit1,'String',handles.current_str);guidata(hObject, handles);% hObject handle to Number_3 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)% --- Executes on button press in Number_4.function Number_4_Callback(hObject, eventdata, handles)%Á¬½Óµ±Ç°µÄ×Ö·û´®ºÍ4£¬Èç¹û°´ÁË4¼üµÄ»°¡£handles.current_str=strcat(handles.current_str,'4');handles.L1_str=strcat(handles.L1_str,'4');%ÔÚÊä³öµ±Ç°µÄ×Ö·û´®set(handles.edit1,'String',handles.current_str);guidata(hObject, handles);% hObject handle to Number_4 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)% --- Executes on button press in Number_5.function Number_5_Callback(hObject, eventdata, handles)%Á¬½Óµ±Ç°µÄ×Ö·û´®ºÍ5£¬Èç¹û°´ÁË5¼üµÄ»°¡£handles.current_str=strcat(handles.current_str,'5');handles.L1_str=strcat(handles.L1_str,'5');%ÔÚÊä³öµ±Ç°µÄ×Ö·û´®set(handles.edit1,'String',handles.current_str);guidata(hObject, handles);% hObject handle to Number_5 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)% --- Executes on button press in Number_6.function Number_6_Callback(hObject, eventdata, handles)%Á¬½Óµ±Ç°µÄ×Ö·û´®ºÍ6£¬Èç¹û°´ÁË6¼üµÄ»°¡£handles.current_str=strcat(handles.current_str,'6');handles.L1_str=strcat(handles.L1_str,'6');%ÔÚÊä³öµ±Ç°µÄ×Ö·û´®set(handles.edit1,'String',handles.current_str);guidata(hObject, handles);% hObject handle to Number_6 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)% --- Executes on button press in Number_7.function Number_7_Callback(hObject, eventdata, handles)%Á¬½Óµ±Ç°µÄ×Ö·û´®ºÍ7£¬Èç¹û°´ÁË7¼üµÄ»°¡£handles.current_str=strcat(handles.current_str,'7');handles.L1_str=strcat(handles.L1_str,'7');%ÔÚÊä³öµ±Ç°µÄ×Ö·û´®set(handles.edit1,'String',handles.current_str);guidata(hObject, handles);% hObject handle to Number_7 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)% --- Executes on button press in Number_8.function Number_8_Callback(hObject, eventdata, handles)%Á¬½Óµ±Ç°µÄ×Ö·û´®ºÍ8£¬Èç¹û°´ÁË8¼üµÄ»°¡£handles.current_str=strcat(handles.current_str,'8');handles.L1_str=strcat(handles.L1_str,'8');%ÔÚÊä³öµ±Ç°µÄ×Ö·û´®set(handles.edit1,'String',handles.current_str);guidata(hObject, handles);% hObject handle to Number_8 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)% --- Executes on button press in Number_9.function Number_9_Callback(hObject, eventdata, handles)%Á¬½Óµ±Ç°µÄ×Ö·û´®ºÍ9£¬Èç¹û°´ÁË9¼üµÄ»°¡£handles.current_str=strcat(handles.current_str,'9');handles.L1_str=strcat(handles.L1_str,'9');%ÔÚÊä³öµ±Ç°µÄ×Ö·û´®set(handles.edit1,'String',handles.current_str);guidata(hObject, handles);% hObject handle to Number_9 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)% --- Executes on button press in jiahao.function jiahao_Callback(hObject, eventdata, handles)handles.current_str=strcat(handles.current_str,'+');set(handles.edit1,'String',handles.current_str);guidata(hObject, handles);% hObject handle to jiahao (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)% --- Executes on button press in denghao.function denghao_Callback(hObject, eventdata, handles)st = get(handles.edit1,'String');%¼ÆËã½á¹û£¬²¢´æ·Åµ½µÚ¶þ¸ö±à¼-¿òÖС£val = eval(st);s = num2str(val);set(handles.edit2,'String',s);guidata(hObject, handles);% hObject handle to denghao (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)% --- Executes on button press in jianhao.function jianhao_Callback(hObject, eventdata, handles)handles.current_str=strcat(handles.current_str,'-');set(handles.edit1,'String',handles.current_str);guidata(hObject, handles);% hObject handle to jianhao (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)% --- Executes on button press in X_daoshu.function X_daoshu_Callback(hObject, eventdata, handles)handles.current_str=strcat(handles.current_str,'\1');set(handles.edit1,'String',handles.current_str);guidata(hObject, handles);% hObject handle to X_daoshu (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)% --- Executes on button press in chenghao.function chenghao_Callback(hObject, eventdata, handles)handles.current_str=strcat(handles.current_str,'*');set(handles.edit1,'String',handles.current_str);guidata(hObject, handles);% hObject handle to chenghao (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)% --- Executes on button press in baifenhao.function baifenhao_Callback(hObject, eventdata, handles)handles.current_str=strcat(handles.current_str,'/100');set(handles.edit1,'String',handles.current_str);guidata(hObject, handles);handles.L2_str=handles.L1_str;handles.L1_str = '';% hObject handle to baifenhao (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)% --- Executes on button press in chuhao.function chuhao_Callback(hObject, eventdata, handles)handles.current_str=strcat(handles.current_str,'/');set(handles.edit1,'String',handles.current_str);guidata(hObject, handles);% hObject handle to chuhao (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)% --- Executes on button press in Sqrt.function Sqrt_Callback(hObject, eventdata, handles)handles.current_str=strcat(handles.current_str,'sqrt');handles.L1_str=strcat(handles.L1_str,'sqrt');%ÔÚÊä³öµ±Ç°µÄ×Ö·û´®set(handles.edit1,'String',handles.current_str);guidata(hObject, handles);% hObject handle to Sqrt (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)% --- Executes on button press in X_lifang.function X_lifang_Callback(hObject, eventdata, handles)handles.current_str=strcat(handles.current_str,'^3');set(handles.edit1,'String',handles.current_str);guidata(hObject, handles);% hObject handle to X_lifang (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)% --- Executes on button press in x_pingfang.function x_pingfang_Callback(hObject, eventdata, handles)handles.current_str=strcat(handles.current_str,'^2');set(handles.edit1,'String',handles.current_str);guidata(hObject, handles);% hObject handle to x_pingfang (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)% --- Executes on button press in zhengqie.function zhengqie_Callback(hObject, eventdata, handles)handles.current_str=strcat(handles.current_str,'tan');handles.L1_str=strcat(handles.L1_str,'tan');%ÔÚÊä³öµ±Ç°µÄ×Ö·û´®set(handles.edit1,'String',handles.current_str);guidata(hObject, handles);% hObject handle to zhengqie (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)% --- Executes on button press in zhengxian.function zhengxian_Callback(hObject, eventdata, handles)handles.current_str=strcat(handles.current_str,'sin');handles.L1_str=strcat(handles.L1_str,'sin');%ÔÚÊä³öµ±Ç°µÄ×Ö·û´®set(handles.edit1,'String',handles.current_str);guidata(hObject, handles);% hObject handle to zhengxian (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)% --- Executes on button press in CE.function CE_Callback(hObject, eventdata, handles)% hObject handle to CE (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)% --- Executes on button press in C.function C_Callback(hObject, eventdata, handles)% hObject handle to C (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) handles.current_str = '';set(handles.edit1,'String','0.');set(handles.edit2,'String','0.');guidata(hObject, handles);% --- Executes on button press in Backspace.function Backspace_Callback(hObject, eventdata, handles)% hObject handle to Backspace (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)s1 = handles.current_str;handles.current_str = s1(1:length(s1)-1);set(handles.edit1,'String',handles.current_str);guidata(hObject, handles);function edit1_Callback(hObject, eventdata, handles)% hObject handle to edit1 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)% Hints: get(hObject,'String') returns contents of edit1 as text% str2double(get(hObject,'String')) returns contents of edit1 as a double% --- Executes during object creation, after setting all properties. function edit1_CreateFcn(hObject, eventdata, handles)% hObject handle to edit1 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles empty - handles not created until after all CreateFcns called % Hint: edit controls usually have a white background on Windows.% See ISPC and COMPUTER.if ispc && isequal(get(hObject,'BackgroundColor'),get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor','white');endif ispcset(hObject,'BackgroundColor','white');elseset(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor')) ;end% --- Executes on button press in shujujiazai.function shujujiazai_Callback(hObject, eventdata, handles)% hObject handle to shujujiazai (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)global YSData;[filename,pathname,FILTERINDEX]=uigetfile({'*.xls';'*.dat';'*.*'},'Ñ¡ÔñÊý¾ÝÎļþ');if(FILTERINDEX==0)return;endstr_filename=[pathname,filename];fid=fopen(str_filename,'rt');if(fid==-1)errordlg('Open file error!','Open error');return;endYSData=xlsread(str_filename);set(handles.lujingxianshi,'String',str_filename);set(handles.tuxingxianshi,'Enable','on');function lujingxianshi_Callback(hObject, eventdata, handles)% hObject handle to lujingxianshi (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)set(handles.lujingxianshi,'String',pathname);% Hints: get(hObject,'String') returns contents of lujingxianshi as text % str2double(get(hObject,'String')) returns contents of lujingxianshi as a double% --- Executes during object creation, after setting all properties. function lujingxianshi_CreateFcn(hObject, eventdata, handles)% hObject handle to lujingxianshi (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles empty - handles not created until after all CreateFcns called % Hint: edit controls usually have a white background on Windows.% See ISPC and COMPUTER.if ispc && isequal(get(hObject,'BackgroundColor'),get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor','white');end% --- Executes on button press in zhuxingtu.function zhuxingtu_Callback(hObject, eventdata, handles)% hObject handle to zhuxingtu (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)set(handles.zhuxingtu,'Value',1);set(handles.zhexiantu,'Value',0);set(handles.yuanbingtu,'Value',0);% Hint: get(hObject,'Value') returns toggle state of zhuxingtu% --- Executes on button press in zhexiantu.function zhexiantu_Callback(hObject, eventdata, handles)% hObject handle to zhexiantu (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)set(handles.zhuxingtu,'Value',0);set(handles.zhexiantu,'Value',1);set(handles.yuanbingtu,'Value',0);% Hint: get(hObject,'Value') returns toggle state of zhexiantu% --- Executes on button press in yuanbingtu.function yuanbingtu_Callback(hObject, eventdata, handles)% hObject handle to yuanbingtu (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)set(handles.zhuxingtu,'Value',0);set(handles.zhexiantu,'Value',0);set(handles.yuanbingtu,'Value',1);% Hint: get(hObject,'Value') returns toggle state of yuanbingtu% --- Executes on button press in tuxingxianshi.function tuxingxianshi_Callback(hObject, eventdata, handles)global YSData;%Åжϡ®Í¼ÏñÀàÐÍ¡¯ÏÂ×éºÏ¿òÖеĸ÷µ¥Ñ¡°´Å¥µÄÑ¡ÖÐÇé¿ö£¬²¢´æ´¢ÔÚIndex_rad iobuttonÖÐIndex_radiobutton=get([handles.zhuxingtu,handles.zhexiantu,handles.yuan bingtu],'Value');%½øÐÐͼÐÎÉú³Éif(Index_radiobutton{1}==1)bar(YSData);title('¸÷Êý¾ÝÖ±·½Í¼');endif(Index_radiobutton{2}==1)plot(YSData);title('¸÷Êý¾ÝÕÛÏßͼ');endif(Index_radiobutton{3}==1)pie(YSData);title('¸÷Êý¾ÝÔ²±ýͼ');end% hObject handle to tuxingxianshi (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% global YSData;% --- Executes during object creation, after setting all properties. function tuxingxianshi_CreateFcn(hObject, eventdata, handles)% hObject handle to tuxingxianshi (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles empty - handles not created until after all CreateFcns called function edit2_Callback(hObject, eventdata, handles)% hObject handle to edit2 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)% Hints: get(hObject,'String') returns contents of edit2 as text% str2double(get(hObject,'String')) returns contents of edit2 as a double% --- Executes during object creation, after setting all properties. function edit2_CreateFcn(hObject, eventdata, handles)% hObject handle to edit2 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles empty - handles not created until after all CreateFcns called % Hint: edit controls usually have a white background on Windows.% See ISPC and COMPUTER.if ispc && isequal(get(hObject,'BackgroundColor'),get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor','white');end% --- Executes on button press in Quit.function Quit_Callback(hObject, eventdata, handles)% hObject handle to Quit (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)close(gcf);% --- Executes during object deletion, before destroying properties. function zhengxian_DeleteFcn(hObject, eventdata, handles)% hObject handle to zhengxian (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)function edit3_Callback(hObject, eventdata, handles)% hObject handle to edit3 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)% Hints: get(hObject,'String') returns contents of edit3 as text% str2double(get(hObject,'String')) returns contents of edit3 as a double% --- Executes during object creation, after setting all properties. function edit3_CreateFcn(hObject, eventdata, handles)% hObject handle to edit3 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles empty - handles not created until after all CreateFcns called % Hint: edit controls usually have a white background on Windows.% See ISPC and COMPUTER.if ispc && isequal(get(hObject,'BackgroundColor'),get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor','white');end。

MATLAB做简易计算器

MATLAB做简易计算器

MATLAB做简易计算器1、数字键的编写:textstring=get(handles.text1,'string');textstring=strcat(textstring,'0');set(handles.text1,'string',textstring);这是使用句柄handles指向对象text1,并以字符串形式来存储数据文本框text1的内容,并存储数个“0”,然后由set(handles.text1,'String','textString')在text1中输出。

同理,1~9也是这样实现。

2、符号键:textstring=get(handles.text1,'string');textstring=strcat(textstring,'+');set(handles.text1,'string',textstring);strcat的作用是将两个字符串连接起来,就是在已输入的存储数据textString后添加“+”进行运算。

然后执行set(handles.text1,'String',textString)。

符号键‘-’、‘*’、‘/’与‘+’的运算函数类似。

3、等于键:textstring=get(handles.text1,'string');s=eval(textstring);set(handles.text1,'string',s);“eval”的作用是将符号表达式转换成数值表达式。

再由set(handles.text1,'String',s)输出4、清除键:set(handles.text1,'string',' ');计算器使用:‘+’‘=’后:源程序:function varargout = jisuanqi(varargin)% JISUANQI MATLAB code for jisuanqi.fig% JISUANQI, by itself, creates a new JISUANQI or raises the existing % singleton*.%% H = JISUANQI returns the handle to a new JISUANQI or the handle to % the existing singleton*.%% JISUANQI('CALLBACK',hObject,eventData,handles,...) calls the local% function named CALLBACK in JISUANQI.M with the given input arguments.%% JISUANQI('Property','Value',...) creates a new JISUANQI or raises the% existing singleton*. Starting from the left, property value pairs are% applied to the GUI before jisuanqi_OpeningFcn gets called. An% unrecognized property name or invalid value makes propertyapplication% stop. All inputs are passed to jisuanqi_OpeningFcn via varargin. %% *See GUI Options on GUIDE's Tools menu. Choose "GUI allows only one% instance to run (singleton)".%% See also: GUIDE, GUIDATA, GUIHANDLES% Edit the above text to modify the response to help jisuanqi% Last Modified by GUIDE v2.5 04-May-2015 16:44:30% Begin initialization code - DO NOT EDITgui_Singleton = 1;gui_State = struct('gui_Name', mfilename, ...'gui_Singleton', gui_Singleton, ...'gui_OpeningFcn', @jisuanqi_OpeningFcn, ...'gui_OutputFcn', @jisuanqi_OutputFcn, ...'gui_LayoutFcn', [] , ...'gui_Callback', []);if nargin && ischar(varargin{1})gui_State.gui_Callback = str2func(varargin{1});endif nargout[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});elsegui_mainfcn(gui_State, varargin{:});end% End initialization code - DO NOT EDIT% --- Executes just before jisuanqi is made visible.function jisuanqi_OpeningFcn(hObject, eventdata, handles, varargin)% This function has no output args, see OutputFcn.% hObject handle to figure% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)% varargin command line arguments to jisuanqi (see VARARGIN)% Choose default command line output for jisuanqihandles.output = hObject;% Update handles structureguidata(hObject, handles);% UIWAIT makes jisuanqi wait for user response (see UIRESUME)% uiwait(handles.figure1);% --- Outputs from this function are returned to the command line. function varargout = jisuanqi_OutputFcn(hObject, eventdata, handles) % varargout cell array for returning output args (see VARARGOUT);% hObject handle to figure% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)% Get default command line output from handles structurevarargout{1} = handles.output;% --- Executes on button press in pushbutton1.function pushbutton1_Callback(hObject, eventdata, handles)textstring=get(handles.text1,'string');textstring=strcat(textstring,'1');set(handles.text1,'string',textstring);% hObject handle to pushbutton1 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)% --- Executes on button press in pushbutton2.function pushbutton2_Callback(hObject, eventdata, handles)textstring=get(handles.text1,'string');textstring=strcat(textstring,'2');set(handles.text1,'string',textstring);% hObject handle to pushbutton2 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)% --- Executes on button press in pushbutton3.function pushbutton3_Callback(hObject, eventdata, handles)textstring=get(handles.text1,'string');textstring=strcat(textstring,'3');set(handles.text1,'string',textstring);% hObject handle to pushbutton3 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)% --- Executes on button press in pushbutton4.function pushbutton4_Callback(hObject, eventdata, handles)textstring=get(handles.text1,'string');textstring=strcat(textstring,'+');set(handles.text1,'string',textstring);% hObject handle to pushbutton4 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)% --- Executes on button press in pushbutton9.function pushbutton9_Callback(hObject, eventdata, handles)textstring=get(handles.text1,'string');textstring=strcat(textstring,'4');set(handles.text1,'string',textstring);% hObject handle to pushbutton9 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)% --- Executes on button press in pushbutton10.function pushbutton10_Callback(hObject, eventdata, handles) textstring=get(handles.text1,'string');textstring=strcat(textstring,'5');set(handles.text1,'string',textstring);% hObject handle to pushbutton10 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)% --- Executes on button press in pushbutton11.function pushbutton11_Callback(hObject, eventdata, handles) textstring=get(handles.text1,'string');textstring=strcat(textstring,'6');set(handles.text1,'string',textstring);% hObject handle to pushbutton11 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)% --- Executes on button press in pushbutton12.function pushbutton12_Callback(hObject, eventdata, handles) textstring=get(handles.text1,'string');textstring=strcat(textstring,'-');set(handles.text1,'string',textstring);% hObject handle to pushbutton12 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)% --- Executes on button press in pushbutton13.function pushbutton13_Callback(hObject, eventdata, handles) textstring=get(handles.text1,'string');textstring=strcat(textstring,'7');set(handles.text1,'string',textstring);% hObject handle to pushbutton13 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)% --- Executes on button press in pushbutton14.function pushbutton14_Callback(hObject, eventdata, handles) textstring=get(handles.text1,'string');textstring=strcat(textstring,'8');set(handles.text1,'string',textstring);% hObject handle to pushbutton14 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)% --- Executes on button press in pushbutton15.function pushbutton15_Callback(hObject, eventdata, handles) textstring=get(handles.text1,'string');textstring=strcat(textstring,'9');set(handles.text1,'string',textstring);% hObject handle to pushbutton15 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)% --- Executes on button press in pushbutton16.function pushbutton16_Callback(hObject, eventdata, handles) textstring=get(handles.text1,'string');textstring=strcat(textstring,'*');set(handles.text1,'string',textstring);% hObject handle to pushbutton16 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)% --- Executes on button press in pushbutton17.function pushbutton17_Callback(hObject, eventdata, handles);set(handles.text1,'string',' ');% hObject handle to pushbutton17 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)% --- Executes on button press in pushbutton18.function pushbutton18_Callback(hObject, eventdata, handles) textstring=get(handles.text1,'string');textstring=strcat(textstring,'.');set(handles.text1,'string',textstring);% hObject handle to pushbutton18 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)% --- Executes on button press in pushbutton19.function pushbutton19_Callback(hObject, eventdata, handles) textstring=get(handles.text1,'string');s=eval(textstring);set(handles.text1,'string',s);% hObject handle to pushbutton19 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)% --- Executes on button press in pushbutton20.function pushbutton20_Callback(hObject, eventdata, handles) textstring=get(handles.text1,'string');textstring=strcat(textstring,'/');set(handles.text1,'string',textstring);% hObject handle to pushbutton20 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)。

matlabGUI计算器

matlabGUI计算器

计算器一、实习任务利用MATLAB里面的函数和GUI用户设计工具箱,制作简易计算器,实现简单的计算任务。

二、实习内容1、布局设计2、程序设计(1)数字按键textString = get(handles.text1,'String');textString = strcat(textString,'0');set(handles.text1,'string',textString)(2)符号按键textString = get(handles.text1,'String'); textString = strcat(textString,'*');set(handles.text1,'string',textString)(3)清零按键set(handles.text1,'string','')(4)返回按键textString = get(handles.text1,'String');set(handles.text1,'String','');ss=char(textString);n=length(textString);textString = ss(1:n-1);set(handles.text1,'string',textString)(5)函数按键textString = handles.text1;textString =sin(str2num(get(handles.text1,'String'))*pi/180); set(handles.text1,'string',num2str(textString)) ; (get(handles.text1,'String'))*pi/1803、效果图三、遇到的问题及解决方法1、遇到的问题在这次MATLAB简易计算器设计中,最大的问题就是不知道如何编写程序,其次就是在Command里面实现了,但在GUI用户界面不知道如何操作编写。

用MATLAB GUI做计算器,

用MATLAB GUI做计算器,
'gui_Callback', []);
if nargin && ischar(varargin{1})
gui_State.gui_Callback = str2func(varargin{1});
end
if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
handles.current_str=strcat(handles.current_str,'4');
set(handles.edit1,'String',handles.current_str);
guidata(hObject, handles);
% --- Executes on button press in pushbutton5.
% uiwait(handles.figure1);
% --- Outputs from this function are returned to the command line.
function varargout = calculator_OutputFcn(hObject, eventdata, handles)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
function edit1_Callback(hObject, eventdata, handles)

MATLABGUI入门简单实例(加法计算器)

MATLABGUI入门简单实例(加法计算器)

本人初学GUI ,针对网上版本的混乱,学得一头雾水,特重新整理如下,供大家参考。

1.首先我们新建一个 GUI 文件:File/New/GUI 如下图所示;选择 Blank GUI(Default),点击 OK 。

2.进入GUI 开发环境以后添加 3个编辑文本框(Edit Text ),2个静态文本框(Static Text ), 和一个Push Button 按钮,布置如下图所示;⑷修改Pushbutton 按钮的属性,“ string 改为“ Add ” “ tag 改为“ add ”⑸另外2个Static 文本就是的“ string 修改为"+ ”"=”(6)点击“保存”,名字任意取,自动弹出 M 文件(我的是7.0版本,不知其他版本会不 会如此)。

(1) 第一个 “in putl ”(2) 第二个 “input2 ”(3)第三个“ Edit Text! ”的用来存储第一个加数,我们将“Edit Tex2”的用来存储第二个加数,我们将"Edit Tex3"的 “string 改为 “Q ” “tag 为““ string 改为 “ 0,” “ tag 改为 “ string 改为 “ 0” “ tag 改为 an swer3•我们先为第一个Edit Text文本框添加代码,即读取第一个加数;点击上图所示红色方框,选择input1_Callback,光标便立刻移到下面这段代码(程序自动生成)的位置。

function in put1_Callback(hObject, even tdata, han dies)% hObject han dle to in putl (see GCBO)% eve ntdata reserved - to be defi ned in a future version of MATLAB% han dles structure with han dles and user data (see GUIDATA)% Hints: get(hObject, ' String ' ) returns cpnttlnasoext% str2double(get(hObject, ' String ' )) returnscontents of editl as a double然后在上面这段代码的下面插入如下代码:%以字符串的形式来存储数据文本框1的内容•如果字符串不是数字,则现实空白内容input=str2num(get(hObject,'String')); %检查输入是否为空.如果为空,则默认显示为0 if(isempty(i nput))set(hObject,'Stri ng','0')endguidata(hObject,handles);%保存handles结构体,只要在handles结构体有改变时,才需要保存%guidata(hObject, handles);%这里由于handles没有改变,故这里其实没有必要,但是为了避免潜在的不必要麻烦,建议在所有Callback都添加该命令。

matlab数值计算代码

matlab数值计算代码

matlab数值计算代码Matlab是一种强大的数值计算软件,广泛应用于科学研究、工程设计等领域。

在Matlab中,我们可以使用代码来进行各种数值计算,包括数值积分、数值求解方程、数值解微分方程等。

本文将介绍一些常见的数值计算代码,并说明其原理和应用。

一、数值积分数值积分是利用数值方法求解定积分的过程。

在Matlab中,我们可以使用simpson函数或trapz函数进行数值积分计算。

这两个函数分别采用辛普森公式和梯形公式进行数值积分近似。

例如,下面的代码使用simpson函数计算函数f(x)在区间[a,b]上的定积分:```matlaba = 0;b = 1;n = 100;x = linspace(a, b, n);y = f(x);integral = simpson(y, x);```其中,a和b分别是积分区间的上下限,n是划分区间的个数,x是划分后的区间点,y是函数在各个区间点处的函数值,integral是计算得到的定积分值。

二、数值求解方程数值求解方程是指利用数值方法求解方程的近似解。

在Matlab中,我们可以使用fzero函数或fsolve函数进行数值求解方程。

这两个函数采用不同的求解算法,可以用于求解单变量方程或多变量方程。

例如,下面的代码使用fzero函数求解方程f(x)=0:```matlabx0 = 0;x = fzero(@f, x0);```其中,x0是求解初始值,@f是函数句柄,表示要求解的方程。

x 是求解得到的近似解。

三、数值解微分方程数值解微分方程是指利用数值方法求解微分方程的近似解。

在Matlab中,我们可以使用ode45函数或ode23函数进行数值解微分方程。

这两个函数采用不同的数值方法,可以用于求解常微分方程或偏微分方程。

例如,下面的代码使用ode45函数求解常微分方程dy/dx=f(x,y):```matlabx0 = 0;y0 = 1;xspan = [0, 1];[t, y] = ode45(@f, xspan, y0);```其中,x0和y0分别是初始条件,xspan是求解区间,@f是函数句柄,表示要求解的微分方程。

matlabgui计算表达式

matlabgui计算表达式

matlabgui计算表达式创建一个简单的MATLAB GUI来计算表达式可以使用MATLAB的图形用户界面开发环境(GUIDE)或手动编写代码。

下面是使用手动编写代码创建一个简单计算器GUI的步骤:1. 打开MATLAB,并创建一个新的MATLAB脚本文件。

2. 在脚本文件中,使用`uicomponent`函数创建一个文本框,用于输入表达式。

例如:```matlabedittext1 = uicomponent('Style', 'text', 'String', '', 'Position', [100 50 100 20]);```3. 使用`uicomponent`函数创建一个命令按钮,用于计算表达式。

例如:```matlabpushbutton1 = uicomponent('Style', 'pushbutton', 'String', '计算', 'Position', [150 100 50 20]);4. 使用`addlistener`函数添加事件监听器,以便在单击按钮时触发计算。

例如:```matlabaddlistener(pushbutton1, 'ButtonPushedFcn', 'PostSet', @(s,e)calculate());```5. 在脚本中定义一个名为`calculate`的函数,该函数将获取文本框中的表达式并计算其值。

例如:```matlabfunction calculate()expression = get(edittext1, 'String');result = eval(expression);disp(result);end6. 最后,使用`start`函数启动GUI。

基于MATLAB的简易矩阵计算器

基于MATLAB的简易矩阵计算器

《MATLAB程序设计》程序设计报告设计题目:简易矩阵计算器班级:021231******学号:********目录1.设计目标……………………2.设计内容……………………3.设计思想……………………4.设计说明……………………5.设计步骤及程序代码……………………6.运行计算器……………………7.总结…………………………1.设计目标1.熟悉MATLAB的主要控件使用方法。

2.熟悉MATLAB的GUI设计流程。

2.设计内容设计一个简易的矩阵计算器,通过对简单应用矩阵计算器的设计,编制、调试实现矩阵相加减,矩阵的转置等简单运算,以学习应用MATLAB编写程序原理,加深对MATLAB的学习及应用。

3.设计思想基于MATLAB中GUI界面的设计,通过创建类成员函数成员变量,编辑控件创建消息映射,调用信息函数完成数据的输入输出,实现计算功能。

生成简单的应用软件。

4.设计说明1)包含的功能有:加、减、乘、转置等。

2)输入的原始数据分别为A或B矩阵,分别显示在不同标签中,运算的结果则显示在输出部分。

3)计算功能基本上是用系统内部函数。

4)程序能够自动判断输入数据的正确性,如不能输入(1)。

5.设计步骤及只要代码1)打开MATLAB,点击,出现GUI的2)设计计算器版面直至3)对功能键进行设计执行A矩阵加B矩阵,其执行代码如下A = eval((get(handles.Matrix_A,'String')));B = eval((get(handles.Matrix_B,'String')));[iA jA]=size(A);[iB jB]=size(B);if iA ~= iB | jA ~= jB |(iA ~= iB & jA ~= jB) R='error.Matrix dimensions must agree.';set(handles.Answer,'string',R)guidata(hObject, handles);elseresult=A + B ;R =num2str(result);set(handles.Answer,'string',R)guidata(hObject, handles);end执行A矩阵减B矩阵,其执行代码如下A = eval((get(handles.Matrix_A,'String')));B = eval((get(handles.Matrix_B,'String')));[iA jA]=size(A);[iB jB]=size(B);if iA ~= iB | jA ~= jB |(iA ~= iB & jA ~= jB) R='error.Matrix dimensions must agree.';set(handles.Answer,'String',R)guidata(hObject, handles);elseresult = A - B ;R = num2str(result);set(handles.Answer,'String',R)guidata(hObject, handles);end执行A矩阵与B矩阵相乘,其执行代码如下A = eval((get(handles.Matrix_A,'String')));B = eval((get(handles.Matrix_B,'String')));[iA jA]=size(A);[iB jB]=size(B);if jA~=iBR='error.Inner matrix dimensions must agree.';set(handles.Answer,'String',R)guidata(hObject, handles);elseresult = A * B ;R = num2str(result);set(handles.Answer,'String',R)guidata(hObject, handles);end执行A右除B矩阵,其执行代码如下A = eval((get(handles.Matrix_A,'String')));B = eval((get(handles.Matrix_B,'String')));[iA jA]=size(A);[iB jB]=size(B);if iA~=iB 、R='error.Matrix dimensions must agree.';set(handles.Answer,'String',R)guidata(hObject, handles);elseresult = A \ B ;R = num2str(result);set(handles.Answer,'String',R)guidata(hObject, handles);end执行A.*B,其执行代码如下A = eval((get(handles.Matrix_A,'String')));B = eval((get(handles.Matrix_B,'String')));result = A .* B ;R = num2str(result);set(handles.Answer,'String',R)guidata(hObject, handles);执行A./B,其执行代码如下A = eval((get(handles.Matrix_A,'String')));B = eval((get(handles.Matrix_B,'String')));result = A ./ B ;R = num2str(result);set(handles.Answer,'String',R)guidata(hObject, handles);执行A的转置,其执行代码如下A = eval((get(handles.Matrix_A,'String')));result = A' ;R = num2str(result);set(handles.Answer,'String',R)guidata(hObject, handles);执行A右除B,其执行代码如下A = eval((get(handles.Matrix_A,'String')));B = eval((get(handles.Matrix_B,'String')));[iA jA]=size(A);[iB jB]=size(B);if iA~=iB þ R='error.Matrix dimensions must agree.';set(handles.Answer,'String',R)guidata(hObject, handles);elseresult = A / B ;R = num2str(result);set(handles.Answer,'String',R)guidata(hObject, handles);end执行求A的行列式,其执行代码如下A = eval((get(handles.Matrix_A,'String')));[iA jA]=size(A);if iA ~=jA R='error.Matrix must be square.';set(handles.Answer,'String',R)guidata(hObject, handles);elseresult = det(A) ;R = num2str(result);set(handles.Answer,'String',R)guidata(hObject, handles);end执行求A的逆,其执行代码如下A = eval((get(handles.Matrix_A,'String')));[iA jA]=size(A);if iA ~=jAR='error.Matrix must be square.';set(handles.Answer,'String',R)guidata(hObject, handles);elseif det(A) == 0R='error.Matrix is singular to working precision.';set(handles.Answer,'String',R)guidata(hObject, handles);elseresult = inv(A) ;R = num2str(result);set(handles.Answer,'String',R)guidata(hObject, handles);endend执行求A的非共轭转置,其执行代码如下A = eval((get(handles.Matrix_A,'String')));result = A.' ;R = num2str(result);set(handles.Answer,'String',R)guidata(hObject, handles);执行求解系数阵为方阵且非奇异的线性方程组,其执行代码如下A = eval((get(handles.Matrix_A,'String')));B = eval((get(handles.Matrix_B,'String')));[iA jA]=size(A);[iB jB]=size(B);if iA ~= iBR='error.';set(handles.Answer,'String',R)guidata(hObject, handles);elseif iA ~=jAR='error.Matrix must be square.';set(handles.Answer,'String',R)guidata(hObject, handles);elseif det(A) == 0R='error.Matrix is singular to working precision.';set(handles.Answer,'String',R)guidata(hObject, handles);elseresult = A\B ;R = num2str(result);set(handles.Answer,'String',R)guidata(hObject, handles);endendend执行求A的秩,其执行代码如下A = eval((get(handles.Matrix_A,'String')));result = rank(A) ;R = num2str(result);set(handles.Answer,'String',R)guidata(hObject, handles);执行求A的平方,其执行代码如下A = eval((get(handles.Matrix_A,'String')));[iA jA]=size(A);if iA ~=jAR='error.Inputs must be a scalar and a square matrix.';set(handles.Answer,'String',R)guidata(hObject, handles);elseresult = A^2 ;R = num2str(result);set(handles.Answer,'String',R)guidata(hObject, handles);end执行求A的立方,其执行代码如下A = eval((get(handles.Matrix_A,'String')));[iA jA]=size(A);if iA ~=jAR='error.Inputs must be a scalar and a square matrix.'; set(handles.Answer,'String',R)guidata(hObject, handles);elseresult = A^3 ;R = num2str(result);set(handles.Answer,'String',R)guidata(hObject, handles);end执行求A的特征值,其执行代码如下A = eval((get(handles.Matrix_A,'String')));[iA jA]=size(A);if iA ~=jAR='error.Matrix must be square.';set(handles.Answer,'String',R)guidata(hObject, handles);elseresult = eig(A) ;R = num2str(result);set(handles.Answer,'String',R)guidata(hObject, handles);end执行求A开平方根,其执行代码如下A = eval(get(handles.Matrix_A,'String'));result = sqrt(A);R = num2str(result);set(handles.Answer,'String',R)执行计算矩阵范围(默认为2范数),其执行代码如下A = eval(get(handles.Matrix_A,'String'));result = norm(A);R = num2str(result);set(handles.Answer,'String',R)guidata(hObject, handles);执行对A的分解,其执行代码如下A = eval(get(handles.Matrix_A,'String'));[L U] = lu(A);result = [L;U];R = num2str(result);set(handles.Answer,'String',R)guidata(hObject, handles);执行将矩阵A化为最简阶梯矩阵,其执行代码如下A = eval(get(handles.Matrix_A,'String'));result = rref(A);R = num2str(result);set(handles.Answer,'String',R)guidata(hObject, handles);4)对输出进行设计输出框内有新添加的,使经过计算后的式子通过输出框显示。

MATLAB科学计算器设计

MATLAB科学计算器设计

目录计算器的效果图.......................................................................... 错误!未定义书签。

第一章GUI设计界面 .. (3)1.1打开GUI (3)1.2.添加按钮 (3)1.3.根据按钮的作用及视觉效果做一定的修改 (4)1.4.保存、添加功能函数 (4)1.4.1 数字键编写 (4)1.4.2 符号键的编写 (4)1.4.3 运算符“=”的编写 (5)1.4.4 按键“←back”的编写 (5)1.4.5 按键“清空”的编写 (5)1.4.6 按键“退出”的编写 (5)1.4.7 按键“二进制数转十进制数”的编写................... 错误!未定义书签。

1.4.8 按键“十进制数转二进制数”的编写................... 错误!未定义书签。

第二章计算器的使用. (5)2.1 除法运算(÷) (6)2.2 平方运算(^2) (6)2.3 函数cos (∏/3)的计算 (7)2.4 函数arctan (∏/3)的计算 (7)2.5 以2为底的对数(log 2)的计算 (8)第三章各按键的程序源代码 (10)第四章问题和解决方法 (14)第五章心得体会 (16)参考文献 (17)计算器的效果图:第一章GUI设计界面:1.1打开GUI输入Guide 回车或者在工具栏上点击图标打开Guide 窗口:图 11.2.添加按钮图21.3.根据按钮的作用及视觉效果做一定的修改双击按钮(Puch Button)进入按键属性修改显示字符串大小、字体和颜色,然后对按钮的位置进行排布,尽量使按钮集中在静态文本框下面。

1.4.保存、添加功能函数把做好的按钮及静态文本框保存后自动弹出Editor的M文本,对然后对相应的pushbutton添加功能函数。

以下是相应按钮的功能函数。

1.4.1 数字键编写在function pushbutton1_Callback(hObject, eventdata, handles)下输入:textString = get(handles.text1,'String');textString =strcat(textString,'0');set(handles.text1,'String',textString)这是使用句柄handles指向对象text1,并以字符串形式来存储数据文本框text1的内容,并存储数个“0”,然后由set(handles.text1,'String','textString'在text1中输出。

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1.需求分析本次的实验要求是设计一个计算器,主要功能如下:(1)实现基本数学运算(加减乘除等),而且要能进行混合运算(2)实现部分函数功能,如求平方根、求倒数等(3)能实现小数运算界面与标准计算器界面类似根据要求以及以前的学习情况,决定使用matlab进行编程。

Matlab强大的计算功能以及便捷的GUI设计,可以较为简便的实现所要求的功能。

按照要求,数据输入和输出支持小数点,支持四则混合运算,决定使用如下几个数据进行分析:(1+3)*5Sqrt(4)1/2Sin4用以检验是否可以进行加减乘除四则运算、平方根、倒数、正弦的运算。

2.程序设计M atlab的程序设计较为简便,用GUI设计出一个计算器的模型,然后系统会自动生成一个框架,在框架中,写入每一个按键对应的程序就可以实现功能。

3.调式分析编程的过程中遇到的问题不是很多,基本就是找要实现各个功能的子程序,通过上网和去图书馆,加上自己的编写,终于实现了实验要求的功能。

但是有一点很重要,matlab不支持中文,所以从路径到文件名必须是全英文的,不然就无法识别。

此外,给每个按键命名也是很重要的,不然在生成的程序框架里面,就无法识别各个按键的作用,编写程序的时候也就无法做到一一对应。

4.使用说明程序的使用比较简单,由于是可视化界面,直接打开matlab,然后建立一个GUI 工程,再打开生成的fig文件,就是一个计算器的界面,直接按照市面上卖的计算器的方法,按键使用即可。

5.测试结果计算结果为204sqrt=2Sin4结果为1/2=0.5经过计算,这些结果均与实际结果相吻合,计算器的功能实现的较为完好。

6.心得体会本次试验由于不限制语言,于是计算功能强大,操作简便的matlab变成了首选,matlab的GUI设计,操作是较为简单的,首先建立一个GUI工程,然后用可视化界面,设计出计算器的大致外观,为每一个按键设置预计的功能,然后就是将对应的函数写到框架生成的程序中,然后每个按键就可以实现对应的功能。

在设计的过程中还是遇到很多的困难的,首先就是程序的问题,搭建出计算器的外观以后,生成的框架程序是一个看似非常杂乱的程序,每个按键对应什么功能根本看不出来,于是我在原来的工程中修改了每一个按键的名称。

编程的过程中,主要就是对全局变量和句柄的控制,对相应的值赋值以后,要返回给主程序,然后就可以在static text中显示出来的。

句柄是一个很重要的概念,基本所有的操作都是通过句柄实现的,MATLAB在创建每一个图形对象时,都为该对象分配唯一的一个值,称其为图形对象句柄(Handle)。

句柄是图形对象的唯一标识符,不同对象的句柄不可能重复和混淆。

例如:set(句柄,属性名1,属性值1,属性名2,属性值2,…),基本所有关联到图形操作的函数语句都是这样的格式:函数名(句柄,进行的操作),因此句柄是一个图形的名称,是对图形进行操作的媒介。

此外,由于matlab是全英文的操作环境,所以所有的中文路径和中文的文件夹名称均不支持,不然就会在程序中报错,虽然可以打开,但是按键不可以实现功能,这点是要特别留意的,一般情况下,直接将文件保存在默认的work路径下即可。

经过老师的指点,我修改了界面,使其更加美观,可惜的是matla无法实现一个窗口的单独计算器,这不得不说是一个遗憾吧。

本次试验本来打算使用VB进行编程的,但是VB的计算功能不够强大,所以在处理四则运算的时候比较麻烦,于是最后还是决定选择matlab,经过这次实习,我对matlab 的操作与GUI界面射界有了更深一步的理解,知道了回调函数的基本写法以及各个功能的基本函数的内容,感觉受益匪浅。

附录A程序以及注释(注:前面带有%的句子是程序自动生成的框架程序)%定义函数function varargout = untitled(varargin)% Last Modified by GUIDE v2.5 29-Jun-2009 16:06:25% Begin initialization code - DO NOT EDITgui_Singleton = 1;gui_State = struct('gui_Name', mfilename, ...'gui_Singleton', gui_Singleton, ...'gui_OpeningFcn', @untitled_OpeningFcn, ...'gui_OutputFcn', @untitled_OutputFcn, ...'gui_LayoutFcn', [] , ...'gui_Callback', []);if nargin && ischar(varargin{1})gui_State.gui_Callback = str2func(varargin{1});endif nargout[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});elsegui_mainfcn(gui_State, varargin{:});end% End initialization code - DO NOT EDITfunction untitled_OpeningFcn(hObject, eventdata, handles, varargin) handles.output = hObject;% Update handles structureguidata(hObject, handles);% UIWAIT makes untitled wait for user response (see UIRESUME) % uiwait(handles.figure1);% 定义全局变量jj,shift用于数字的设定global jj shift%设置句柄,用于将按键接收的值返回给主程序set(handles.text1,'String','0.');jj=0;shift=0;% --- Outputs from this function are returned to the command line. function varargout = untitled_OutputFcn(hObject, eventdata, handles) varargout{1} = handles.output;% --- Executes during object creation, after setting all properties. function edit1_CreateFcn(hObject, eventdata, handles)% hObject handle to edit1 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles empty - handles not created until after all CreateFcns called% --- 按键2响应function pushbutton2_Callback(hObject, eventdata, handles)global jjtextString = get(handles.text1,'String');if(strcmp(textString,'0.')==1)&(jj==0)set(handles.text1,'String','2') ;elsetextString =strcat(textString,'2');set(handles.text1,'String',textString)endjj=0;% --- 按键3响应function pushbutton3_Callback(hObject, eventdata, handles)global jjtextString = get(handles.text1,'String');if(strcmp(textString,'0.')==1)&(jj==0)set(handles.text1,'String','3') ;elsetextString =strcat(textString,'3');set(handles.text1,'String',textString)endjj=0;% --- 按键4响应function pushbutton4_Callback(hObject, eventdata, handles) global jjtextString = get(handles.text1,'String');if(strcmp(textString,'0.')==1)&(jj==0)set(handles.text1,'String','4') ;elsetextString =strcat(textString,'4');set(handles.text1,'String',textString)endjj=0;% --- 按键5响应function pushbutton5_Callback(hObject, eventdata, handles) global jjtextString = get(handles.text1,'String');if(strcmp(textString,'0.')==1)&(jj==0)set(handles.text1,'String','5') ;elsetextString =strcat(textString,'5');set(handles.text1,'String',textString)endjj=0;% --- 按键6响应function pushbutton6_Callback(hObject, eventdata, handles) global jjtextString = get(handles.text1,'String');if(strcmp(textString,'0.')==1)&(jj==0)set(handles.text1,'String','6') ;elsetextString =strcat(textString,'6');set(handles.text1,'String',textString)endjj=0;% --- 按键7响应function pushbutton7_Callback(hObject, eventdata, handles) global jjtextString = get(handles.text1,'String');if(strcmp(textString,'0.')==1)&(jj==0)set(handles.text1,'String','7') ;elsetextString =strcat(textString,'7');set(handles.text1,'String',textString)endjj=0;% --- 按键8响应function pushbutton8_Callback(hObject, eventdata, handles) global jjtextString = get(handles.text1,'String');if(strcmp(textString,'0.')==1)&(jj==0)set(handles.text1,'String','8') ;elsetextString =strcat(textString,'8');set(handles.text1,'String',textString)endjj=0;% --- 按键9响应function pushbutton9_Callback(hObject, eventdata, handles) global jjtextString = get(handles.text1,'String');if(strcmp(textString,'0.')==1)&(jj==0)set(handles.text1,'String','9') ;elsetextString =strcat(textString,'9');set(handles.text1,'String',textString)endjj=0;% --- 按键0响应function pushbutton0_Callback(hObject, eventdata, handles) global jjtextString = get(handles.text1,'String');if(strcmp(textString,'0.')==1)&(jj==0)set(handles.text1,'String','0.') ;elsetextString =strcat(textString,'0');set(handles.text1,'String',textString)endjj=0;% --- 按键1响应function pushbutton1_Callback(hObject, eventdata, handles) global jjtextString = get(handles.text1,'String');if(strcmp(textString,'0.')==1)&(jj==0)set(handles.text1,'String','1') ;elsetextString =strcat(textString,'1');set(handles.text1,'String',textString)endjj=0;% --- 按键‘+’响应function pushbuttonadd_Callback(hObject, eventdata, handles) textString = get(handles.text1,'String');textString =strcat(textString,'+');set(handles.text1,'String',textString)% --- 按键‘-’响应function pushbuttonsub_Callback(hObject, eventdata, handles) textString = get(handles.text1,'String');textString =strcat(textString,'-');set(handles.text1,'String',textString)% --- 按‘*’响应function pushbuttonmul_Callback(hObject, eventdata, handles)% hObject handle to pushbuttonmul (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) textString = get(handles.text1,'String');textString =strcat(textString,'*');set(handles.text1,'String',textString)% --- 按键‘/’响应function pushbuttonchu_Callback(hObject, eventdata, handles) textString = get(handles.text1,'String');textString =strcat(textString,'/');set(handles.text1,'String',textString)% --- 按键‘=’响应function pushbuttonequal_Callback(hObject, eventdata, handles) textString = get(handles.text1,'String');% if(strcmp(textString,'0.')==1)% set(handles.text1,'String','0.') ;% else% [pushbutton20 b c] = strread(textString, '%f %c %f');% clear ans;%% switch b% case '*'% ans=pushbutton20*c;% case '/'% if (c==0)% ans='Error Divided by zero';% else% ans=pushbutton20/c;% end% case '-'% ans=pushbutton20-c;% case '+'% ans=pushbutton20+c;%% end%这是系统自带的一个回调函数,回调函数是已经编写好的,提供给系统调用的函数关于eval函数的理解就是EVAL函数相当于将函数中的字符串,放到命令行中执行。

相关文档
最新文档