# Digital low-pass filters; best practice application

I have time domain strain gauge data from a structure which is subjected to low frequency, random loading. The signal / noise ratio is pretty good, but I would like to try to improve on it as much as possible.

From the FFT, I know that the dominant loading and response is below a frequency of around 1 Hz, but my signal has a constant level of noise up to the 10 Hz Nyquist frequency, above which any frequencies should have been removed by the low pass filter that was used with the measurement system - but I have very little knowledge of how this works. Although I can determine the dominant frequency response from my data in it's current form, I'm interested in processing the time domain data for fatigue calculations, and so any additional noise will introduce error.

I basically have two questions that I'd like to ask anyone with a good understanding of modern measurement and signal processing systems;

1) How is the low pass filter implemented in best practice for a measurement system like this? Is this done with the standard RC circuit prior to analogue to digital converter, or is this done after digital conversion with a processor and a suitable algorithm?

2) What would be the most suitable method to remove the noise present in my data above 1 Hz? I've had a bit of success with simple smoothing algorithms in the past (such as localised regression fitting; LOESS), but wondered whether there are more appropriate methods that I am not aware of, as smoothing seems a bit crude!

Any responses or pointers in the right direction would be really appreciated,

Many thanks,

Trev

I think a digital low-pass filter, applied after sampling, should be a good solution. One benefit of digital filtering is that you can obtain very sharp transition regions, and large rejection of out-of-band signals. The cost is relatively high computational complexity, in the sense that your processing code will execute many arithmetic operations.

Another benefit of digital filtering is that you can make use of a very large, well tested array of algorithms to design the filer, without necessarily understanding how they work. Obtaining the frequency response of a particular filter is very easy, so you can quickly evaluate if the filter meets your needs.

For illustration, this is how you would design and evaluate the filter in Matlab. I'll assume that the sampling frequency is 20 samples per second, and you want the cutoff frequency at 1 Hz.

% define frequencies:
fs = 20;
fn = fs/2;  % Nyquist frequency
fc = 1;     % cutoff frequency

% define the filter
b = fir1(100, fc/fn);  % filter order is 100; cutoff frequency is 1 Hz

% plot its frequency response
freqz(b);   % this command plots the filter's magnitude and phase responses.


The response obtained is:

You can see that the response is really nice: it is linear in the passband, and the rejection is around 60 dB to 80 dB out of band. Using this filter, though, requires around 100 multiplications and 100 additions per each processed sample.

1) It is done prior to ADC conversion, but not necessarily with the (1st order) RC circuit. If insufficient filtering is performed to remove content above Nyquist then the entire integrity of your signal cannot be trusted.