我没有在 Matlab 中使用 axis(1:2) ?

I don't get the use of axis(1:2) in Matlab?

我在下面的(修改过的)matlab 代码前面:

figure(3);
subplot(2,3,2);
axises=axis;
center = [mean(axises(1:2)),mean(axises(3:4))]'

我的问题是:

我检查了 axis documentation,但没有提到 1:23:4 之类的东西?

拜托,这对于 matlab 专家来说是一个简单的问题。

无论是否传递参数,函数 axis 都会做不同的事情。没有任何参数,它 returns 当前轴边界(参见文档 here), whereas with parameters, it tries to set the current axis to a specified range (documentation)。

axises = axis 将当前轴边界存储在 axises 中,然后您可以从中提取元素。 axises(1:2)得到axis的前两个元素([xmin xmax]),axises(3:4)得到第3、4个元素([ymin ymax])。 mean(axises(1:2)) 的结果就是 xminxmax 的平均值,这就是您所期望的 center(1)。与 y 组件相同。

您不能使用 axis(1:2) 而不是 axises(1:2),因为 matlab 会将其解释为试图调用带有参数 1:2 的函数 axis 而不是提取当前轴的前两个元素

示例:

>> axis(1:2)

Error using axis>LocSetLimits (line 227)
Vector must have 4, 6, or 8 elements.

Error in axis (line 93)
LocSetLimits(ax(j),cur_arg);

>> axises = axis;
>> axises(1:2)

ans =

 0    10
  1. axises = axis 正在将 axis 的输出分配给一个名为 axises 的变量...它主要是装饰性的
  2. 您真正的问题是 axis 在这种情况下做了什么。这是一个 4 元素向量,其中 returns 最小值和最大值 x 值以及图中当前轴的最小值和最大值 y 值。前两个元素 axises(1:2) 存储最小值和最大值 x,最后两个元素 axises(3:4) 存储最小值和最大值 y。因此,您的 center 代码所做的是找到 xmean(axises(1:2))ymean(axises(3:4)) 值的平均值,以找到xy 轴。