?? adaptivemimo.m
字號:
clear
clc
BW=input('Required channel bandwidth in MHz(max 20 MHz)=');
disp('choose cyclic prefix to overcome delays spreads')
disp(',1/4 for longest delay spread ,1/8 for long delay spreads ,')
disp('1/16 for short delays spreads ,1/32 for very small delay spread channels')
G=input('= ');
channels=[1.75 1.5 1.25 2.75 2.0];
oversampling=[8/7 86/75 144/125 316/275 57/50 8/7];
for i=1:5
y(i)=rem(BW,channels(i));
if y(i)==0
n=oversampling(i);
end
end
y=(y(1))*(y(2))*(y(3))*(y(4))*(y(5));
if y~=0
n=8/7;
end
if ((G~=1/4)&(G~=1/8)&(G~=1/16)&(G~=1/32))
error('u have choosed a guard period thats not valid in the ieee 802.16')
end
Nused=200; Nfft=256;
fs=(floor((n*BW*1e6)/8000))*8000; %sampling freqency
freqspacing= fs/Nfft; %freqency spacing
Tb= 1/freqspacing; %usfel symbol time
Tg= G*Tb ;%Guard time
Ts=Tb+Tg ;%symbol time
samplingttime= Tb/Nfft;
%adaptive encoding and decoding depending on the channel SNR
genpoly=gf(1,8);
for idx=0:15
genpoly=conv(genpoly,[1 gf(2,8)^idx]);
end
primepoly=[1 0 0 0 1 1 1 0 1];
convvec=poly2trellis(7,[171,133]);
cSNR=input('Enter the channel SNR in dB(it should be above 6.4 dB)=');
if cSNR<6.4
error('not a valid channel for transmission ,use another channel with better SNR')
end
%BPSK 1/2
if (6.4<=cSNR&cSNR<9.4)
inputsize=88;
seqafterrand=inputsize+8;
shortening=[1:12];
shorteningRx=[1:11];
punvec=reshape([1 , 1],2,1);%convolutional of rate 1/2
Ncbps=192;%selctor of RS 12*8
k=0:Ncbps-1;
mk=(Ncbps/12 )*mod(k,12)+floor(k/12);
s=ceil(Ncbps/2);
jk=s*floor(mk/s)+mod(mk+Ncbps-floor(12*mk/Ncbps),s);
[x,int_idx]=sort(jk);
Ry=[+1 -1];
Iy=[0 0];
qamconst=complex(Ry,Iy);
qamconst=qamconst(:);
bitspersymbol=1;
CPsel=[(256-G*256+1):256 1:256];
CPremove=[(256*G+1):(256+G*256)];
coderate=1/2;
disp('Modulation scheme of BPSK with Coding rate 1/2 is chosen');
elseif (9.4<=cSNR&cSNR<11.2)
inputsize=184;
seqafterrand=inputsize+8;
shortening=[1:32];
shorteningRx=[1:23];
punvec=reshape([1 0 , 1 1],4,1);%convolutional of rate 2/3
Ncbps=384; %selctor of RS 48*8
k=0:Ncbps-1;
mk=(Ncbps/12 )*mod(k,12)+floor(k/12);
s=ceil(Ncbps/2);
jk=s*floor(mk/s)+mod(mk+Ncbps-floor(12*mk/Ncbps),s);
[x,int_idx]=sort(jk);
Ry=ones(2,1)*[+1 -1];
Iy=([+1 -1]')*ones(1,2);
qamconst=complex(Ry,Iy);
qamconst=qamconst(:)/sqrt(2);
bitspersymbol=2;
CPsel=[(256-G*256+1):256 1:256];
CPremove=[(256*G+1):(256+G*256)];
coderate=1/2;
disp('Modulation scheme of QPSK with Coding rate 1/2 is chosen');
elseif (11.2<=cSNR&cSNR<16.4)
inputsize=280;
seqafterrand=inputsize+8;
shortening=[1:40];
shorteningRx=[1:35];
punvec=reshape([1 0 1 0 1, 1 1 0 1 0],10,1);%convolutional of rate 5/6
Ncbps=384; %selctor of RS 48*8
k=0:Ncbps-1;
mk=(Ncbps/12 )*mod(k,12)+floor(k/12);
s=ceil(Ncbps/2);
jk=s*floor(mk/s)+mod(mk+Ncbps-floor(12*mk/Ncbps),s);
[x,int_idx]=sort(jk);
Ry=ones(2,1)*[+1 -1];
Iy=([+1 -1]')*ones(1,2);
qamconst=complex(Ry,Iy);
qamconst=qamconst(:)/sqrt(2);
bitspersymbol=2;
CPsel=[(256-G*256+1):256 1:256];
CPremove=[(256*G+1):(256+G*256)];
coderate=3/4;
disp('Modulation scheme of QPSK with Coding rate 3/4 is chosen');
elseif (16.4<=cSNR&cSNR<18.2)
inputsize=376;
seqafterrand=inputsize+8;
shortening=[1:64];
shorteningRx=[1:47];
punvec=reshape([1 0 , 1 1],4,1);%convolutional of rate 2/3
Ncbps=768; %selctor of RS 96*8
k=0:Ncbps-1;
mk=(Ncbps/12 )*mod(k,12)+floor(k/12);
s=ceil(Ncbps/2);
jk=s*floor(mk/s)+mod(mk+Ncbps-floor(12*mk/Ncbps),s);
[x,int_idx]=sort(jk);
Ry=ones(4,1)*[+1 +3 -1 -3];
Iy=([+1 +3 -3 -1]')*ones(1,4);
qamconst=complex(Ry,Iy);
qamconst=qamconst(:)/sqrt(10);
bitspersymbol=4;
CPsel=[(256-G*256+1):256 1:256];
CPremove=[(256*G+1):(256+G*256)];
coderate= 1/2;
disp('Modulation scheme of 16-QAM with Coding rate 1/2 is chosen');
elseif (18.2<=cSNR&cSNR<22.7)
inputsize=568;
seqafterrand=inputsize+8;
shortening=[1:80];
shorteningRx=[1:71];
punvec=reshape([1 0 1 0 1, 1 1 0 1 0],10,1);%convolutional of rate 5/6
Ncbps=768; %selctor of RS 96*8
k=0:Ncbps-1;
mk=(Ncbps/12 )*mod(k,12)+floor(k/12);
s=ceil(Ncbps/2);
jk=s*floor(mk/s)+mod(mk+Ncbps-floor(12*mk/Ncbps),s);
[x,int_idx]=sort(jk);
Ry=ones(4,1)*[+1 +3 -1 -3];
Iy=([+1 +3 -3 -1]')*ones(1,4);
qamconst=complex(Ry,Iy);
qamconst=qamconst(:)/sqrt(10);
bitspersymbol=4;
CPsel=[(256-G*256+1):256 1:256];
CPremove=[(256*G+1):(256+G*256)];
coderate= 3/4;
disp('Modulation scheme of 16-QAM with Coding rate 3/4 is chosen');
elseif (22.7<=cSNR&cSNR<24.4)
inputsize=760;
seqafterrand=inputsize+8;
shortening=[1:108];
shorteningRx=[1:95];
punvec=reshape([1 0 1 , 1 1 0 ],6,1);%convolutional of rate3/4
Ncbps=1152; %selctor of RS 144*8
k=0:Ncbps-1;
mk=(Ncbps/12 )*mod(k,12)+floor(k/12);
s=ceil(Ncbps/2);
jk=s*floor(mk/s)+mod(mk+Ncbps-floor(12*mk/Ncbps),s);
[x,int_idx]=sort(jk);
Ry=ones(8,1)*[+3 +1 +5 +7 -3 -1 -5 -7 ];
Iy=([+3 +1 +5 +7 -3 -1 -5 -7 ]')*ones(1,8);
qamconst=complex(Ry,Iy);
qamconst=qamconst(:)/sqrt(42);
bitspersymbol=6;
CPsel=[(256-G*256+1):256 1:256];
CPremove=[(256*G+1):(256+G*256)];
coderate= 2/3;
disp('Modulation scheme of 64-QAM with Coding rate 2/3 is chosen');
elseif 24.4<=cSNR
inputsize=856;
seqafterrand=inputsize+8;
shortening=[1:120];
shorteningRx=[1:107];
punvec=reshape([1 0 1 0 1, 1 1 0 1 0],10,1);%convolutional of rate 5/6
Ncbps=1152; %selctor of RS 144*8
k=0:Ncbps-1;
mk=(Ncbps/12 )*mod(k,12)+floor(k/12);
s=ceil(Ncbps/2);
jk=s*floor(mk/s)+mod(mk+Ncbps-floor(12*mk/Ncbps),s);
[x,int_idx]=sort(jk);
Ry=ones(8,1)*[+3 +1 +5 +7 -3 -1 -5 -7 ];
Iy=([+3 +1 +5 +7 -3 -1 -5 -7 ]')*ones(1,8);
qamconst=complex(Ry,Iy);
qamconst=qamconst(:)/sqrt(42);
bitspersymbol=6;
CPsel=[(256-G*256+1):256 1:256];
CPremove=[(256*G+1):(256+G*256)];
coderate= 3/4;
disp('Modulation scheme of 64-QAM with Coding rate 3/4 is chosen');
end
choice=input('Enter 1 for inculding mimo in the system and 0 otherwise');
if choice==1
MimoOFDM=-10;
Pulse=2;
delayswitch=2;
delayBER=2*inputsize;
else
MimoOFDM=10;
Pulse=1;
delayswitch=0;
delayBER=0;
end
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -