Dec 132017

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!

(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.

(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