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

 
 
2 страниц V  < 1 2  
Reply to this topicStart new topic
> Синхра по методу Park
Ivan55
сообщение Dec 15 2016, 19:20
Сообщение #16


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

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



Цитата(Ivan55 @ Dec 14 2016, 19:18) *
кто знает как в методе 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 Текстовая версия Сейчас: 22nd July 2017 - 02:52
Рейтинг@Mail.ru


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