soldat_shveyk 2 14 мая, 2021 Опубликовано 14 мая, 2021 · Жалоба Доброго дня! Не могу сообразить как вычислить уход частоты на приеме через угол между векторами. Заблудился в трех соснах :) Допустим есть пакет известного сигнала, который смещен по частоте. Пускай синхронизация идеальна. Беру комплексные отсчеты этого пакета и вычисляю его угол с эталонным сигналом по классике, через 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? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
looser 8 14 мая, 2021 Опубликовано 14 мая, 2021 · Жалоба fo_est=angle(dot(sig_tx,sig_rx))/pi/L*Fs; Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
soldat_shveyk 2 14 мая, 2021 Опубликовано 14 мая, 2021 · Жалоба Спасибо! То есть все-таки через арктангенс надо было :) d = dot(sig_tx,sig_rx); fo_est = atan2( imag(d), real(d) ) /pi/L*Fs Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
looser 8 14 мая, 2021 Опубликовано 14 мая, 2021 · Жалоба Немного не так. Точек L, интервалов L-1. Следовательно правильно так fo_est=angle(dot(sig_tx,sig_rx))/pi/(L-1)*Fs; Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
soldat_shveyk 2 17 мая, 2021 Опубликовано 17 мая, 2021 · Жалоба 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; Точно! Спасибо! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться