MATLAB: Is this matlab code of 8psk ?

8psk code

l=100000; %L length of si the input one dimension array
nni=randn(1,l);%generate L by L array of random scalare
si=randsrc(1,l,[+1,-1;.5,.5]);%generate 1 by L array of -1&+1
snr=[0:15];
for i=1:16
errorcounter=0;
stdn=sqrt(10^(-snr(i)/10))
ni=nni*stdn;% ni is 1 by L dimension
for m=1:l
ri(m)=ni(m)+si(m);
if ri(m)>0
sdi(m)=1;
elseif ri(m)<=0
sdi(m)=-1;
end
if sdi(m)~=si(m)
errorcounter=errorcounter+1;
end
end
ber(i)=errorcounter/l
end
semilogy(snr,ber,'r','LineWidth',2)
xlabel('snr db');ylabel('ber');grid;

Best Answer

No. As far as I can tell, this code is BPSK, not 8PSK. Also, there are several mistakes in the code.