alone4444 发表于 2007-5-3 16:12

请教关于GUI的一个问题

想在GUI界面中用rlocus在Axes中画根轨迹,可是发现做好的Axes中不能显示用rlocus画的根轨迹,
是不是因为Axes只能显示实平面而不能显示复平面?
小弟现在只能想到先temp=figure建立一个新的图形再用语句rlocus(...)这样的效果就好象弹出来了一个画好的图,但如果还是想在原来的界面上画好一块区域来显示根轨迹,该怎么办呢?

[ 本帖最后由 eight 于 2007-5-3 16:20 编辑 ]

eight 发表于 2007-5-3 16:20

原帖由 alone4444 于 2007-5-3 16:12 发表
想在GUI界面中用rlocus在Axes中画根轨迹,可是发现做好的Axes中不能显示用rlocus画的根轨迹,
是不是因为Axes只能显示实平面而不能显示复平面?
小弟现在只能想到先temp=figure建立一个新的图形再用语句rlocus(. ...

建议先看看关于GUI的精华贴

alone4444 发表于 2007-5-3 16:59

回复 #1 alone4444 的帖子

看完了,找不到想要的答案:@L

eight 发表于 2007-5-3 17:06

原帖由 alone4444 于 2007-5-3 16:59 发表
看完了,找不到想要的答案:@L

2. 有多个axes控件时,可以用axes(handles.haxis)来选择切换,这个方法比plot(x,y,’parent’,haxis)更加灵活,应该不算原创(因为在精通GUI一书上有介绍),但是在我读此书之前就一直使用到现在。具体来说,在fig文件方式的GUI中,假设你的axes控件的tag属性值为hA,则在画图前使用axes(handles.hA);就可以指定在这个axes上面作图;在m文件方式的GUI中,假设你是通过hA=axes(...);创建这个控件的,那么使用plot(x,y,'parent',hA);语句就可以指定在这个axes上面作图。

alone4444 发表于 2007-5-3 17:12

回复 #4 eight 的帖子

我指定了一个axes,可是问题在于根轨迹无法显示在指定的axes 上,是不是要先设置axes为可以显示复平面的属性之类的,可是找了很旧也找不到,BZ可能认为我碰到的问题是如何在指定的axes上画图,可是我的问题是在指定的axes上画不出复平面的根轨迹图,BZ帮帮忙啊

[ 本帖最后由 alone4444 于 2007-5-3 17:14 编辑 ]

alone4444 发表于 2007-5-3 17:19

回复 #5 alone4444 的帖子

BZ可以先试一个简单的例子:
num =
den =
%hsss=figure;
axes(handles.locus);
rlocus (num, den);
就会发现,只要指定了axes,就画不出根轨迹,而不给出任何axes则可以画出,但是充满了整个GUI界面.
如果自己先打开一个新的figure:hsss=figure则可以在这个新开的figure上画.   可是我还是想在原来界面上自己指定的区域画

eight 发表于 2007-5-3 23:56

原帖由 alone4444 于 2007-5-3 17:19 发表
BZ可以先试一个简单的例子:
num =
den =
%hsss=figure;
axes(handles.locus);
rlocus (num, den);
就会发现,只要指定了axes,就画不出根轨迹,而不给出任何axes则可以画出,但是 ...
代码:

num =
den =
%hsss=figure;
h = axes;
rlocus (num, den);


结果:

alone4444 发表于 2007-5-4 13:03

我重新简化描述一下问题吧:
1. 在GUI中加入一个pushbutton和一个axes,如图1所示;
2. 将axes的tag改成locus并在pushbutton的回调函数中写入:
    num =
    den =
    axes(handles.locus);
    rlocus (num, den);
3. Run之后发现按下button没有任何反应,即在axes中画不出根轨迹;
5. 如果将axes删掉(同时也将axes(handles.locus);也删掉),发现根轨迹可以画出,但是是如图2所示的效果;
6. 再把axes加上,把button的回调函数全换成fplot('sin(x)',[-pi,pi]);后Run,按下button后就可以在axes中画出正弦波形了,如图3所示;(这说明axes只能画由plot或者fplot引导的图形或者说只能画实平面的图形而无法画复平面?)
所以问题在于:能不能在这个axes中画出我需要的根轨迹图形?(即axes中能不能画用rlocus语句写出的图形?如果不能的话该怎么办?)怎样才能在GUI中指定的一块区域画出我需要的根轨迹(复平面图形)
补充一下:如果将2中的代码axes(handles.locus);换成hss=figure来新建一个figure是可以在按下button后弹出一个画好了根轨迹的新图形,就如上面BZ的图.但是我希望能在GUI界面上指定一块区域来画根轨迹.



[ 本帖最后由 alone4444 于 2007-5-4 13:08 编辑 ]

yyc0424 发表于 2007-5-9 16:06

应该可以画出

alone4444 发表于 2007-5-10 11:59

回复 #1 alone4444 的帖子

楼上的兄弟能否说一下具体的操作.
页: [1]
查看完整版本: 请教关于GUI的一个问题