不幸的是,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