我在以下(修改过的)matlab代码前面:
figure(3);
subplot(2,3,2);
axises=axis;
center = [mean(axises(1:2)),mean(axises(3:4))]'
我的问题是:
axises
而不是继续使用axis
?axises(1:2)
做什么? 我已查看axis documentation,但没有提及1:2
或3:4
等内容?
对于matlab专家来说,这是一个简单的问题。
答案 0 :(得分:4)
无论你传递一个参数,函数axis
都会做不同的事情。如果没有任何参数,它将返回当前轴边界(请参阅文档here),而使用参数时,它会尝试将当前轴设置为指定范围(documentation)。
axises = axis
将当前轴边界存储在axises
中,然后您可以从中提取元素。 axises(1:2)
获取轴的前两个元素([xmin xmax]
),axises(3:4)
获取第3和第4个元素([ymin ymax]
)。 mean(axises(1:2))
的结果是xmin
和xmax
的平均值,这是您期望center(1)
的平均值。与y
组件相同。
您不能使用axis(1:2)
代替axises(1:2)
,因为matlab会将此解释为尝试使用参数axis
调用函数1:2
而不是提取前两个当前轴的元素
示例:强>
>> axis(1:2)
使用轴> LocSetLimits(第227行)时出错 矢量必须有4个,6个或8个元素。
轴错误(第93行)
LocSetLimits(AX(j)中,cur_arg);
>> axises = axis;
>> axises(1:2)
ans =
0 10
答案 1 :(得分:0)
axises = axis
正在将axis
的输出分配给名为axises
的变量...它主要是化妆品axis
在这种情况下做了什么。它是一个4元素向量,返回最小和最大x
值以及图中所示当前轴的最小和最大y
值。前两个元素axises(1:2)
存储最小值和最大值x
,后两个元素axises(3:4)
存储最小值和最大值y
。因此,您的center
代码正在做的是找到x
,mean(axises(1:2))
和y
,mean(axises(3:4))
值的平均值,以找到中间点x
和y
轴。