реклама на сайте
подробности

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> Синхра по методу Park
Ivan55
сообщение Nov 2 2016, 04:53
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 185
Регистрация: 17-01-12
Пользователь №: 69 640



Добрый день! Кто знаком с синхрой ОФДМ по тренировочной последовательности Park?

Я написал код но он выдает ерунду, в графике метрики нету явно выраженного пика, как по теории... подскажите что я делаю не так
CODE
clear all; clc; close all;
%choose SNR level in dB
SNR=100;
%choose FFT length
N_FFT=1024;
%choose guard interval length as a percentage of N_FFT
NGI=1/4;
%choose number of used carriers
N_used=N_FFT/2;
N_GI=round(NGI*N_FFT);
N=N_FFT+N_GI;
Nsym = 100;
%frequency offset
nSTOs=-100;
CFO=0;

%% preamble Minn
B=4;
reS=(-1).^round(rand(1,round(N_FFT/B)));
imS=(-1).^round(rand(1,round(N_FFT/B)));
s1=reS+1i.*imS;
s2=fliplr(s1);
tx_signal_noGI=[s1 s2 conj(s1) conj(s2)];
%tx_signal=[tx_signal_noGI(:,N_FFT-N_GI+1:N_FFT) tx_signal_noGI];
tx_signal=tx_signal_noGI;
N=N_FFT+N_GI;
%% Time and frequency shift signal
if nSTOs>=0, y_STO=[tx_signal(1,nSTOs+1:end) zeros(1,nSTOs)];
else
y_STO=[zeros(1,-nSTOs) tx_signal(1,1:end+nSTOs)];
end
nn=0:length(y_STO)-1; y_CFO_STO = y_STO.*exp(j*2*pi*CFO*nn/N_FFT);

%% AWGN channel
recvd_signal=awgn(y_CFO_STO, SNR, 'measured', 'dB');
%% Minn
Len_all=N_FFT; %N_FFT or length(recvd_signal);
recvd_signal_zeropad=[zeros(1,Len_all) recvd_signal zeros(1,Len_all) zeros(1,Len_all)];
for d=1:2*Len_all+Len_all/2+1,
P_Park(d)=sum((recvd_signal_zeropad(d:d+Len_all/4)).*fliplr(recvd_signal_zeropad(d+Len_all/4:d+Len_all/2)));
E_Park(d)=sum(abs(recvd_signal_zeropad(d:d+Len_all/2)).^2);
end;
Park_metric=(abs(P_Park).^2)./(E_Park).^2;
plot(Park_metric)
%timing estimation is
[~, maxipos1]=max(Park_metric);
t_est_Park=maxipos1-Len_all;


Сообщение отредактировал Ivan55 - Nov 2 2016, 05:11
Go to the top of the page
 
+Quote Post
quato_a
сообщение Nov 2 2016, 06:48
Сообщение #2


Участник
*

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



Как я понимаю, маппером должена быть сформировна преамбула в частотной области с наличием только четных поднесущих. Таким образом, после ifft во временой области получим символ с 2-мя повторяющимися частями [A B A B]. Затем уже преобразовать его в [A B -B* A*].


--------------------
Суббота начинается в понедельник
Go to the top of the page
 
+Quote Post
KalashKS
сообщение Nov 2 2016, 08:45
Сообщение #3


Частый гость
**

Группа: Участник
Сообщений: 176
Регистрация: 7-02-11
Пользователь №: 62 755



CODE
for d=1:2*Len_all+Len_all/2+1,
P_Park(d)=sum(recvd_signal_zeropad(d+(1:Len_all/2)).*fliplr(recvd_signal_zeropad(d+Len_all/2+(1:Len_all/2))));
E_Park(d)=sum(abs(recvd_signal_zeropad(d+(1:Len_all))).^2);
end;
Go to the top of the page
 
+Quote Post
Ivan55
сообщение Nov 2 2016, 09:33
Сообщение #4


Частый гость
**

Группа: Участник
Сообщений: 185
Регистрация: 17-01-12
Пользователь №: 69 640



Цитата(KalashKS @ Nov 2 2016, 11:45) *
CODE
for d=1:2*Len_all+Len_all/2+1,
P_Park(d)=sum(recvd_signal_zeropad(d+(1:Len_all/2)).*fliplr(recvd_signal_zeropad(d+Len_all/2+(1:Len_all/2))));
E_Park(d)=sum(abs(recvd_signal_zeropad(d+(1:Len_all))).^2);
end;

Спасибо! Что то получилось) тока for d=1:2*Len_all+1 лишняя Len_all/2
Go to the top of the page
 
+Quote Post
Ivan55
сообщение Nov 23 2016, 08:03
Сообщение #5


Частый гость
**

Группа: Участник
Сообщений: 185
Регистрация: 17-01-12
Пользователь №: 69 640



Добрый день всем! Подскажите пожалуйста как правильно измерить СКО оценки в многолучевом канале? например двух лучевом

Сообщение отредактировал Ivan55 - Nov 23 2016, 08:36
Go to the top of the page
 
+Quote Post
KalashKS
сообщение Nov 23 2016, 08:11
Сообщение #6


Частый гость
**

Группа: Участник
Сообщений: 176
Регистрация: 7-02-11
Пользователь №: 62 755



Цитата(Ivan55 @ Nov 23 2016, 11:03) *
Добрый день всем! Подскажите пожалуйста как правильно измерить СКО оценки в многолучевом канале? например двух лучевой

СКО оценки чего, если не секрет?
Go to the top of the page
 
+Quote Post
Ivan55
сообщение Nov 23 2016, 08:16
Сообщение #7


Частый гость
**

Группа: Участник
Сообщений: 185
Регистрация: 17-01-12
Пользователь №: 69 640



Цитата(KalashKS @ Nov 23 2016, 11:11) *
СКО оценки чего, если не секрет?

СКО оценки начала OFDM символа, т.е. временная синхра, нужно оценить ее эффективность в многолучевом канале

Сообщение отредактировал Ivan55 - Nov 23 2016, 08:22
Go to the top of the page
 
+Quote Post
KalashKS
сообщение Nov 23 2016, 09:38
Сообщение #8


Частый гость
**

Группа: Участник
Сообщений: 176
Регистрация: 7-02-11
Пользователь №: 62 755



Если оценивать только моделированием, то нужно обеспечить достаточный набор реализаций, чтобы учесть случайный характер канала.
Если нужна аналитическая оценка, то точно не подскажу. Можно попробовать оценить СКО для канала с АГБШ, а потом доучесть помехи по боковым лепесткам от побочных пиков как дополнительную дисперсию шума.

Сообщение отредактировал KalashKS - Nov 23 2016, 09:38
Go to the top of the page
 
+Quote Post
Ivan55
сообщение Nov 23 2016, 10:01
Сообщение #9


Частый гость
**

Группа: Участник
Сообщений: 185
Регистрация: 17-01-12
Пользователь №: 69 640



Цитата(KalashKS @ Nov 23 2016, 12:38) *
а потом доучесть помехи по боковым лепесткам от побочных пиков как дополнительную дисперсию шума.

вот я тоже про это думаю, а как это сделать чет не соображу

к примеру у нас есть два луча сигнал переходит с луча на луч и время начала символа соответсвено скачет в зависимости от того какой щас луч преобладает
Получается что измеряется СКО оценки+ СКО перехода с луча на луч, но ведь это не корректно... прием ведь мы ведем по тому лучу который щас преобладает
Go to the top of the page
 
+Quote Post
petrov
сообщение Nov 23 2016, 10:48
Сообщение #10


Профессионал
*****

Группа: Свой
Сообщений: 1 989
Регистрация: 21-10-04
Из: Balakhna
Пользователь №: 937



Цитата(Ivan55 @ Nov 23 2016, 13:01) *
к примеру у нас есть два луча сигнал переходит с луча на луч и время начала символа соответсвено скачет в зависимости от того какой щас луч преобладает
Получается что измеряется СКО оценки+ СКО перехода с луча на луч, но ведь это не корректно... прием ведь мы ведем по тому лучу который щас преобладает


Не ведём, не должно ничего скакать, канал никогда резко не меняется, никаких привязок к преобладающим лучам.
Go to the top of the page
 
+Quote Post
Ivan55
сообщение Nov 23 2016, 10:53
Сообщение #11


Частый гость
**

Группа: Участник
Сообщений: 185
Регистрация: 17-01-12
Пользователь №: 69 640



Цитата(petrov @ Nov 23 2016, 13:48) *
Не ведём, не должно ничего скакать, канал никогда резко не меняется, никаких привязок к преобладающим лучам.


ну да резко он не меняется, но вот максимум метрики меняется резко, т.е. в 2х лучевом метрика имеет два пика, по максимуму определяют начало символа, эти два пика медленно плавают по амплитуде и то один становится максимальным то другой... таким образом у меня максимум то 100 отсчет то 196 отсчет, СКО уже под сотню получается
плавности нету, например 100 101 102 ... и уплыл на 196

Сообщение отредактировал Ivan55 - Nov 23 2016, 10:54
Go to the top of the page
 
+Quote Post
petrov
сообщение Nov 23 2016, 11:18
Сообщение #12


Профессионал
*****

Группа: Свой
Сообщений: 1 989
Регистрация: 21-10-04
Из: Balakhna
Пользователь №: 937



Цитата(Ivan55 @ Nov 23 2016, 13:53) *
ну да резко он не меняется, но вот максимум метрики меняется резко, т.е. в 2х лучевом метрика имеет два пика, по максимуму определяют начало символа, эти два пика медленно плавают по амплитуде и то один становится максимальным то другой... таким образом у меня максимум то 100 отсчет то 196 отсчет, СКО уже под сотню получается
плавности нету, например 100 101 102 ... и уплыл на 196


Синхра негодная. ИМХО
Go to the top of the page
 
+Quote Post
Ivan55
сообщение Nov 23 2016, 11:20
Сообщение #13


Частый гость
**

Группа: Участник
Сообщений: 185
Регистрация: 17-01-12
Пользователь №: 69 640



Цитата(petrov @ Nov 23 2016, 14:18) *
Синхра негодная. ИМХО

да все они не айс))))))))
Go to the top of the page
 
+Quote Post
petrov
сообщение Nov 23 2016, 11:34
Сообщение #14


Профессионал
*****

Группа: Свой
Сообщений: 1 989
Регистрация: 21-10-04
Из: Balakhna
Пользователь №: 937



Цитата(Ivan55 @ Nov 23 2016, 14:20) *
да все они не айс))))))))


Берите центр масс, в многолучёвом канале нет смысла в какой-то точной синхронизации по какому-то лучу, важно чтобы не скакало и все наложения символов оставались в пределах циклического префикса.
Go to the top of the page
 
+Quote Post
Ivan55
сообщение Dec 14 2016, 15:18
Сообщение #15


Частый гость
**

Группа: Участник
Сообщений: 185
Регистрация: 17-01-12
Пользователь №: 69 640



кто знает как в методе Parka правильно делается оценка сдвига частоты

вот мой код:
CODE
clear all; clc; close all;

%choose SNR level in dB
SNR=50:50;
%choose FFT length
N_FFT=1024;
%choose guard interval length as a percentage of N_FFT
NGI=1/4;
%choose number of used carriers
N_used=N_FFT/2;
N_GI=round(NGI*N_FFT);
Nofdm=N_FFT+N_GI;
Nsym = 100;
%frequency offset
nSTOs=0;
CFO=0.4;

%% preamble Park
B=2;
reS=(-1).^round(rand(1,round(N_used/B)));
imS=1i.*(-1).^round(rand(1,round(N_used/B)));
s1=reS+imS;
s2=fliplr(s1);
tx_signal_noGI=[s1 s2 conj(s1) conj(s2)];
tx_signal = zeros(1,Nsym*N_FFT);
tx_signal=repmat(tx_signal_noGI,1,Nsym);

%%
if nSTOs>=0, y_STO=[tx_signal(1,nSTOs+1:end) zeros(1,nSTOs)];
else
y_STO=[zeros(1,-nSTOs) tx_signal(1,1:end+nSTOs)];
end

nn=0:length(y_STO)-1; y_CFO_STO = y_STO.*exp(1i*2*pi*CFO*nn/N_FFT);

%% AWGN channel
for k = 1:length(SNR)
recvd_signal=awgn(y_CFO_STO, SNR(k), 'measured', 'dB');
for n = 1:Nsym
%% Minn
Len_all=N_FFT; %N_FFT or length(recvd_signal);
recvd_signal_zeropad=[zeros(1,Len_all) recvd_signal(1,(n-1)*Len_all+1:n*Len_all) zeros(1,Len_all) zeros(1,Len_all)];
for d=1:2*Len_all+1
P_Park(d)=sum(recvd_signal_zeropad(d+(1:Len_all/2)).*fliplr(recvd_signal_zeropad(d+Len_all/2+(1:Len_all/2))));
E_Park(d)=sum(abs(recvd_signal_zeropad(d+(1:Len_all))).^2);
Q_Park(d)=sum(conj(recvd_signal_zeropad(d+(1:Len_all/2))).*(recvd_signal_zeropad(d+Len_all/2+(1:Len_all/2))));
end
Park_metric=(abs(P_Park).^2)./(E_Park).^2;
plot(Park_metric/max(Park_metric))
%timing estimation is
[~, maxipos1]=max(Park_metric);
t_est_Park(1,n)=Len_all - maxipos1;
FreqOffset = angle(Q_Park(maxipos1))/pi;
end
end


считается корреляция
Q_Park(d)=sum(conj(recvd_signal_zeropad(d+(1:Len_all/2))).*(recvd_signal_zeropad(d+Len_all/2+(1:Len_all/2))));

и берется фаза в точке максимума Park_metric=(abs(P_Park).^2)./(E_Park).^2; следующим образом FreqOffset = angle(Q_Park(maxipos1))/pi;
но выдает почему то ерунду, фаза по всем точка и близко не подходит под заданное CFO=0.4;

причем в формуле Q_Park(d) в разных источниках пишут по разному то (1:Len_all/2) там то (1:Len_all/4) но правильного результата что то что это не дает
Go to the top of the page
 
+Quote Post

2 страниц V   1 2 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 17th January 2017 - 21:19
Рейтинг@Mail.ru


Страница сгенерированна за 0.01479 секунд с 7
ELECTRONIX ©2004-2016