complex {base} | R Documentation |
Complex Vectors
Description
Basic functions which support complex arithmetic in R.
Usage
complex(length.out = 0, real = numeric(), imaginary = numeric(),
modulus = 1, argument = 0)
as.complex(x, ...)
is.complex(x)
Re(x)
Im(x)
Mod(x)
Arg(x)
Conj(x)
Arguments
length.out |
numeric. Desired length of the output vector, inputs being recycled as needed. |
real |
numeric vector. |
imaginary |
numeric vector. |
modulus |
numeric vector. |
argument |
numeric vector. |
x |
an object, probably of mode |
... |
further arguments passed to or from other methods. |
Details
Complex vectors can be created with complex
. The vector can be
specified either by giving its length, its real and imaginary parts, or
modulus and argument. (Giving just the length generates a vector of
complex zeroes.)
as.complex
attempts to coerce its argument to be of complex
type: like as.vector
it strips attributes including names.
Note that is.complex
and is.numeric
are never both
TRUE
.
The functions Re
, Im
, Mod
, Arg
and
Conj
have their usual interpretation as returning the real
part, imaginary part, modulus, argument and complex conjugate for
complex values. Modulus and argument are also called the polar
coordinates. If z = x + i y
with real x
and y
,
Mod
(z) = \sqrt{x^2 + y^2}
, and for
\phi= Arg(z)
, x = \cos(\phi)
and y = \sin(\phi)
.
They are all generic functions: methods can be defined
for them individually or via the Complex
group generic.
In addition, the elementary trigonometric, logarithmic and exponential functions are available for complex values.
is.complex
is generic: you can write methods to handle
specific classes of objects, see InternalMethods.
References
Becker, R. A., Chambers, J. M. and Wilks, A. R. (1988) The New S Language. Wadsworth \& Brooks/Cole.
Examples
0i ^ (-3:3)
matrix(1i^ (-6:5), nr=4)#- all columns are the same
0 ^ 1i # a complex NaN
## create a complex normal vector
z <- complex(real = rnorm(100), imag = rnorm(100))
## or also (less efficiently):
z2 <- 1:2 + 1i*(8:9)
## The Arg(.) is an angle:
zz <- (rep(1:4,len=9) + 1i*(9:1))/10
zz.shift <- complex(modulus = Mod(zz), argument= Arg(zz) + pi)
plot(zz, xlim=c(-1,1), ylim=c(-1,1), col="red", asp = 1,
main = expression(paste("Rotation by "," ", pi == 180^o)))
abline(h=0,v=0, col="blue", lty=3)
points(zz.shift, col="orange")