MATLAB: Cross-Correlation for noise reduction

corss-correlationdenoisingnoise reduction

Dear All,
I have two signals one is highly noisy (x1) and the other has less noise (x2) where the original signal x is the same. I want to denoise the signal (x2), and the fisrt method comes to my mind is using cross-correlation method, provided that I dont know the original function form and only have these two noisy sequences. However I am not sure how to do this. Accosring to my understanding, the cross correlation returns peaks where these signals are correlated as a fuction of lag and not return a denoised time domain signal. Can I use cross-correlation method to get third time-domain (which should be near or the same of x) signal let say x3 with less noise than x1 and x2?
Your omments are highly appreciated.
t=0:0.001:10;
x=sin(t);
x1=x+0.5*rand(size(x));
x2=x+0.1*rand(size(x));

Best Answer

Have you considered using a wiener filter (very simple with toolbox function) or BSS (blind source separation) or ICA (Independent Components Analysis) (both more complicated) to tease out your true signal?
Or consider using a lock-in amplifier to capture your signal without noise to begin with?
Related Question