matlab中GUI的使用,调用m文件 50
想问一下如何在GUI中调用我编好的m文件,具体说就是如何捕捉用户输入的参数画出图表。(参数输入界面和绘图界面不在一个窗口) 展开
方法和详细的操作步骤如下:
1、第一步,在计算机上安装matlab软件,见下图,转到下面的步骤。
2、第二步,完成上述步骤后,双击matlab图标以打开其主页,见下图,转到下面的步骤。
3、第三步,完成上述步骤后,将鼠标移到“New”选项上,然后单击一次,选择并单击弹出菜单中的“Function”选项,见下图,转到下面的步骤。
4、第四步,完成上述步骤后,这是m文件编辑页面,见下图,转到下面的步骤。
5、第五步,完成上述步骤后,编写输入变量和输出变量的函数计算关系,见下图,转到下面的步骤。
6、第六步,完成上述步骤后,单击左上角的“Save”选项进行保存,见下图,转到下面的步骤。
7、第七步,完成上述步骤后,如果要调用m文件,只需依次将要调用的文件保存到“Command Window”窗口的主界面文件夹中,然后在“Command Window”中换行,输入文件名,输入所有输入变量的详细信息。
同时,填写值并按键盘上的Enter键以指示调用和运行m文件,见下图。这样,就解决了这个问题了。
在参数输入界面中,创建适当数量的edit和pushbutton控件;
pushbutton控件就是你的“确定”按钮,需要写它的回调函数;
确定按钮的回调函数需要做的工作:
获取编辑框的输入(通过handles可以得到编辑框的句柄);
所获得输入为字符串,使用str2num转换为数值型(必要时做有效性检查);
使用转换后的数据作为输入参数调用你的m文件。
对于 多窗口的应用,需要注意窗口的管理,以免造成混乱(比如把绘图绘到参数输入窗口中)。比较好的做法是,尽量使用句柄或Tag属性标识对象,少用gcf、gca之类的函数。
如果有一定基础,也可以考虑不使用GUIDE做界面,直接使用M语言编程。
主要涉及的问题就这么多,如果还搞不明白,可以继续追问。
function zd499385856
% 使用Tag属性标识窗口,避免多次运行时创建重复实例
fig = findall(0,'Tag','zd499385856');
if ~isempty(fig), figure(fig), return, end
% 创建窗口及控件
figure('units','points','pos',[100 100 200 100],'menu','none','Tag','zd499385856','KeyPressFcn','close(gcf)')
set(gcf,'defaultuicontrolfontunits','points','defaultuicontrolfontsize',12)
uicontrol('style','text','str','输入参数','units','points','pos',[20 80 50 12])
uicontrol('style','text','str','a:','units','points','pos',[10 50 30 12])
ha=uicontrol('style','edit','str','2','units','points','pos',[40 50 40 16],'back','w');
uicontrol('style','text','str','b:','units','points','pos',[100 50 30 12])
hb=uicontrol('style','edit','str','4','units','points','pos',[130 48 40 16],'back','w');
% 确定按钮,注意设置回调函数(编辑框句柄通过UserData传递)
uicontrol('style','push','str','确定','units','points','pos',[70 10 60 20],'user',[ha hb],'call',@OnOK)
function OnOK(varargin)
% 确定按钮的回调函数
% 获取编辑框句柄
ud = get(gcbo,'user');
% 获取编辑框数据
a = str2num(get(ud(1),'str'));
b = str2num(get(ud(2),'str'));
% 使用Tag属性标识窗口,避免多次运行时创建重复实例
fig = findall(0,'Tag','zd499385856_OK');
if ~isempty(fig)
figure(fig)
else
figure('Tag','zd499385856_OK','KeyPressFcn','close(gcf)')
end
% 后面是你的绘图代码
A=0:0.1:a;
B=0:0.1:b;
c=a^2+8;
d=b^2+8;
e=a^3;
f=b^3;
subplot(2,2,1)
plot(A,c)
subplot(2,2,2)
plot(A,e)
subplot(2,2,3)
plot(B,d)
subplot(2,2,4)
plot(B,f)