声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1996|回复: 9

[GUI界面] 请教关于GUI的一个问题

[复制链接]
发表于 2007-5-3 16:12 | 显示全部楼层 |阅读模式

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

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

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

[ 本帖最后由 eight 于 2007-5-3 16:20 编辑 ]
回复
分享到:

使用道具 举报

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


建议先看看关于GUI的精华贴
 楼主| 发表于 2007-5-3 16:59 | 显示全部楼层

回复 #1 alone4444 的帖子

看完了,找不到想要的答案:@L
发表于 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上面作图。
 楼主| 发表于 2007-5-3 17:12 | 显示全部楼层

回复 #4 eight 的帖子

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

[ 本帖最后由 alone4444 于 2007-5-3 17:14 编辑 ]
 楼主| 发表于 2007-5-3 17:19 | 显示全部楼层

回复 #5 alone4444 的帖子

BZ可以先试一个简单的例子:
num = [0 0 1 1 1]  
den = [1 1 1 0 1]
%hsss=figure;
axes(handles.locus);
rlocus (num, den);
就会发现,只要指定了axes,就画不出根轨迹,而不给出任何axes则可以画出,但是充满了整个GUI界面.
如果自己先打开一个新的figure:  hsss=figure  则可以在这个新开的figure上画.   可是我还是想在原来界面上自己指定的区域画
发表于 2007-5-3 23:56 | 显示全部楼层
原帖由 alone4444 于 2007-5-3 17:19 发表
BZ可以先试一个简单的例子:
num = [0 0 1 1 1]  
den = [1 1 1 0 1]
%hsss=figure;
axes(handles.locus);
rlocus (num, den);
就会发现,只要指定了axes,就画不出根轨迹,而不给出任何axes则可以画出,但是 ...

代码:

  1. num = [0 0 1 1 1]  
  2. den = [1 1 1 0 1]
  3. %hsss=figure;
  4. h = axes;
  5. rlocus (num, den);
复制代码


结果:
axes.bmp
 楼主| 发表于 2007-5-4 13:03 | 显示全部楼层
我重新简化描述一下问题吧:
1. 在GUI中加入一个pushbutton和一个axes,如图1所示;
2. 将axes的tag改成locus并在pushbutton的回调函数中写入:
    num = [0 0 1 1 1]  
    den = [1 1 1 0 1]
    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 编辑 ]

图1

图1

图2

图2

图3

图3
发表于 2007-5-9 16:06 | 显示全部楼层

应该可以画出

rlocus.doc

49.5 KB, 下载次数: 13

 楼主| 发表于 2007-5-10 11:59 | 显示全部楼层

回复 #1 alone4444 的帖子

楼上的兄弟能否说一下具体的操作.
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

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

GMT+8, 2024-11-14 05:16 , Processed in 0.075043 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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