DADiSP Frequently Asked Questions
Updated January 2019
Basics
Data Analysis
Data Display and Output
Customization
Acquiring and Importing Data
Computing Platforms
Technical Support
DADiSP Basics Answers
What is DADiSP?
DADiSP (pronounced
day-disp) stands
for
Data
Analysis and
Display. DADiSP is a graphical, data analysis and visualization software package designed for scientists and
engineers. Because DADiSP contains features for graphics, mathematics, statistics, matrix analysis,
signal processing and more, it can be used in a broad range of applications. With DADiSP's easy-to-use,
menu-driven, interactive user interface, there is no need to struggle with a complex programming
language. Once you acquire your data into a file, DADiSP helps you analyze and visualize your data
both graphically and numerically with the power and flexibility of a spreadsheet.
What is a spreadsheet?
A typical business spreadsheet is an array of data cells. Each cell can contain a number and/or a
formula. Say, for instance, cell A1 contains the number 1.0, cell B1 contains the number 3.0 and
cell C1 contains the formula A1+B1. C1 will then calculate and display the number 4.0. Now, if the
scalar value in A1 changes from 1.0 to 2.0, then C1 automatically recalculates and displays the
number 5.0.
Is DADiSP a spreadsheet?
DADiSP may best be thought of as a spreadsheet for data series, multi-column tables or graphs.
Instead of cells that contain single numbers, a DADiSP Worksheet consists of windows, each containing
an entire data series. If W1 (window 1) contains data previously imported into DADiSP and W2 contains
the formula
integ(W1)
and W3 has the formula
histogram(W2)
, then DADiSP
would perform an integration operation on the data series in W1 and display the result in W2.
DADiSP would then calculate the HISTOGRAM of the new series in W2 and place the result in W3. If you
change the data in window 1, DADiSP automatically recalculates the new INTEGRAL in window 2 and the
new HISTOGRAM in window 3.
In DADiSP each multi-window workspace is called a
Worksheet.
How many windows can a DADiSP Worksheet contain?
DADiSP allows up to 100 windows per Worksheet and an unlimited number of Worksheets. Each window
provides extensive graphical manipulation operations such as scroll, zoom, expand, compress and
cursoring.
How long can my data series be?
Because DADiSP uses a technique called
virtual series management, there is no limit on the
size of your data. If a data series is too large for system memory, DADiSP automatically pages the
data to and from your disk during most calculations. Of course, large data sets take longer to
process because DADiSP will intermittently access the disk. You can set the size of the series kept
in memory by clicking the
Tools-Options-System Preferences pulldown and selecting the
Series tab. Set
Data Size to the desired length in terms of data points. You can also
set the buffer size with the
setbufsize
function (
setbufsize
returns the
previous buffer size).
DADiSP also provides data editing routines that allow you to create new data series by extracting
and appending regions from other data sets.
Is DADiSP object oriented?
DADiSP is written in C/C++ for speed and portability and DADiSP is highly object oriented. DADiSP
works with "objects", i.e., scalars, series, surfaces and tables. DADiSP returns the proper object
based upon the input. For example, you can have a window that contains a time series, surface or
image. If you take the derivative of that window, DADiSP returns the proper derivative: the time
series derivative, the rate of change of the surface, or the derivative of the image (which is one
method of edge detection).
DADiSP's SPL functions and macros work the same way. For example:
This returns the proper object whether the input is a scalar, series or matrix.
Data Analysis Answers
How many functions does DADiSP have?
DADiSP offers over 1000 analysis and display functions including scalar and series arithmetic, series
calculus, data generation, Fourier analysis, frequency domain analysis, correlations, trigonometric
and statistical functions, digital filtering, imaging, 2-D, 3-D, and 4-D graphics, matrix math, and
much much more. Complex numbers and engineering unit conversions are also supported.
Can I create my own functions?
Yes. DADiSP includes a
Series Processing Language,
SPL, as well as
a macro definition facility that allow you to create entirely new functions from previously defined
routines.
SPL uses familiar C/C++ like syntax for statement processing,
control flow, variable manipulation, and user defined functions.
To what precision does DADiSP perform calculations?
All numerical calculations are performed in 8-byte IEEE standard double-precision arithmetic.
Does DADiSP operate on tables of numbers?
Yes. DADiSP can work with single column or multi-column data objects. With DADiSP you can perform
table-editing and table-based data reduction operations. DADiSP can perform all of its analysis
operations on tabular data sets and has a variety of graphical formats for viewing tabular data.
3D surfaces, Contour, Density, and Image plots are examples of tabular data viewed as a 3D image.
DADiSP also has descriptive column statistics for operating on tables of statistical data.
Does DADiSP do matrix manipulation?
In DADiSP, tables of numbers with more than one column and more than one row are called
tables
or
matrices. In addition to the table-based features listed above in Question B4, DADiSP
provides many matrix manipulation and matrix analysis features such as matrix multiplication, matrix
invert, eigenvalues, eigenvectors, SVD, and a variety of other operations. One of the advantages of
DADiSP's matrix operations is the ability to perform matrix functions in the DADiSP Worksheet environment
so that the result of each successive matrix operation is viewed in individual Worksheet windows.
How fast can DADiSP perform an FFT?
A 1048576-point (1MB) complex FFT takes less than one second to calculate
and display on
a 2.0 GHz Pentium PC with 1GB RAM. As with all DADiSP calculations, the FFT
is computed with double-precision, floating point arithmetic. Because DADiSP uses a mixed radix
FFT algorithm, FFTs are not limited to signals with lengths equal to a power of two.
When I perform an FFT, DADiSP displays a status message like: Mixed FFT
Algorithm, Loop n/N (for k). What does it mean?
DADiSP uses a mixed radix FFT algorithm. The purpose of the FFT is to reduce the number of
multiplications and additions required for determining the coefficients of the DFT. The mixed radix
FFT breaks the calculations into a number of steps (or loops), determined by the number of factors
of the length of the input series. The displayed message indicates the total number of loops,
N,
which will be performed. For each loop,
n, (where n<=N), there will be
k points in
the FFT segment.
The DADiSP function FACTORS returns a series whose elements are the factors of the input number,
e.g., FACTORS(length(W1)). The length of the FACTORS series gives you the total number of loops,
N. Each element in the FACTORS series gives you the number of points,
k, for each
loop,
n. For example,
W1: grand(3055,.01)
W2: factors(length(W1));tableview
W3: fft(W1)
|
W2 contains the series 5, 13, 47. When W3 calculates, you will see these messages:
Mixed FFT Algorithm Loop 1/3 (for 47)
Mixed FFT Algorithm Loop 2/3 (for 13)
Mixed FFT Algorithm Loop 3/3 (for 5)
|
A faster FFT will occur for a series length that is a power of 2.
If the series is purly real, further speed optimizations based
on symmetry are employed.
Can DADiSP perform digital filtering?
Yes. A digital filter is nothing more than a special signal used to process your original one. To
filter a set of data, you can use DADiSP's FILTER function, convolve the the waveform with the digital
filter, or multiply the FFTs of the data and the filter. DADiSP provides tools for all these operations.
Digital filter design capabilities are available in the
DADiSP/Filters module,
which allows you to design FIR and IIR filters.
I have two time series, Pressure and Temperature, plotted with respect to time.
How can I take the derivative of Pressure with respect to Temperature?
The DERIV function returns the derivative of
the series with respect to its
x-axis. So,
deriv(Press)
returns:
d(pressure)/d(time).
In DADiSP 6.7, to get
d(pressure)/d(temperature), simply
create an XY plot, then apply the DERIV function:
deriv(xy(Temp, Press))
Previous versions of DADiSP require the XY data to be interpolated to an interval series with
XYINTERP:
deriv(xyinterp( xy(Temp, Press)))
This returns the derivative of Pressure with respect to Temperature.
Data Display & Output Answers
Can DADiSP draw X-Y plots?
DADiSP offers X-Y plotting capabilities. DADiSP normally operates on whatwe call interval data,
i.e. data sampled at a uniform rate. DADiSP allows you to create an X-Y graph by plotting one
window against another with the
Data-XY Data pulldown or the
xy
function. You
may also perform analysis operations on X-Y format data and convert X-Y data to interval data.
What other types of plots and images can DADiSP display?
DADiSP has extensive plotting and imaging capabilities including waterfall, density, contour and
XYZ plots. Almost every attribute of a plot (color, line thickness, shading, line style, etc.) can
be set with dialog boxes or built-in functions.
Can I display more than one curve in a single window?
Yes. You can display an unlimited number of curves or data traces in a single DADiSP window. These
curves can be distinguished by line style, symbol type or color. You can plot data that share axis
scales or display multiple scales, relating each group of curves to a different set of axes.
Why does enabling the cursor sometimes move the series in the Window?
By default, DADiSP "remembers" the last location of the data cursors. If you enable and move the
cursors to "mark" them on a series, DADiSP remembers the cursor location and returns it with calls
to CURPOS. After the cursor display is disabled and you scroll the data in the window or zoom in
on a region of the data such that the last cursor locations are not in the current viewing area, the
next time the cursors are enabled, they will shift the viewing window to the last cursor location.
To disable the "cursor memory" feature, use the
View-Cursor-Settings pulldown menu and uncheck
"Cursor Returns to Last Position". Alternately, set the configuration parameters CURSOR1_MEMORY and
CURSOR2_MEMORY to 0 by using the SETCONF function: e.g., SETCONF("CURSOR1_MEMORY","0"). Now, whenever
the cursors are enabled, they will appear in the current viewing region, regardless of their last
location. Note, CURPOS will still return the last cursor locations.
What plotter and printer output does DADiSP offer?
PC versions of DADiSP support any printer available under Microsoft Windows. DADiSP uses the installed
printer drivers. You can produce both entire screen dumps and plots of any individual window.
DADiSP supports HPGL and Encapsulated Postscript output formats. In fact, because our plotter driver
can create HPGL and Postscripts files, you can obtain presentation quality output and import the
plots into desktop publishing programs for further enhancement. DADiSP also supports Enahanced
Metafiles and Device Independent Bitmaps (DIB).
Customization Answers
How can I include programs I've already written?
The
DSP Pipeline lets DADiSP execute external programs from within a DADiSP Worksheet. For
example, to run a program named MYPROG, just type RUN("MYPROG"). Let's say you have your own special
routine that you must use to perform a multiple linear regression on your data. With Pipeline, DADiSP
could write data from a DADiSP window into a temporary file, call your routine to process the file,
and then read the result back into a window. This entire procedure can be automated with a custom
SPL function or user-defined menus, so you could just type REGRESS or choose your routine from a DADiSP
menu, and DADiSP would execute your program.
Pipeline programs can be written in any language. There is almost no Pipeline routine size constraint
on workstation versions of DADiSP. On a PC, there must be enough memory for both DADiSP and your program.
Can I program DADiSP to run in automated or batch mode?
Although DADiSP is primarily a menu-driven, interactive package, DADiSP provides a command file
capability that enables advanced users to automate operations within the DADiSP environment. Command
files are particularly useful for automating repetitive analysis steps. You can also set up a command
file to allow a technician to perform a specific application. With DADiSP command files, you can
combine multiple, related analysis functions and graphic operations that you can activate with a
single command or menu selection. Command files and SPL functions can be combined for further programmability.
Custom user interfaces are supported by DADiSP's user definable pop-up menu facility.
Can I use ActiveX and/or Dynamic Data Exchange (DDE)?
Yes. ActiveX is a broad term that generally refers to a binary standard for sharing code and data
between separate programs or "components". The actual protocol is specified by the Component Object
Model (COM). COM has undergone several ugrades since its introduction as Object Linking and Embedding
(OLE). One significant feature of COM is Automation. Automation allows a "client" program to control
a "server" program just as if the server functionality was built into the client. For example,
DADiSP 6.7 can fully control Microsoft Word, placing a DADiSP Worksheet into a document and printing
the results all from within DADiSP. Likewise, a Visual Basic program can hand off data to DADiSP for
processsing without DADiSP ever being visible to the user. In this way, DADiSP acts as a powerful
data analysis library for any program that supports Automation. To get the flavor of ActiveX, here's
an example of a Visual Basic program controlling DADiSP:
Sub DSPTest()
Dim DADiSP As Object
Dim VBData(1000) As Double
For i = 0 To 999
VBData(i) = Rnd()
Next i
Set DADiSP = CreateObject("DADiSP.Application")
p = DADiSP.Execute("NewWorksheet(2, 0)")
p = DADiSP.PutData("W1", VBData)
p = DADiSP.Execute("Label('Data from Visual Basic')")
p = DADiSP.Execute("Moveto(W2)")
p = DADiSP.Execute("PSD(Hamming(W1))")
p = DADiSP.Execute("SetyLog(1);GridSol;GridHV")
DADiSP.Visible = 1
newdata = DADiSP.GetData("W2")
End Sub
|
The important DADiSP "methods" are
putdata
to a DADiSP Window or variable,
getdata
from a DADiSP Window or variable and the very powerful
execute
method to run
any
DADiSP command or function.
Here's an example of a DADiSP SPL routine that copies a DADiSP Worksheet to Word.
msw()
{
local word, doc;
if (newworksheet(2) == 0) return;
gnorm(1000,.01) * 0.1 + gsin(1000,.01);Setvunits("V");
label("Noisy Sinewave";
moveto(w2);setxlog(1);setylog(1);
psd(w1);
copyworksheet();
word = CreateObject("Word.Application");
doc = word.Documents;
range = doc.Add().Range();
word.Selection.PasteSpecial(0, 0, 0, 0, 9);
word.Visible = 1;
}
|
DADiSP can also include ActiveX controls such as vendor specific data acquisition interfaces into
our user defined dialog boxes. These controls allow you to easily build application specific Worksheets
using a variety of third party offerings.
DDE is an older but still useful method of exchanging data between multiple applications. DADiSP can
operate as both a DDE client and a DDE server. You can use DDE to send/retrieve data manually or
automatically as well as to execute commands.
How can I start each session with a custom toolbar?
Create an SPL file in your main DSP directory called
dadisp.spl. In this SPL file, create a
function called
splmain. DADiSP executes all the commands in splmain upon startup. Include
the call(s) to the TOOLBAR function in splmain. For example, to add a button to the main toolbar
that generates 100 points of random noise, create the following splmain function:
splmain()
{
toolbar(1,8,4,red,"Rnd","grand(100,.01)");
}
|
What is this SPL feature I've been hearing about?
As users are discovering, one of the most powerful additions to DADiSP is
SPL,
DADiSP's
Series Processing Language. SPL is a compact language designed specifically for users
who wish to customize data manipulation and other operations within the DADiSP Worksheet environment.
SPL routines are easy-to-write, user-defined functions that are created by combining built-in DADiSP
functions, user-defined functions, and/or other SPL routines. The language is very reminiscent of C and
features C-like statement processing, control flow, variable manipulation and user-defined functions.
Experienced programmers, especially those familiar with C/C++, have had little trouble picking up SPL.
Beginners can easily learn the ins and outs of SPL by following along with the examples in the
DADiSP
Worksheet Developer's Guide, which is available on-line through the Help menu. You may use any
ASCII text editor to script an SPL function, or take advantage of DADiSP's own SPL editing environment.
Just select SPL/New SPL File from the Tools pull-down menu.
SPL is another great tool allowing DADiSP users to tailor their data processing environment, add
functionality and automate repetitive tasks.
How can I load specialized SPL functions and DADiSP macros at startup?
DADiSP reads the
dadisp.spl and
dadisp.mac files upon startup. Create one or both of
these files. Either cut and paste the function definitions into dadisp.spl and the macro definitions
into dadisp.mac, or use the #INCLUDE function to include the filename(s) (with associated path) of
the location of your specialized functions and macros. For example, if you have custom functions
defined in the SPL file, myfuncs.spl, put the following line into the dadisp.spl file:
How do you activate the pull-down menus from a command file?
Use the command file keyword @PULLDOWN. For example, @PULLDOWN F O S selects
File,
Open,
Series from the pull-down menu.
How does DADiSP's Series Processing Language (SPL) compare to MatLab?
A detailed explanation of the similarities and differences between SPL and MatLab is available in an
article entitled
DADiSP SPL vs. Matlab.
Acquiring & Importing Data Answers
How do I get my data into DADiSP?
As a stand-alone data analysis package, DADiSP offers a very flexible import facility. ASCII, Lotus
PRN, and binary single or multi-channel data files can be imported into the database as a DADiSP Dataset.
Binary 8-bit bytes, 2-byte integer, 4-byte IEEE floating point and 8-byte IEEE double-precision formats are
supported. DADiSP also allows an optional text header that can be included with the data to specify
parameters such as sampling rate, engineering units, comments, etc. You can save data created by your
analysis and export data to external data files in any of these supported formats. This import and
export capability allows you to couple DADiSP's powerful analysis environment to your favorite data
acquisition, process control, circuit design, CAD and other software programs.
DADiSP also offers a stand-alone data import utility,
DADiMP that automatically
imports data into a DADiSP database and allows data to be cut and paste directly into a Worksheet.
ActiveX and Dynamic Data Exchange (DDE) can also be used under Microsoft Windows.
Is DADiSP compatible with my data acquisition system?
Yes. Many
leading A/D vendors already support DADiSP Import files
to quickly and easily import data directly into DADiSP. Real time acquisition may be possible if
your vendor supports
COM and ActiveX.
How can I import a number of files in "batch mode"?
There are many ways to import data in a batch process. Two methods are described below.
- To import multiple files without running DADiSP, use DADiMP (the stand-alone import utility).
Create a batch file that contains successive calls to DADiMP that specify, with command line
arguments, which files and headers to import. Run the batch file and the data will be imported
into the specified Labbook(s).
- To import multiple files in a batch process from within DADiSP, create an SPL routine that uses
the IMPORTFILE function. Header and data filenames are specified as arguments.
Example 1:
MyImport()
{
importfile("data1.dat","header1.hed");
importfile("data2.dat","header2.hed");
}
|
Example 2:
impdir(dirx)
{
eval(strcat("Run('dir ",dirx,"\*.* /o/b > ",
dirx,"\data.fil',-1)"));
fcloseall();
fopen(strcat(dirx,"\data.fil"),'r+');
fseek(strcat(dirx,"\data.fil"),0,2);
endbyt = ftell(strcat(dirx,"\data.fil"));
fclose(strcat(dirx,"\data.fil"));
fopen(strcat(dirx,"\data.fil"),"r");
bytnow = ftell(strcat(dirx,"\data.fil"));
while (bytnow < endbyt) {
filenm = strget(1,fgets(strcat(dirx,"\data.fil")),
strchar(10));
bytnow = ftell(strcat(dirx,"\data.fil"));
eval(strcat("importfile('",dirx,"\",filenm,"')"));
}
fcloseall();
eval(strcat("Run('del ",dirx,"\data.fil',-1)"));
return();
}
|
Can DADiSP interface directly to laboratory instruments?
Yes.
DADiSP/GPIBLab is a separate software module that allows you to control
and transfer data from hundreds of IEEE-488 laboratory instruments. GPIBLab adds simple but very powerful
HP-like IEEE-488 commands to the DADiSP Worksheet and is compatible with IEEE-488 boards offered by the
leading GPIB manufacturers. DSP provides friendly interfaces to popular GPIB-based instruments to
dramatically simplify the data transfer process.
Computing Platforms Answers
What is required to run DADiSP on PCs?
DADiSP 6.7 requires at least 40 MB of disk space and a minimum of 512Mb of memory.
Does DADiSP require a math co-processor?
No, but it is highly recommended, as a math co-processor greatly increases the speed of calculations.
Most modern day processors include built-in numeric co-processors.
What legacy UNIX and VMS workstations does DADiSP support?
DADiSP 4.0 is available for
- SUN SPARCstations, SUN Solaris
- HP 9000 series 300, 400, 700, 800
- IBM RS/6000
- DEC Alpha OSF/1, DEC Alpha Open VMS
- DECstations, VAXstations, MicroVAX
- NEXT workstations
- Silicon Graphics computers.
DADiSP operates under UNIX on the HP 9000 Series 300, 400, 700 and 800, Concurrent, DEC Alpha OSF/1,
DECstation, IBM RS/6000, SUN, NeXT and Silicon Graphic Workstations. DADiSP operates under Open VMS
on the DEC Alpha-Open VMS platform.
Will DADiSP run under Microsoft Windows
DADiSP 6.7 runs under Windows XP/Vista/7/8/10/11. DADiSP 6.7 supports both 64-bit and 32-bit
operating systems natively.
A free
15-day trial of DADiSP 6.7 is available for download.
Does DADiSP for UNIX run under Windows?
Yes. DADiSP Version 4.0 runs under legacy X-11 Windows and compatible window systems.
Technical Support Answers
Does DADiSP 6.7 use a parallel port hardware key?
No. However, your serial number is required for proper operation of DADiSP 6.7 and to receive
technical support. You can obtain your serial number by clicking the
Help-About pulldown menu
or by typing the
version
command.
Should I install DADiSP 6.7 over my 6.5, 6.0, 4.x directory, or should I
install it in a new directory?
DSP Tech Support recommends that you install DADiSP 6.7 in a new directory. DADiSP 6.7 can access
your existing Labbooks from previous versions of DADiSP. DADiSP 6.7 has a number of new system
files which are differ from older releases. For safety's sake, install DADiSP 6.7 in a new directory
so that none of your files are lost or overwritten. Remember, you can install DADiSP 6.7 without
the sample Labbooks to save space. Also, run-time configuration settings are now kept in
C:\Documents and Settings\username\Application Data\DADiSP\dadisp67.ses
session file to prevent conflicts with previous releases.
I'm running DADiSP 6.7 in a directory containing a DADiSP 3 or 4 Labbook and I'm
having problems with my menus. What's wrong?
DADiSP looks in the current directory for the MENUS sub-directory and displays pop-up menus that are stored
there. There were a number of changes made to the menuing system for DADiSP 6.7. Here are two solution
options.
- Copy the Version 3 or 4 Labbooks to the DSP67 directory and do all analysis in the DSP67 directory.
- Update the system.mac file to indicate the location of the DADiSP 6.7 menus. The macro definition for
_menudir
needs to
change to \DSP67\MENUS
(assuming DSP67 is the directory where DADiSP 6.7 was installed).
How can I identify and remove extraneous files left in a Labbook?
Open the Labbook you want to clean up. Open an
empty Worksheet and click the
Tools-Misc
pulldown menu. Select the
Utilities tab and press the
Check Database Files
This will check all the PI files in your Labbook sub-directory against the database INDEX.PI file. Any DADiSP
files not identified by the INDEX.PI file will be removed.
Will old versions of DADiSP/Filters work with DADiSP 6.7?
There is a new version of
DADiSP/Filters which has been created to run with
DADiSP 6.7. It features a streamlined user interface, Cascade, Direct and FIR filter
coefficent conversion, coefficient quantization, improved filter response functions and more.
If you have a previous version of DADiSP/Filter, contact your sales representative and request the new version.
What about technical support and updates?
With your initial purchase of DADiSP, you are entitled to three months of telephone support and updates free
of charge if you return your registration card. After the three month period, you can purchase an annual
or multi-year
Standard Maintenance contract or an extended
Gold Maintenance contract.
How do I submit additional queries about DADiSP?
In the US you can call DSP at 800-424-3131, except within Massachusetts please call 617-969-0185. Our fax
number is 617-969-0446. Or email us at
dspdev@dadisp.com.
For web based technical support, try our
online support request form.