我没有在 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))]'
我的问题是:
- 为什么他使用
axises
而不是继续使用 axis
?
axises(1:2)
是做什么的?
我检查了 axis documentation,但没有提到 1:2
或 3: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))
的结果就是 xmin
和 xmax
的平均值,这就是您所期望的 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
axises = axis
正在将 axis
的输出分配给一个名为 axises
的变量...它主要是装饰性的
- 您真正的问题是
axis
在这种情况下做了什么。这是一个 4 元素向量,其中 returns 最小值和最大值 x
值以及图中当前轴的最小值和最大值 y
值。前两个元素 axises(1:2)
存储最小值和最大值 x
,最后两个元素 axises(3:4)
存储最小值和最大值 y
。因此,您的 center
代码所做的是找到 x
、mean(axises(1:2))
和 y
、mean(axises(3:4))
值的平均值,以找到x
和 y
轴。
我在下面的(修改过的)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 专家来说是一个简单的问题。
无论是否传递参数,函数 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))
的结果就是 xmin
和 xmax
的平均值,这就是您所期望的 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
axises = axis
正在将axis
的输出分配给一个名为axises
的变量...它主要是装饰性的- 您真正的问题是
axis
在这种情况下做了什么。这是一个 4 元素向量,其中 returns 最小值和最大值x
值以及图中当前轴的最小值和最大值y
值。前两个元素axises(1:2)
存储最小值和最大值x
,最后两个元素axises(3:4)
存储最小值和最大值y
。因此,您的center
代码所做的是找到x
、mean(axises(1:2))
和y
、mean(axises(3:4))
值的平均值,以找到x
和y
轴。