git-svn-id: http://moon:8086/svn/matlab/trunk@29 801c6759-fa7c-4059-a304-17956f83a07c
31 lines
599 B
Matlab
31 lines
599 B
Matlab
function [omega_coarse, Xm] = fdet_coarse(x, N, Ng, omega_min, omega_step, omega_max)
|
|
|
|
Xm = zeros(N,1);
|
|
|
|
if 0
|
|
|
|
K = fix((length(x))/(N+Ng));
|
|
|
|
for k=1:K,
|
|
xp = x((k-1)*(N+Ng)+1:k*(N+Ng));
|
|
Xm = 0.5*Xm + fft(xp(Ng+1:N+Ng), N);
|
|
end
|
|
|
|
Nmax = ceil(omega_max*N)+1
|
|
[v, ii] = max(abs(Xm(1:Nmax)))
|
|
|
|
omega_coarse = (ii-1)/N;
|
|
|
|
else
|
|
|
|
omega_range = (omega_min:omega_step:omega_max);
|
|
|
|
for k=1:lge(omega_range)
|
|
x_est = exp(-j*(2*pi*omega_range(k)*(0:N-1)' + 0));
|
|
dmod(k) = sum(x(1:N).*x_est);
|
|
end;
|
|
[v maxk] = max(abs(dmod));
|
|
omega_coarse = omega_range(maxk);
|
|
|
|
end
|