PSN-L Email List Message

Subject: Re:Newbie trying to get started
From: rsparks rsparks@..........
Date: Sat, 21 Jun 2008 08:15:41 -0700

Congratulations on writing your own recording software.  Judging from
your posted recordings, your software is performing well.

Software filters can enhance the recording but certainly are not
necessary.   They can help dramatically to spot weak local quakes that
have a high frequency signature, up to about 10 hz.  I frequently see
these small quakes "riding" on the much stronger microseims caused by
the ocean waves which have a frequency in the 0.2 hz range.  A high pass
filter reduces the microseims leaving the quake much more visible.

On the other hand, a low pass filter can do a lot to reduce the local
environmental noise which tends to be high frequency.  Too much LP
filtering will hide any small local quakes that might occur.

I have some code written in C++ but it was written a couple of years ago
and it would take some time to tease it into something I could share and
would be understandable to you.

Briefly, an Infinite impulse response (IIR) filter is one of the easiest
to use and implement.  If you google "iir filter" you will get a
multitude of references, many of which have detailed mathematical
explanations.   On the other hand,  if you simply think of a filter as
being an averaging device that takes samples and either finds the long
term average (a low pass filter) or the short term difference (a high
pass filter), you can make a surprisingly effective software filter very

Use the formula y[n] = c0*x[n] + c1*x[n-1] + c2*y[n-1] (from Press)
where y is the filtered value, n or n-1 is the data position where n is
the most recent value and n-1 is the first past value,  and x is the
unfiltered data value.  The constants c0, c1, and c2 are simply scaling
values.   The sum of the three constants should be 1.0 so that the
filtered data will have the same magnitude as the unfiltered data.  c2
determines the weight of the carryover term and a value of 1.0 gives
infinite carry forward.

You can play with the value of the constants as you write the software
to see the different effects.

Simply change the formula to y[n] = c0*x[n] - c1*x[n-1] + c2*y[n-1] to
make a high pass filter.

The relationship of constants to cutoff  frequency is dependent upon the
sample rate and is beyond my present knowledge.


psn-l-digest-request@.............. wrote:
> .------ ------ ------ ------ ------ ------ ------ ------ ------ ------.
> | Message 1                                                           |
> '------ ------ ------ ------ ------ ------ ------ ------ ------ ------'
> Subject: Newbie trying to get started
> From:    Steinar Midtskogen 
> Date:    Fri, 20 Jun 2008 22:07:01 +0200
> Hello List,
> I'm in the process of setting up a seismometer.  I was considering a
> few options for building one based on internet descriptions, until I
> found the SEP seismometer which at 315 seemed likely to turn out
> cheaper than all parts needed to build one myself: 
> So I got this seismometer and a quick start.  I built a box for it,
> and I set up a datalogger.  For the datalogger I'm using a Linksys
> NSLU2 which is running SlugOS Linux.  It's a little box with a 266MHz
> ARM processor and 32 MB RAM, plenty for the task.  It has ethernet and
> two USB ports.  I've plugged a card reader into one port, to which
> I've connected two flash cards which makes up the filesystem
> configured as RAID 1 for added reliability, and the other is used to
> connect to the seismometer by a serial cable.
> So far, so good.  Now I only need to add some software.  I've searched
> a bit for existing software, but it turns out to be mostly Windows or
> DOS applications with no source code provided, which wont run on an
> ARM processor.  I think that to use a full blown leftover pc running
> Windows for the task is both impractical and expensive.  I guess I
> have to write some code myself.
> I wrote a small program which logs the data from the seismometer.  I
> currently plot what I get on this web page (using gnuplot):
> What's remaining is some processing prior to plotting.  I most likely
> need to process my data with a lowpass filter.  But then I've run into
> a problem.  I know very little about signal processing, and I don't
> know what type of filter I should use for the best results.  Existing
> software uses filters it seems, but I haven't found any source code
> which could help me out.  So I turn to this list.
> I have a 16 bit A/D converter sampling at 20 Hz.  My seismometer has a
> natural period of about 16 seconds.  How should I process the data?


Public Seismic Network Mailing List (PSN-L)

[ Top ] [ Back ] [ Home Page ]