不幸的是,log(x)不能爲負數,因爲log(x) = y
< =>10^y = x
。
10?y永遠是-5嗎?
不幸的是不可能使10^y<=0
因爲y
變得-infinity,x
接近1 /無窮大; x
接近,但從未通過0.
是否可以繪製log(x),其中x是負數?
但是,您的問題的一個簡單的解決方案是取絕對值df
。通過這樣做,負數變成了正數。唯一的缺點是,以這種方式轉換數據後,您需要撤消轉換。如果數字是負數(並且由於abs(df)
而轉爲正數),則必須在-1之後乘以-1。
您可能需要定義一個記錄,它需要做出積極的任何值,你自己的絕對值函數:
changeList = []
def absRecordChanges(value):
if value < 0 :
value = value * -1
changeList.append(value)
return value
還有其他的方法來解決這個問題,但他們都在你的數據轉換爲中心符合日誌轉換(x> 0)的條件,並且記錄您更改的數據,以便您可以在之後將其更改(在繪製之前)。
編輯: 雖然鷹爪擺弄周圍,我能夠繪製log(x)
,其中x
是任意整數。我用分段函數來做到這一點:{x<0:-log(abs(x)),log (x)}
。
def piecewiseLog(x)
If x <= 0 :
return -log(abs(x))
else :
return log(x)
由於我不熟悉的MATLAB語法,這個環節有一個替代的解決方案:http://www.mathworks.com/matlabcentral/answers/31566-display-negative-values-on-logarithmic-graph