Programmer Guide/Command Reference/EVAL/complex arithmetic: Difference between revisions
From STX Wiki
< Programmer Guide | Command Reference | EVAL
Jump to navigationJump to search
No edit summary |
No edit summary |
||
Line 79: | Line 79: | ||
====special functions==== | ====special functions==== | ||
:;<code>''rc''<sub>matrix</sub>=ctrn(''xc''<sub>matrix</sub>)</code>: Transposed the complex matrix ''xc''. | :;<code>''rc''<sub>matrix</sub>='''ctrn'''(''xc''<sub>matrix</sub>)</code>: Transposed the complex matrix ''xc''. | ||
::<code>''rc''<sub>i,j</sub> = ''xc''<sub>j,i</sub></code> | ::<code>''rc''<sub>i,j</sub> = ''xc''<sub>j,i</sub></code> | ||
:;<code>''rc''<sub>scalar</sub>=cdot(''xc''<sub>vector</sub>,''yc''<sub>vector</sub>)</code>: Compute the dot product (inner product) of the two complex vectors ''xc'' and ''yc'' (both with N elements). | :;<code>''rc''<sub>scalar</sub>='''cdot'''(''xc''<sub>vector</sub>,''yc''<sub>vector</sub>)</code>: Compute the dot product (inner product) of the two complex vectors ''xc'' and ''yc'' (both with N elements). | ||
::<code>''rc'' = sum<sub>i=0..N-1</sub> (''xc''<sub>i</sub> * ''yc''<sub>i</sub>) , i=0..N-1</code> | ::<code>''rc'' = sum<sub>i=0..N-1</sub> (''xc''<sub>i</sub> * ''yc''<sub>i</sub>) , i=0..N-1</code> | ||
:;<code>''rc''<sub>matrix</sub>=cmulv(''xc''<sub>vector</sub>,''yc''<sub>vector</sub>)</code>: Compute the tensor (or dyadic) product of the two complex vectors ''xc'' and ''yc''. | :;<code>''rc''<sub>matrix</sub>='''cmulv'''(''xc''<sub>vector</sub>,''yc''<sub>vector</sub>)</code>: Compute the tensor (or dyadic) product of the two complex vectors ''xc'' and ''yc''. | ||
::<code>''rc''<sub>i,j</sub> = ''xc''<sub>i</sub> * ''yc''<sub>j</sub></code> | ::<code>''rc''<sub>i,j</sub> = ''xc''<sub>i</sub> * ''yc''<sub>j</sub></code> | ||
:;<code>''rc''<sub>vector</sub>=cmulv(''xc''<sub>vector</sub>,''yc''<sub>matrix</sub>)</code>: Compute the product of the complex vector ''xc'' (N elements) and the complex matrix ''yc'' (N rows, M columns). | :;<code>''rc''<sub>vector</sub>='''cmulv'''(''xc''<sub>vector</sub>,''yc''<sub>matrix</sub>)</code>: Compute the product of the complex vector ''xc'' (N elements) and the complex matrix ''yc'' (N rows, M columns). | ||
::<code>''rc''<sub>j</sub> = sum<sub>i=0..N-1</sub> (''xc''<sub>i</sub> * ''yc''<sub>i,j</sub>) , j=0..M-1</code> | ::<code>''rc''<sub>j</sub> = sum<sub>i=0..N-1</sub> (''xc''<sub>i</sub> * ''yc''<sub>i,j</sub>) , j=0..M-1</code> | ||
:;<code>''rc''<sub>vector</sub>=cmulv(''xc''<sub>matrix</sub>,''yc''<sub>vector</sub>)</code>: Compute the product of the complex matrix ''xc'' (N rows, M columns) and the complex vector ''yc'' (M elements). | :;<code>''rc''<sub>vector</sub>='''cmulv'''(''xc''<sub>matrix</sub>,''yc''<sub>vector</sub>)</code>: Compute the product of the complex matrix ''xc'' (N rows, M columns) and the complex vector ''yc'' (M elements). | ||
::<code>''rc''<sub>i</sub> = sum<sub>j=0..M-1</sub> (''xc''<sub>i,j</sub> * ''yc''<sub>j</sub>) , i=0..N-1</code> | ::<code>''rc''<sub>i</sub> = sum<sub>j=0..M-1</sub> (''xc''<sub>i,j</sub> * ''yc''<sub>j</sub>) , i=0..N-1</code> | ||
:;<code>''rc''<sub>matrix</sub>=cmulv(''xc''<sub>matrix</sub>,''yc''<sub>matrix</sub>)</code>: Compute the product of the complex '''NxM''' matrix ''xc'' and the complex '''MxL''' matrix ''yc''. The result is the complex NxL matrix ''rc''. | :;<code>''rc''<sub>matrix</sub>=cmulv(''xc''<sub>matrix</sub>,''yc''<sub>matrix</sub>)</code>: Compute the product of the complex '''NxM''' matrix ''xc'' and the complex '''MxL''' matrix ''yc''. The result is the complex NxL matrix ''rc''. |
Revision as of 09:26, 8 April 2011
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 following functions:
Contents
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
rcmatrix=ctrn(xcmatrix)
- Transposed the complex matrix xc.
rci,j = xcj,i
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=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