Synchronisation

Fermé
youssef.mahdia Messages postés 2 Date d'inscription jeudi 26 février 2009 Statut Membre Dernière intervention 22 août 2013 - 22 août 2013 à 15:52
Bonjour,

j'ai réalisé un programme sur le codage réseau analogique permettant de présenter ses performances. néanmoins, je ve tarvailler sur la synchronisation de temps, de fréquence etd e phase. j'ai pas pu le faire. kelkun pe maider svp. voici le code source :

clear,clc
Frame=1000;
N=1000;
SNR_DB=0:4:40;
SNR=10.^(SNR_DB/10);
VAR=1./SNR;
bpsk1=[-1,1];
bpsk2=[-i,i];
for m=1:length(SNR)
snr=SNR(m);
var=VAR(m);
errors(m)=0;
s1(1)=1;
s2(1)=1;
for k=1:N
h1=(randn(1,1)+i*randn(1,1));
h2=(randn(1,1)+i*randn(1,1));
c1=randint(1,(Frame-1));
c2=randint(1,(Frame-1));
c1_mod=bpsk1(c1+1);
c2_mod=bpsk2(c2+1);
nr=sqrt(var)*(randn(1,Frame)+i*randn(1,Frame));

yr(1)=h1*s1(1)+h2*s2(1)+nr(1);
for n=2:Frame

s1(n)=s1(n-1)*c1_mod(n-1);
s2(n)=s2(n-1)*c2_mod(n-1);

yr(n)=h1*s1(n)+h2*s2(n)+nr(n);
end


a_demod1=sqrt((mean(yr*yr'))/Frame);
a_demod=1/a_demod1;


n1=sqrt(var)*(randn(1,Frame)+i*randn(1,Frame));

y1=a_demod*h1*conj(yr)+n1;

for n=2:Frame
y1_demod(n)=conj(c1_mod(n-1))*y1(n-1)-y1(n);

c_mod(n-1)=(c1_mod(n-1)-c2_mod(n-1))*conj(c1_mod(n-1)-c2_mod(n-1));
end

u_det=y1*y1'/Frame-y1_demod*y1_demod'/(Frame*mean(c_mod));

if u_det>0
u_demod=sqrt(u_det);
else
u_demod=0;
end

for n=2:Frame

y1_det(1)=y1(1)-u_demod*conj(s1(1));
y1_det(n)=y1(n)-u_demod*conj(s1(n));

for x=1:2
c2_max(x)=real(y1_det(n)*conj(y1_det(n-1))*bpsk2(x));
end
b=find(c2_max==max(c2_max));
c2_demod(n-1)=bpsk2(b);
if imag(c2_demod(n-1))<0
c2_det(n-1)=0;
else
c2_det(n-1)=1;
end
errors(m)=errors(m)+(c2_det(n-1)~=c2(n-1));
end
end
ber(m)=errors(m)/(Frame*N)
end
semilogy(SNR_DB,ber,'r');
legend('ANC');
grid on;