Files
matlab/ofdm/cfo_fine_eval.m
T
jens 792f9c50f8 - come and go
git-svn-id: http://moon:8086/svn/matlab/trunk@33 801c6759-fa7c-4059-a304-17956f83a07c
2015-04-19 18:47:46 +00:00

40 lines
732 B
Objective-C

function cfo_fine_eval(f, kn)
Kdown = 4;
fs = 48000/Kdown;
N = 1024/Kdown;
K = 100;
n = (0:K*N-1)';
phi = pi/2;
x = cos(f/fs*2*pi.*n + phi) + kn*randn(K*N, 1);
Xlast = [];
phi_x_ = [];
phi_z_ = [];
Zm = ones(N, 1);
for k=1:K-1,
xp = x((k-1)*N+1:k*N);
X = fft(xp);
if (~isempty(Xlast))
Z = Xlast .* conj(X);
[v, bin] = max(abs(Z(1:N/2)));
phi_x_ = [phi_x_ 0.5*angle(X(bin))/pi/N*fs];
phi_z_ = [phi_z_ 0.5*angle(Z(bin))/pi/N*fs];
end
Xlast = X;
end
df = -mean(phi_z_)
f_est = (bin-1)/N*fs + df
figure(1)
plot(abs(Z)); grid;
figure(2)
plot(phi_x_); grid; ylabel('phi_x');
figure(3)
plot((bin-1)/N*fs - phi_z_); grid; ylabel('d_f');