phase-unwrap
Advanced tools
+1
-1
| { | ||
| "name": "phase-unwrap", | ||
| "version": "0.0.1", | ||
| "version": "0.1.0", | ||
| "description": "Phase unwrapping for ndarrays", | ||
@@ -5,0 +5,0 @@ "main": "unwrap.js", |
+0
-1
@@ -45,3 +45,2 @@ phase-unwrap | ||
| ## Install | ||
@@ -48,0 +47,0 @@ |
+21
-3
@@ -31,2 +31,19 @@ "use strict" | ||
| function unwrapImplGetter(data, ptr, stride, n) { | ||
| var pi = Math.PI | ||
| var pphase = modf(data.get(ptr)), shift = 0 | ||
| ptr += stride | ||
| for(var i=1; i<n; ++i, ptr+=stride) { | ||
| var cphase = modf(data.get(ptr)) | ||
| var d = cphase - pphase | ||
| if(d < -pi) { | ||
| shift += tau | ||
| } else if(d > pi) { | ||
| shift -= tau | ||
| } | ||
| data.set(ptr, cphase + shift) | ||
| pphase = cphase | ||
| } | ||
| } | ||
| function unwrapPhase(signal) { | ||
@@ -36,6 +53,7 @@ if(signal.shape.length !== 1) { | ||
| } | ||
| if(signal.stride[0] === 0) { | ||
| return 0 | ||
| if("generic" === signal.dtype) { | ||
| unwrapImplGetter(signal.data, signal.offset, signal.stride[0], signal.shape[0]) | ||
| } else { | ||
| unwrapImpl(signal.data, signal.offset, signal.stride[0], signal.shape[0]) | ||
| } | ||
| unwrapImpl(signal.data, signal.offset, signal.stride[0], signal.shape[0]) | ||
| return signal | ||
@@ -42,0 +60,0 @@ } |
63696
0.74%98
20.99%58
-1.69%