From 489aecaee146b4b39d6cf998c8d861430175d5bd Mon Sep 17 00:00:00 2001 From: Jens Ahrensfeld Date: Sat, 4 Apr 2015 08:34:11 +0000 Subject: [PATCH] - initial version git-svn-id: http://moon:8086/svn/matlab/trunk@14 801c6759-fa7c-4059-a304-17956f83a07c --- ofdm/cfoml_eval.m | 33 +++++++++++++++++++++++++++++++++ ofdm/fdet_coarse.m | 11 +++++++++++ 2 files changed, 44 insertions(+) create mode 100644 ofdm/cfoml_eval.m create mode 100644 ofdm/fdet_coarse.m diff --git a/ofdm/cfoml_eval.m b/ofdm/cfoml_eval.m new file mode 100644 index 0000000..4756b88 --- /dev/null +++ b/ofdm/cfoml_eval.m @@ -0,0 +1,33 @@ +function cfoml_eval(x) + +N = 1024; % number of subcarriers +M = 103; % number of subcarriers that carry information +omega = 2*pi/N; % carrier spacing + +fa = 48000; +fo = 0.0; + +x = 0.5*exp(i*2*pi.*(0:length(x)-1)'*fo/fa) .* x; + +U = exp(i*omega*(0:N-1)'*(0:N-1)); + +W = U(:, 1:M); +V = U(:, (M+1):N); + +phi = 0; +dphi = pi/100; + +for j=1:100, +phik(j) = phi; +P = calcP(phi, N); +phi = phi + dphi; + +S(j) = sum(abs(x'*P*U(:, M+1:N)).^2); +end + +close all; + +plot(phik, real(S)); grid + +function P = calcP(phi, N) +P = diag(exp(i*(0:N-1)*phi)); diff --git a/ofdm/fdet_coarse.m b/ofdm/fdet_coarse.m new file mode 100644 index 0000000..28812ed --- /dev/null +++ b/ofdm/fdet_coarse.m @@ -0,0 +1,11 @@ +function [f dmod] = fdet_coarse(x, N, fs, f_off_lo, df, f_off_hi) + +f_range = (f_off_lo:df:f_off_hi); + +for k=1:lge(f_range) + x_est = exp(-j*(2*pi*f_range(k)/fs*(0:N-1)' + 0)); + dmod(k) = sum(x(1:N).*x_est); +end; +[v maxk] = max(abs(dmod)); +f = f_range(maxk); +