声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 2916|回复: 13

[GUI界面] guide生成的gui与m文件的数据传递

[复制链接]
发表于 2012-1-30 22:26 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
刚刚开始接触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文件里的语句

各位高手帮帮忙!:)

本帖被以下淘专辑推荐:

回复
分享到:

使用道具 举报

发表于 2012-1-31 02:21 | 显示全部楼层
回复 1 # tao_lx 的帖子

只需要在相关的控件中调用这个函数
举个例子,
  1. function pushbutton2_Callback(hObject, eventdata, handles)
  2. a=str2double(get(handles.a1,'String'));
  3. b=str2double(get(handles.b1,'String'));
  4. c=add(a,b);    %自己定义的m文件add
  5. set(handles.c1,'string',c);
  6. 复制代码这个按钮调用了自己编的add文件,add后面扩号中要有变量名
  7. function y=add(x,z)
  8. y=x+z;
复制代码
此外,这个add文件和主要的gui文件都要放在同一文件夹中
 楼主| 发表于 2012-1-31 05:26 | 显示全部楼层
回复 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
发表于 2012-1-31 19:41 | 显示全部楼层
回复 3 # tao_lx 的帖子

lz能把m file 贴出来么,或是把主要程序贴出来
 楼主| 发表于 2012-2-1 00:20 | 显示全部楼层
回复 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,什么都不懂,就把你给我写的代码例子直接抄到自己的程序里了!
谢谢帮助!
发表于 2012-2-1 00:45 | 显示全部楼层
回复 5 # tao_lx 的帖子

set(handles.Geo,'string',Geo);是把Geo的数放到文本框handles.Geo。所以不能把一个矩阵输出到文本框handles.Geo.
 楼主| 发表于 2012-2-1 01:09 | 显示全部楼层
回复 4 # 321forever 的帖子

今天又遇到了新的问题,也请教下高手。我把昨天的界面增加了一个小部分Profile_name,如附件中图1所示,用来根据数据画图。Profile_name的界面,可以选择一个或多个数据。由于选择数据数量不一定,不适合在GUI界面添加坐标绘图,所以我想在调用的函数里绘图,并显示出来。如果需要的话在保存图片。但是却会在GUI界面上返回一些图片,如图2所示。调用函数里绘出的图形如图3所示。不知道能不能按照我想的使用调用函数画图,并能够保存或是不保存图片。Analyse_name.fig 格式不符合要求,我不知道怎么上传
1.png
2.png
3.png

Analyse_name.txt

5.47 KB, 下载次数: 3

Aerodata_plot.txt

5.19 KB, 下载次数: 7

发表于 2012-2-1 03:33 | 显示全部楼层
本帖最后由 321forever 于 2012-2-1 03:37 编辑

lz的意思是不是在一个axes中使用subplot做出图形来,这我倒是不会,看了lz的程序,最多也是在一张图中生成4个子图,那就在gui界面中用4个axes要方便些。如果要是重复使用这些图的话,可以使用一个pop meun 来选择实现,因为axes的地方有限,用subplot后,可能也看不清楚。还有,要是调用m文件的话,最好还是在用里面出来的数据,然后利用这些数在gui中作图。或是省去这些m文件在gui中重写下
发表于 2012-2-1 12:58 | 显示全部楼层
楼主是搞风电的吧,这个图怎么很像叶片的升力系数和阻力系数随攻角变化的曲线呢
 楼主| 发表于 2012-2-1 20:46 | 显示全部楼层
回复 9 # forcejiwd 的帖子

恩 是的
很专业啊
 楼主| 发表于 2012-2-1 20:53 | 显示全部楼层
回复 8 # 321forever 的帖子

谢谢拉
 楼主| 发表于 2012-2-1 20:53 | 显示全部楼层
回复 9 # forcejiwd 的帖子

恩 你也是?
 楼主| 发表于 2012-2-1 21:10 | 显示全部楼层
回复 8 # 321forever 的帖子

我刚才把Aerodata_plot放到GUI里面了,在GUIl里面放置四个axes,但是当我选择的数量的文件数量超过四个就不行了,而且在GUI里面的图形比较小,看着也不是很舒服,能不能在GUI里像在普通m文件里一样调用plot,直接生成一个图框并画图啊
发表于 2012-2-2 18:26 | 显示全部楼层
回复 13 # tao_lx 的帖子

文件的数量放置4个就不成了是什么意思,不能在指定的地方画图么?
可以GUI界面套用一个GUI的界面, 一个界面是参数和控件,另一个是4张图。要是单一生成的话应该可以试下。
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-5-15 13:09 , Processed in 0.089982 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表