我需要使用semilogx(x,y)
. 我有x=[0 1 2 ... 10 15 20 30 50 75 100]
。问题是 MATLAB 不绘图x=0
,我理解这是因为log(0)=undef
. 那么 MATLAB 中是否有另一种方法来传播我的观点?因为使用线性比例会挤压图形宽度的 1/10 中的所有第一个点!
通常,在这种情况下所做的是添加1
到 all x
,因此第一个值(最初0
)出现在原点,并且所有值的反向转换都是相同的。您可以添加除 之外的任何其他小值1
,并获得类似的结果。但是,您不想添加太小的值(如eps
),因为这样您与下一个值的距离会很大,这将导致所有其他值堆积在图表的右侧。
让我们看一个例子:
x = [0 logspace(0,2,5)];
% x = 0 1 3.1623 10 31.623 100
y = 2.*(x+1); % add 1 to all x
semilogx(x+1,y,'o','markerfacecolor','b')
而如果你替换0
为eps
你得到:
x = [0 logspace(0,2,5)];
y = 2.*(x+eps); % add a tiny value too all x
semilogx(x+eps,y,'o','markerfacecolor','b')
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句