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))是一个单位列向量,其长度与生成常数项的数据组数相同。
参考技术A1、在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设置标签,Tag 或 UserData 均可(其实用位置信息也可以,但显得没有那么整洁):
% 创建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怎么用啊?的主要内容,如果未能解决你的问题,请参考以下文章