clc
data_length=1000;
snr1=-20;
Pem_group=zeros(1,21);
Pegold_group=zeros(1,21);
for b=1:21
expand_length=127;
%data=zeros(1,data_length);
data=suiji(data_length);
%plot(data);
[m4,c2]=msq();
transmitdata_m=dm(data,m4);
plot(transmitdata_m);
transmit_m=mods(transmitdata_m);
check=mods(data);
%plot(transmit_m);
%plot(check);
transmitdata_gold=dm(data,c2);
transmit_gold=mods(transmitdata_gold);
%plot(transmit_gold);
transcheck=awgn_etu300(check,check,0);
%plot(transcheck);
transmit_channel=awgn_sum(transmit_m,transmit_gold,snr1);
%plot(transmit_channel);
receive_mod=zeros(1,length(transmit_channel));
for s=1:length(transmit_channel)
receive_mod(s)=transmit_channel(s).*cos(0.001*pi*s);
end
%plot(receive_mod);
%receive_m=dm(receive_mod,m4);
%plot(receive_mod);
g=length(receive_mod);
receivedata_sum=zeros(1,data_length*expand_length);
receivedata=zeros(1,data_length); %按每个比特进行检查
resultdatam=zeros(1,data_length+1);
resultdatagold=zeros(1,data_length+1);
for u=1:g/2000
if((receive_mod(u*2000-1000)>-0.5)&&(receive_mod(u*2000-1000)<0.5))
receivedata_sum(u)=0;
end
if((receive_mod(u*2000-1000)<-0.5)&&(receive_mod(u*2000-1000)>-1.5))
receivedata_sum(u)=-1;
end
if((receive_mod(u*2000-1000)>0.5)&&(receive_mod(u*2000-1000)<1.5))
receivedata_sum(u)=1;
end
if(receive_mod(u*2000-1000)>1.5)
receivedata_sum(u)=2;
end
if(receive_mod(u*2000-1000)<-1.5)
receivedata_sum(u)=-2;
end
end
plot(receivedata_sum);
%total_length=g/2000;
counter=1;
adder=0;
for k=1:length(receivedata_sum)
adder=adder+receivedata_sum(k).*c2(counter);
counter=counter+1;
if(counter==expand_length+1)
counter=1;
j=floor(k/127)+1;
resultdatagold(j)=adder/expand_length;
adder=0;
end
end
for k=1:length(receivedata_sum)
adder=adder+receivedata_sum(k).*m4(counter);
counter=counter+1;
if(counter==expand_length+1)
counter=1;
j=floor(k/127)+1;
resultdatam(j)=adder/expand_length;
adder=0;
end
end
plot(resultdatam);
for k=2:data_length+1
resultdatam(k-1)=resultdatam(k);
resultdatagold(k-1)=resultdatagold(k);
end
for t=1:data_length
d=resultdatam(t);
v=resultdatagold(t);
if(d>0.5)
resultdatam(t)=1;
end
if(d<-0.5)
resultdatam(t)=-1;
end
if(v>0.5)
resultdatagold(t)=1;
end
if(v<-0.5)
resultdatagold(t)=-1;
end
end
errorm=0;
errorgold=0;
for e=1:data_length
if(resultdatam(e)~=data(e))
errorm=errorm+1;
end
if(resultdatagold(e)~=data(e))
errorgold=errorgold+1;
end
end
Pem_group(b)=errorm/data_length;
Pegold_group(b)=errorgold/data_length;
snr1=snr1+1;
end
subplot(1,2,1);
plot(Pem_group);
subplot(1,2,2);
plot(Pegold_group);
评论0
最新资源