Programmer Guide/Command Reference/EVAL/complex arithmetic

From STX Wiki
Jump to navigationJump to search

{{DISPLAYTITLE:complex arithmetic

Because the current version of the STx EVAL command do not support a complex data type, a package of functions is used to implement arithmetic and special handling for complex numbers.

The package consists of the functions
cr2p, cr2len, cr2phi, cp2r, cget, cset, conj, ctrn, cdot, cmul, cmulv
Complex numerical objects
  • A complex number or complex scalar is a numerical object v with 2 rows and 1 column (a vector):
v[0] = re (cartesian: real part) or len (polar: length)
v[1] = im (cartesian: imaginary part) or phi (polar: phase)
  • A complex vector with N elements is a numerical object v with 2N rows and 1 column (a vector):
v[2*i] = rei or leni
v[2*i+1] = imi or phii
  • A complex matrix with MxN elements is a numerical object v with 2N rows and M columns (a matrix):
v[2*i,j] = rei,j or leni,j
v[2*i+1,j] = imi,j or phii,j
  • In general a numerical object containing N x M complex numbers (N>=1, M>=1), consists of 2N rows and M columns, because each complex number uses two cells of a row.
  • If a numerical object containing N x M complex numbers, is converted element-wise to real, the resulting object consists of N x M real numbers.

complex -> complex
xc ... any complex type
rc .. ... same complex type as xc
rc=cr2p(xc)
Convert xc from cartesian (real, imaginary) to polar (length, phase) format.
rc=cp2r(xc)
Convert xc from polar (length, phase) to cartesian (real, imaginary) format.
rc=conj(xc)
Conjugate xc; xc must be in cartesian format.

complex -> real
xc ... any complex type
r ... same real type as xc
r=cr2len(xc)
Compute length of xc; xc is stored in cartesian format.
r=cr2phi(xc)
Compute phase of xc; xc is stored in cartesian format.
r=cget(xc,0)
Get real part or length of xc (depends on format of xc).
r=cget(xc,1)
Get imaginary part or phase of xc (depends on format of xc).

real -> complex
x ... any real type
y ... same type as x
rc ... same complex type as x
rc=cset(x,y)
Combine elements of x (real part or length) and y (imaginary part or phase) to complex numbers.

multiplication (element-wise)
xc ... any complex type (re,im)
yc ... same complex type as 'xc'
n ... real or complex number (re,im)
result rc ... same complex type as xc
rc=cmul(xc,n)
rc=cmul(n,xc)
Multiply each element of xc with the real or complex number n.
rci,j = xci,j * n
rc=cmul(xc,yc)
Multiply xc and yc element by element.
rci,j = xci,j * yci,j

special functions
rcscalar=cdot(xcvector,ycvector)
Compute the dot product (inner product) of the two complex vectors xc and yc (both with N elements).
rc = sumi=0..N-1 (xci * yci) , i=0..N-1
rcmatrix=ctrn(xcmatrix)
Transposed the complex matrix xc.
rci,j = xcj,i
rcmatrix=cmulv(xcvector,ycvector)
Compute the tensor (or dyadic) product of the two complex vectors xc and yc.
rci,j = xci * ycj
rcvector=cmulv(xcvector,ycmatrix)
Compute the product of the complex vector xc (N elements) and the complex matrix yc (N rows, M columns).
rcj = sumi=0..N-1 (xci * yci,j) , j=0..M-1
rcvector=cmulv(xcmatrix,ycvector)
Compute the product of the complex matrix xc (N rows, M columns) and the complex vector yc (M elements).
rci = sumj=0..M-1 (xci,j * ycj) , i=0..N-1
rcmatrix=cmulv(xcmatrix,ycmatrix)
Compute the product of the complex NxM matrix xc and the complex MxL matrix yc. The result is the complex NxL matrix rc.
rci,k = sumj=0..M-1 (xci,j * ycj,i) , i=0..N-1 and k=0..L-1


See also
complex numbers, vvset, vvget, vv, fft, dft,

<function list>

Navigation menu

Personal tools