## Copyright (C) 2020 Jens
##
## This program is free software: you can redistribute it and/or modify it
## under the terms of the GNU General Public License as published by
## the Free Software Foundation, either version 3 of the License, or
## (at your option) any later version.
##
## This program is distributed in the hope that it will be useful, but
## WITHOUT ANY WARRANTY; without even the implied warranty of
## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
## GNU General Public License for more details.
##
## You should have received a copy of the GNU General Public License
## along with this program. If not, see
## .
## -*- texinfo -*-
## @deftypefn {} {@var{retval} =} mc_pd_eval (@var{input1}, @var{input2})
##
## @seealso{}
## @end deftypefn
## Author: Jens
## Created: 2020-08-07
function retval = mc_pd_eval2 (perr, ferr, slave_oversample)
Nc = 10;
Nspc = 96;
ka = 0.9;
klead = 0.2;
klag = 0.01/slave_oversample;
# Create master
xm = [];
for n=1:Nspc,
for m=1:slave_oversample,
xm = [xm n];
endfor
endfor
x = repmat(xm, 1, Nc);
N = Nc*Nspc*slave_oversample;
assert (N == length(x));
# Create slave
pc = 1.0/slave_oversample + Nspc/2 + perr;
dpc = 1.0/slave_oversample + ferr;
sample_count = slave_oversample;
for n=1:N,
sample_count = sample_count - 1;
perr = phase_det(pc, x(n), Nspc);
if sample_count == 0,
sample_count = slave_oversample;
else
perr = 0;
end
_lo(n) = mod(pc - Nspc/2 - 1, Nspc) + 1;
pc = mod(pc + dpc - klead*perr, Nspc);
dpc = dpc - klag*perr;
_perr(n) = perr;
_dpc(n) = dpc;
end
function perr = phase_det(lo, x, Nspc)
perr = mod((lo - x), Nspc) - Nspc/2;
endfunction
close all;
subplot(3, 1, 1)
plot(1:N, _lo, 1:N, x); legend('Lo', 'x'); grid
subplot(3, 1, 2)
plot(1:N, _dpc); legend('f'); grid
subplot(3, 1, 3)
plot(1:N, _perr); legend('p'); grid
endfunction