SigScope — Signal Visualization & Analysis
SigScope is based on my experience with analyzing sensor data; this data is recorded by devices that measure vibration, temperature, magnetic fields, gravity, pressure, electrical fields. In general, the information is recorded at between 10 and 2000 Hertz; understanding it requires FFT analyses and digital filtering. Applications range from studying swaying skyscrapers looking for sympathetic vibrations in machinery, and from monitoring flows in a pipeline to examining fluctuations in magnetic fields.
Here's how it works...
First, download and install SigScope via this link. It uses less than a half-GB of disk space. A new folder will appear in your list of programs, under the terribly confusing name of "SigScope", containing a shortcut to an even more confusing program named... "SigScope". :) Start it up, and you'll see a small main screen.
The program has a number of settings you might find useful. For example, you may have noticed that the first screen shot on this page shows bright-colored lines against a black background; by default, however, the program produces graphs on an off-white background. Here's the complete settings dialog:
Changes made in the configuration dialog only affect newly-created windows. These settings will persist between SigScope runs, automatically saved when you click "Accept". An important note: The option to Limit Frequencies controls the area of the FFT shown; it does not apply a filter of any kind. More about filters below.
For this tutorial, I'll keep the configuration at its default values.
While SigScope can examine up to six signals at a time, let's just stick to one for the moment. Clicking Analyze a Signal brings up the usual file open dialog. SigScope works with two kinds of files, both of which are text files in comma-separated value (CSV, simple spreadsheet) format. A .sigscope file contains a few heading lines, a start time, and the hertz of each signal contained therein. Aftre the heading, each signal (up to six of them) is a column of numbers.
SigScope can also open an unadorned CSV file that contains simple columns of numbers (and nothing else). Each column is considered a separate signal. When loading a "plain" CSV file, SigScope will ask for some basic information, such as the sampling rate (Hertz).
Here's what SigScope displays when I open a simple sample file containing a single 100Hz signal. (Simple-sample-single... who says there isn't poetry in software?)
Along with the main graph window, a small display will contain a Legend showing a list of signals by color and with information on whatever filters are currently applied. Left-click a signal name in the legend to toggle it's display on and off; right-click, and you can set filters and colors.
The mouse tries to be consistent throughout the program, following these conventions:
- Left-click selects/says "do something". Not much exciting to see here.
- Right-click displays a context menu or dialog, usally for changing the nature of an item. Right-clicking the main graph, for example, allows you to set such things at axis labels.
- Middle-click tells you about the item; for exmaple, in the main graph, middle click will tell you at Y value for all data lines at the X value at the click location.
The screen has three main sections:
- The Main Graph is... well, the main graph, and X-Y plot, FFT, or (in the future) something else. If you mouse-scroll here, it moved forward and backward in the signal.
- The Summary shows the complete signal at reduced size, and has a selection box determining which part of the signal is being displayed in the Main Graph. Mouse-scroll moves the selection, which can also be dragged and resized. Double-clicking extends the selection to the entire signal; double-click again to restore to the previous selection.
The Toolbar is a bunch of buttons that do stuff. :)
- Graph Type switches between an XY plot (time domain) and an FFT (frequency) view of the selected data.
- Settings opens the context dialog for the Main Graph.
- Export as SigScope File will save the complete signals to a SigScope-format CSV file.
- Export as PNG file draws the Main Graph to an PNG (portable Network Graphics) image, along with the legend.
- Trim creates a new window containing only the part of the signal selecte din the Summary. You can then save this to a SigScope file, thus extracting interesting bits from your signals.
- Add Another Signal button opens another Sigscope or CSV file, and adds its signals to the ones currently displayed.
- Signal Information displays some basic statistical data about each of the signals in the current set. This function is fairly rudimentary at the moment; I'll be doing somethign fancier in the final version of SigScope.
Selecting the FFT from GraphType will change our display to look like this:
To focus on all those pretty frequency spikes below 12Hz, let's right-clicking on the Main Graph to get a ahndy-dandy dialog box.
Again: Limiting the frequencies does not impose a filter! All only tells the graph to display values within a given range, so we can see more detail about what we're interested in. Setting the limit to between 0 and 12Hz gives us this display.
The graph is showing the FFT for the selected portion of the signal. A quick double-click on the Summary to select the entire signal, and our spikes become much more pronounced.
Now for filters, which work best with a more complicated signal. For this next example, I opened a recording of acceleration data, collected at 400Hz, with natural noise and flutter. The X and Y axes are turned off, leaving only the Z axis for analysis. I switch to FFT mode, and see a lot of noise; my interest is in the frequencies around 80Hz. So I right-click on the Z Axis in the legend.
SigScope supports low-pass, high-pass, band-pass, and downsample filters. Setting a band-pass filter for between 30 and 100Hz produces the following graph.
Clicking on the image above will download a very large PNG image of the data, as exported by SigScope.
Where it's going...
I'm well-aware that this is a very basic package. Possible extensions and improvements include:
- Temporal FFT, perhaps an SFFT, and probably a design of my own I've been working on
- Live data capture. Support is already built-in; if your company has a device and wants to have sigscope provide real-time analysis, please get in touch!
- Suppport for very large (long time-span) signals
- Built-in waveform generator
- Data massaging / compensation
- More DSP (digital signal processing) tools