加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

matlab GUI编程实现插值运算_step by step(Scar原创)

(2011-12-14 16:02:03)
标签:

matlab

gui

原创

教育

分类: 软件应用

    第一篇博文就献给matlab GUI(图形用户界面设计)了。matlab推出的全新的图形用户界面开发环境(GUI Development Environment,简称GUIDE),可以方便的创建GUI应用程序。matlab 6.X 以后,将GUI的布局代码存储在fig文件中,同时产生一个m文件用于存储调用函数,在m文件中不再包含GUI的布局代码,因此开发应用程序的代码量大大减少。通过GUI编程,matlab的应用不再局限于代码层次了,个人认为还是有很大用处的!再学习matlab GUI之前要求有一定的matlab编程经验,其实只要学过相关程序语言的,c++啊什么的,很容易就能看懂,没有想象中的那么晦涩~呵呵,废话少说,进入正题

下面我就通过自己的整理,简要的列出如何开发一个自己的应用程序。以一个插值小程序为例。

线性插值大家都懂,而且经常在查表的时候遇到,当然了通过EXCEL就可以很容易实现,我们现在就通过matlab GUI来实现。最终的成果界面如下:

http://s3/bmiddle/693fda4a0786748136db2&690GUI编程实现插值运算_step by step(Scar原创)" TITLE="matlab GUI编程实现插值运算_step by step(Scar原创)" />

 

并且希望在listbox文本框中列出多次插值计算的计算结果(前后两次计算结果不覆盖),下面一步一步的说明:

  • 第一步:首先我们新建一个GUI文件:File/New/GUI选择Blank GUI(Default)
  • 第二步:进入GUI开发环境以后添加5个编辑文本框,5个静态文本框,一个按钮,一个列表和一个面板控件,布置如上图所示;保存名称为chazhi.fig
  • 第三步:双击每个控件,就会弹出一个Property Inspector:对象属性观察器,设置其背景色,字体大小,尤为重要的是Tag(控件表示),这个就是控件在m文件中的名称,取一个便于识别的名称方便很多。主界面的Tagfigure_chazhi
  • 第四步:点击工具栏上的菜单编辑器(Menu Editor),打开菜单编辑器,我们需要添加一个菜单项“文件”,里面设置一个“关闭”选项。在Menu Bar 中新建一个菜单项,名字为“文件”,Tagfile,在“文件”菜单下添加菜单项: “关闭”,Tagexit,确认保存。但是退出菜单并没有定义其功能,需要写一个代码,在M文件中找到function exit_Callback(hObject, eventdata, handles),在下面写上:close(handles.figure_chazhi);这样程序的菜单项就完成了,运行就可看到效果。
  • 第五步:在edit1_Callback (hObject, eventdata, handles)下添加下列代码:

%以字符串的形式来存储数据文本框1的内容. 如果字符串不是数字,则现实空白内容

input = str2num(get(hObject,String));

%检查输入是否为空. 如果为空,则默认显示为0

if (isempty(input))

set(hObject,String,0)

end

guidata(hObject, handles);

         同样edit2_Callbackedit3_Callback edit4_Callback edit5_Callback下添加相同文本。

  • 第六步:我们为计算按钮添加代码来实现插值计算的目的。m文件中找到pushbutton1_Callback代码段,添加以下代码:

a = get(handles.edit1,'String');

b = get(handles.edit2,'String');

c = get(handles.edit3,'String');

d = get(handles.edit4,'String');

x1= get(handles. edit5,'String');

% a ~d are variables of Strings type, and need to be converted

% to variables of Number type before they can be added together

out=(str2num(x1)-str2num(a))*(str2num(d)-str2num(c))/((str2num(b)-str2num(a)))+str2num(c);

e = num2str(out);

% need to convert the answer back into String type to display it

set(handles.result,'String',e);%显示结果的静态文本框Tagresult

guidata(hObject, handles);% 结束以更新数据

  • 第七步:实现listbox的结果显示功能(要求显示所有的计算痕迹)。

pushbutton1_Callback代码段,再添加以下代码:

string_listbox1=get(handles.listbox1,'String');

e1=strvcat(string_listbox1,e);

set(handles.listbox1,'String',e1);

guidata(hObject, handles);

这样,再次计算,listbox中的结果不会被新计算的结果覆盖了。

  • 第八步:运行,调试。一切OK

 

BY  Scar        

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有