【问题标题】:Complex numbers in R vs. MatlabR 与 Matlab 中的复数
【发布时间】:2021-04-24 00:58:27
【问题描述】:

我在使用 R 和 Matlab 时观察到以下现象。

当我将日志应用于 R 中的负数时,我收到以下错误消息:

警告信息: 在 log(-1) 中:产生了 NaN

但是,当我在 Matlab 中将 log 应用于负数时,我会得到例如以下复数:

log(-1):0.0000 + 3.1416i

log(-5):1.6094 + 3.1416i

有没有办法在 R 中实现相同的行为?或者有什么支持 R 中的默认选项的吗?

【问题讨论】:

    标签: r matlab complex-numbers


    【解决方案1】:

    log 在你一开始就给它复杂的时候给你复杂。

    log(-1+0i)
    # [1] 0+3.141593i
    log(-5+0i)
    # [1] 1.609438+3.141593i
    

    我不知道为什么默认情况下它没有提供执行此操作的选项,但是我又不是一直在处理复数。

    如果您想以编程方式执行此操作,可以使用as.complex:

    log(as.complex(-1))
    # [1] 0+3.141593i
    

    甚至制作一个辅助函数为您简化它:

    mylog <- function(x, ...) log(as.complex(x), ...)
    mylog(-1)
    # [1] 0+3.141593i
    

    【讨论】:

    • 感谢您解释不同的方法。我在循环中使用 log,因此仅在需要时才包含此方面会很棒,即当 log 函数中的数字为负数时。至少在 Matlab 中是这样处理的。例如,如果 x = 5,则不使用复数,但如果 x = -5,则将结果显示为复数。
    • 当然,但是...在 R 中,如果向量(和框架的列)中的任何内容变为 complex,那么一切都很复杂,请参阅 c(0,0+0i)。
    猜你喜欢
    • 1970-01-01
    • 2016-11-20
    • 2017-07-01
    • 2011-06-16
    • 1970-01-01
    • 1970-01-01
    • 2012-10-13
    • 2014-01-31
    • 2020-06-08
    相关资源
    最近更新 更多