Convenient way to filter sinusoidal noise from decay data?

28 views (last 30 days)
Hi,
I have decay data (approximated by exp decay) from my spectrometer which is corrupted by sinusoidal noise, presumably from the moving components in scans.
I'd like to filter out the frequency of the noise, leaving behind the decay only (image, all data before time zero is zero)
I've tried multiple ways with no success, FFT->frequency spectrum-> remove noise frequencies ->iFFT, or fitting data to exponential*sine->deconv(data,sine)/ perhaps something went wrong with those methods? for example my deconv command only returned one point from 2 even arrays.
Could someone suggest a method to remove sinusoidal noise from my decay curve?
Thanks
  2 Comments
Bruno Luong
Bruno Luong on 31 Jan 2023
Edited: Bruno Luong on 31 Jan 2023
Just redo your experiment again. It is not clear how you can be sure the fitting could possibly give meaningful result back with such corrupted data.
Gregory Manoukian
Gregory Manoukian on 31 Jan 2023
The experiment is consistent, my signal is quite small, and the lower the signal the more clear this sinusoidal trend is. It is the same problem with all of the data for this sample set.
Is it possible to remove the noise? If the filtered data is unusable, I will show that, I just need to try.

Sign in to comment.

Answers (2)

Image Analyst
Image Analyst on 31 Jan 2023
Why not just leave the data as they are and fit an exponential decay to the whole thing? See attached demo.
  3 Comments
Image Analyst
Image Analyst on 31 Jan 2023
I don't know how you are collecting your signal with periodic noise on it, but maybe you should consider a lock-in amplifier. https://en.wikipedia.org/wiki/Lock-in_amplifier
If you take the FFT, you might see a spike right at the frequency of the noise that is being injected into your time domain signal. Then set those frequencies to zero and inverse transform. A 2-D image version is in the attached demo.
Gregory Manoukian
Gregory Manoukian on 6 Feb 2023
This data is taken through a SR580 lock-in amplifier. the noise presumably comes from the moving components (a screw motor pushing a mirror), and so for the lock-in, looks like more or less signal coming through at each full rotation of the motor.
When I follow this approach, my issue comes in reconstituing the complex array which to ifft. I had identified the peaks and set them to zero in both, but was unable to ifft the data.

Sign in to comment.


Star Strider
Star Strider on 31 Jan 2023
If you want to use a frequency-selective filter, first do a fft of the data to determine the frequency components, then use the lowpass filter (with the 'ImpulseResponse','iir' name-value pair for best results) to eliminate the high-frequency (sinusoidal) noise. (The lowpass filter function requires the Signal Processing Toolbox.)

Products


Release

R2021a

Community Treasure Hunt

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

Start Hunting!