function err=AFDFofdm(N,CP,M,fz,deltat,fd,m1,m2)
%--------------------------------------------------------------------根据信噪比来求噪声的方差
atten_power = exp(-[0:M-1]);
if deltat==1
path_delay = [0:M-1]*2;
elseif deltat==2
path_delay=[0:M-1]*4;
elseif deltat==3
path_delay=[0:M-1]*10;
elseif deltat==4
path_delay=[0:M-1]*20;
elseif deltat==5
path_delay=[0:M-1]*30;
elseif deltat==6
path_delay=[0:M-1]*40;
end
aver_power=atten_power/sum(atten_power);%进行功率归一化
%--------------------------------------------------------------------根据信噪比来求噪声的方差
Eb=1;
a00=0;
fm=N;
RS=6;%导频间隔
L=M;%多径数目
%CP=6;%循环前缀长度
%fz=1;
%M=4;%QPSK modulation 简单的16QAM不适应此程序!!!!!!
SNR=[0:m1:m2];
for i=1:length(SNR) %16个性噪比
err(i)=0;%理想信道估计,MMSE检测
%%%%%%%%%%%%%%%
err0(i)=0;
err00(i)=0;
err000(i)=0;
%%%%%%%%%%%%%%%%%%
for m=1:fz %每个信噪比测试10000个符号
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%源产生%%%%%%%%%%%%%%%%%
sigma=sqrt(1/(10^(SNR(i)/10)));
G=sqrt(0.5/(0.5+sigma));
s0=randint(1,2*fm-16,2);
s000=crc(s0(1,:));
s1=EN_QPSK(s000);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%到中继%%%%%%%
o11=sqrt(0.5)*sqrt(N)*ifft(s1);o11_CP=[o11(N-CP+1:N) o11];
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
load CH1
h=CH1;
for jj=1:1:M %产生6条独立的径
h11(1,path_delay(jj)+1)=sqrt(aver_power(jj))*h(jj,m) ;
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
r11=filter(h11,1,[o11_CP zeros(1,L-1)]);
r11=r11+sigma*(randn(1,length(r11))+j*randn(1,length(r11)));
r11_CP=r11(CP+1:CP+N);
r11_fft=fft(r11_CP);
r1_receive=[];
r1_receive0=[];
for ttt=1:N
re=r11_fft(ttt);
H11=fft(h11,N);
HC=H11(ttt);
r1_re=2*conj(HC)*re;
QPSK=[1 j -1 -j];
qpsk=[0 0;
0 1;
1 1;
1 0];
for n=1:4
kr1=QPSK(n);
kt1=qpsk(n,:);
if n==1
interf=r1_re-conj(HC)*HC*sqrt(N)*kr1;
S=kr1;
SS=kt1;
min=sum(abs(interf).^2);
end
interf=r1_re-conj(HC)*HC*sqrt(N)*kr1;Min=sum(abs(interf).^2);
if Min<min
S=kr1;
SS=kt1;
min=Min;
end
end
r1_receive=[r1_receive,S];
r1_receive0=[r1_receive0,SS];
end
r11_re1=r1_receive0;
s2=r11_re1;
remainder=decrc16(s2);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%中继处理%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
if isequal(remainder,[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]);
a00=a00+1
s3=s2(1,1:2*fm-16);
s4=crc(s3(1,:));
sz2=s1;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
oz11=sqrt(0.5)*sqrt(N)*ifft(s1);oz11_CP=[oz11(N-CP+1:N) oz11];
oz22=sqrt(0.5)*sqrt(N)*ifft(sz2);oz22_CP=[oz22(N-CP+1:N) oz22];
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
if fd==0
load CH1;
h=CH1;
elseif fd==100
load CH2;
h=CH2;
elseif fd==200
load CH3;
h=CH3;
elseif fd==500
load CH4;
h=CH4;
elseif fd==1000
load CH5;
h=CH5;
end
for jj=1:1:M %产生6条独立的径
h21(1,path_delay(jj)+1)=sqrt(aver_power(jj))*h(jj,m) ;
h31(1,path_delay(jj)+1)=sqrt(aver_power(jj))*h(jj+M,m);
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
r22=filter(h31,1,[oz11_CP zeros(1,L-1)]);
r22=r22+sigma*(randn(1,length(r22))+j*randn(1,length(r22)));
r44=filter(h21,1,[oz22_CP zeros(1,L-1)]);
r44=r44+sigma*(randn(1,length(r22))+j*randn(1,length(r22)));
r44_CP=r44(CP+1:CP+N);
r22_CP=r22(CP+1:CP+N);
r22_fft=fft(r22_CP);
r44_fft=fft(r44_CP);
r2_receive=[];
r2_receive0=[];
QPSK=[1 j -1 -j];
qpsk=[0 0;
0 1;
1 1;
1 0];
for ttt=1:N
re1=r22_fft(ttt);
re2=r44_fft(ttt);
H11=fft(h31,N);
H21=fft(h21,N);
HC1=H11(ttt);
HC2=H21(ttt);
HC=HC1+HC2;
r1_re1=2*conj(HC1)*re1;
r1_re2=2*conj(HC2)*re2;
r2_re=r1_re1+ r1_re2;
for n=1:4
kr1=QPSK(n);
kt1=qpsk(n,:);
if n==1
interf=r2_re-conj(HC)*HC*sqrt(N)*kr1;
S=kr1;
SS=kt1;
min=sum(abs(interf).^2);
end
interf=r2_re-conj(HC)*HC*sqrt(N)*kr1;Min=sum(abs(interf).^2);
if Min<min
S=kr1;
SS=kt1;
min=Min;
end
%end
end
r2_receive=[r2_receive,S];
r2_receive0=[r2_receive0,SS];
end
r22_re1=r2_receive;
r00=r22_re1(1:fm);
err1=length(find(r00~=s1(1:fm)));
err(i)=err1+err(i);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
else
if fd==0
load CH1;
h=CH1;
elseif fd==100
load CH2;
h=CH2;
elseif fd==200
load CH3;
h=CH3;
elseif fd==500
load CH4;
h=CH4;
elseif fd==1000
load CH5;
h=CH5;
end
for jj=1:1:M %产生6条独立的径
h31(1,path_delay(jj)+1)=sqrt(aver_power(jj))*h(jj,m) ;
h21(1,path_delay(jj)+1)=sqrt(aver_power(jj))*h(jj+M,m);
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
ra=filter(h31,1,[o11_CP zeros(1,L-1)]);
ra=ra+sigma*(randn(1,length(ra))+j*randn(1,length(ra)));
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
rb1=r11* G;
rb=filter(h21,1,[rb1 zeros(1,L-1)]);
rb=rb+sigma*(randn(1,length(rb))+j*randn(1,length(rb)));
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
ra_CP=ra(CP+1:CP+N);
ra_fft=fft(ra_CP);
rb_CP=rb(CP+1:CP+N);
rb_fft=fft(rb_CP);
r4_receive=[];
r4_receive0=[];
QPSK=[1 j -1 -j];
qpsk=[0 0;
0 1;
1 1;
1 0];
for ttt=1:N
re1=ra_fft(ttt);
re2=rb_fft(ttt);
H11=fft(h11,N);
H21=fft(h21,N);
H31=fft(h31,N);
HC1=H31(ttt);
HC2=H21(ttt)*H11(ttt);
HC=HC1+HC2;
r1_re1=2*conj(HC1)*re1;
r1_re2=2*conj(HC2)*re2;
r2_re=r1_re1+ r1_re2;
for n=1:4
kr1=QPSK(n);
kt1=qpsk(n,:);
if n==1
interf=r2_re-conj(HC)*HC*sqrt(N)*kr1;
S=kr1;
SS=kt1;
min=sum(abs(interf).^2);
end
interf=r2_re-conj(HC)*HC*sqrt(N)*kr1;Min=sum(abs(interf).^2);
if Min<min
S=kr1;
SS=kt1;
min=Min;
end
%end
end
r4_receive=[r4_receive,S];
r4_receive0=[r4_receive0,S];
end
r44_re1=r4_receive;
r00=r44_re1(1:fm);
err1=length(find(r00~=s1(1:fm)));
err(i)=err1+err(i);
end
end
err(i)=err(i)/(fz*(N));
end
OFDM.rar_OFDM协作_collaborative OFDM_ofdm 协作_ofdm协作通信_协作通信
版权申诉
50 浏览量
2022-09-22
21:53:48
上传
评论
收藏 8KB RAR 举报
小贝德罗
- 粉丝: 71
- 资源: 1万+