guide生成的gui与m文件的数据传递
刚刚开始接触GUI,今天用guide生成了一个小界面,希望在guide生成的代码里调用之前编写的一个m程序请教高手,数据应该如何传递。
Geo=Schmitz_geo(handles.Lambda_design,handles.R_hub,handles.R_blade,handles.Zahl_blade);%这个是gui里的调用语句(handles.Lambda_design,handles.R_hub,handles.R_blade,handles.Zahl_blade 是从gui里输入的数据,希望将数据传递给Schmitz_geo,处理后返回一个数组)
function Geo=Schmitz_geo(lambda,R_hub,R,B)这是我在文件Schmitz_geo.m文件里的语句
各位高手帮帮忙!:)
回复 1 # tao_lx 的帖子
只需要在相关的控件中调用这个函数
举个例子,
function pushbutton2_Callback(hObject, eventdata, handles)
a=str2double(get(handles.a1,'String'));
b=str2double(get(handles.b1,'String'));
c=add(a,b); %自己定义的m文件add
set(handles.c1,'string',c);
复制代码这个按钮调用了自己编的add文件,add后面扩号中要有变量名
function y=add(x,z)
y=x+z;
此外,这个add文件和主要的gui文件都要放在同一文件夹中
回复 2 # 321forever 的帖子
好像还是不行,是不是还需要在
function Geometry_schmitz_OpeningFcn(hObject, eventdata, handles, varargin)
里面声明这个变量,还是因为我返回的是个数组,提示如下错误
??? Reference to non-existent field 'Geo'.
Error in ==> Geometry_schmitz>Calu_Callback at 228
set(handles.Geo,'string',Geo);
Error in ==> gui_mainfcn at 96
feval(varargin{:});
Error in ==> Geometry_schmitz at 42
gui_mainfcn(gui_State, varargin{:});
Error in ==>
@(hObject,eventdata)Geometry_schmitz('Calu_Callback',hObject,eventdata,guidata(hObject))
??? Error while evaluating uicontrol Callback 回复 3 # tao_lx 的帖子
lz能把m file 贴出来么,或是把主要程序贴出来 回复 4 # 321forever 的帖子
我今天白天又调试了下,发现把这个语句set(handles.Geo,'string',Geo); 删除掉就不会出现之前的那种错误了。
在我文件中的代码是
Geo=Schmitz_geo(handles.Lambda_design,handles.R_hub,handles.R_blade,handles.Zahl_blade);
set(handles.Geo,'string',Geo);
axes(handles.curve_tiefe);
plot( Geo(:,1),Geo(:,2),Geo(:,1),Geo(:,10));
axes(handles.curve_bauwinkel);
plot(Geo(:,1),Geo(:,3),Geo(:,1),Geo(:,11));
我想了下,可能是因为我的返回值是个数组,然后并不在GUI界面输出数组数值,而是将数组的数值绘成曲线输出。
不好意思,才开始接触GUI,什么都不懂,就把你给我写的代码例子直接抄到自己的程序里了!
谢谢帮助!
回复 5 # tao_lx 的帖子
set(handles.Geo,'string',Geo);是把Geo的数放到文本框handles.Geo。所以不能把一个矩阵输出到文本框handles.Geo. 回复 4 # 321forever 的帖子
今天又遇到了新的问题,也请教下高手。我把昨天的界面增加了一个小部分Profile_name,如附件中图1所示,用来根据数据画图。Profile_name的界面,可以选择一个或多个数据。由于选择数据数量不一定,不适合在GUI界面添加坐标绘图,所以我想在调用的函数里绘图,并显示出来。如果需要的话在保存图片。但是却会在GUI界面上返回一些图片,如图2所示。调用函数里绘出的图形如图3所示。不知道能不能按照我想的使用调用函数画图,并能够保存或是不保存图片。Analyse_name.fig 格式不符合要求,我不知道怎么上传{:{28}:} 本帖最后由 321forever 于 2012-2-1 03:37 编辑
lz的意思是不是在一个axes中使用subplot做出图形来,这我倒是不会,看了lz的程序,最多也是在一张图中生成4个子图,那就在gui界面中用4个axes要方便些。如果要是重复使用这些图的话,可以使用一个pop meun 来选择实现,因为axes的地方有限,用subplot后,可能也看不清楚。还有,要是调用m文件的话,最好还是在用里面出来的数据,然后利用这些数在gui中作图。或是省去这些m文件在gui中重写下 楼主是搞风电的吧,这个图怎么很像叶片的升力系数和阻力系数随攻角变化的曲线呢 回复 9 # forcejiwd 的帖子
恩 是的
{:{46}:} 很专业啊 回复 8 # 321forever 的帖子
谢谢拉
{:{01}:} 回复 9 # forcejiwd 的帖子
恩 你也是?{:{46}:} 回复 8 # 321forever 的帖子
我刚才把Aerodata_plot放到GUI里面了,在GUIl里面放置四个axes,但是当我选择的数量的文件数量超过四个就不行了,而且在GUI里面的图形比较小,看着也不是很舒服,能不能在GUI里像在普通m文件里一样调用plot,直接生成一个图框并画图啊 回复 13 # tao_lx 的帖子
文件的数量放置4个就不成了是什么意思,不能在指定的地方画图么?
可以GUI界面套用一个GUI的界面, 一个界面是参数和控件,另一个是4张图。要是单一生成的话应该可以试下。
页:
[1]