- come and go
git-svn-id: http://moon:8086/svn/matlab/trunk@33 801c6759-fa7c-4059-a304-17956f83a07c
This commit is contained in:
@@ -0,0 +1,39 @@
|
||||
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');
|
||||
Reference in New Issue
Block a user