|
Beek algoritm |
|
|
|
Apr 12 2016, 09:40
|
Местный
  
Группа: Участник
Сообщений: 212
Регистрация: 17-01-12
Пользователь №: 69 640

|
Цитата(KalashKS @ Apr 12 2016, 13:04)  Смотря что считать эффективностью. Можно попрововать упростить реализацию. Спасибо за ответ! я считаю под эффективностью дисперсию оценки. Рассмотрел различные варианты: модуль разности циклического префикса (СP) и его копии, квадрат разности модулей СP и его комплексно сопряженной копии, а также корреляцию и алгоритм Beek Beek дает хороший результат, но придумали его 20 лет назад! разве более эффективного(с точки зрения точности или вычислительных затрат) за 20 лет ничего не появилось? Или эта проблема исчерпала себя и ушли в использование тренировочных последовательностей и пилотов для синхры
|
|
|
|
|
Apr 12 2016, 11:16
|
Местный
  
Группа: Участник
Сообщений: 453
Регистрация: 23-07-08
Пользователь №: 39 163

|
Цитата(Ivan55 @ Apr 12 2016, 12:40)  Beek дает хороший результат, но придумали его 20 лет назад! разве более эффективного(с точки зрения точности или вычислительных затрат) за 20 лет ничего не появилось? Или эта проблема исчерпала себя и ушли в использование тренировочных последовательностей и пилотов для синхры Еще один 20-ти летний алгоритм, основанный на автокорреляции, который можно рассмотреть - метрика Schmidl-Cox: Robust frequency and timing synchronization for OFDM http://ieeexplore.ieee.org/xpl/articleDeta...arnumber=650240Я ее использовал для быстрого грубого детектирования наличия сигнала. Методы Van De Beek до сих пор продолжают развивать трудолюбивые корейцы: http://ieeexplore.ieee.org/xpl/abstractCit...mp;navigation=1Например, одна их относительно свежих (2008) статей http://ieeexplore.ieee.org/xpl/articleDeta...rnumber=4678083
Сообщение отредактировал andyp - Apr 12 2016, 14:03
|
|
|
|
|
Apr 13 2016, 18:45
|
Местный
  
Группа: Участник
Сообщений: 453
Регистрация: 23-07-08
Пользователь №: 39 163

|
Цитата(Ivan55 @ Apr 13 2016, 19:31)  andyp, спасибо за полезную информацию, кстати возник вопрос тоже рассматривал алгоритм SCA но ее метрика имеет неудобную форму, как вы по ней определяли начало полезной части символа? знаю что берут производную от метрики и там где идет плоская область производная близка к нулю, но при наличии шумов АБГШ там появляются искажения... как вы определяли? Буду благодарен за помощь в этом вопросе Я этот обнаружитель несколько не по прямому назначению использовал  - использовал с него грубую оценку частотного сдвига и собственно сам факт детекции периодического в моем случае сигнала. После него делал частотную коррекцию и искал известную преамбулу обычным согласованным фильтром вокруг позиции, найденной SCА. Плюсы этого подхода -Робастность SCA к многолучевости канала -Это позволило сузить область неопределенности и вычислительные затраты при поиске. -Улучшило статистику на выходе СФ, так как грубая оценка частотного сдвига у меня была до поиска СФ. -Метрика SC не зависит от мощности сигнала на входе, что тоже удобно. Точно оценивать временное положение сигнала с помощью SCA я бы не стал - там реально производная метрики по задержке в районе максимума маленькая, так что минимальный шум будет приводить к большой дисперсии оценки временного положения. PS Кстати, анализ показывает, что метрика Van De Beek примерно также плоха, как и SCA в случае, если мощность принимаемого сигнала постоянна - в обоих случаях задача сводится к поиску максимума модуля корреляции двух повторяющихся кусков сигнала.
Сообщение отредактировал andyp - Apr 13 2016, 18:57
|
|
|
|
|
May 5 2016, 05:37
|
Местный
  
Группа: Участник
Сообщений: 212
Регистрация: 17-01-12
Пользователь №: 69 640

|
Всем доброго дня! Нашел одну интересную статью
wen2008__1_.pdf ( 710.07 килобайт )
Кол-во скачиваний: 115результат впечатляет, осталось тока понять что они делали  кто может помочь? попытался реализовать не получилось, смысл понял так что они делят символ на блоки по 16 отсчетов и эти блоки коррелируют формула (7). Может в формуле чего то нехватает, например непонятно что за m=1,2,... и в знаменателе второй корень почемуто без +N
|
|
|
|
|
May 5 2016, 08:38
|
Местный
  
Группа: Участник
Сообщений: 453
Регистрация: 23-07-08
Пользователь №: 39 163

|
Цитата(Ivan55 @ May 5 2016, 08:37)  Всем доброго дня! Нашел одну интересную статью
wen2008__1_.pdf ( 710.07 килобайт )
Кол-во скачиваний: 115результат впечатляет, осталось тока понять что они делали  кто может помочь? попытался реализовать не получилось, смысл понял так что они делят символ на блоки по 16 отсчетов и эти блоки коррелируют формула (7). Может в формуле чего то нехватает, например непонятно что за m=1,2,... и в знаменателе второй корень почемуто без +N Под корнем автор N похоже забыл. С помощью m=1,2,... автор попытался математическим языком выразить, сколько блочных корреляционных коэффициентов у него получается. Ну т.е. если разбить область его область поиска на блоки размером B (пусть N, L делится на B нацело), то у него всего (2N+L)/B блоков. Автор коррелирует блок с номером m с блоком с номером m+N/B. Итого у него получится (N+L)/B корр. коэффициентов.
|
|
|
|
|
May 5 2016, 09:09
|
Местный
  
Группа: Участник
Сообщений: 212
Регистрация: 17-01-12
Пользователь №: 69 640

|
Цитата(andyp @ May 5 2016, 12:38)  Под корнем автор N похоже забыл. С помощью m=1,2,... автор попытался математическим языком выразить, сколько блочных корреляционных коэффициентов у него получается. Ну т.е. если разбить область его область поиска на блоки размером B (пусть N, L делится на B нацело), то у него всего (2N+L)/B блоков. Автор коррелирует блок с номером m с блоком с номером m+N/B. Итого у него получится (N+L)/B корр. коэффициентов. Ну вот смотрите я тут накидал код Код clear all; close all; clc;
%% Параметры модели B = 16; Nfft = 1024; Ng = Nfft/4; Nofdm = Ng+Nfft; % Параметры OFDM сигнала nCar = 312; Nbps = 4; M = 2^Nbps; Nsym = 30; % Колличество генерируемых OFDM символов H_QAM4=modem.qammod('M',M,'PhaseOffset', 0, 'SymbolOrder',... 'binary', 'InputType', 'bit'); Es = 1; A = (3/2/(M-1)*Es);
%% Формируем N символов OFDM сигнала tx = [];
fft_in = complex(zeros(Nfft,Nsym),zeros(Nfft,Nsym)); QAM = zeros(Nsym,nCar); In_Data = randi([0 1],Nsym,nCar*log2(M)); QAM = A*modulate(H_QAM4, In_Data'); fft_in(1:nCar/2,:) = QAM(1:nCar/2,:); fft_in(end-nCar/2+1:end,:) = QAM(nCar/2+1:end,:); fft_out = ifft(fft_in); tx = [fft_out(end-Ng+1:end,:); fft_out]'; tx = reshape(tx', 1, Nsym*Nofdm);
sig=awgn(tx, 20, 'measured', 'dB'); BuffObserv = zeros(1, 2*Nfft+Ng);
buff1 = zeros(1,length(sig)-Nofdm); P = []; for num = 1:floor(length(sig)/(2*Nfft+Ng)) BuffObserv = sig(1, (num-1)*(2*Nfft+Ng)+1:num*(2*Nfft+Ng)); for d = 0:(Nfft+Ng)/B-1 corr(d+1) = sum(BuffObserv(d*B+(1:B)).*conj(BuffObserv(d*B+(1:B)+Nfft))); energ(d+1) = sqrt(sum(abs(BuffObserv(d*B+(1:B)).^2))).*sqrt(sum(abs(BuffObserv(d*B+(1:B)+Nfft).^2))); end P = [P abs(corr./energ)]; end
plot(abs(P)); Правильно ли я реализовал то о чем там говорится?
|
|
|
|
|
May 5 2016, 09:19
|
Местный
  
Группа: Участник
Сообщений: 453
Регистрация: 23-07-08
Пользователь №: 39 163

|
Цитата(Ivan55 @ May 5 2016, 12:09)  Правильно ли я реализовал то о чем там говорится? Да вроде похоже на правду - короткие (длиной в guard) места с высокой корреляцией, а между ними мусор.
|
|
|
|
|
May 5 2016, 09:30
|
Местный
  
Группа: Участник
Сообщений: 212
Регистрация: 17-01-12
Пользователь №: 69 640

|
Цитата(andyp @ May 5 2016, 13:19)  Да вроде похоже на правду - короткие (длиной в guard) места с высокой корреляцией, а между ними мусор. тогда есть несколько вопросов: 1. почему через каждые три идет широкий пик? 2. как определять начало символьного интервала?
Сообщение отредактировал Ivan55 - May 5 2016, 09:34
|
|
|
|
|
May 5 2016, 09:48
|
Местный
  
Группа: Участник
Сообщений: 453
Регистрация: 23-07-08
Пользователь №: 39 163

|
Цитата(Ivan55 @ May 5 2016, 12:30)  тогда есть несколько вопросов: 1. почему через каждые три идет широкий пик? 2. как определять начало символьного интервала? 1. Видимо, надо блоки (те что Observation Interval называются) с перекрытием Nfft брать. 2. Сравнивать с порогом если охота с точностью до длины блока, ну или по нескольким блокам усреднять, как авторы советуют, а потом сравнивать с порогом.
|
|
|
|
|
May 5 2016, 11:16
|
Местный
  
Группа: Участник
Сообщений: 212
Регистрация: 17-01-12
Пользователь №: 69 640

|
Цитата(andyp @ May 5 2016, 13:48)  2. Сравнивать с порогом если охота с точностью до длины блока, ну или по нескольким блокам усреднять, как авторы советуют, а потом сравнивать с порогом. т.е. точность оценки будет равна длинне блока? если блок равен 16 то с точностью 16 отсчетов?
|
|
|
|
|
May 5 2016, 11:36
|
Местный
  
Группа: Участник
Сообщений: 453
Регистрация: 23-07-08
Пользователь №: 39 163

|
Цитата(Ivan55 @ May 5 2016, 14:16)  т.е. точность оценки будет равна длинне блока? если блок равен 16 то с точностью 16 отсчетов? Так в статье написано. Между блоками оценок корреляции нет.
|
|
|
|
|
May 5 2016, 11:41
|
Местный
  
Группа: Участник
Сообщений: 212
Регистрация: 17-01-12
Пользователь №: 69 640

|
Цитата(andyp @ May 5 2016, 15:36)  Так в статье написано. Между блоками оценок корреляции нет. хм... странно, к чему тогда рисунок 6 в статье?
|
|
|
|
|
May 5 2016, 11:52
|
Местный
  
Группа: Участник
Сообщений: 453
Регистрация: 23-07-08
Пользователь №: 39 163

|
Цитата(Ivan55 @ May 5 2016, 14:41)  хм... странно, к чему тогда рисунок 6 в статье? Понятия не имею. Оценка корреляции получается одна на блок B. О том, где закоррелировало можно судить с точностью до плюс-минус B/2. PS Картинка от работы скрипта в приложении.
Сообщение отредактировал andyp - May 5 2016, 11:54
Эскизы прикрепленных изображений
|
|
|
|
|
May 5 2016, 12:27
|
Местный
  
Группа: Участник
Сообщений: 212
Регистрация: 17-01-12
Пользователь №: 69 640

|
Цитата(serjj @ May 5 2016, 15:46)  Если нетрудно, киньте пару графиков, которые строит ваш скрипт, для примера. Не у всех есть matlab/communication toolbox. Было бы любопытно глянуть. И, забегая вперёд, как это будет работать, если а) добавить допплер и б) канал? при доплере и канале тоже будет работать вот для плохого канала по ITU-R F.1487 сдвиг времени на 100 отсчетов, уход времени из за нестабильности генератора ~2,5 отсчета/сек и сдвиг частоты на 30% между поднесущими
на скока хорошо, надо смотреть) пока непонятно как вообще это использовать вот для среднего канала при тех же условиях тока длину блока сделал B=32
а вот плохой канал для B=64
Сообщение отредактировал Ivan55 - May 5 2016, 12:08
Эскизы прикрепленных изображений
|
|
|
|
|
Dec 1 2016, 12:08
|
Местный
  
Группа: Участник
Сообщений: 212
Регистрация: 17-01-12
Пользователь №: 69 640

|
Цитата(KalashKS @ Dec 1 2016, 13:45)  Большого смысла оценивать ОСШ нет, кроме того алгоритм работает первым и информацию брать практически неоткуда. Удобно задать ОСШ бесконечным и получить точность временной синхронизации близкую к оптимальной с некоторым ухудшением при низких реальных ОСШ. Точность оценки частоты от ошибки по времени зависит слабо и оценка ОСШ на нее почти не влияет. да не могу понять почему созвездие сильно поворачивается. Сделал Beekа усреднил по 50ти символам, оценил время частоту, время держит четко частоту (нормированную на растояние между поднесущими) оценил с точностью 10^-4. Это в AWGN канале с фиксированым смещением времени на 200ти отсчетов и смещением частоты на 0,3 (величина нормирована на растояние между поднесущими), SNR в канале задал равным 20. Результат такой что он захватил но созвездие балтается, т.е. поворачивается из стороны в сторону, иногда доходит до того что угол этого поворота составляет 45градусов
Сообщение отредактировал Ivan55 - Dec 1 2016, 12:08
|
|
|
|
|
Dec 1 2016, 12:43
|
Местный
  
Группа: Участник
Сообщений: 212
Регистрация: 17-01-12
Пользователь №: 69 640

|
Цитата(KalashKS @ Dec 1 2016, 15:32)  Реализованный алгоритм следит за частотой, а не за фазой. Фаза будет гулять, и ее нужно выправлять дальше. Если передача потоковая, то с этим справится эквалайзер. Если пакетная - нужна ФАП. 1. Т.е. на данном этапе синхронизации такие колебания нормальны? вследствии того что фаза болтается 2. Да передача потоковая. Эквалайзер получается просто по пилотам оценит фазовую характеристику и повернет, так?
|
|
|
|
|
Dec 1 2016, 12:56
|
Местный
  
Группа: Участник
Сообщений: 212
Регистрация: 17-01-12
Пользователь №: 69 640

|
Цитата(KalashKS @ Dec 1 2016, 15:52)  Да. Главное, чтобы колебания фазы на интервале оценивания канала были незначительными. это сколько?
|
|
|
|
|
Dec 1 2016, 13:05
|
Местный
  
Группа: Участник
Сообщений: 236
Регистрация: 7-02-11
Пользователь №: 62 755

|
Цитата(Ivan55 @ Dec 1 2016, 15:56)  это сколько? Настолько, чтобы оценку канала не смазать. Будет зависеть от используемой модуляции. Точных оценок не делал, на глаз - плюс-минус пять градусов. Как добавите эквалайзер, сами увидите, сколько потребуется.
|
|
|
|
|
Dec 1 2016, 13:22
|
Местный
  
Группа: Участник
Сообщений: 212
Регистрация: 17-01-12
Пользователь №: 69 640

|
Цитата(KalashKS @ Dec 1 2016, 16:10)  Пилоты для оценивания канала как размещены? вот так
по частоте через восемь поднесущих, с каждым последующим символом сдвигаясь на одну, т.е. давольно таки часто)
|
|
|
|
|
Dec 3 2016, 06:28
|

Частый гость
 
Группа: Свой
Сообщений: 95
Регистрация: 27-07-11
Из: Зеленоград
Пользователь №: 66 439

|
Цитата(Ivan55 @ Dec 1 2016, 15:08)  Результат такой что он захватил но созвездие балтается, т.е. поворачивается из стороны в сторону, иногда доходит до того что угол этого поворота составляет 45градусов Чем меньше длина автокорреляции, тем грубее будет определение частотного смещения (CFO). Я бы пилот-тоны передавал во всех символах, иначе, боюсь, что оценка фазового смещения (CPO) будет некорректна для последующих 2-х символов без пилотов.
--------------------
Суббота начинается в понедельник
|
|
|
|
|
Dec 5 2016, 08:26
|
Местный
  
Группа: Участник
Сообщений: 212
Регистрация: 17-01-12
Пользователь №: 69 640

|
Цитата(quato_a @ Dec 3 2016, 09:28)  Чем меньше длина автокорреляции, тем грубее будет определение частотного смещения (CFO). Я бы пилот-тоны передавал во всех символах, иначе, боюсь, что оценка фазового смещения (CPO) будет некорректна для последующих 2-х символов без пилотов.  Длин префикса бесконечной быть не может, поэтому и корреляция такая какая получилась А пилоты у меня и стоят в каждом символе
|
|
|
|
|
Dec 5 2016, 16:42
|

Частый гость
 
Группа: Свой
Сообщений: 95
Регистрация: 27-07-11
Из: Зеленоград
Пользователь №: 66 439

|
Цитата(Ivan55 @ Dec 5 2016, 11:26)  Длин префикса бесконечной быть не может, поэтому и корреляция такая какая получилась Вот поэтому я использую преамбулу
--------------------
Суббота начинается в понедельник
|
|
|
|
|
Dec 6 2016, 13:44
|

Частый гость
 
Группа: Свой
Сообщений: 95
Регистрация: 27-07-11
Из: Зеленоград
Пользователь №: 66 439

|
Цитата(Ivan55 @ Dec 6 2016, 12:44)  что за преамбула? http://sdsu-dspace.calstate.edu/bitstream/....pdf?sequence=1стр.18 Long Preamble
--------------------
Суббота начинается в понедельник
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|