Thread: the SAC CONVOLVE command

Started: 2015-11-05 23:24:50
Last activity: 2015-11-05 23:24:50
Topics: SAC Help
Arthur Snoke
2015-11-05 23:24:50
Fellow SAC users,

I have two problems with the SAC cCONVOLVE command: it has two "flaws" and most of its option have little do with my concept of convolution. I am writing the SAC community to see if my concept of convolution in waveform time-series analysis is too restrictive and to help us decide what if anything should be done regarding that command in future releases.

The SAC CONVOLVE command was introduced about 20 years ago as a perturbation of the CORRELATE command. (To see the relationship, look at the correlate and convolve example source codes in "Using the SAC library" http://ds.iris.edu/files/sac-manual/manual/saclib.html.) If one compares the options and discussions, CONVOLVE looks very similar to CORRELATE, to the extent that the output files include an "autoconvolution" -- the master signal convolved with itself. Of what interest is an "autoconvolution"? Further, of what use are the choices of windowing and window types?

In my applications of convolution, I start with a body-wave synthetic with spikes of appropriate polarity and relative amplitudes at phase arrival times. The "master" signal is a pulse that is either (1) one with a shape the is derived from data for a phase arrival, or (2) a short pulse with a time-symmetric shape with a maximum at t = 0 to smooth out the Gibbs phenomenon that often accompanies arrival-spikes in synthetics. As is written in the CONVOLVE help file in the v101.6a manual, "The algorithm assumes all time series are causal, so if one wants to convolve signals with a boxcar (as a method of non-causal,low-pass filtering perhaps to smooth out spikes in a synthetic waveform), the output signals will be time-shifted by half the width of the boxcar." (For a time-domain convolution, I now prefer a triangle over a boxcar.) Also, the SAC CONVOLVE algorithm does not scale the output by the digitizing interval (a feature of what I understand is called "discrete convolution"). If we keep the current CONVOLVE command, it is easy to add the “time shift” and "scaling" as options, so existing code would not be affected.

Arthur Snoke


17:37:40 v.b3198453