📄 ofdm_fading.asv
字号:
para=128;
fftlen=128;
noc=128;
nd=6;
ml=1;
sr=250000;
br=sr.*ml;
gilen=32;
tstp=1/sr/(fftlen+gilen);
itau = [0];
dlvl = [0];
n0=[6];
th1=[0.0];
itnd0=nd*(fftlen+gilen)*10;
itnd1=[1000];
now1=1;
fd=320;
flat =1;
for ebn0=1:14
nloop=1000;
noe = 0;
gnoe = 0;
nod = 0;
eop=0;
geop=0;
nop=0;
for iii=1:nloop
seldata=rand(1,para*nd*ml)>0.5;
paradata=reshape(seldata,para,nd*ml);
data1=paradata.*2-1;
kmod=1/sqrt(2);
ch1=data1.*kmod;
gdata=seldata.*2-1;
gdata2=gdata.*kmod;
y=ifft(ch1);
ich2=real(y);
qch2=imag(y);
[ich3,qch3]= giins(ich2,qch2,fftlen,gilen,nd);
fftlen2=fftlen+gilen;
spow=sum(ich3.^2+qch3.^2)/nd./para;
attn=0.5*spow*sr/br*10.^(-ebn0/10);
attn=sqrt(attn);
itnd1 = itnd1+ itnd0;
[ich4,qch4]=comb(ich3,qch3,attn);
%ich4=awgn(ich3,ebn0,'measured','db');
%qch4=awgn(qch3,ebn0,'measured','db');
gout = randn(1,length(gdata2)).*attn;
gout = gout+gdata2(1:length(gdata2));
[ich5,qch5]= girem(ich4,qch4,fftlen2,gilen,nd);
rx=ich5+qch5.*i;
ry=fft(rx);
ich6=real(ry);
qch6=imag(ry);
ich7=ich6./kmod;
demodata=ich7>0;
gdata3=gout./kmod;
gdata4=gdata3>0;
demodata1=reshape(demodata,1,para*nd*ml);
noe2=sum(abs(demodata1-seldata));
nod2=length(seldata);
gnoe2=sum(abs(gdata4-seldata));
noe=noe+noe2;
nod=nod+nod2;
gnoe=gnoe+gnoe2;
if noe2~=0
eop=eop+1;
else
eop=eop;
end
eop;
nop=nop+1;
fprintf('%d\t%e\t%d\n',iii,noe2/nod2,eop);
if gnoe2~=0
geop=geop+1;
else
geop=geop;
end
end
ber(1,ebn0)= noe/nod;
febn0(1,ebn0)=ebn0;
gber(1,ebn0)=gnoe/nod;
end
semilogy(febn0,gber,'r');
hold on;
semilogy(febn0,ber,'b.');
xlabel('Eb/No');
ylabel('BER');
title('Performance of OFDM under the channel of Rayleigh plus AWGN')
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -