9

我试过搜索对数+objective-c,但我得到的只是老师的数学测试页,或者对数是什么的解释;)

我有一些测量值,比如 83912.41234,其他测量值是 32.94232。我需要将这个巨大的频谱压缩到 0 到 100 之间,而 32.94232 至少应该大于 2,而 83912.41234 会接近 100。所以我认为对数函数将是我的朋友。

更新:我通过“快速打开”找到了 math.h 文件(Xcode 中非常好的命令:SHIFT + CMD + D),在那里,大吃一惊:

extern double log ( double );
extern float logf ( float );

extern double log10 ( double );
extern float log10f ( float );

extern double log2 ( double );
extern float log2f ( float );

extern double log1p ( double );
extern float log1pf ( float );

extern double logb ( double );
extern float logbf ( float );

但是:没有文字,没有评论。我不是那种数学狂。所以一些描述会很好,即什么情况下的对数,曲线的样子等等......所以任何伟大的链接都非常感谢!

4

3 回答 3

15

此外,得到一个任意底数的对数:

float logx(float value, float base) 
{
   return log10f(value) / log10f(base);
}
于 2009-10-20T19:17:58.513 回答
2

math.h 是标准包含。维基百科页面有一些文档。

另一种“压缩”值的方法是将您的值拟合成一条直线。以你为例:

直线方程

y = mx + c
y = 'squished' value.
x = The value you want to squish
m = Gradient of the line
c = intercept on the y axis

对您的值进行快速计算会得出以下结果:

y = 1.17e-3 x + 1.96

希望这可以帮助。

于 2009-05-21T09:16:44.743 回答
1

拿一本关于 C 标准库函数的书怎么样?

否则,您可以尝试 man pages: man 3 logf,例如

于 2009-05-21T09:10:31.620 回答