Jump to content
    

Определение ухода частоты через угол между векторами

Доброго дня! 

Не могу сообразить как вычислить уход частоты на приеме через угол между векторами. Заблудился в трех соснах :
Допустим есть пакет известного сигнала, который смещен по частоте. Пускай синхронизация идеальна. 
Беру комплексные отсчеты этого пакета и вычисляю его угол с эталонным сигналом по классике, через cos^-1. 

acos(dot(rx,tx) / (norm(rx)*norm(tx)))

Получаю комплексное число. Как из этого числа получить уход частоты сигнала? 

Допустим, частота дискретизации 100 кГц, а частота сдвига 10 Гц:

 

L = 1024;

Fs = 100000;

bits = randi([0 1], 1, L);
sig_tx = bits*2 - 1; % NRZ code

% Freq offset at receiver
Foffs = 10;
sig_rx = sig_tx.*exp(j*2*pi*(Foffs/Fs)*(0:L-1));

% estimate angle between tx and rx
phi = acos(dot(sig_tx,sig_rx)/(norm(sig_tx)*norm(sig_rx)))

Что как теперь из phi (комплексное число) найти Foffs?  

Share this post


Link to post
Share on other sites

Спасибо! 
То есть все-таки через арктангенс надо было :)

d = dot(sig_tx,sig_rx); 
fo_est = atan2( imag(d), real(d) ) /pi/L*Fs 

Share this post


Link to post
Share on other sites

Немного не так. Точек L, интервалов L-1.

Следовательно правильно так fo_est=angle(dot(sig_tx,sig_rx))/pi/(L-1)*Fs;

Share this post


Link to post
Share on other sites

On 5/14/2021 at 8:29 PM, looser said:

Немного не так. Точек L, интервалов L-1.

Следовательно правильно так fo_est=angle(dot(sig_tx,sig_rx))/pi/(L-1)*Fs;

Точно! Спасибо!

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...