diff --git a/ofdm/fdet_eval.m b/ofdm/fdet_eval.m new file mode 100644 index 0000000..fc463d2 --- /dev/null +++ b/ofdm/fdet_eval.m @@ -0,0 +1,41 @@ +function fdet_eval() + +fs = 48000; +N = 1024; + +f_true = 2000.000; +phi_true = 1; + +x_true = exp(j*(2*pi*f_true/fs*(0:N-1)'+phi_true)); + +% Initial guess +X = fft(x_true, N); +[v maxk] = max(abs(X)); +f_est = (maxk-1)*fs/N +phi_est = angle(x_true(1)); +mu = 1.0; + +for k=1:500 + x_est = exp(-j*(2*pi*f_est/fs*(0:N-1)'+phi_est)); + dmod(k) = sum(x_true.*x_est); + err(k) = sign(imag(dmod(k)))*(1-real(dmod(k)/abs(dmod(k))))^.5; + f_est = f_est + mu*err(k); + f(k) = f_est; +end; + +f_true = f_true +f_est = f_est + +close all; +subplot(3,1,1) +plot(1:lge(f), 1-real(dmod)./abs(dmod), 1:lge(f), imag(dmod)./abs(dmod)); grid; + +subplot(3,1,2) +plot(1:lge(f), err, '-*'); grid; + +subplot(3,1,3) +plot(1:lge(f), f); grid; + + +figure; +plot(1:lge(f), sign(imag(dmod(k))).*(abs(dmod)-real(dmod))./abs(dmod)); grid; \ No newline at end of file