2017-06-21 18 views
1

我需要使用semilogx(x,y)來繪製圖表。我有x=[0 1 2 ... 10 15 20 30 50 75 100]。問題是MATLAB不繪製x=0,我知道這是因爲log(0)=undef。那麼MATLAB中有另一種方法來傳播我的觀點嗎?因爲使用線性比例尺會在圖形寬度的1/10處擠壓所有第一點!如何在semilogx圖中繪製x = 0?

+0

你有沒有試過,如果要弄清楚有可能通過h來完成和先報道?記住日誌是爲所有x> 0定義的... –

+0

是的,我知道,但是你知道其他東西使x軸的一部分大於其餘嗎? – John

回答

1

通常情況下,在這種情況下所做的是將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

如果用eps替換0而你得到:

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

+0

這解決了我的問題!非常感謝 ! – John

0

確實沒有定義log(0),但是你可以用一個非常小的數字替代它,例如eps,它在Matlab中定義爲一個小號。