MATLAB APP designer坐标区的使用

本文章主要讲解MATLAB App designer中坐标区的使用方法及其注意事项

  1. 坐标区的组成
  2. 坐标区的显示
  3. 坐标区的交互


 1.坐标区的组成

MATLAB app 中的坐标区是显示数据、图像的主要组件,功能也很丰富。

可见的区域由标题、XY轴标签、XY轴坐标和显示区域组成。


2.坐标区的显示

a.标题、坐标轴

在figure中能显示的plot、text、rectangle等函数都可以对应在坐标区中显示。

标题、标签可以直接在界面中双击修改,或者在右边的“标签”一栏中修改。

若要在代码中实现,则可以以下代码进行修改:

app.UIAxes.Title.String='111';
app.UIAxes.XLabel.String='222';
app.UIAxes.YLabel.String='333';

坐标轴一般是根据图像大小和设置的边界范围自动调整的,也可以自己设置。 

b.图像的显示

以下讲解plot和image的在坐标区的使用

使用plot在坐标区中显示和正常使用几乎没什么区别,只需要在最前面加上显示的坐标区就行了。

此处坐标区名字为app.UIAxes,则使用如下代码就可以实现在坐标区中的显示,其余部分完全一致。

plot(app.UIAxes,X,Y);

Image使用时需要注意,图像数据是存储在矩阵中的,每个元素的坐标为行列索引,而不是XY,并且其原点位于左上角,以下示例代码中,矩阵名称为“grid_map”,矩阵的数据为1-4,使用颜色映射显示。

cmap = [1 1 1; ...        
        0 1 1; ...  
        1 0.5 0.6; ... 
        0 0 0;];
    cla(app.UIAxes);%
    colormap(app.UIAxes,cmap);%设置坐标区的颜色映射
    
    [rows, cols] = size(grid_map);%获得行列大小
    image(app.UIAxes,1.5,1.5,grid_map);%图像显示
    set(app.UIAxes,'xtick', 1:cols+1, 'ytick', 1:rows+1);%设置坐标轴刻度
    xlim(app.UIAxes,[1 cols+1])%设置坐标轴长度
    ylim(app.UIAxes,[1 rows+1])

 c.多个图像的绘制

坐标区可以设置四种图像的添加模式,这里主要讲add和replace,剩下两个不会。

add是将新的图像添加到原有的图像上,其坐标原点、轴与上一个图像相同(一般默认在左下角)

replace是将上一个图像替代,坐标原点会随函数的使用而改变(如image的坐标原点位于左上角,plot的位于右下角)

d.关于绘制图像时会生成窗口的问题

作者在使用函数plot图像时,会出现坐标区图像正常,但会额外出现一个空白窗口的现象,以下是该问题产生的原因以及解决方法。

这段代码运行时就会产生一个空白窗口,原因可能是在plot在检测UIAxes时,一开始没有识别出app.UIAxes这个坐标区(app.UIAxes太长了,未加载完),所以新建了一个窗口,但是后面plot时检测出来了,因此图像会正确显示在坐标区,新建的窗口为空白。

解决方法:

1.将输入的变量从app改为app.UIAxes

2.预加载UIAxes

在使用plot前先将坐标区加载一下

3.简单粗暴法

直接在plot后加一个close all,关掉生成的窗口

3.坐标区的交互

鼠标的坐标获取

在一些场景下,如做个五子棋小游戏,需要用到点击,并且在鼠标点击的位置下棋。此时就需要获得鼠标的坐标。

这里我们用UIFigure中,窗口回调中的“WindowButtonDownFcn”(鼠标点击时的回调)来进行鼠标点击操作的编辑。

mouthPosition=app.UIAxes.CurrentPoint;
app.mouth(1)=mouthPosition(1,1);
app.mouth(2)=mouthPosition(1,2);

利用app.UIAxes.CurrentPoint获得鼠标在坐标区的位置,CurrentPoint的返回值获得的是一个2*3的矩阵,一行中的数据对应了鼠标指针的XYZ坐标,(1,1)为X坐标,(1,2)为Y坐标。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值