⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ofdmce.asv

📁 OFDM系统仿真
💻 ASV
字号:
clear all;


para=768;
fftlen=1024;
noc=1024;
nd=36;
% para=52;
% fftlen=64;
% noc=53;
% nd=6;
knd=1;
ml=2;
sr=250000;
br=sr.*ml;
% gilen=32;
gilen=16;
tstp=1/sr/(fftlen+gilen);
itau=[0];
dlvl1=[0];
no=[6];
th1=[0.0];
itnd1=[1000];
now1=1;
fd=150;
flat=0;
itnd0=nd*(fftlen*gilen)*20;
nloop=100;
k=0:10
for l=1:length(k)
    ebn0=k(l);
    noe=0;
    nod=0;
    eop=0;
    nop=0;
for iii=1:nloop
    seridata=rand(1,para*nd*ml)>0.5;
    paradata=reshape(seridata,para,nd*ml);
    [ich,qch]=qpskmod(paradata,para,nd,ml);
    kmod=1/sqrt(2);
    ich=ich.*kmod;
    qch=qch.*kmod;
    kndata=zeros(1,fftlen);
    kndata0=2.*(rand(1,para)<0.5)-1;
    kndata(5:388)=kndata0(1:384);
    kndata(638:1021)=kndata0(385:768);
%     kndata(2:27)=kndata0(1:26);
%     kndata(39:64)=kndata0(27:52);
    ceich=kndata;
    ceqch=zeros(1,fftlen);
    [ich1,qch1]=crmapping(ich,qch,fftlen,nd);
    ich2=[ceich.' ich1];
    qch2=[ceqch.' qch1];
    x=ich2+qch2.*i;
    y=ifft(x);
    ich3=real(y);
    qch3=imag(y);
    fftlen2=fftlen+gilen;
    [ich4,qch4]=giins(ich3,qch3,fftlen,gilen,nd+1);
    spow=sum(ich4.^2+qch4.^2)/nd./para;
    atten=0.5*spow*sr/br*10.^(-ebn0/10);
    atten=sqrt(atten);
    %%%%%%%%%%%%%%%%%%%fading%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%     [ifade,qfade,ramp,rcos,rsin]=sefade(ich4,qch4,itau,dlvl1,th1,no,itnd1,now1,length(ich4),tstp,fd,flat);
%     itnd1=itnd1+itnd0;
%     ich4=ifade;
%     qch4=qfade;
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    [ich5,qch5]=comb(ich4,qch4,atten);
%     ifade2=1./ramp.*(rcos(1,:).*ich5+rsin(1,:).*qch5);
%     qfade2=1./ramp.*(-rsin(1,:).*ich5+rcos(1,:).*qch5);
%     ich5=ifade2;
%     qch5=qfade2;
    [ich6,qch6]=girem(ich5,qch5,fftlen2,gilen,nd+1);
    rx=ich6+qch6.*i;
    ry=fft(rx);
    ich7=real(ry);
    qch7=imag(ry);
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    ce=1;
    ice0=ich2(:,ce);
    qce0=qch2(:,ce);
    ice1=ich7(:,ce);
    qce1=qch7(:,ce);
    iv=real((1./(ice1.^2+qce1.^2)).*(ice0+i.*qce0).*(ice1-i.*qce1));
    qv=imag((1./(ice1.^2+qce1.^2)).*(ice0+i.*qce0).*(ice1-i.*qce1));
    ieqv1=[iv iv iv iv iv iv iv iv iv iv iv iv iv iv iv iv iv iv iv iv iv iv iv iv iv iv iv iv iv iv iv iv iv iv iv iv iv];
    qeqv1=[qv qv qv qv qv qv qv qv qv qv qv qv qv qv qv qv qv qv qv qv qv qv qv qv qv qv qv qv qv qv qv qv qv qv qv qv qv];
%     ieqv1=[iv iv iv iv iv iv iv];
%     qeqv1=[qv qv qv qv qv qv qv];
    icompen=real((ich7+i.*qch7).*(ieqv1+i.*qeqv1));
    qcompen=imag((ich7+i.*qch7).*(ieqv1+i.*qeqv1));
    ich7=icompen;
    qch7=qcompen;
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    ich8=ich7(:,knd+1:nd+1);
    qch8=qch7(:,knd+1:nd+1);
    [ich9,qch9]=crdemapping(ich8,qch8,fftlen,nd);
    ich10=ich9./kmod;
    qch10=qch9./kmod;
    [demodata]=qpskdemod(ich10,qch10,para,nd,ml);
    demodata1=reshape(demodata,1,para*nd*ml);
    noe2=sum(abs(demodata1-seridata));
    nod2=length(seridata);
    if noe2~=0
        eop=eop+1;
    else
        eop=eop;
    end
    eop;
    nop=nop+1;
    noe=noe+noe2;
    nod=nod+nod2;
end
per(l)=eop/nop;
ber(l)=noe/nod;
end

semilogy(k,ber,'c');
grid on;
xlabel('Eb/N0 (dB)');
ylabel('BER');

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -