R 与 Matlab 中的复数
Complex numbers in R vs. Matlab
我在使用R和Matlab时观察到以下现象。
当我将 log 应用于 R 中的负数时,我收到以下错误消息:
Warning message:
In log(-1) : NaNs produced
但是,当我在 Matlab 中将 log 应用于负数时,我得到例如以下复数:
log(-1): 0.0000 + 3.1416i
log(-5): 1.6094 + 3.1416i
有什么方法可以在 R 中实现相同的行为吗?或者有什么支持 R 中的默认选项的吗?
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
我在使用R和Matlab时观察到以下现象。
当我将 log 应用于 R 中的负数时,我收到以下错误消息:
Warning message: In log(-1) : NaNs produced
但是,当我在 Matlab 中将 log 应用于负数时,我得到例如以下复数:
log(-1): 0.0000 + 3.1416i
log(-5): 1.6094 + 3.1416i
有什么方法可以在 R 中实现相同的行为吗?或者有什么支持 R 中的默认选项的吗?
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