Hi there, Just wondering if this question was answered...I know it is an old post, but just taking a long shot here. Essentially I am getting the same outcome...specifically, in matlab, I can generate an appropriate correlation plot, and retrieve the correct delay with xcorr...as well as using the TF method : max(ifft(fft(x1).*conj(fft(x2))), i.e. through regular cross correlation. However, when I try to retrieve phase correlation: X1 = fft(x1); X2 = fft(x2); numerator = X1.*X2; PhaseCorr = fftshift(ifft((numerator)./abs(numerator))); I don't get the kroeneker delta that I should be getting in the correct delay position. What am I doing wrong??? My signals (x1, and x2) are two sinusoids of freq f and delay T between each other, and length N samples...they have been zero padded with N-1 extra zeroes. Does someone have a solution to this probem.

# anyone have an answer to this?

Started by ●April 7, 2008

Reply by ●April 7, 20082008-04-07

On Apr 7, 6:37�am, "bronx" <branko_blagoje...@hotmail.com> wrote:> Hi there, > > Just wondering if this question was answered...I know it is an old post, > but just taking a long shot here. Essentially I am getting the same > outcome...specifically, in matlab, I can generate an appropriate > correlation plot, and retrieve the correct delay with xcorr...as well as > using the TF method : max(ifft(fft(x1).*conj(fft(x2))), i.e. through > regular cross correlation. > > However, when I try to retrieve phase correlation: > X1 = fft(x1); > X2 = fft(x2); > numerator = X1.*X2; > PhaseCorr = fftshift(ifft((numerator)./abs(numerator))); > > I don't get the kroeneker delta that I should be getting in the correct > delay position. What am I doing wrong??? > > My signals (x1, and x2) are two sinusoids of freq f and delay T between > each other, and length N samples...they have been zero padded with N-1 > extra zeroes. > > Does someone have a solution to this probem.What exactly is "phase correlation"? Give me a description, not equations. Where do you expect the delta to be? Why do you expect to get a delta function out of what you are doing? Dirk

Reply by ●April 7, 20082008-04-07

>On Apr 7, 6:37=A0am, "bronx" <branko_blagoje...@hotmail.com> wrote: >> Hi there, >> >> Just wondering if this question was answered...I know it is an oldpost,>> but just taking a long shot here. Essentially I am getting the same >> outcome...specifically, in matlab, I can generate an appropriate >> correlation plot, and retrieve the correct delay with xcorr...as wellas>> using the TF method : max(ifft(fft(x1).*conj(fft(x2))), i.e. through >> regular cross correlation. >> >> However, when I try to retrieve phase correlation: >> X1 =3D fft(x1); >> X2 =3D fft(x2); >> numerator =3D X1.*X2; >> PhaseCorr =3D fftshift(ifft((numerator)./abs(numerator))); >> >> I don't get the kroeneker delta that I should be getting in thecorrect>> delay position. What am I doing wrong??? >> >> My signals (x1, and x2) are two sinusoids of freq f and delay Tbetween>> each other, and length N samples...they have been zero padded with N-1 >> extra zeroes. >> >> Does someone have a solution to this probem. > >What exactly is "phase correlation"? Give me a description, not >equations. > >Where do you expect the delta to be? > >Why do you expect to get a delta function out of what you are doing? > >Dirk >Hi, sorry, I should have been more clear...I am trying to perform the generalized cross correlation PHAT (phase transform). This is also sometimes called normalized cross correlation. This is essentially a regular cross correlation algorithm in the frequency domain, for two signals, divided by the absolute value of the product of one signal and the conjugate of the other. for example: PHAT = X1.*conj(X2)./abs(X1.*conj(X2)) If the signals are just a delayed version of each other, then the inverse fourier transform of the PHAT should provide a plot of the signal with a kronecker delta in the location of the time delay between the two time shifted signals. I am looking for this time delay. More detail regarding the algorithm is found here. http://en.wikipedia.org/wiki/Phase_correlation My issue is that when i plot this in matlab using the following code to retrieve the delay information using the following code: (x1 and x2 are equivalent sinusoids (N samples in 20ms segment) delayed by time T from one another) time = 20ms; x1pad = [x1 zeros(N-1)]; x2pad = [x2 zeros(N-1)]; X1 = fft(x1pad); X2 = fft(x2pad); numerator = X1.*X2; PhaseCorr = fftshift(ifft((numerator)./abs(numerator))); y = time*linspace(-1,1, 2*N-1); plot(t,PhaseCorr); [maxAmp maxIndex] = max(PhaseCorr); Tretrieved = t(maxIndex); I don't get a delta at time Tretrieved (which is the retrieved T delay) as I should....When I plug in normal correlation (i.e. remove './abs(numerator)' in the code above, then I do get a maximum in the right time interval T. Instead my maximum point under the PHAT algorithn (which is not very large in amplitude) is closer to the origin rather than at time T. The problem with using the regular CC method is that it really gets messy when there are multiple sinusoids in the signal, and multiple delays between them. I read that weighting CC algorithms such as the PHAT, SCOT and Hanan Thomson transform are typically used for the retrieval of a time delay because they are more robust to noise, and signal overlay...and most papers suggest the PHAT one in particular. So, my question is whether I am doing something wrong, judging from the code above...why am I getting the right delay for regular cross correlation, but not for the PHAT algorithm... Any suggestions??

Reply by ●April 7, 20082008-04-07

>>On Apr 7, 6:37=A0am, "bronx" <branko_blagoje...@hotmail.com> wrote: >>> Hi there, >>> >>> Just wondering if this question was answered...I know it is an old >post, >>> but just taking a long shot here. Essentially I am getting the same >>> outcome...specifically, in matlab, I can generate an appropriate >>> correlation plot, and retrieve the correct delay with xcorr...as well >as >>> using the TF method : max(ifft(fft(x1).*conj(fft(x2))), i.e. through >>> regular cross correlation. >>> >>> However, when I try to retrieve phase correlation: >>> X1 =3D fft(x1); >>> X2 =3D fft(x2); >>> numerator =3D X1.*X2; >>> PhaseCorr =3D fftshift(ifft((numerator)./abs(numerator))); >>> >>> I don't get the kroeneker delta that I should be getting in the >correct >>> delay position. What am I doing wrong??? >>> >>> My signals (x1, and x2) are two sinusoids of freq f and delay T >between >>> each other, and length N samples...they have been zero padded withN-1>>> extra zeroes. >>> >>> Does someone have a solution to this probem. >> >>What exactly is "phase correlation"? Give me a description, not >>equations. >> >>Where do you expect the delta to be? >> >>Why do you expect to get a delta function out of what you are doing? >> >>Dirk >> > >Hi, > >sorry, I should have been more clear...I am trying to perform the >generalized cross correlation PHAT (phase transform). This is also >sometimes called normalized cross correlation. This is essentially a >regular cross correlation algorithm in the frequency domain, for two >signals, divided by the absolute value of the product of one signal and >the conjugate of the other. for example: > >PHAT = X1.*conj(X2)./abs(X1.*conj(X2)) > >If the signals are just a delayed version of each other, then theinverse>fourier transform of the PHAT should provide a plot of the signal with a >kronecker delta in the location of the time delay between the two time >shifted signals. I am looking for this time delay. >More detail regarding the algorithm is found here. >http://en.wikipedia.org/wiki/Phase_correlation > >My issue is that when i plot this in matlab using the following code to >retrieve the delay information using the following code: > >(x1 and x2 are equivalent sinusoids (N samples in 20ms segment) delayedby>time T from one another) >time = 20ms; >x1pad = [x1 zeros(N-1)]; >x2pad = [x2 zeros(N-1)]; >X1 = fft(x1pad); >X2 = fft(x2pad); >numerator = X1.*X2; >PhaseCorr = fftshift(ifft((numerator)./abs(numerator))); >y = time*linspace(-1,1, 2*N-1); >plot(t,PhaseCorr); >[maxAmp maxIndex] = max(PhaseCorr); >Tretrieved = t(maxIndex); > >I don't get a delta at time Tretrieved (which is the retrieved T delay)as>I should....When I plug in normal correlation (i.e. remove >'./abs(numerator)' in the code above, then I do get a maximum in theright>time interval T. Instead my maximum point under the PHAT algorithn(which>is not very large in amplitude) is closer to the origin rather than at >time T. >The problem with using the regular CC method is that it really getsmessy>when there are multiple sinusoids in the signal, and multiple delays >between them. I read that weighting CC algorithms such as the PHAT, SCOT >and Hanan Thomson transform are typically used for the retrieval of atime>delay because they are more robust to noise, and signal overlay...andmost>papers suggest the PHAT one in particular. > >So, my question is whether I am doing something wrong, judging from the >code above...why am I getting the right delay for regular cross >correlation, but not for the PHAT algorithm... > >Any suggestions?? > > >Sorry made a mistake in the code above...its actually: numerator = X1.*conj(X2); %I didnt forget the conjugate in my actual code

Reply by ●April 7, 20082008-04-07

On Apr 7, 2:47�pm, "bronx" <branko_blagoje...@hotmail.com> wrote:> >>On Apr 7, 6:37=A0am, "bronx" <branko_blagoje...@hotmail.com> wrote: > >>> Hi there, > > >>> Just wondering if this question was answered...I know it is an old > >post, > >>> but just taking a long shot here. Essentially I am getting the same > >>> outcome...specifically, in matlab, I can generate an appropriate > >>> correlation plot, and retrieve the correct delay with xcorr...as well > >as > >>> using the TF method : max(ifft(fft(x1).*conj(fft(x2))), i.e. through > >>> regular cross correlation. > > >>> However, when I try to retrieve phase correlation: > >>> X1 =3D fft(x1); > >>> X2 =3D fft(x2); > >>> numerator =3D X1.*X2; > >>> PhaseCorr =3D fftshift(ifft((numerator)./abs(numerator))); > > >>> I don't get the kroeneker delta that I should be getting in the > >correct > >>> delay position. What am I doing wrong??? > > >>> My signals (x1, and x2) are two sinusoids of freq f and delay T > >between > >>> each other, and length N samples...they have been zero padded with > N-1 > >>> extra zeroes. > > >>> Does someone have a solution to this probem. > > >>What exactly is "phase correlation"? Give me a description, not > >>equations. > > >>Where do you expect the delta to be? > > >>Why do you expect to get a delta function out of what you are doing? > > >>Dirk > > >Hi, > > >sorry, I should have been more clear...I am trying to perform the > >generalized cross correlation PHAT (phase transform). This is also > >sometimes called normalized cross correlation. This is essentially a > >regular cross correlation algorithm in the frequency domain, for two > >signals, divided by the absolute value of the product of one signal and > >the conjugate of the other. for example: > > >PHAT = X1.*conj(X2)./abs(X1.*conj(X2)) > > >If the signals are just a delayed version of each other, then the > inverse > >fourier transform of the PHAT should provide a plot of the signal with a > >kronecker delta in the location of the time delay between the two time > >shifted signals. I am looking for this time delay. > >More detail regarding the algorithm is found here. > >http://en.wikipedia.org/wiki/Phase_correlation > > >My issue is that when i plot this in matlab using the following code to > >retrieve the delay information using the following code: > > >(x1 and x2 are equivalent sinusoids (N samples in 20ms segment) delayed > by > >time T from one another) > >time = 20ms; > >x1pad = [x1 zeros(N-1)]; > >x2pad = [x2 zeros(N-1)]; > >X1 = fft(x1pad); > >X2 = fft(x2pad); > >numerator = X1.*X2; > >PhaseCorr = fftshift(ifft((numerator)./abs(numerator))); > >y = time*linspace(-1,1, 2*N-1); > >plot(t,PhaseCorr); > >[maxAmp maxIndex] = max(PhaseCorr); > >Tretrieved = t(maxIndex); > > >I don't get a delta at time Tretrieved (which is the retrieved T delay) > as > >I should....When I plug in normal correlation (i.e. remove > >'./abs(numerator)' in the code above, then I do get a maximum in the > right > >time interval T. Instead my maximum point under the PHAT algorithn > (which > >is not very large in amplitude) is closer to the origin rather than at > >time T. > >The problem with using the regular CC method is that it really gets > messy > >when there are multiple sinusoids in the signal, and multiple delays > >between them. I read that weighting CC algorithms such as the PHAT, SCOT > >and Hanan Thomson transform are typically used for the retrieval of a > time > >delay because they are more robust to noise, and signal overlay...and > most > >papers suggest the PHAT one in particular. > > >So, my question is whether I am doing something wrong, judging from the > >code above...why am I getting the right delay for regular cross > >correlation, but not for the PHAT algorithm... > > >Any suggestions?? > > Sorry made a mistake in the code above...its actually: > numerator = X1.*conj(X2); %I didnt forget the conjugate in my actual code- Hide quoted text - > > - Show quoted text -You should post the equations for the frequencies, length of signals, size of FFT, ... I suspect this method is going to run into problems where there are a lot of FFT bins where there is virtually no signal, such that the phase is really based more on numerical noise than any signal present. In that case the phase difference between these bins would not be dependent on the delay and would not contribute to your result. I don't know if you have this problem or not, but it would somethng to check for. Dirk

Reply by ●April 7, 20082008-04-07

> >You should post the equations for the frequencies, length of signals, >size of FFT, ... > >I suspect this method is going to run into problems where there are a >lot of FFT bins where there is virtually no signal, such that the >phase is really based more on numerical noise than any signal >present. In that case the phase difference between these bins would >not be dependent on the delay and would not contribute to your >result. I don't know if you have this problem or not, but it would >somethng to check for. > >Dirk >here is my code in detail freq1 = 0.5e3; %Frequency of incoming source in Hz time = 20e-3; %Total time of simulation in s tau1 = 0.375e-3; %time difference in arrival of 2 signals N = pow2(11); %t = (0:N-1)*time; t = linspace(0,time,N); % Signals arriving at input of microphones...with different phase % MIC A x1 = sin(2*pi*freq1*t); % MIC B x2 = sin(2*pi*freq1*(t + tau1)); figure(1); plot(t, x1, "r"); hold on; plot(t, x2, "g"); x1pad = [(x1) zeros(1,N-1)]; x2pad = [(x2) zeros(1,N-1)]; NPC = length(x1pad); X1 = fft(x1pad); X2 = fft(x2pad); XR_CC_num = X1.*conj(X2); XR_CC_den = abs(XR_CC_num); XR = (XR_CC_num)./(XR_CC_den); %Phase Correlation PhaseCorr = fftshift((ifft(XR))); %Cross Correlation CrossCorr = fftshift(ifft(XR_CC_num)); CorrTime = time*linspace(-1,1, NPC); figure(2); %Plot Phase correlation in ms plot(1e3*CorrTime,real(PhaseCorr),'r'); figure(3); %Plot Cross Correlation in ms plot(1e3*CorrTime,real(CrossCorr),'g'); %the location of the peak of each result is the time delay between signal %%x1 and signal x2 let me know if you know why the peaks don't show the same time delay index. Thanks

Reply by ●April 8, 20082008-04-08

On Apr 7, 5:31�pm, "bronx" <branko_blagoje...@hotmail.com> wrote:> >You should post the equations for the frequencies, length of signals, > >size of FFT, ... > > >I suspect this method is going to run into problems where there are a > >lot of FFT bins where there is virtually no signal, such that the > >phase is really based more on numerical noise than any signal > >present. �In that case the phase difference between these bins would > >not be dependent on the delay and would not contribute to your > >result. �I don't know if you have this problem or not, but it would > >somethng to check for. > > >Dirk > > here is my code in detail > > freq1 = 0.5e3; � � %Frequency of incoming source in Hz > time = 20e-3; � %Total time of simulation in s > tau1 = 0.375e-3; � � %time difference in arrival of 2 signals > > N = pow2(11); > %t = (0:N-1)*time; > t = linspace(0,time,N); > > % Signals arriving at input of microphones...with different phase > > % MIC A > x1 = sin(2*pi*freq1*t); > > % MIC B > x2 = sin(2*pi*freq1*(t + tau1)); > > figure(1); > plot(t, x1, "r"); > hold on; > plot(t, x2, "g"); > > x1pad = [(x1) zeros(1,N-1)]; > x2pad = [(x2) zeros(1,N-1)]; > > NPC = length(x1pad); > X1 = fft(x1pad); > X2 = fft(x2pad); > XR_CC_num = X1.*conj(X2); > XR_CC_den = abs(XR_CC_num); > XR = (XR_CC_num)./(XR_CC_den); > %Phase Correlation > PhaseCorr = fftshift((ifft(XR))); > %Cross Correlation > CrossCorr = fftshift(ifft(XR_CC_num)); > CorrTime = time*linspace(-1,1, NPC); > > figure(2); > %Plot Phase correlation in ms > plot(1e3*CorrTime,real(PhaseCorr),'r'); > > figure(3); > %Plot Cross Correlation in ms > plot(1e3*CorrTime,real(CrossCorr),'g'); > > %the location of the peak of each result is the time delay between signal > %%x1 and signal x2 > > let me know if you know why the peaks don't show the same time delay > index. > > ThanksNotice that x2pad and x1pad are in no way delayed/advanced versions of the other. Take a step back and find the difference in the phases for the two FFTs. Is the phase what you expect? Dirk

Reply by ●April 8, 20082008-04-08

On Apr 8, 9:09�am, dbell <bellda2...@cox.net> wrote:> On Apr 7, 5:31�pm, "bronx" <branko_blagoje...@hotmail.com> wrote: > > > > > > > >You should post the equations for the frequencies, length of signals, > > >size of FFT, ... > > > >I suspect this method is going to run into problems where there are a > > >lot of FFT bins where there is virtually no signal, such that the > > >phase is really based more on numerical noise than any signal > > >present. �In that case the phase difference between these bins would > > >not be dependent on the delay and would not contribute to your > > >result. �I don't know if you have this problem or not, but it would > > >somethng to check for. > > > >Dirk > > > here is my code in detail > > > freq1 = 0.5e3; � � %Frequency of incoming source in Hz > > time = 20e-3; � %Total time of simulation in s > > tau1 = 0.375e-3; � � %time difference in arrival of 2 signals > > > N = pow2(11); > > %t = (0:N-1)*time; > > t = linspace(0,time,N); > > > % Signals arriving at input of microphones...with different phase > > > % MIC A > > x1 = sin(2*pi*freq1*t); > > > % MIC B > > x2 = sin(2*pi*freq1*(t + tau1)); > > > figure(1); > > plot(t, x1, "r"); > > hold on; > > plot(t, x2, "g"); > > > x1pad = [(x1) zeros(1,N-1)]; > > x2pad = [(x2) zeros(1,N-1)]; > > > NPC = length(x1pad); > > X1 = fft(x1pad); > > X2 = fft(x2pad); > > XR_CC_num = X1.*conj(X2); > > XR_CC_den = abs(XR_CC_num); > > XR = (XR_CC_num)./(XR_CC_den); > > %Phase Correlation > > PhaseCorr = fftshift((ifft(XR))); > > %Cross Correlation > > CrossCorr = fftshift(ifft(XR_CC_num)); > > CorrTime = time*linspace(-1,1, NPC); > > > figure(2); > > %Plot Phase correlation in ms > > plot(1e3*CorrTime,real(PhaseCorr),'r'); > > > figure(3); > > %Plot Cross Correlation in ms > > plot(1e3*CorrTime,real(CrossCorr),'g'); > > > %the location of the peak of each result is the time delay between signal > > %%x1 and signal x2 > > > let me know if you know why the peaks don't show the same time delay > > index. > > > Thanks > > Notice that x2pad and x1pad are in no way delayed/advanced versions of > the other. > > Take a step back and find the difference in the phases for the two > FFTs. �Is the phase what you expect? > > Dirk- Hide quoted text - > > - Show quoted text -Sure they are! Plot them and take a look. Maurice Givens

Reply by ●April 8, 20082008-04-08

On Apr 7, 4:31�pm, "bronx" <branko_blagoje...@hotmail.com> wrote:> >You should post the equations for the frequencies, length of signals, > >size of FFT, ... > > >I suspect this method is going to run into problems where there are a > >lot of FFT bins where there is virtually no signal, such that the > >phase is really based more on numerical noise than any signal > >present. �In that case the phase difference between these bins would > >not be dependent on the delay and would not contribute to your > >result. �I don't know if you have this problem or not, but it would > >somethng to check for. > > >Dirk > > here is my code in detail > > freq1 = 0.5e3; � � %Frequency of incoming source in Hz > time = 20e-3; � %Total time of simulation in s > tau1 = 0.375e-3; � � %time difference in arrival of 2 signals > > N = pow2(11); > %t = (0:N-1)*time; > t = linspace(0,time,N); > > % Signals arriving at input of microphones...with different phase > > % MIC A > x1 = sin(2*pi*freq1*t); > > % MIC B > x2 = sin(2*pi*freq1*(t + tau1)); > > figure(1); > plot(t, x1, "r"); > hold on; > plot(t, x2, "g"); > > x1pad = [(x1) zeros(1,N-1)]; > x2pad = [(x2) zeros(1,N-1)]; > > NPC = length(x1pad); > X1 = fft(x1pad); > X2 = fft(x2pad); > XR_CC_num = X1.*conj(X2); > XR_CC_den = abs(XR_CC_num); > XR = (XR_CC_num)./(XR_CC_den); > %Phase Correlation > PhaseCorr = fftshift((ifft(XR))); > %Cross Correlation > CrossCorr = fftshift(ifft(XR_CC_num)); > CorrTime = time*linspace(-1,1, NPC); > > figure(2); > %Plot Phase correlation in ms > plot(1e3*CorrTime,real(PhaseCorr),'r'); > > figure(3); > %Plot Cross Correlation in ms > plot(1e3*CorrTime,real(CrossCorr),'g'); > > %the location of the peak of each result is the time delay between signal > %%x1 and signal x2 > > let me know if you know why the peaks don't show the same time delay > index. > > Thanksx1 is a delayed version of x2 by tau1. However, the question I think you should be asking yourself is why you think the FFT of x1 would be different than the FFT of x2. Maurice Givens

Reply by ●April 8, 20082008-04-08

On Apr 8, 1:17�pm, maury <maury...@core.com> wrote:> On Apr 8, 9:09�am, dbell <bellda2...@cox.net> wrote: > > > > > > > On Apr 7, 5:31�pm, "bronx" <branko_blagoje...@hotmail.com> wrote: > > > > >You should post the equations for the frequencies, length of signals, > > > >size of FFT, ... > > > > >I suspect this method is going to run into problems where there are a > > > >lot of FFT bins where there is virtually no signal, such that the > > > >phase is really based more on numerical noise than any signal > > > >present. �In that case the phase difference between these bins would > > > >not be dependent on the delay and would not contribute to your > > > >result. �I don't know if you have this problem or not, but it would > > > >somethng to check for. > > > > >Dirk > > > > here is my code in detail > > > > freq1 = 0.5e3; � � %Frequency of incoming source in Hz > > > time = 20e-3; � %Total time of simulation in s > > > tau1 = 0.375e-3; � � %time difference in arrival of 2 signals > > > > N = pow2(11); > > > %t = (0:N-1)*time; > > > t = linspace(0,time,N); > > > > % Signals arriving at input of microphones...with different phase > > > > % MIC A > > > x1 = sin(2*pi*freq1*t); > > > > % MIC B > > > x2 = sin(2*pi*freq1*(t + tau1)); > > > > figure(1); > > > plot(t, x1, "r"); > > > hold on; > > > plot(t, x2, "g"); > > > > x1pad = [(x1) zeros(1,N-1)]; > > > x2pad = [(x2) zeros(1,N-1)]; > > > > NPC = length(x1pad); > > > X1 = fft(x1pad); > > > X2 = fft(x2pad); > > > XR_CC_num = X1.*conj(X2); > > > XR_CC_den = abs(XR_CC_num); > > > XR = (XR_CC_num)./(XR_CC_den); > > > %Phase Correlation > > > PhaseCorr = fftshift((ifft(XR))); > > > %Cross Correlation > > > CrossCorr = fftshift(ifft(XR_CC_num)); > > > CorrTime = time*linspace(-1,1, NPC); > > > > figure(2); > > > %Plot Phase correlation in ms > > > plot(1e3*CorrTime,real(PhaseCorr),'r'); > > > > figure(3); > > > %Plot Cross Correlation in ms > > > plot(1e3*CorrTime,real(CrossCorr),'g'); > > > > %the location of the peak of each result is the time delay between signal > > > %%x1 and signal x2 > > > > let me know if you know why the peaks don't show the same time delay > > > index. > > > > Thanks > > > Notice that x2pad and x1pad are in no way delayed/advanced versions of > > the other. > > > Take a step back and find the difference in the phases for the two > > FFTs. �Is the phase what you expect? > > > Dirk- Hide quoted text - > > > - Show quoted text - > > Sure they are! �Plot them and take a look. > > Maurice Givens- Hide quoted text - > > - Show quoted text -Look again. x2pad and x1pad contain delayed/advanced versions of the same waveform WINDOWED. So shifting one does not give the other. Dirk