SNR=10;
bits=2048;
a1=randint(bits,1);
t = poly2trellis([5 4],[23 35 0; 0 5 13]);
a2=convenc(a1,t);
a3=pskmod(a2,4);
bit2=length(a3);
a41=reshape(a3,bit2/512,512);
for i=1:bit2/512
a4(i,
=ifft(a41(i,
,512);
a5(i,
=[a4(i,end-512/4+1:end) a4(i,
];%cyclic prefix
end
s=a5;
Ray1=raylrnd(0.6,1,640);
Log1=lognrnd(0.5,0.5,1,640);
Ray2=raylrnd(0.6,1,640);
Log2=lognrnd(0.5,0.5,1,640);
Ray3=raylrnd(0.6,1,640);
Log3=lognrnd(0.5,0.5,1,640);
Ray4=raylrnd(0.6,1,640);
Log4=lognrnd(0.5,0.5,1,640);
h0=Ray1+Log1;
h1=Ray2+Log2;
h2=Ray3+Log3;
h3=Ray4+Log4;
for line=1:2:bit2/512
r1(line,
=h0.*s(line,
+h1.*s(line+1,
;
r1(line+1,
=h2.*s(line,
+h3.*s(line+1,
;
r2(line,
=-h0.*s(line,
+h1.*s(line+1,
;
r2(line+1,
=-h2.*s(line,
+h3.*s(line+1,
;
end
r11=awgn(r1,SNR,'measured');
r22=awgn(r2,SNR,'measured');
for i=1:2:bit2/512
rec(i,
=r11(i,
;
rec(i+1,
=r22(i+1,
;
end
for i=1:bit2/512
b1(i,
=[rec(i,end-512/4:end) rec(i,
];
b2(i,
=fft(b1(i,
,512);
end
b3=pskdemod(b2,4);
b4=reshape(b3.',1,bit2);
tb=3;
b5=vitdec(b4,t,tb,'trunc','hard');
b5=b5.';
BitErrors=sum(b5~=a1)
rate=BitErrors/length(a1)
plot(SNR,rate)
That's my code with BER 50%(~2%)