what filter can be used to remove background noise in my signal?

18 views (last 30 days)
I was given a signal with lots of noise, particulary noise from x*100hz where x = (1:1:100).
Below is the frequency representation of this signal (FFT plot):
I am trying to remove all the noise at x*100hz, where x = (1:1:100), but I am not sure what filter should I use.
I first tried a comb filter using filter Design app: below is the magnitude response:
But this does not work on my signal.
The multipand-pass filter may also work, but I am not sure how to define its parameter.
If you happen to know how to remove this type of noise, please share with me.
Big thanks!
  2 Comments
Star Strider
Star Strider on 26 Jan 2022
But this does not work on my signal.
Please describe what ‘does not work’ is in this context.
There could be several problems, one being that this will be an extremely long filter (a FIR filter with an order of 200 may not be nearly long enough), so it requires an extremely long signal, another being that using the filtfilt function is necessary for this (or any) filter to work correctly, the third that the stopbands do not exactly match the desired frequency components in the signal, and the fourth being that filters designed with the DSP System Toolbox may not work with the Signal Processing Toolbox functions.
Fan Yang
Fan Yang on 27 Jan 2022
My appologies! "Doesn't work" is a wrong choice of phrase. what happened when I applied this filtered is simply it did not a job that's good enough.
The picture below showed two FFT results, where blue is from the original data, and red is from the comb filtered data (the filter parameter here is identical to the filter describe in my question). The noise is indeed reduced, but lots of them still remains. Even though, for the black line, I tried to crank up the Apass parameter (to 12) and increase the Q factor (to 65) to balance out the unwanted oscillation caused by this filter, the problem remains.
I am wondering if there is a better filter that can outperform the comb filters I designed above to clean this dataset.

Sign in to comment.

Answers (1)

Vidip
Vidip on 18 Jan 2024
Edited: Vidip on 18 Jan 2024
I understand that you want to remove noise at specific harmonics (multiples of 100 Hz), a comb filter is indeed a good starting point, as it is designed to remove periodic noise at regular intervals. However, as you've noticed, the comb filter you've designed might not be providing the attenuation needed to sufficiently clean your signal.
Designing a series of 'notch' filters, each tuned to remove a specific harmonic frequency. You can stack multiple 'second-order notch' filters (also known as band-stop filters) to target each of your harmonics. Applying many filters sequentially can introduce significant signal processing delay but you can provide very precise attenuation at the desired frequencies.
If the noise frequencies are not exactly at the harmonics due to some variations or if there is any drift over time, an adaptive filter like LMS or RLS could be more effective. These filters adjust their coefficients in real-time to minimize the error between the filter output and a reference signal.
For further information, refer to the documentation links below:

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!