我需要使用 semilogx(x,y)
绘制图表。我有x=[0 1 2 ... 10 15 20 30 50 75 100]
。问题是 MATLAB 不绘制 x=0
,我理解是因为 log(0)=undef
。那么 MATLAB 中还有另一种方法来传播我的观点吗?因为使用线性比例会将所有第一个点压缩到图表宽度的 1/10 内!
最佳答案
通常,在这种情况下所做的是将 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')
如果将 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')
关于matlab - 如何在 semilogx 图中绘制 x=0?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44680134/