MATLAB中axes怎么用啊?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MATLAB中axes怎么用啊?相关的知识,希望对你有一定的参考价值。

像h1=axes('pos',[0.2,0.2,0.6,0.4]),什么意思?
详细点

1、在MATLAB中,axes()函数可用于回归分析,axes()函数主要用于线性回归。

2、对于具有常数项的单变量回归模型,X可以转化为n-2矩阵,其中第一列都是1。

3、相关系数R^2越大,程度回归方程越显著;当f拒绝H0对应的概率p<alpha时,建立回归模型。

4、使用此函数获取多元线性函数方法代码,x1-x4使用xlsread()函数读取表信息方法。

5、如果列向量方法代码。

6、一个(大小(x))是一个单位列向量,其长度与生成常数项的数据组数相同。

参考技术A

1、在matlab中axes()函数可以进行回归分析,axes()函数主要用于线性回归。

2、对含常数项的一元回归模型,可将X变为n-2矩阵,其中第一列全为1。

3、相关系数r^2越大,说明回归方程越显著;与F对应的概率P<alpha时候拒绝H0,回归模型成立。 

4、使用该函数求得的一个多元线性函数方法代码,x1-x4都是用xlsread()函数读取表格信息方法。

5、要是列向量方法代码。

6、ones(size(x))是一列与数据组数等长的单位列向量,目的是产生常数项。

参考技术B 就是设置axes的位置,左下宽高,单位是和整个figure宽高的比例
四个数依次是坐标左下角起点坐标和长度,宽度。
可以看看这个例子:
x = 0 : 0.01 : 2 * pi;

y1 = sin(x); y2 = cos(x); y3 = sin(x) + cos(x);

plot(x, y1)

axes('position', [0.55 0.65 0.3 0.2])

plot(x, y2)

xlabel('y2 = cos(x)');

axes('position', [0.15 0.15 0.3 0.2])

plot(x, y3)

xlabel(' y3 = sin(x) + cos(x)');

建立坐标轴对象使用axes函数,其调用格式为:
句柄变量=axes(属性名1,属性值1,属性名2,属性值2,…)
调用axes函数用指定的属性在当前图形窗口创建坐标轴,并将其句柄赋给左边的句柄变量。也可以使用axes 函数按MATLAB缺省的属性值在当前图形窗口创建坐标轴:
axes 或 句柄变量= axes
用axes 函数建立坐标轴之后,还可以调用axes 函数将之设定为当前坐标轴,且坐标轴所在的图形窗口自动成为当前图形窗口:
axes(坐标轴句柄)本回答被提问者采纳

MATLAB 让两个或多个AXES同步旋转

0试验效果


.

1问题描述

问题是这样的,我希望在旋转其中一个AXES的视角的同时,其他AXES跟着以相同视角旋转。


.

2解决思路

2.1AXES标签
我们首先需要确认AXES是哪个是哪个,因此我们需要为AXES设置标签,TagUserData 均可(其实用位置信息也可以,但显得没有那么整洁):

% 创建figure窗口
fig=figure();
fig.Position=[200 100 900 450];

% 创建axes1
ax1=axes(fig);
ax1.Position=[0.05 0.1 0.4 0.8];
ax1.UserData=1;
hold(ax1,'on') % 这步hold是必要的,防止UserData属性或Tag属性被刷掉
grid(ax1,'on') % 加个网格,为了好看而已不必要

% 创建axes2
ax2=axes(fig);
ax2.Position=[0.55 0.1 0.4 0.8];
ax2.UserData=2;
hold(ax2,'on')
grid(ax2,'on')

2.2鼠标按住且滑动判断
判断鼠标是否在点击状态下滑动
与之前刮刮乐那篇类似,首先判断鼠标是否否被按住。因此我们设置一个名为 isClicking 的变量,并设置鼠标按下和鼠标松开两个回调函数,当鼠标点击时将 isClicking 设置为true,当鼠标松开时 isClicking 设置为false。
之后就可以通过WindowButtonMotionFcn回调判断鼠标是否移动:

isClicking=false;
set(fig,'WindowButtonDownFcn',@bt_down);  % 设置鼠标按下回调
set(fig,'WindowButtonUpFcn',@bt_up);      % 设置鼠标松开回调
set(fig,'WindowButtonMotionFcn',@bt_move);% 设置鼠标移动回调

function bt_down(~,~),isClicking=true;end % 鼠标按下回调
function bt_up(~,~),isClicking=false;end  % 鼠标松开回调
function bt_move(~,~)
    if isClicking
        % 代码能运行到这里说明鼠标被按住的同时滑动了
        % 以下为后续要写的一大堆代码:
        % 。。。 。。。
    end
end

2.3更改其他AXES的view属性
我们首先可以获得fig的CurrentAxes属性,即当前点击的坐标区域,然后我们获得当前坐标区域的UserData属性能够判断出当前点击的是哪个坐标区域,之后就可以将其他坐标区域的view属性设置的与当前坐标区域相同:
把bt_move函数做如下更改即可:

function bt_move(~,~)
    if isClicking
        tempAxes=fig.CurrentAxes;
        for i=1:2 % 两个axes
            if i~=tempAxes.UserData
                otherAxes=findobj('UserData',i);
                otherAxes.View=tempAxes.View;
            end
        end

    end
end

.

3完整代码

3.1 两个或多个AXES
以下代码只做为示例,想要更多的坐标区域只需要设置更多的axes并调整position userdata等参数即可:

function SCR_2Axes
% @author:slandarer

% 创建figure窗口
fig=figure();
fig.Position=[200 100 900 450];

% 创建axes1
ax1=axes(fig);
ax1.Position=[0.05 0.1 0.4 0.8];
ax1.UserData=1;
hold(ax1,'on') % 这步hold是必要的,防止UserData属性或Tag属性被刷掉
grid(ax1,'on') % 加个网格,为了好看而已不必要

% 创建axes2
ax2=axes(fig);
ax2.Position=[0.55 0.1 0.4 0.8];
ax2.UserData=2;
hold(ax2,'on')
grid(ax2,'on')

isClicking=false;
set(fig,'WindowButtonDownFcn',@bt_down);  % 设置鼠标按下回调
set(fig,'WindowButtonUpFcn',@bt_up);      % 设置鼠标松开回调
set(fig,'WindowButtonMotionFcn',@bt_move);% 设置鼠标移动回调

function bt_down(~,~),isClicking=true;end % 鼠标按下回调
function bt_up(~,~),isClicking=false;end  % 鼠标松开回调
function bt_move(~,~)
    if isClicking
        tempAxes=fig.CurrentAxes;
        for i=1:2 % 两个axes
            if i~=tempAxes.UserData
                otherAxes=findobj('UserData',i);
                otherAxes.View=tempAxes.View;
            end
        end

    end
end

% 在这里绘图===============================================================
plot3(ax1,[0,1],[0,1],[0,1],'LineWidth',2)
scatter3(ax2,rand([10,1]),rand([10,1]),rand([10,1]),'filled')
% =========================================================================

end


3.2 超多AXES
以下给出mxn个AXES批量构建的方法,使用到坐标区域数组:

function SCR_mnAxes
% @author:slandarer

% 创建figure窗口
fig=figure();
fig.Position=[200 100 900 450];

M=2;N=4;% 两行四axes
% 创建axes
for m=1:M
    for n=1:N
        ax(m,n)=axes(fig);
        ax(m,n).Position=[0.1*(1/N)+(1/N)*(n-1),...
                          0.1*(1/M)+(1/M)*(m-1),...
                          0.8*(1/N),0.8*(1/M)];
        ax(m,n).UserData=[m,n];
        hold(ax(m,n),'on')
        grid(ax(m,n),'on')
    end
end

isClicking=false;
set(fig,'WindowButtonDownFcn',@bt_down);  % 设置鼠标按下回调
set(fig,'WindowButtonUpFcn',@bt_up);      % 设置鼠标松开回调
set(fig,'WindowButtonMotionFcn',@bt_move);% 设置鼠标移动回调

function bt_down(~,~),isClicking=true;end % 鼠标按下回调
function bt_up(~,~),isClicking=false;end  % 鼠标松开回调
function bt_move(~,~)
    if isClicking
        tempAxes=fig.CurrentAxes;
        for mm=1:M
            for nn=1:N
                if ~all([mm,nn]==tempAxes.UserData)
                    ax(mm,nn).View=tempAxes.View;
                end
            end
        end

    end
end
% 在这里绘图===============================================================
for m=1:M
    for n=1:N
        scatter3(ax(m,n),rand([5,1]),rand([5,1]),rand([5,1]),'filled')
    end
end
% =========================================================================

end

以上是关于MATLAB中axes怎么用啊?的主要内容,如果未能解决你的问题,请参考以下文章

matlab中lhsdesign函数怎么用啊,

matlab 界面设计中怎么把axes放在最上层

Matlab GUI 中怎么清空axes中的图形

MATLAB的toolbox怎么用啊

matlab如何在指定axes上作图

matlab中std函数用法怎么用啊?主要是想求一个矩阵的标准差的