I have a cross-correlation signal and one of the two signas that were cross-correlated: CC=A*B I have CC and let's say A. Now I try to find the second signal B. In detail: CC and A is are normalized envelops of a pulse that are kind of gaussian. At the beginning and the end of the vektors there are a lot of zero values. I played around with the original formulars with FFT, but doing the de-folding with FFT my resulting B has additional maximums at the beginning and the end of the vektor. The I tried the deconv-Funktion, but I am not sure if the result ist correct, because die peak in CC has a larger width than the one in A. And the resulting B has te same width as in CC. That does not seem to make sense, as I would expect a smaler pulse width in B than in CC. I use: [q,r]=deconv(CC,A); CC and A both have 255 vales The resulting q is a single value and r also has 255 values. I guess r is the B I search for? Does anybody have an idea if I am doing right??

# Reverse a cross correlation with MatLab

Started by ●August 4, 2006

Reply by ●August 7, 20062006-08-07

Eryxi wrote:> I have a cross-correlation signal and one of the two signas that were > cross-correlated: CC=A*B > I have CC and let's say A. > Now I try to find the second signal B.would B be unique? I don't know

Reply by ●August 7, 20062006-08-07

Eryxi wrote:> I have a cross-correlation signal and one of the two signas that were > cross-correlated: CC=A*B > I have CC and let's say A. > Now I try to find the second signal B.For what its worth : I'd say B = CC / A :) (Forgive my high school math ^_^ )

Reply by ●August 7, 20062006-08-07

Eryxi wrote:> I have a cross-correlation signal and one of the two signas that were > cross-correlated: CC=A*B > I have CC and let's say A. > Now I try to find the second signal B. > > In detail: CC and A is are normalized envelops of a pulse that are kind of > gaussian. At the beginning and the end of the vektors there are a lot of > zero values. > > I played around with the original formulars with FFT, but doing the > de-folding with FFT my resulting B has additional maximums at the > beginning and the end of the vektor. > > The I tried the deconv-Funktion, but I am not sure if the result ist > correct, because die peak in CC has a larger width than the one in A. And > the resulting B has te same width as in CC. That does not seem to make > sense, as I would expect a smaler pulse width in B than in CC. > > I use: > [q,r]=deconv(CC,A); > CC and A both have 255 vales > The resulting q is a single value and r also has 255 values. > I guess r is the B I search for? > > Does anybody have an idea if I am doing right??Nope. Q should be the B. However, I doubt deconv works if the signals are not accurately cc = xcorr(a,b) (for example, if there is noise present). Try this: a = rand(1,5); b = rand(1,5); cc = xcorr(a,b); bhat = fliplr(deconv(cc,a)); sum(abs(b-bhat)) On my machine with Octave, the result is close to zero. That is, bhat equals to b. -- Jani Huhtanen Tampere University of Technology, Pori