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

 
 
> Синхронизация Park, правильно ли я все сделал?
Ivan55
сообщение Jul 14 2017, 09:33
Сообщение #1


Местный
***

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



Добрый день!

Решил я поразбираться с синхрой по преамбуле(тренировочным символам) реализовал метод Парка, не знаю правильно или нет замоделил, подскажите если что не так.
Хочу померить MSE оценок по данной преамбуле, как это можно правильно сделать?

CODE
clear all; clc; close all;

SNR=-5:10;
N_FFT=1024;
NGI=1/4;
N_used=N_FFT/2;
N_GI=round(NGI*N_FFT);
Nofdm=N_FFT+N_GI;
Nsym = 500;

nSTOs=50;
CFO=0.4;

%% Формирование тренировочных символов
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_GI=[tx_signal_noGI(1,N_FFT-N_GI+1:N_FFT) tx_signal_noGI];
tx_signal=repmat(tx_signal_GI,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);

%%
buff = [];
for k = 1:length(SNR)
recvd_signal=awgn(y_CFO_STO, SNR(k), 'measured', 'dB');
for n = 1:Nsym
%%
Len_all=N_FFT;
recvd_signal_zeropad=[zeros(1,Len_all) recvd_signal(1,(n-1)*Nofdm+1:n*Nofdm) zeros(1,Len_all) zeros(1,Len_all)];
for d=1:length(recvd_signal_zeropad)-Len_all-1
P_Park(d)=sum(recvd_signal_zeropad(d+(1:N_FFT/2)).*fliplr(recvd_signal_zeropad(d+N_FFT/2+(1:N_FFT/2)))); %
E_Park(d)=sum(abs(recvd_signal_zeropad(d+(1:N_FFT))).^2);
Q_Park(d)=sum(conj(recvd_signal_zeropad(d+(1:N_FFT/2))).*fliplr(recvd_signal_zeropad(d+N_FFT/2+(1:N_FFT/2))));
end
Park_metric=(abs(P_Park).^2)./(E_Park).^2;
buff = [buff Park_metric];
plot(Park_metric/max(Park_metric))

[~, maxipos1]=max(Park_metric-N_GI);
t_est_Park(1,n)=Nofdm - maxipos1;
FreqOffset(1,n) = angle(Q_Park(maxipos1-N_GI+1))/pi;
end
mse_CFO(k) = sqrt(sum(abs(FreqOffset - CFO).^2)/Nsym)
mse_STO(k) = sqrt(sum(abs(t_est_Park - nSTOs).^2)/Nsym)
end


Сообщение отредактировал Ivan55 - Jul 14 2017, 09:34
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
KalashKS
сообщение Jul 14 2017, 12:37
Сообщение #2


Местный
***

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



В вашей модели у меня не получилось. Один хороший пик. В статье нарисовали два, но дальше на эту тему не наспространялись, а жаль. Сам я этот алгоритм не использовал. Все, что сложнее автокоррелятора не очень люблю, очень сложная схема получается. Может на DSP нормально можно реализовать.
ЗИ в преамбуле нужен, если она же будет использоваться для оценивания канала. В остальных случаях он скорее мешает.
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 3rd August 2025 - 19:23
Рейтинг@Mail.ru


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