Forums

Removing frequency components and reconstruct time domain signal.

Started by AMARTANSH 5 years ago8 replieslatest reply 5 years ago426 views

1.jpg

I have attached the Power spectral density of my underwater noise data (Sampling rate = 500K/S/s). I calculated this PSD by applying welch's method on the time domain data. The PSD is flat for certain range of frequencies. I want to remove the frequencies (0 to 1kHz) and reconstruct the time domain data. I don't want to use any bandpass filter because it only attenuates the frequencies outside the passband. I want to remove the unwanted frequency components.

Please suggest the method or matlab code for doing this. Thanks in advance!


1_82594.jpg

[ - ]
Reply by dgshaw6June 9, 2017

As a first experiment, run the filtering in the frequency domain.  Overlap add, or overlap save etc..

Do 4096 point FFTs and kill the first 8 bins to have an effective cutoff of 976.6 Hz.  Restore the results by doing an IFFT.  Remember to kill the equivalent bins in the negative frequencies too, or you will have a complex output instead of real only.

From you plot, it looks like 976 Hz will kill all the low frequency noise.  As you have pointed out, the dominant components are some power-line (mains) harmonics.  If there is actually some value in some of the lower frequencies, but the mains noise is obscuring it then we can talk about specifically estimating and removing those components individually with some adaptive filtering techniques.

Are you willing to post some data, so we can tinker with it?

David

[ - ]
Reply by JOSJune 15, 2017

I would use notch filters for this. Your largest peak looks like it might require an adaptive notch filter.  Search on these terms for details.

[ - ]
Reply by mukulJune 9, 2017

Most of the signal I could see in 0to 1kHz only.

If you remove that then only noise will remain. 

Do you really want to do that?

[ - ]
Reply by AMARTANSHJune 9, 2017

Yes.

I want to analyse the high frequency noise only. Infact there is no signal in the psd. The peaks are due to various sound noise and 50Hz power line interferences. 

[ - ]
Reply by bachhavpramodJune 9, 2017

So basically you want to remove certain range of frequencies without using any bandpass filter?

[ - ]
Reply by AMARTANSHJune 9, 2017

Yes. Because bandpass filter will attenuate frequencies in the spectrum. I want to remove them from the spectrum.

[ - ]
Reply by bachhavpramodJune 9, 2017

In means that, you would need an ideal bandpass filter which is impossible to design. However, you can design a bandpass filter with sharp cut-off and high attenuation in stopband (off course at the cost of order of the filter) to come closer to your requirement.

[ - ]
Reply by Rick LyonsJune 9, 2017
Hi. I initially had the same question as mukul.  Your statement, "I don't want to use any bandpass filter because it only attenuates the frequencies outside the passband." puzzles me. In any case, the filter you desire will be difficult to implement due to its super-narrow transition bandwidth. AMARTANSH, I have two questions for you: (i) Is this a real-time filter application where you will be filtering a never-ending sequence of input samples, or is it an "offline" filter process where you will only be filtering a fixed-length block of input samples? And (ii) will you be using floating-point or fixed-point filter coefficients?