欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

【MATLAB】帮助 读者 解决appdesigner中 绘图显示消隐切换 的问题。

程序员文章站 2022-05-11 22:34:12
...

写作时间:2020-07-08
目录:
1.读者的困惑
2.帮其解决
3.总结

正文:
1.读者的困惑
精简一下:
他想实现的是:
点击button1,绘制bode图 在UIAxes1和UIAxes2绘图区,显示bode图,隐藏img
点击button2,绘制图像img 在UIAxes3绘图区,显示img,隐藏bode图。

他遇到的问题是:
显示与消隐不成功,他的方法是:

%-----------------不成功的方法--------代码-------
%button 1回调中如下控制:
H = tf([1 0.1 7.5],[1 0.12 9 0 0]);
[mag,phase,w]=bode(H);
semilogx( app.UIAxes1,w,20*log(mag(:)) );
grid (app.UIAxes1,"on");
semilogx( app.UIAxes2,w,phase(:) );
grid (app.UIAxes2,"on");
app.UIAxes1.Visible="on";
app.UIAxes2.Visible="on";
app.UIAxes3.Visible="off";

%button 2回调中如下控制:
A=imread("G:\Fig0809(a).tif") ;
imshow(A,'Parent',app.UIAxes3);            
app.UIAxes1.Visible="off";
app.UIAxes2.Visible="off";
app.UIAxes3.Visible="on";

理论操作上,感觉这个方法可以,但是实际上不行。
【MATLAB】帮助 读者 解决appdesigner中 绘图显示消隐切换 的问题。

【MATLAB】帮助 读者 解决appdesigner中 绘图显示消隐切换 的问题。
【MATLAB】帮助 读者 解决appdesigner中 绘图显示消隐切换 的问题。

2.帮其解决
我的方法:

先把UIAxes1和UIAxes2放在panel 1中,把UIAxes3放在panel 2中,
然后控制Panel 的Visible 与否,而不是控制UIAxes的Visible 与否!!!!!

%-----------------成功的方法--------代码-------
%button 1回调中如下控制:
H = tf([1 0.1 7.5],[1 0.12 9 0 0]);
[mag,phase,w]=bode(H);
semilogx( app.UIAxes1,w,20*log(mag(:)) );
grid (app.UIAxes1,"on");
semilogx( app.UIAxes2,w,phase(:) );
grid (app.UIAxes2,"on");
app.Panel1.Visible="on";
app.Panel2.Visible="off";

%button 2回调中如下控制:
A=imread("G:\Fig0809(a).tif") ;
imshow(A,'Parent',app.UIAxes3);            
app.Panel1.Visible="off";
app.Panel2.Visible="on";

问题解决,如下:
【MATLAB】帮助 读者 解决appdesigner中 绘图显示消隐切换 的问题。
【MATLAB】帮助 读者 解决appdesigner中 绘图显示消隐切换 的问题。
3.总结

为什么控制uiaxes不能够成功呢?是因为uiaxes在这里只控制了绘图的坐标,对于绘图区的内容控制不了,况且 axes 的大小不固定。
所以,我建立把uiaxes放在panel 里面,控制panel的visible是最好的方法。


THE END~
如有matlab 上的问题,欢迎订阅,我也会回答您的个人使用困惑。

相关标签: MATLAB(free)