如何在semilogx图中绘制x = 0?

时间:2017-06-21 15:18:57

标签: matlab matlab-figure logarithm

我需要使用semilogx(x,y)绘制图表。我有x=[0 1 2 ... 10 15 20 30 50 75 100]。问题是MATLAB没有绘制x=0,我理解这是因为log(0)=undef。那么在MATLAB中有另一种方法可以传播我的观点吗?因为使用线性刻度会挤压图形宽度的1/10的所有第一点!

1 个答案:

答案 0 :(得分:2)

通常情况下,在这种情况下执行的操作是向所有1添加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') 

small value

如果您将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')

eps