FFFun with FFTs (and Have-Done List Catch-up)

Two projects I've been working on this week have both ended up involving Fast Fourier Transforms, otherwise known as FFTs. Seems like a massive nerd out, but anyone with a Science, Tech, Engineering or Maths background should find this interesting.

For those that aren't wired that way I also give some feedback on how my Have-Done lists are working out...

Have-Done Lists - An Adjustment
A previous post discussed how KODA has started to implement Have-Done lists as a self-management tool. I can report back that, over all, the concept has been successful, but it needed a little bit of an adjustment in implementation.

For the first month or so I was quite dedicated to the task, writing at least a few things a day, but then as time wore on I began to feel like the task was turning into a bit of a chore, and was failing to capture anything new, or exciting - completely nullifying its purpose. Sometimes you're not in the mood, sometimes you didn't really do anything interesting expect 'write code for x'. I don't begrudge myself or others for that. Not every moment of every day can be full of insightful, innovative and life changing 'have-dones'.

An adjustment was in order. It seems that the real issue was with 'resolution' rather than the idea itself. So, rather than working on my Have-Done list everyday, I've set a reminder to do it approximately weekly, and approximately towards the end of the week (Fri/Sat/Sun). This lets me bask in the achievements of the last week, without letting them go stale, or ironically, turning the Have-Done list into a painful To-Do item!!!

FFTs - a Definition
Most of the definitions going around are a bit heavy, so you get my working definition as it applies to KODA:

a way of extracting the underlying frequency from measured time series data

My two pathways towards FFTs were: 1) measurement of vibrating wire sensors and, 2) measurement of vibration using geophones. Both of these sensors are used for monitoring construction, tunneling and mining projects. Vibrating wire sensors use tiny changes in length of a wire, and hence it's resonant frequency, to transduce anything from strain, to pressure, to displacement. With FFT analysis cable lengths can be easily in the order of 300-500m, and weak signals that are super-imposed with electrical noise can remain useful, uncovering the true resonant frequency of the sensor. Mechanical noise affecting the sensor can often be removed too.

One thing I learned early in my career is how powerful, insidious and destructive vibration can be on hardware and systems. So, for vibration sensors there is a subtly different objective - to understand what vibration a object might be undergoing as a result of another eg. a building affected by nearby piling. The velocity of a vibrating object is measured by the induced voltage across a geophone's magnetic coil. Typically, the peak particle velocity is the most important parameter, BUT it needs to be given some context, and that context is the frequency of the vibration. In vibration events there are often an underlying one (or few) frequencies that contribute to the event; often surrounded by noise and reflections. Pulling out those frequencies from the data allows you to resolve what PPV and frequency combinations are acceptable, and those which are not.

What's the alternative?
A common alternative to FFTs for frequency analysis is by using 'zero-crossing' analysis - basically analysing the time series to count how many times the data crosses the zero-axis in a certain time period. For good, clean data, with one predominant underlying frequency this can lead to relatively accurate results. It's easier to implement - so, like most things, it's a trade off.

An Example
For the following example I've simulated some data with a frequency of 31.372Hz, then super-imposed a 50Hz signal, and two different random errors. You can see something roughly resembling a cycle in there, but there are some nasty things going on.

After performing the FFT analysis there are a few comments worth making:
1) the main frequency was pulled out at exactly 31.372Hz
2) the noise frequency was pulled out at exactly 50Hz
3) a zero-crossing method estimated a frequency of ~90Hz
4) note that the magnitude of the time series data approaches 8mm/s, but how the FFT data says it's actually just over 4mm/s - a big difference. For this particular example, the remainder of the measured amplitude was contained in random and systematic electrical noise - so it may be discarded

Remember how I mentioned that the context of construction vibration is important. This example highlights the big difference between a 8mm/s signal at 90Hz, and a 4mm/s signal at 31Hz.

Which do you think is more destructive? You might be surprised.