Giter Site home page Giter Site logo

phaseunwrap's Introduction

Phase unwrapping with multiple ambiguities and experimental noise.

Instantaneous phase

The instantaneous phase of a sinusoidal function signal can be used to track the position of a wave cycle at a given time point. Phase, measured in degrees, can be represented as a "wrapped" value (between 0 and 360o) or as a unwrapped value, whereby each multiple of 360o represents an accumulated full wave cycle - see [https://en.wikipedia.org/wiki/Instantaneous_phase][1]. Converting between wrapped and unwrapped phase is a simple process.

The problem:

The experimental data here is the phase of a travelling wave collected using a laser interferometer at discrete points along a membrane. The phase, as a function of distance rather than time, can be used calculate the velocity of the travelling wave [2][3][4][5]

The magnitude of the raw data is between 0 and -360o and needs to be unwrapped to calculate the overall phase lag. This is analogous to unwrapping phase as a function of time, however there's an additional random 180o phase ambiguity due to the collection method and experimental noise.

In isolation both the 360 and 180o phase steps are simple to correct:

  • Jumps greater than |180| between adjacent points should be corrected by |360| in the opposite direction.
  • Jumps greater than |90| between adjacent points should be correct by |180| in the opposite direction

However, the interaction between these ambiguities, the experimental noise and an expected but unknown rate of phase roll off, means applying the correct correction becomes harder than a simple sum of its parts. While experimental noise can be assumed to be normal for each measurement point, overall uncertainty of total lag (the final value) is cumulative and restricted by the fixed ambiguities and therefore is not normal. The expected phase change with distance is within a measurable range (i.e., it’s not more than ~90 degrees per point), and is assumed to be roughly linear.

Method

(See stochasticUnwrap3.mlx and .pdf for details)

  • Stage 1: Unwrapping
    • Unwrap phase (|360|) correcting for estimated phase rolloff
    • "Unwrap" |180| degree ambiguity correcting for estimated phase rolloff
  • Stage 2: Likely path estimation
    • Simulate experimental noise
    • Attempt to predict most likely path using mean/mode/smoothest path

Functions

The function and script here are designed to automate the process of unwrapping clean data (with more control than MATLAB’s unwrap function) and to attempt to automatically estimate the most-likely correct phase trajectory in the presence of noise.

stochasticUnwrap3.mlx – Matlab live script demonstrating problem and use of unwrap3. Latter part of script attempts to simulate and then find the most likely trajectory (work in progress).

Unwrap3.m – does fairly standard phase unwrapping, but allows adjustment of thresholds and correction magnitudes.

[1] https://en.wikipedia.org/wiki/Instantaneous_phase

[2] http://www.sciencedirect.com/science/article/pii/S0006349513001860

[3] http://www.sciencedirect.com/science/article/pii/S0006349514030653

[4] http://scitation.aip.org/content/aip/proceeding/aipcp/10.1063/1.3658122

[5] https://core.ac.uk/download/pdf/8768490.pdf

phaseunwrap's People

Contributors

garethjns avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.