soldat_shveyk 4 May 14, 2021 Posted May 14, 2021 · Report post Доброго дня! Не могу сообразить как вычислить уход частоты на приеме через угол между векторами. Заблудился в трех соснах :) Допустим есть пакет известного сигнала, который смещен по частоте. Пускай синхронизация идеальна. Беру комплексные отсчеты этого пакета и вычисляю его угол с эталонным сигналом по классике, через 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? Quote Share this post Link to post Share on other sites More sharing options...
looser 12 May 14, 2021 Posted May 14, 2021 · Report post fo_est=angle(dot(sig_tx,sig_rx))/pi/L*Fs; Quote Share this post Link to post Share on other sites More sharing options...
soldat_shveyk 4 May 14, 2021 Posted May 14, 2021 · Report post Спасибо! То есть все-таки через арктангенс надо было :) d = dot(sig_tx,sig_rx); fo_est = atan2( imag(d), real(d) ) /pi/L*Fs Quote Share this post Link to post Share on other sites More sharing options...
looser 12 May 14, 2021 Posted May 14, 2021 · Report post Немного не так. Точек L, интервалов L-1. Следовательно правильно так fo_est=angle(dot(sig_tx,sig_rx))/pi/(L-1)*Fs; Quote Share this post Link to post Share on other sites More sharing options...
soldat_shveyk 4 May 17, 2021 Posted May 17, 2021 · Report post 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; Точно! Спасибо! Quote Share this post Link to post Share on other sites More sharing options...