Filter löschen
Filter löschen

How to remove sine shaped noises from a signal?

13 Ansichten (letzte 30 Tage)
Recep am 5 Dez. 2023
Kommentiert: Image Analyst am 6 Dez. 2023
I have 2 signals, 1 is default sensor noise and other one is the real signal with noise. I get signals in time domain and convert them to frequency domain, then I substract noise signal from measured signal to clear the default sensor noise from the signal but there are frequency shifts between default noise and measured noise so direct substraction creates kind of sine shaped noises on resulting signal. I wonder if there is a way to find and eliminate these sine shaped signals or to fit two signals somehow to eliminate frequency shifts before substracting.
Here are my default sensor noise signal and measured signal with noise for referance
Thanks in advance

Antworten (1)

Image Analyst
Image Analyst am 5 Dez. 2023
Bearbeitet: Image Analyst am 5 Dez. 2023
How monotone is your "real" signal? Can you just zero out the FFT outside the known range of your signal? Or, if not, maybe just zero out at the major noise regions like around 900, 3300, and 7000 Hz?
Can you show us in time or space domain the original signal plot, and the denoised signal plot?
And I'm not sure that subtracting the spectra and inverse FTing will denoise the signal. Do you have a reference article on that?
  4 Kommentare
Recep am 6 Dez. 2023
No, it didn't occured to me before, but I realized now that I can consider the noise signal as a carrier signal as you suggest with lock-in amplifier and try to seperate them that way.
There were several methods for it as I recall which I dont remember any of it. But I know that MATLAB had functions for them. Better I search and try them. Any suggestion to start with?
Image Analyst
Image Analyst am 6 Dez. 2023
What I'm worried about is that though the noise is "permanent" and stable, the spectrum will still be varying a little bit from time to time. Look at it's spectrum. It's really spiky and can you imagine if you looked at that signal in real time on a spectrum analyzer? The signal would vary slightly really fast. So a spike one second might be a valley the next second. So subtracting the actual noisy noise spectrum might introduce more noise.
A Fourier transform is a linear system so if z = a*s1 + b*s2 then FT(z) = a*FT(s1) + b*FT(s2). So if you subtracted the FT of the second signal you should end up with the spectrum of the first signal. However there is noise, and as you (probably, or hopefully) know, adding or subtracting two signals means their noise adds in quadrature.
noise in (s1-s2) = sqrt( (noise in s1)^2 + (noise in s2)^2)
which is more noise than either signal alone had.
So by subtracting the noise spectrum you are actually introducing noise! I think the overall noise will be equalized more or less over the spectrum but will still be noisier on a local scale. So I think one thing to try might be to smooth the noise spectrum with sgolayfilt or movmean and then subtract the smoothed spectrum from the total spectrum. The smoothed spectrum should have the same basic shape but not the fine element-by-element variations. See if that helps.

Melden Sie sich an, um zu kommentieren.


Mehr zu Get Started with Signal Processing Toolbox finden Sie in Help Center und File Exchange


Community Treasure Hunt

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

Start Hunting!

Translated by