Awk -列数据的日志

Awk -列数据的日志,awk,logarithm,Awk,Logarithm,我有一个如下所示的数据文件: -1.98614 -1.99195 -2.28257 -2.09129 -2.08449 -2.0765 -2.0379 -2.25625 -2.04351 -2.09871 -2.17877 ... 我想获取每行(awk命令)的-log(base 10),并将其保存在一个新文件中。你能帮我吗?你可以用自然对数10除以十进制对数 awk '{print log(-$1)/log(10)}' file 你可以用自然对数10除以十进制对数 awk '{print l

我有一个如下所示的数据文件:

-1.98614
-1.99195
-2.28257
-2.09129
-2.08449
-2.0765
-2.0379
-2.25625
-2.04351
-2.09871
-2.17877 ...

我想获取每行(awk命令)的
-log(base 10)
,并将其保存在一个新文件中。你能帮我吗?

你可以用自然对数10除以十进制对数

awk '{print log(-$1)/log(10)}' file

你可以用自然对数10除以十进制对数

awk '{print log(-$1)/log(10)}' file

会给你想要的。

数字的反对数基数10
x
是表示
10^x
的另一种方式。由于
awk
没有内置的
pow(x,y)
来提高
x
的功率
y
,您需要借助
exp
log
来重写它:

awk '{print exp($1*log(10));}' file

数字
x
的反对数基数10是表示
10^x
的另一种方式。由于
awk
没有内置的
pow(x,y)
来提高
x
的功率
y
,您需要借助
exp
log
来重写它:

awk '{print exp($1*log(10));}' file

哎哟,负数日志。。。是否要计算一列数字的
log10(-x)
?-log或antilog-log(-1.986)或log 1/-1.986,即0.010471285。请通过书写重新编排您的帖子。您想要计算反对数,而不是数字的log_10函数,这是完全不同的!哎哟,负数日志。。。是否要计算一列数字的
log10(-x)
?-log或antilog-log(-1.986)或log 1/-1.986,即0.010471285。请通过书写重新编排您的帖子。您想要计算反对数,而不是数字的log_10函数,这是完全不同的!我收到以下错误?awk:cmd。第1行:(FILENAME=dihedbpradian FNR=249949)警告:日志:接收到否定参数-3。11768@amir:您使用的是带有
-log($1)
的版本还是带有
log($1)
的版本。负数的对数是复数;只有严格的正数才有实对数。或者你的数据既有正值又有负值?如果两者都有,您需要决定如何正确处理负数。@amir文件中的数字是正数还是负数?如果为正,则取
log($1)
,如果为负,则取
log($1)
。你不能计算负数的对数,除非你使用复杂的算术,AFAIK awk不支持。我的文件中既有正数也有负数。那么我如何将它们彼此分开,然后取正数的-log?@amir这取决于你想要实现什么。如果你的算法应该接受负数,那么你不能只取对数,除非你接受输出不总是实数?awk:cmd。第1行:(FILENAME=dihedbpradian FNR=249949)警告:日志:接收到否定参数-3。11768@amir:您使用的是带有
-log($1)
的版本还是带有
log($1)
的版本。负数的对数是复数;只有严格的正数才有实对数。或者你的数据既有正值又有负值?如果两者都有,您需要决定如何正确处理负数。@amir文件中的数字是正数还是负数?如果为正,则取
log($1)
,如果为负,则取
log($1)
。你不能计算负数的对数,除非你使用复杂的算术,AFAIK awk不支持。我的文件中既有正数也有负数。那么我如何将它们彼此分开,然后取正数的-log?@amir这取决于你想要实现什么。如果您的算法应该接受负数,那么您不能只取对数,除非您接受输出不总是实数。