【问题标题】:log2 in R: How to calculate the exponent and mantissaR中的log2:如何计算指数和尾数
【发布时间】:2018-06-13 08:58:39
【问题描述】:

有谁知道如何在 R 中执行相同的 MATLAB 函数[F,E] = log2(X)

[F,E] = log2(X) 返回数组 F 和 E,使得 X=F*2^E。价值 F 通常在 0.5

https://www.mathworks.com/help/matlab/ref/log2.html

例如在 MATLAB 中,

[F,E] = log2(15)

F =

0.9375

E =

 4

因此,

F*2^E = 15

【问题讨论】:

标签: r matlab logarithm


【解决方案1】:

您需要手动计算它们。我认为没有内置函数可以提取它们。试试这个:

x<-15
E <- ifelse(x == 0, 0, floor(log2(abs(x)))+1 )
F<-x/2^E

编辑:对 x==0 的情况进行了更改。

【讨论】:

  • @user7283235,你需要小心这个,因为我不确定这是否完全适合负数。特别是-2^N可能会出错,所以你应该检查一下。
  • @Rohit 以下内容正确吗? E &lt;- ifelse(x == 0, 0, floor(log2(abs(x)))+1 ),以防x ==0.
  • @user7283235 是的,我相信。我忘记了x=0 的情况。
  • @MauritsEvers,这与我的答案相同。
【解决方案2】:

我不完全确定您在问什么,但 log2 为您提供了 R 中以 2 为底的对数。例如

log2(2);
#[1] 1

log2(2^10)
#[1] 10

2^(log2(10))
#[1] 10

详情请见?log

【讨论】:

  • 谢谢。不,我问的是如何计算 F 和 E。请参阅我编辑的示例。
  • @user7283235 啊,是的,我明白了。在这种情况下,Rohit 的答案似乎就是您所追求的。易于包装在log2_EF &lt;- function(x) return(c(E &lt;- floor(log2(x) + 1), x / 2^E)) 等便利函数中。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-02-25
  • 1970-01-01
  • 1970-01-01
  • 2012-07-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多