diff --git a/mc_pd_eval3.m b/mc_pd_eval3.m index 4774df9..1803126 100644 --- a/mc_pd_eval3.m +++ b/mc_pd_eval3.m @@ -80,20 +80,25 @@ for n=1:N, _omega(n) = omega; end +function y = jmod(x) + y = x - fix(x); + y = y + 0^(0.5 + sign(y)/2); +endfunction + function perr = phase_det(lo, x) - lo = mod(lo - 0.5, 1); - perr = mod((lo - x), 1) - 0.5; + lo = jmod(lo - 0.5); + perr = jmod(lo - x) - 0.5; endfunction function phase_out = process_linear_phase(phase_in, omega) - phase_out = mod(phase + omega, 1); + phase_out = jmod(phase + omega); endfunction function [phase_out, y] = process_trigon(y, omega) b = 2.0 * sin(pi*omega); y(1) = y(1) - b*y(2); y(2) = y(2) + b*y(1); - phase_out = mod(0.5 + 0.5*atan2(y(1), -y(2))/pi, 1); + phase_out = jmod(0.5 + 0.5*atan2(y(1), -y(2))/pi); endfunction close all;