compspec -- Create a spectrum from an algebraic expression.
compspec spectrum expr npoints fstwave lstwave units
This task creates artificial spectra (1-dimensional images) where the spectrum can be expressed as an algebraic function. The algebraic expression has the same syntax as an expression in a CL script, with a few extensions. The expression can only contain one variable of up to 31 characters. The expression is evaluated at each point in the spectrum, with the value of the variable varying linearly between the value of fstwave and lstwave. Integer and real values are distinguished while evaluating the expression, just as in CL or Fortran, so that 3./5. is 0.6, but 3/5 is 0.
This task will create a new image with only the default header and group parameters. This task creates only one group in an image. If you wish to create a new multi-group image, set spectrum to an image name of the form <image>.<ext>[1/<ngroups>] for the first run. For example, an FOS spectrum with six groups might have the name ytest.hhh[1/6]. Then make subsequent runs of this task, changing the spectrum value to an image name of the form <image>.<ext>[<group>]. For example, to create the remaining five groups of the FOS spectrum, make five more runs of this task, changing spectrum to ytest.hhh through ytest.hhh. The following tables summarize the syntax of the algebraic expression. The following mathematical operators can be used in an expression.
- unary minus + addition - subtraction * multiplication / division ** exponentiation
The following functions are also available. All angles in the trigonometric functions are in degrees.
abs absolute value acos arc cosine asin arcsine atan arc tangent atan2 arc tangent with two arguments cos cosine exp exponent int integer truncation log natural logarithm (base e) log10 common logarithm (base 10) max maximum of two arguments min minimum of two arguments mod first argument modulus second argument nint nearest integer sin sine sqrt square root tan tangent
Conditional expressions can also be used. These expressions have the form <boolean expr> ? <expr> : <expr>. If the boolean expression is true, then the expression before the colon is evaluated, if it is false, the expression after the colon is evaluated. The following expression could be used to create a step function: "x > 256 ? 1.0 : 0.0". These operators are available for use in the boolean expression.
< less than <= less than or equal > greater than >= greater than or equal == equal != not equal && and || or ! not
- spectrum [file name]
- The name of the output spectrum file created by this task.
- expr [string]
- An algebraic expression in one variable. The syntax for this parameter is explained in the Description section, above.
- npoints [integer, min=2]
- The number of points in the spectrum.
- fstwave [real]
- The value of the variable in the expression at the first point in the spectrum.
- lstwave [real]
- The value of the variable in the expression at the last point in the spectrum.
- units [string]
- The units of the variable in the expression.
1. Create a spectrum with 512 points named ytest.hhh, which contains a ramp function. The ramp function goes from 0 to 1000:
to> compspec ytest.hhh wave 512 0. 1000. pixel
2. Create a spectrum with 1024 points named ytest.hhh containing a sine wave:
to> compspec ytest.hhh "1+sin(theta)" 1024 0. 360. degree