Forums

cross correlation

Started by djt740 January 21, 2008
I'm wondering if you can be of some help to me.
I currently have two waveforms,waveform1 and waveform2 that I'm reading
from my oscilloscope into Matlab. I want to find the times in waveform2
that a match for waveform1 occurs. I want a 'correlation spike' to occur
in my resultant waveform every time Matlab finds a match for waveform1 in
waveform2.However at the moment this is not occuring. Does the xcorr
function not achieve this functionality?Thanks for any help
Regards
Djt
So far my code is as follows
%%%%%%%%%%%%%%%%%%%%%%%
Firstly open the figure files
 
open waveform1.fig
open waveform2.fig
 
Then read the x and y data fields from each figure...
 
figure(1)
x1=get(findobj(gca,'type','line'),'xdata');
y1=get(findobj(gca,'type','line'),'ydata');
figure(2)
x2=get(findobj(gca,'type','line'),'xdata');
y2=get(findobj(gca,'type','line'),'ydata');
 
finally you can correlate the two Y data sets...
 
cordat=xcorr(y1,y2)
Plot(cordat)



On Jan 21, 9:53 am, "djt740" <djt...@hotmail.com> wrote:
> I'm wondering if you can be of some help to me. > I currently have two waveforms,waveform1 and waveform2 that I'm reading > from my oscilloscope into Matlab. I want to find the times in waveform2 > that a match for waveform1 occurs. I want a 'correlation spike' to occur > in my resultant waveform every time Matlab finds a match for waveform1 in > waveform2.However at the moment this is not occuring. Does the xcorr > function not achieve this functionality?Thanks for any help > Regards > Djt > So far my code is as follows > %%%%%%%%%%%%%%%%%%%%%%% > Firstly open the figure files > > open waveform1.fig > open waveform2.fig > > Then read the x and y data fields from each figure... > > figure(1) > x1=get(findobj(gca,'type','line'),'xdata'); > y1=get(findobj(gca,'type','line'),'ydata'); > figure(2) > x2=get(findobj(gca,'type','line'),'xdata'); > y2=get(findobj(gca,'type','line'),'ydata'); > > finally you can correlate the two Y data sets... > > cordat=xcorr(y1,y2) > Plot(cordat)
I don't see anything obviously wrong with your code, just keep in mind that the peaks produced by cross correlation can be relatively broad, so maybe you are looking for a spike, what you want is the lump. Chris Chris
On 21 Jan, 15:53, "djt740" <djt...@hotmail.com> wrote:
> I'm wondering if you can be of some help to me. > I currently have two waveforms,waveform1 and waveform2 that I'm reading > from my oscilloscope into Matlab. I want to find the times in waveform2 > that a match for waveform1 occurs. I want a 'correlation spike' to occur > in my resultant waveform every time Matlab finds a match for waveform1 in > waveform2.However at the moment this is not occuring. Does the xcorr > function not achieve this functionality?Thanks for any help > Regards > Djt > So far my code is as follows > %%%%%%%%%%%%%%%%%%%%%%% > Firstly open the figure files > > open waveform1.fig > open waveform2.fig
Why do you load .fig files? Why not load raw data? Rune
>On Jan 21, 9:53 am, "djt740" <djt...@hotmail.com> wrote: >> I'm wondering if you can be of some help to me. >> I currently have two waveforms,waveform1 and waveform2 that I'm
reading
>> from my oscilloscope into Matlab. I want to find the times in
waveform2
>> that a match for waveform1 occurs. I want a 'correlation spike' to
occur
>> in my resultant waveform every time Matlab finds a match for waveform1
in
>> waveform2.However at the moment this is not occuring. Does the xcorr >> function not achieve this functionality?Thanks for any help >> Regards >> Djt >> So far my code is as follows >> %%%%%%%%%%%%%%%%%%%%%%% >> Firstly open the figure files >> >> open waveform1.fig >> open waveform2.fig >> >> Then read the x and y data fields from each figure... >> >> figure(1) >> x1=get(findobj(gca,'type','line'),'xdata'); >> y1=get(findobj(gca,'type','line'),'ydata'); >> figure(2) >> x2=get(findobj(gca,'type','line'),'xdata'); >> y2=get(findobj(gca,'type','line'),'ydata'); >> >> finally you can correlate the two Y data sets... >> >> cordat=xcorr(y1,y2) >> Plot(cordat) > >I don't see anything obviously wrong with your code, just keep in mind >that the peaks produced by cross correlation can be relatively broad, >so maybe you are looking for a spike, what you want is the lump. > >Chris >Chris
Hi Chris, What to you mean by 'the lump'?At the moment when I plot the xcorr result I get a continuous waveform of varying amplitude.I was expecting a spike to occur only when it finds a match in waveform2 for waveform one Thanks for your help Djt
>
On Jan 22, 9:35&#2013266080;am, "djt740" <djt...@hotmail.com> wrote:
> >On Jan 21, 9:53 am, "djt740" <djt...@hotmail.com> wrote: > >> I'm wondering if you can be of some help to me. > >> I currently have two waveforms,waveform1 and waveform2 that I'm > reading > >> from my oscilloscope into Matlab. I want to find the times in > waveform2 > >> that a match for waveform1 occurs. I want a 'correlation spike' to > occur > >> in my resultant waveform every time Matlab finds a match for waveform1 > in > >> waveform2.However at the moment this is not occuring. Does the xcorr > >> function not achieve this functionality?Thanks for any help > >> Regards > >> Djt > >> So far my code is as follows > >> %%%%%%%%%%%%%%%%%%%%%%% > >> Firstly open the figure files > > >> open waveform1.fig > >> open waveform2.fig > > >> Then read the x and y data fields from each figure... > > >> figure(1) > >> x1=get(findobj(gca,'type','line'),'xdata'); > >> y1=get(findobj(gca,'type','line'),'ydata'); > >> figure(2) > >> x2=get(findobj(gca,'type','line'),'xdata'); > >> y2=get(findobj(gca,'type','line'),'ydata'); > > >> finally you can correlate the two Y data sets... > > >> cordat=xcorr(y1,y2) > >> Plot(cordat) > > >I don't see anything obviously wrong with your code, just keep in mind > >that the peaks produced by cross correlation can be relatively broad, > >so maybe you are looking for a spike, what you want is the lump. > > >Chris > >Chris > > Hi Chris, > What to you mean by 'the lump'?At the moment when I plot the xcorr result > I get a continuous waveform of varying amplitude.I was expecting a spike > to occur only when it finds a match in waveform2 for waveform one > Thanks for your help > Djt > > > > - Hide quoted text - > > - Show quoted text -- Hide quoted text - > > - Show quoted text -
I suspect your data is sinusoidal. Find the correlation of sin(wt) and cos(wt), also autocorrelation of sin(wt), and cos(wt). Look at what you get. That might answer your question. Maurice Givens Wright College, Chicago