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

时间:2015-05-30 16:38:02

标签: matlab image-processing matlab-figure

我在以下(修改过的)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:23:4等内容?

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

2 个答案:

答案 0 :(得分:4)

无论你传递一个参数,函数axis都会做不同的事情。如果没有任何参数,它将返回当前轴边界(请参阅文档here),而使用参数时,它会尝试将当前轴设置为指定范围(documentation)。

axises = axis将当前轴边界存储在axises中,然后您可以从中提取元素。 axises(1:2)获取轴的前两个元素([xmin xmax]),axises(3:4)获取第3和第4个元素([ymin ymax])。 mean(axises(1:2))的结果是xminxmax的平均值,这是您期望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)

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