clear
K_user=1;
uu=1;
Nc=320;
multipath=3; %mc-ds-cdma的多径为1
M=3;
rice_K=sqrt(1-1/M)/(1-sqrt(1-1/M));
SGMA=1; %the variance of noise N0
G=32;
sep=Nc/G;
numbits= 2*sep;
fcar=2.4e9;
w=129e6;
%fs=w/(Nc*2);
%ts=(Nc+1)/w;
ts=1e-6*Nc/G;
v=80/3.6;
%fm=v*fcar/3e8;
fm=v*fcar/3e8;
%fm=10;
Trms=70e-9;
avpdb=-3;
pro_maich=0.1;%0.01;
maich_power=0 ;
%maich=zeros(1,numbits*lep/2);
% for lr=1:multipath
% ch=ricianchan(ts,fm,rice_K);
% for n=1:G
%
% ray(lr,n)=ch.PathGains;
% end
% end
% for lr=1:multipath
% for n=1:G
% ch(n)=ricianchan(n/fs,fm,rice_K);
% ray(lr,n)=ch(n).PathGains;
% end
% end
snrdb=0:5:15;
for ss=1:length(snrdb)
for pp=1:5000
for k=1:K_user
source(k,:)=randint(1,numbits,[0,1]);
dpsk_symbol_1=qpsk(source,1);
dpsk_symbol_ori=reshape(dpsk_symbol_1,sep,[]);
dpsk_symbol=dpsk_symbol_ori*ones(1,G);
% ts= dpsk_symbol*ones(1,Nc);
% pn_0=[pn,1];
%pn_c=reshape(pn_0,Nc,[]);
%pn=gold(G,K_user);
sp_code=hadamard(G);
% sp_code=pn;
for s=1:sep;
for g=1:G;
A(s,g)=dpsk_symbol(s,g)*sp_code(2,g);
end
end
symbol_coded=reshape(A.',1,[]);
SNR(ss)=10^(snrdb(ss)/10);
Pow(ss)=2*SGMA^2*SNR(ss);
p_symbol=sqrt(Pow(ss))*symbol_coded;
% for l=1:multipath
% fading(l,:)=kron(ray(l,:),ones(1,Nc/G));
% mult_symbol=fading(l,:).*symbol_coded;
% end
%Rc=ts/G;
%freoff=2*pi*fm/Nc/Rc;
fre_off=(2*pi*fm*ts/Nc)*[0:Nc-1]; %0.02
doppler_fre=exp(sqrt(-1).*fre_off);
trans_s=ifft(p_symbol,[],2).*conj(doppler_fre);
% trans_s=ifft(C,[],1);
ofdm_sy_k(k,:)=reshape(trans_s,1,[]);
end
%%%%%%%%test%%%%%%%%%%
tr_symbol=sum(ofdm_sy_k,1);
%tr_symbol= tr_symbol_beforeD.*exp(j*2*pi*fm*ts);
ch=ricianchan(ts,0,rice_K);
tr_symbol=filter(ch,tr_symbol);
maich=randsrc(1,Nc,[0 1;1-pro_maich pro_maich]).*wgn(1,Nc,maich_power,'linear','complex');
re_symbol=awgn(tr_symbol,snrdb(ss))+ maich;%mult_symbol;,'measured'
%%%%%%%%test%%%%%%%%%%
ree_sy=reshape(re_symbol,Nc,[]);
% ree_sy=reshape(tr_symbol,Nc,[]);
fft_s=fft(re_symbol,[],2)/sqrt(Pow(ss));
for s=1:sep
ree_s(s,:)=fft_s(1,((s-1)*G+1):(s*G));
end
% ree_s(1,:)=fft_s(1:G,:);
% ree_s(2,:)=fft_s(G+1:Nc,:);
for qq=1:sep;
for tt=1:G;
re_coded(qq,tt)=ree_s(qq,tt)*sp_code(2,tt);
end
end
ve=mean(re_coded,2);
%%%%%%%%%%%%%before
% for ncc=1:Nc
% for n=1:numbits/2/Nc
% filter=fft_s(ncc,1+(n-1)*lep:n*lep).*pn(1,:)/sqrt(lep);
% ve(ncc,n)=sum(filter);
% end
% end
%%%%%%%%%%%%%before
vetor=reshape(ve,1,[]);
si_r=qpsk(vetor,2);
si_rr=si_r.';
[error(pp),ra]=symerr(source,si_rr);
end
ratio(ss)=sum(error)/(pp*numbits)
end
% semilogy(snrdb,ratio,'red');
semilogy(snrdb,ratio,'red');
grid on
hold on
ratio