git-svn-id: http://moon:8086/svn/matlab/trunk@33 801c6759-fa7c-4059-a304-17956f83a07c
40 lines
732 B
Objective-C
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');
|