Dec 132017
 
Program to define and study waveforms - very good.
File SPIA.ZIP from The Programmer’s Corner in
Category Science and Education
Program to define and study waveforms – very good.
File Name File Size Zip Size Zip Type
ASSIGN.SYS 55 44 deflated
CONFIG.BAT 1230 461 deflated
DD3EPSNL.SYS 16256 5790 deflated
GSX.EXE 8192 4325 deflated
HGC.COM 507 381 deflated
IBMBLMP3.SYS 11264 4964 deflated
IBMHERP3.SYS 11264 4963 deflated
IBMHP743.SYS 14080 5700 deflated
MANUAL.DOC 24802 8021 deflated
READ.ME 1971 984 deflated
RECONFG.EXE 17504 8443 deflated
RUNSPIA.BAT 32 29 deflated
SPIA.DAT 88993 45151 deflated
SPIA.EXE 140144 34319 deflated

Download File SPIA.ZIP Here

Contents of the READ.ME file


WELCOME TO SPIA
(C)Copyright Moonshadow Software 1986, 1987

What is SPIA?

SPIA is a mathematical scratchpad for functions. SPIA provides an
interactive environment in which to study functions (like sin, cos,
etc.) and signal processing techniques (like Fourier transform,
convolution, etc.). SPIA is easy to use (really!), and serves a
variety of needs. From the high school student learning for the
first time about graphing functions and trigonometry to the
practicing engineer interested in power spectra. SPIA is
being used in universities and companies across the country.

What is SHAREWARE?

SPIA is a shareware program. That means that SPIA is a user
supported product. It is not public domain, and it is not free
software. If you find SPIA useful, we ask you to register your copy
of SPIA. By registering SPIA you are contributing to the further
development of this software, and software like it. Details on how
to register SPIA are included in the abbreviated on-disk manual,
MANUAL.DOC. We also ask you to share your copy of SPIA with your
colleagues (please distribute the unconfigured copy of this disk).

How do I use SPIA?

SPIA first needs to be configured for your computer. To do this
simply insert the SPIA disk (the contents of SPIA.ARC [13 files]
from your Bulletin Board) into drive A and type "A:[Enter] CONFIG [Enter]"
(without the quotes). Once configured, type "RUNSPIA" to run SPIA!

How do I REALLY use SPIA?

A SPIA demo disk is available (SPIADEM.ARC from your Bulletin Board)
which will run a live demo of SPIA. This is very useful in learning
how to use SPIA. However, because SPIA is truly an intuitive tool, we
heartily recommend jumping in and playing. After all, playing
(exploring, experimenting) really is the best way to learn - isn't it?

Enjoy!




Contents of the MANUAL.DOC file


WELCOME TO SPIA
(C)Copyright Moonshadow Software 1986, 1987

What is SPIA?

SPIA is a mathematical scratchpad for functions. SPIA provides an
interactive environment in which to study functions (like sin, cos,
etc.) and signal processing techniques (like Fourier transform,
convolution, etc.). SPIA is easy to use (really!), and serves a
variety of needs. From the high school student learning for the
first time about graphing functions and trigonometry to the
practicing engineer interested in power spectra. SPIA is
being used in universities and companies across the country.

What is SHAREWARE?

SPIA is a shareware program. That means that SPIA is a user
supported product. It is not public domain, and it is not free
software. If you find SPIA useful, we ask you to register your copy
of SPIA. By registering SPIA you are contributing to the further
development of this software, and software like it. Details on how
to register SPIA are included in the abbreviated on-disk manual,
MANUAL.DOC. We also ask you to share your copy of SPIA with your
colleagues (please distribute the unconfigured copy of this disk).

How do I use SPIA?

SPIA first needs to be configured for your computer. To do this
simply insert the SPIA disk (the contents of SPIA.ARC [13 files]
from your Bulletin Board) into drive A and type "A:[Enter] CONFIG [Enter]"
(without the quotes). Once configured, type "RUNSPIA" to run SPIA!

How do I REALLY use SPIA?

A SPIA demo disk is available (SPIADEM.ARC from your Bulletin Board)
which will run a live demo of SPIA. This is very useful in learning
how to use SPIA. However, because SPIA is truly an intuitive tool, we
heartily recommend jumping in and playing. After all, playing
(exploring, experimenting) really is the best way to learn - isn't it?

Enjoy!















________________________________________________
| SPIA |
| An Interactive Guide To |
| Signal Processing |
| |
| USER'S GUIDE |
| |
| Moonshadow Software |
| 5016 Castlewood Drive |
| San Jose, CA 95129 |
| (408)-446-2459 |
| |
| (C) Moonshadow Software 1986,1987 |
------------------------------------------------





License Information

Non-registered users are granted a limited license to use SPIA on a
trial basis for the purpose of determining whether SPIA is suitable
for their needs. Use of SPIA, except for this limited purpose,
requires registration. Use of non-registered copies of SPIA by any
person, business, corporation, government agency or other entity
is strictly forbidden.

Registration permits a user the license to use SPIA on a single
machine.

All users are granted a limited license to copy SPIA only for the
trial use of others subject to the above limitations, and also the
following:

* SPIA must be copied in unmodified form, complete with the
full documentation (including this license information).

* No fee, charge or other compensation may be accepted or requested
by any licensee.

* SPIA may not be distributed in conjunction with any other
product.

Operators of electronic bulletin board systems may post SPIA for
downloading by their users only as long as the above conditions are met.





WARRANTY


Moonshadow Software makes no representations or warranties with
respect to the contents hereof and specifically disclaims any
implied warranties of merchantability or fitness for any
particular purpose. Further, Moonshadow Software reserves the right
to revise this publication and software and to make changes from
time to time in the content hereof without obligation of
Moonshadow Software to notify any person of such revision or
changes.

SPIA is a trademark of Moonshadow Software.





ORDERING INFORMATION


A SPIA registration licenses you to the use of the product on a
regular basis. Registration includes mailed notification of
updates and update privileges for a nominal fee. To register
send

* $79.95 which includes the typeset manual, telephone support, the
latest version on disk, and update privileges.

Please add $5 shipping, $10 outside U.S. CA residents add sales tax.

In addition, evaluation disks are available for $10. These disks
do not include registration.

Please use the enclosed order form when placing an order.

ORDERS OUTSIDE THE US: Please send checks drawn on US banks in US
dollars. In addition, make sure $10 shipping is included for any
items ordered.





ORDER FORM

Send to: Moonshadow Software
5016 Castlewood Drive
San Jose, CA 95129
(408)-446-2459


Please send me the latest releases of:


____ SPIA Evaluation Disk....................... @ $ 10.00 ea $ ______
(includes program and manual on disk, no registration)


____ SPIA Registration Package.................. @ $ 79.95 ea $ ______
(includes registration, program, typeset manual,
telephone support, update privileges)

Subtotal ______

(CA residents add sales tax) Tax ______

Total $ ______


Name: ____________________________________________________________

Company: ____________________________________________________________

Address: ____________________________________________________________

____________________________________________________________

____________________________________________________________

Phone: _________________________


Comments: ____________________________________________________________

____________________________________________________________

____________________________________________________________

Where you heard about/
received your copy: _____________________________________________________






INTRODUCTION

SPIA is a mathematical scratchpad for functions. SPIA provides an
interactive environment in which to study functions (like sin, cos,
etc.) and signal processing techniques (like Fourier transform,
convolution, etc.). SPIA is easy to use (really!), and serves a
variety of needs. From the high school student learning for the
first time about graphing functions and trigonometry to the
practicing engineer interested in the power spectrum of a function.

SPIA is actually an interpretive language where instead of the scalar
variables found in BASIC and FORTRAN one has "function" variables. As
a result, one enters algebraic statements very similar to what would
be used to manipulate equivalent functions on paper.

The user is able to construct functions from that of a predefined set
and manipulate them and examine the result graphically. SPIA uses
algebraic logic.

The following pages are an abbreviated form of the typeset manual
available upon registration. SPIA is designed to be intuitive in
nature, and we invite you to "jump in". SPIA works the way you might
with paper and pencil.

SPIA is a electronic scratchpad for mathematical functions and
operations.





INSTALLATION

REQUIREMENTS

SPIA requires an IBM PC/XT/AT/System/2 or compatible and a graphics
adapter. SPIA also requires 256 K bytes of RAM. The graphics
standards supported are:

* Hercules monochrome
* IBM Color Graphics Adapter (CGA)
* IBM Enhanced Graphics Adapter (EGA)
* IBM Video Graphics Array Adapter (VGA)

Although SPIA does not require a math coprocessor (8087/80287/80387),
if your machine has one it will use it. Because SPIA is very math
intensive, a math coprocessor will improve its performance
significantly. On an IBM PC/XT with no math coprocessor the time for
a Fourier transform is about 20 sec.

SPIA can be run from a floppy or hard disk.


BACKUP COPIES

Before configuring or installing SPIA on your computer, make a copy
of the SPIA SHAREWARE distribution disk. We encourage you to make
copies of this diskette to share with your colleagues.

Once SPIA is configured for your computer the SPIA disk is customized
and cannot be used on another computer without running the included
RECONFG program. So to prevent confusion, please distribute the
unconfigured original SPIA SHAREWARE distribution diskette.


CONFIGURATION and INSTALLATION

To configure and install SPIA on your computer simply insert the SPIA
SHAREWARE distribution disk in drive A and type "CONFIG" (without the
quotes). For example:

A>CONFIG [Enter]

The floppy disk is customized for your computer and if requested a
customized copy is also transferred to the hard drive in C:\SPIA.

RUNNING SPIA

Once SPIA has been configured it is run by typing RUNSPIA. For a
floppy based system simply insert the configured diskette in drive A
(or B) and type "A:[Enter]" and then "RUNSPIA".

On a hard drive one needs to first change to the SPIA subdirectory
and then type RUNSPIA. For example:

C>CD \SPIA [Enter]
C>RUNSPIA [Enter]





USING SPIA

SPIA is essentially an interpretive programming language, in which
the variables are functions (vectors) and the operators are the basic
mathematical operations with a few special ones thrown in. By taking
the supplied functions and operators (and a little ingenuity) one can
custom build an enormous array of functions upon which to experiment.
The commands which invoke these functions and operations are entered
in the command window at the bottom of the screen. The commands are
pretty much what one might write on paper to algebraically set up the
mathematical operation. The commands and functions are detailed in
the command summary section.

SPIA's working screen is divided into 3 functional windows: The
display window, the message window, and the command line window.

________________________________________________
| |
| |
| |
| DISPLAY WINDOW |
| |
| |
| |
------------------------------------------------
| MESSAGE WINDOW |
------------------------------------------------
| COMMAND WINDOW |
------------------------------------------------



THE DISPLAY WINDOW. It is here that help screens are displayed and
the graphics representation of the functions are displayed. When
displaying functions, there are 3 work areas used: A, B, and C. This
allows the viewing of 3 functions at a time. Each function has as
its range -2 to +2, with 0 marked on the x axis. The ordinate range
is marked on the y axis each time a function is displayed.

Unless specified all functions and their resulting manipulations are
placed in the A work area for display. In a programming sense it is
assigned to A. For example:

SINX + COSX

gets the predefined functions sin(x) and cos(x), adds them together
and places the result in the A work area. This is equivalent to
saying

A = SINX + COSX





USING SPIA - continued-

Once a work area has been assigned a result, it can be used in
subsequent expressions, for example

ABS(A)

takes the absolute value of A, which currently has the result of
SINX+COSX. Notice too, that this expression places the results of
ABS(A) in A! (since there is no explicit assignment) So, one can
recursively assign work areas, much like that of variables in BASIC
and FORTRAN. To place the results in the other work areas simply
make the assignments, like so

A = SINX
B = SINX + COSX
C = ABS(B)

The above command sequence would allow us to see the progression of
our operations graphically, instead of writing over our intermediate
steps.

One other aspect of the display work areas bears mentioning - the
display of imaginary functions. Since SPIA can operate with complex
functions (ie. functions with both real and imaginary parts) the
display area is structured so that one can display either the real or
imaginary parts independently. This is accomplished by typing either
IA, IB, and IC in the command window to view the imaginary parts of
the complex functions A, B or C.

IA, IB and IC are also used to view the phase parts of A, B and C if
the functions have been converted to their amplitude/phase form by
the AMP() function.

More about complex functions later.


THE MESSAGE WINDOW. As its name implies, this window provides you
with messages pertaining to the program's operation. There are 4
types of messages:

Error messages
Informational messages
Prompts
Mode messages

THE COMMAND LINE WINDOW. This is a three line scrolling window which
displays your commands.





GENERAL NOTES

SPIA has a dictionary of functions (nouns) and operators (verbs).
With these it is possible to construct new functions upon which
further operations can be carried out. The command lines are entered
and parsed one line at a time based on a set of precedence rules.
The available functions, operators, and commands are described in
detail on the following pages and a quick summary can be invoked
during program operation by typing HELP. SPIA is meant to be
exploratory in nature, so don't hesitate just trying things out.

The functions in SPIA are defined over the range of x = -2 to x = +2,
eg. SINX, the sin(pi*x), ranges over -2pi to +2pi. Each function
contains 256 points.


PARSING

The parser in SPIA will parse (that is grammatically resolve the
command line into a collection of functions and operations on those
functions) most reasonable algebraic command lines. If there is any
doubt as to the order of operations, the liberal use of parentheses
will force the order to your liking, eg:

B = A + B * C will be done as A + (B*C)

B = (A + B) * C will be done as (A+B) * C

The precedence of operators is:

'unary' > 'binary' = '*' = '/' > '+' = '-'

where unary refers to operators with only one argument, like FT(A),
IFT(A), SQRT(A), ABS(A), and binary refers to operators like CONV and
CORR that require two (A CONV B). When operator precedence is equal,
the left most operator has precedence.

If you are unsure of how the computer interpreted your command -
watch the message window. This will reflect the order of operation.
For example A+B*C will flash in succession "evaluating product",
"evaluating sum".

Like english (or at least like most programming languages) SPIA has a
grammar, and while it is reasonably easy to trip it up, it is also
reasonably easy to deliver commands that do what you had wanted!
Somewhere in between an adventure game and a calculator.

Currently, the unary minus is not supported. It is easy to work
around. For example:

(0 - 1) * GAUSS





GENERAL NOTES - continued -

COMPLEX ARITHMETIC

Because Fourier Transforms generate complex functions, there is the
ability to manipulate and display these complex functions in SPIA.
There are two modes within SPIA: COMPLEX ON and COMPLEX OFF. These
two commands can be typed to force the mode of arithmetic
calculation. Basically if complex arithmetic is on, then addition,
subtraction, multiplication and division take into account the
imaginary parts of the functions. Complex arithmetic is
automatically turned on when taking the FT of some function, and it
is automatically turned off when the inverse FT is taken. Again,
these modes can be manually invoked.

It is important when doing arithmetic in the frequency domain that
the complex mode be on, otherwise the imaginary component of the
result of the operation always has a zero component.





COMMAND SUMMARY

MATHEMATICAL OPERATIONS
-----------------------
ABS(A)......the absolute value of the function in A.
AMP(A)......converts real/imaginary to amplitude phase of A.
CONJ(A).....the complex conjugate of A.
A CONV B....performs the convolution integral of A with B.
A CORR B....performs the cross correlation integral of A with B,
DERIV(A)....the difference between the ith and (i+1)th points
for all points, with the final point being equal to
the differential before it. Hence, errors can
accumulate in the last point.
EXP(A)......the exponential of each point in A.
FORCE(A)....forces the endpoints of A = 0, thereby eliminating end
effects in the Fourier transform.
FT(A).......the Fourier Transform of A. The imaginary part can
be displayed by IA. Complex arithmetic mode
automatically turned on.
IFT(A)......the inverse Fourier Transform of A. Complex mode turned off.
INTEG(A)....the integral of A.
LOG(A)......the log base 10 log of each point in A.
LN(A).......the log base e of each point in A.
MIRROR(A)...the right side of a function mirrored into the eft.
MSHIFT(A)...shifts the function A left (minus) by 10%.
RE(A).......converts function from amplitude/phase space to
real/imaginary.
SHIFT(A)....shifts the function A right (plus) by 10%.
SMOOTH(A)...3 point smooth of A.
SQRT(A).....the square root of each point in A.
TEN(A)......the power of A to the base 10, for each point in A.
A + B.......sums each point of A and B respectively.
A - B.......subtracts each point of B from each point of A.
A * B.......multiplies each point of A and B respectively.
A / B.......divides each point of A by each point of B, respectively.
A ** n......takes each point of A and raises it to the n-th power.
Note, number can be any real number, but it cannot be
another function. Ie. SINX**COSX is not allowed.
A = B.......takes each point in B and assigns it to A.





COMMAND SUMMARY - continued -

DEFINED FUNCTIONS
-----------------

n...........any number can be input as a function, this has the
effect of assigning each point of that function to be
that number. eg. B=17.5 assigns each point of B to
be 17.5, (SINX+1)/NOISE*10 adds 1 (one) to each point
of the function SINX, and divides it by the function
NOISE times 10.
A,B,C.......these are user defined functions, having zero values
until assigned. B and C must be explicitly assigned,
as in B=COSX, but A is implicitly assigned by typing
COSX.
IA,IB,IC....these are the imaginary counterparts to A,B, and C.
COSX........cosine of pi*x where x:-2 to +2
DEL0........delta function at x=0
EXPMX.......the exponential of the absolute value of x:-2 to +2
exp(-abs(x)).
GAUSS.......the gaussian. defined as exp(-pi*(x**2))
HEAVY.......the Heavyside step function, defined as zero for x<0
and 1 for x>0.
III.........sampling function, delta functions at regular intervals.
II..........pair of delta functions at x=1,-1.
LOREN.......the lorentzian, mean of zero, halfwidth of 1.
NOISE.......pseudo random noise of intensity -0.1 to +0.1
(approximately 10% of many of the above functions).
NOTCH.......defined as 1 for abs(x) > 0.1, and 0 for abs(x) < 0.1,
excellent for applying filers to FT's.
RECT........rectangle function, 0 for abs(x) > .5, 1 for abs(x) <= .5
SIGN........defined as -1 for x<0 and +1 for x>=0.
SINX........sin(pi*x) over -2pi to +2pi. Also supported are SIN2X
thru SIN9X, where SIN9X is sin(9*pi*x)
SINCX.......defined as sin(pi*x)/(pi*x), sinc(0) = 1. Also SINC2X
thru SINC9X.
TRI.........the triangle function, defined as 1-abs(x) for abs(x) < 1
and 0 elsewhere.
X...........ramp from -1 to +1.






COMMAND SUMMARY - continued -

COMMANDS
--------

COMPLEX [ON/OFF]..used to control complex arithmetic mode, when
complex mode is on the operations +,-,*, and / are
done with both the imaginary and real parts of the
functions. Note the complex annunciator is turned on
in complex mode.
EXIT..............exit program.
FAST [ON/OFF].....determines if convolution/correlation is done with
integer arithmetic (fast) or floating point (slow).
Functions must be prepared before use by
multiplying by the desired precision. Eg:
100*SINX allows fast convolution to within 3
significant figures.
FILE..............reads in user acquired data files. Text files
(ASCII) can be read, where the numbers are one per
line (with no commas etc.) and can be integer,
floating point or exponential, eg:
32
.73
8.1E-05
HELP..............displays a quick summary of commands.
PLOT..............plots screens.
PRINT.............prints the screen.
RESTORE...........restores previously saved functions.
SAVE..............saves current set of functions.
SUPPRESS [ON/OFF].suppresses digital error propagation. Default is on.
QUIT..............same as exit.





EXAMPLES

FOURIER FILTERING.

One of the novel techniques available in Fourier space is frequency
filtering. In this case we will filter out the high frequency
component from our signal. The theory being that the low frequency
information is what the signal of interest is comprised of and the
high frequency information is purely noise. The truth of this
statement can vary drastically from situation to situation, lets look
at two of them.

CASE I

(1) Create a gaussian with noise, place it in C for reference

GAUSS + NOISE (places the result in A)
C = A

(2) Take the transform of the resultant function, lets also save it
for further manipulation

FT(A)
B = A

(3) Apply a notch filter to the transform, create it first in A, then
multiply the transform, B, by it (this applies the filter) and
finally take the inverse transform.

1 - NOTCH (like a very narrow square function)
A * B (note this is complex multiplication)
(A now holds the filtered transform)
IFT(A)

You'll find that the resultant function in A is a smoothed version of
GAUSS+NOISE in C. What would have happened if the filter function to
be applied was RECT? Also try adding 10*NOISE, instead of just NOISE,
to GAUSS, to give a signal to noise ratio of 1:1 and repeat the
filter exercise.




EXAMPLES - continued -

CASE II

(1) Let's apply this technique to another function. Create a train of
peaks like so:

SIN5X**10

(2) Reproducing the steps (1) to (3) in case I, only using this function
as the base

A + NOISE
C = A
FT(A)
B = A
(1 - NOTCH)*B
IFT(A)

Apparently not an appropriate filter to apply in this case, due
to the higher frequency content of our desired signal! Try it
with RECT as the filter function.

Note the above examples could have been created with far fewer steps
by simply applying the operations successively:

IFT((1 - NOTCH)*B)

This concludes the abbreviated on-disk SPIA manual.

Please pass this software on. And if you find SPIA useful, please do
register it. Remember, registration pays for the continuing
development of this software and software like this.

Thank you for your support.



 December 13, 2017  Add comments

Leave a Reply