Home » Products » FAQ

"DADiSP inspired everyone and produced radical shifts in thinking."

- Felix Grant, Scientific Computing World
Download Now | Pricing / Purchase 

DADiSP Frequently Asked Questions

Updated January 2019


Data Analysis

Data Display and Output


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:

two(a,b) { return(a*b) }

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,



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 ''' Create VB Data Array For i = 0 To 999 VBData(i) = Rnd() Next i ''' Connect to DADiSP Set DADiSP = CreateObject("DADiSP.Application") ''' Create a 2 Window Worksheet (unconditional) p = DADiSP.Execute("NewWorksheet(2, 0)") ''' Put Array to DADiSP p = DADiSP.PutData("W1", VBData) ''' Label W1 p = DADiSP.Execute("Label('Data from Visual Basic')") ''' Moveto W2 p = DADiSP.Execute("Moveto(W2)") ''' Calculate Power Spectrum p = DADiSP.Execute("PSD(Hamming(W1))") ''' Add Y Log and Grids p = DADiSP.Execute("SetyLog(1);GridSol;GridHV") ''' Show DADiSP DADiSP.Visible = 1 ''' Get PSD from DADiSP 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.

/* demonstrates ActiveX calls from DADiSP to MS Word */ msw() { local word, doc; // new 2 Window worksheet if (newworksheet(2) == 0) return; /* ** generate noisy sine in W1, set units to Volts and ** add a nice label */ gnorm(1000,.01) * 0.1 + gsin(1000,.01);Setvunits("V"); label("Noisy Sinewave"; // moveto W2 and calculate the PSD and set log scales moveto(w2);setxlog(1);setylog(1); psd(w1); // copy worksheet into clipboard copyworksheet(); // start Word word = CreateObject("Word.Application"); // get "Document" object doc = word.Documents; // Add a new Document and get range object range = doc.Add().Range(); /* paste worksheet as Enhanced Metafile */ word.Selection.PasteSpecial(0, 0, 0, 0, 9); // let's see it! 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:

#include "myfuncs.spl"

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.

  1. 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).

  2. 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) * dirx - The directory that contains the data in * quotes, e.g., impdir("c:\data") * * IMPDIR imports all the data files found in the * specified directory. This function assumes that * the header information is contained within the * file itself. If the file does not contain a * header it will not be imported. IMPDIR uses the * RUN command to produce a temporary file ( * Data.fil) that contains the name of each data * file in the specified directory. The while * loop tests for the end of the file and is used * read the data filenames, and import the current * data file. */ 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

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. 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.
  1. Copy the Version 3 or 4 Labbooks to the DSP67 directory and do all analysis in the DSP67 directory.

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