Programmer Guide/Command Reference/EVAL/complex arithmetic: Difference between revisions

From STX Wiki
Jump to navigationJump to search
No edit summary
No edit summary
Line 8: Line 8:
;complex -> complex:
;complex -> complex:
:{|class="keinrahmen"
:{|class="keinrahmen"
|''xc'' ..||... any complex type
|''xc'' ||... any complex type
|-
|-
!''rc'' ..||... same '''complex''' type as ''xc''
|''rc'' ..||... same '''complex''' type as ''xc''
|}
|}
:;<code>''rc''=cr2p(''xc'')</code>: Convert ''xc'' from cartesian (real, imaginary) to polar (length, phase) format.
:;<code>''rc''=cr2p(''xc'')</code>: Convert ''xc'' from cartesian (real, imaginary) to polar (length, phase) format.
Line 17: Line 17:
----
----
;complex -> real:
;complex -> real:
:{|class="einrahmen"
:{|class="keinrahmen"
!argument ''xc''  
|''xc'' ||... any complex type
| any complex type
|-
|-
!result ''r''  
|''r'' ||... same '''real''' type as ''xc''  
| same '''real''' type as ''xc''  
|}
|}
:;<code>''r''=cr2len(''xc'')</code>: Compute length of ''xc''; ''xc'' is stored in cartesian format.
:;<code>''r''=cr2len(''xc'')</code>: Compute length of ''xc''; ''xc'' is stored in cartesian format.
Line 30: Line 28:
----
----
;real -> complex:
;real -> complex:
:{|class="einrahmen"
:{|class="keinrahmen"
!argument ''x''  
|''x'' ||... any real type
| any real type
|-
|-
!argument ''y''
!''y'' ||... same type as ''x''
|same type as ''x''
|-
|-
!result ''rc''  
!''rc'' ||... same '''complex''' type as ''x''  
| same '''complex''' type as ''x''  
|}
|}
:;<code>''rc''=cset(''x'',''y'')</code>: Combine elements of ''x'' (real part or length) and ''y'' (imaginary part or phase) to complex numbers.
:;<code>''rc''=cset(''x'',''y'')</code>: Combine elements of ''x'' (real part or length) and ''y'' (imaginary part or phase) to complex numbers.
----
----
;multiplication (element-wise)
;multiplication (element-wise)
:{|class="einrahmen"
:{|class="keinrahmen"
!argument ''xc''  
|''xc'' ||... any complex type (re,im)
| any complex type (re,im)
|-
|-
!argument ''yc''
|''yc'' ||... same '''complex''' type as 'xc'
| same type as 'xc'
|-
|-
!argument ''n''
|''n'' ||... real or complex number (re,im)
| a real or complex number (re,im)
|-
|-
!result ''rc''  
|result ''rc'' ||... same '''complex''' type as ''xc''  
| same '''complex''' type as ''xc''  
|}
|}
:;<code>''rc''=cmul(''xc'',''n'')</code>
:;<code>''rc''=cmul(''xc'',''n'')</code>

Revision as of 15:24, 7 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.

Note:

  • 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 numbers, the resulting object consists of N rows and M columns.

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
fft, dft, complex numbers

<function list>

Navigation menu

Personal tools