Ambiguity problems are a fundamental aspect of all phase difference measurements. The pulse-to-pulse coherent method measure velocity by transmitting a pair of short sound pulses with a known time lag or separation. The phase difference between the two reflected pulses is a direct measure of the velocity, but if the phase difference goes outside the range of ±π, the measurement uniqueness is lost, something known as Velocity Ambiguity. For example, a sine wave with phase -π looks the same as a sine wave with phase +π. Phase wrapping will typically happen, if the maximum velocity is higher than the configured velocity range. The ambiguity velocity comes into play in all Doppler systems, but it is only an issue in “pure coherent systems” because of the large pulse separation.
To identify wrapping:
If you are lucky the velocities are fairly strong, so the wraps go from a positive velocity to a negative velocity and are quite obvious. A simple sign filter (i.e., positive velocity expected, wrapped points have a negative sign) will work efficiently to identify wrapped points.
For smaller velocities, it is a bit harder to identify wrapped points by sign alone. Playing with various forms of local median filters to identify wrapped points has varying degrees of success, dependent largely on the quality of the dataset. Histograms are useful for this type of work. Often the ambiguity velocity causes the tail of a histogram to be cut off and shifted to the wrong side of the histogram (so a sign filter would probably work wonders here), meaning that it is easy to pick out wrapped velocities visually. This is at least a good way to check the success of any identification scheme developed.
To unwrap the data:
It is, in principle, possible to unwrap data when you can make assumptions about du/dt, but only if the SNR and correlation are good. There are two ways to go about dealing with your data.
- Develop an outlier filter to remove the wrapped data. If there are only a few points (some small percentage of the total data), it’s relatively simple to define a cutoff threshold outside of which you discard the velocity data. If needed, you can interpolate these removed points back in as long as the gaps created by removing them are not too large. The advantage of this is that it is relatively simple and quick, and the impact on statistics is going to be fairly minimal because so few points are involved.
- If the number of wrapped points is fairly high, option 1 above is problematic because the variance of the signal is artificially constrained by the phase wrapping (i.e. the largest events are being eliminated from sampling). In this case the data either needs to be corrected or retaken. For a field deployment this generally means correction. Below are the recommended steps for going about doing this.
Step 1 in phase wrap correction is to get the data back into beam coordinates. Search for “Coordinate Transformation” in our FAQ database to find an explanation on how to do this, or consult our Practical Primer for Pulse-Coherent Instruments
Step 2 is to find the Ambiguity Velocity. Ambiguity Velocity (the velocity corresponding to pi, denoted V_amb) is the maximum beam velocity that can be measured by the instrument in its deployed configuration. This is set by the Nominal Velocity Range in the configuration window of the software. There are two ways of finding this velocity:
- A simple estimate of V_amb is the average of the absolute values of the maximum and minimum measured velocities.
- A more accurate method is to find the velocity range using the expression VR = c / ( 4 * f * timeLagInSeconds ), where c is the speed of sound, f is the instrument frequency and timeLagInSeconds is pulled from the configuration information in the *.hdr file. (This formula is the standard Pulse-Coherent maximum velocity calculation. Search for “lag” in our FAQ database to read more about this topic.)
- The ambiguity velocity is then double the velocity range, V_amb = VR * 2
- To calculate timeLagInSeconds, please see this FAQ.
Step 3 is to remove the V_amb. The procedure is as follows:
loop over all the data points
if large jump in velocity, then
if the jump is negative, then
newvel = oldvel + V_amb
newvel = oldvel - V_amb
Step 4 is to transform the velocities back to XYZ or ENU.
A few words of caution: it’s generally best to avoid phase wrapping issues, as the time spent correcting them is often fairly significant (and the process is sometimes frustrating). The most difficult task is identifying the points that are wrapped and automating that process. The correction is fairly simple once the points are identified, however.