From 7b2e93a4f48bca58bec293071dd739d28aa602f0 Mon Sep 17 00:00:00 2001 From: Jens Ahrensfeld Date: Sun, 5 Apr 2015 08:43:58 +0000 Subject: [PATCH] - initial version git-svn-id: http://moon:8086/svn/matlab/trunk@18 801c6759-fa7c-4059-a304-17956f83a07c --- ofdm/fdet.m | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 ofdm/fdet.m diff --git a/ofdm/fdet.m b/ofdm/fdet.m new file mode 100644 index 0000000..eacf7b1 --- /dev/null +++ b/ofdm/fdet.m @@ -0,0 +1,27 @@ +function [omega, err, dmod, omega_coarse, omega_est] = fdet(x, N, omega_min, omega_step, omega_max) +% +% Example: fdet_eval(1200, pi/4, -10, [1100 1350 1]) + +K = fix(length(x)/N); + +% Initial guess +omega_coarse = fdet_coarse(x, N, omega_min, omega_step, omega_max); + +% Initial guess +omega_coarse = fdet_coarse(x, N, omega_min, omega_step, omega_max); + +phi_est = 0; +omega_est = omega_coarse; + +for k=1:K + omega(k) = omega_est; + xp = x((k-1)*N+1:k*N); + x_est = exp(-j*(2*pi*omega_est*(0:N-1)' + phi_est)); + dmod(k) = sum(xp.*x_est); + phi = angle(dmod(k)); + omega_f = phi/N/(2*pi); + err(k) = omega_f; + omega_est = omega_est + omega_f; + dphi_est = 2*pi*mod(omega_est*N, 1); + phi_est = mod(phi_est + dphi_est, 2*pi); +end;