声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1748|回复: 13

[GUI界面] 怎么实现一个button_callback在两个axes上绘图啊?

[复制链接]
发表于 2009-5-2 10:27 | 显示全部楼层 |阅读模式

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

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

x
怎么实现一个button_callback在两个axes上绘图啊?
也就是怎么解决axes(handles.axes1)与axes(handles.axes2)的问题。

我想使用for,但是不行啊
global sys1
pic(1)=nyquist(sys1); pic(2)=bode(sys1);
for m=1:2
    axes(handles.axes(m)); plot(pic(m));hold on
end

[ 本帖最后由 ChaChing 于 2009-5-2 11:14 编辑 ]
回复
分享到:

使用道具 举报

发表于 2009-5-2 11:18 | 显示全部楼层

回复 楼主 sanalex 的帖子

给齐完整格式:出错代码和出错提示!
 楼主| 发表于 2009-5-2 11:25 | 显示全部楼层
我是先设计界面,然后编代码,再调试。不返回错代码和出错提示啊
那我可不可以再问一下,怎么出错代码和出错提示啊?
真是辛苦chaching了!先谢谢啦!
发表于 2009-5-2 11:57 | 显示全部楼层
GUI个人已不熟了! 没有出错提示, 不好判断问题, 至少个人不行!
但LZ列出代码好像问题就很多了!
1.nyquist/bode两函数可以回传handle吗?
2.handles是什麽? 不懂
3.pic又是是什麽? 不懂! 可以plot(pic)吗?
 楼主| 发表于 2009-5-2 12:02 | 显示全部楼层
但是我这个可以啊
global sys1
axes(handles.axes1)
pic=step(sys1)
plot(pic);hold on
发表于 2009-5-2 12:18 | 显示全部楼层
我目前用的版本是2006a, nyquist/bode/step函数皆不可以回传handle的!
但注意是可以hh=nyquist(sys), 不过hh并非handle!
发表于 2009-5-3 07:17 | 显示全部楼层
可以写两个 一个是handles.axes1 一个是handles.axes2
 楼主| 发表于 2009-5-3 10:23 | 显示全部楼层
这个我会了!
a=[1,2];b=[4,7,6]; sys1=tf(a,b);
pic1=step(sys1); pic2=impulse(sys1);
axes(handles.axes1); plot(pic1)
axes(handles.axes2); plot(pic2)
其实就是:axes(handles.axes1); plot(pic1)
                 axes(handles.axes2); plot(pic2)

怎么用GUI画伯德图啊?
程序画step impulse能行
可不知道为什么换成pic1=nyquist(sys1)   pic2=bode(sys1)就不行了,谁能告我一下怎么画吗?

[ 本帖最后由 ChaChing 于 2009-5-3 12:33 编辑 ]
发表于 2009-5-3 16:36 | 显示全部楼层
GUI个人真的已不熟了! 新版的几乎没玩了, 所以4F的疑问请见谅
中午有空试下最简单的, 产生2个axis及1个按钮, 看下了基本架构
有点了解了, 原来函数原为function pushbutton1_Callback(hObject, eventdata, handles)
而且怎会没报错讯息? 如下
??? Error using ==> plot
Data may not have more than 2 dimensions
...
发表于 2009-5-3 16:52 | 显示全部楼层
LZ的问题出在, step/impulse返回的变数为2-D double array, 而bode/nyquist为3-D double array, plot并不针对3-D的!
step/impulse两者为针对时域, bode/nyquist为frequency response, 两者当然不同!
建议看清楚bode及nyquist的帮助文献!
试试下式, 具体视LZ的需求修改
[re,im] = nyquist(sys1); [mag,phase] = bode(sys1);
axes(handles.axes1); plot(re(:),im(:))
axes(handles.axes2); plot(mag(:))
 楼主| 发表于 2009-5-3 21:30 | 显示全部楼层
很感谢chaching!
不过我找到更好的方法了
a=[1,2];b=[4,7,6];sys1=tf(a,b)
axes('position',[0.08,0.3,0.4,0.4],'box','on');
grid
nyquist(sys1)
axes('position',[0.55,0.3,0.4,0.5],'box','on');
grid
bode(sys1)
其中[0.08,0.3,0.4,0.4]得要细心修改啦!

评分

1

查看全部评分

 楼主| 发表于 2009-5-3 21:32 | 显示全部楼层

回复 10楼 ChaChing 的帖子

LZ的nyquist图画的不全,也可能是我不会设参数。
发表于 2009-5-3 22:58 | 显示全部楼层

回复 11楼 sanalex 的帖子

这个方式我亦想过! 只不过以下式没试成功! 原因还不知道
axes(handles.axes1); nyquist(sys1)
axes(handles.axes2); bode(sys1);
 楼主| 发表于 2009-5-4 08:34 | 显示全部楼层
我也感到很奇怪,不知道为什么!
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

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

GMT+8, 2024-6-29 10:22 , Processed in 0.058282 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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