synchronisation codage analogique
bonjour,
j'ai réalisé un programme sur le codage réseau analogique permettant de présenter ses performances. Néanmoins, je veux travailler sur la synchronisation de temps, de fréquence et de phase. Je n'ai pas pu le faire. Quelqu'un peut m'aider svp ?
Voici le code source :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78
| 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; |