📄 simo.asv
字号:
clear;
close all;
SignalEnergyMin=4;
SignalEnergyMax=52;
SingalEnergy_d=1;
BlocksPerEnergy=100;
BlockSize=2^8;
SamplingRate=1;
WGNPower=1;
RayleighParam=0.24;
Antennas=8;
M=16;
for aa=1:Antennas
Gvec1=randn(1,BlocksPerEnergy);
Gvec2=randn(1,BlocksPerEnergy);
RayleighVec(aa,:)=sqrt((RayleighParam^2.*Gvec1.^2)+(RayleighParam^2.*Gvec2.^2));
end
EnergiesdB=SignalEnergyMin:SingalEnergy_d:SignalEnergyMax;
Energies=10.^(EnergiesdB./10);
for ee=1:size(Energies,2)
for bb=1:BlocksPerEnergy
A=randint(1,BlockSize,16);
B=mod16qam(A,1,SamplingRate,Energies(ee))';
for aa=1:Antennas
disp(['Eb=',int2str(Energies(ee)),';Block',int2str(bb),';Antenna',int2str(aa)]);
C(aa,:)=RayleighVec(aa,bb).*B;
D(aa,:)=AWGN(C(aa,:),WGNPower);
[E(aa,:),Es(aa,bb)]=demod16qam(D(aa,:),1,SamplingRate);
[TT,SER(aa,bb)]=symerr(A,E(aa,:));
end
for aa=2:2:Antennas
TempEs=Es(1:aa,bb);
stronger=(find(TempEs==max(TempEs)));
[SC,E_sc(1,bb)]=demod16qam(D(stronger,:),1,SamplingRate);
[TT,SER_sc(aa/2,bb)]=symerr(A,SC);
TempD=D(1:aa,:);
[EGC,E_egc(1,bb)]=demod16qam(mean(TempD,1),1,SamplingRate);
[TT,SER_egc(bb)]=symerr(A,EGC);
end
for aa=1:Antennas
r(aa)=sqrt(Es(aa,bb)/Energies(ee));
end
for aa=1:Antennas
a(aa)=r(aa)/sum(sqrt(r));
end
[MRC,E_mrc(1,bb)]=demod16qam(r(1)*D(1,:)+r(2*D(2,:),1,SamplingRate);
[TT,SER_mrc(bb)]=symerr()
end
for aa=1:Antennas
ESER(aa,ee)=mean(SER(aa,:),2);
end
ESER_sc(:,ee)=mean(SER_sc,2);
ESER_egc(:,ee)=mean(SER_egc,2);
ESER_mrc(ee)=mean(SER_mrc,2);
end
figure;
semilogy(EnergiesdB,mean(ESER,1),'+',EnergiesdB,ESER_sc,'d-');
xlabel('Eb/N_0');ylabel('SER');
legend('Antenna 1+2','2 Antennas','4 Antennas','8 Antennas');
figure;
semilogy(EnergiesdB,mean(ESER,1),'+',EnergiesdB,ESER_egc,'x-');
xlabel('Eb/N_0');ylabel('SER');
legend('Antenna 1+2','Equal Gain Combining 2','Equal Gain Combining 4','Equal Gain Combining 6','Equal Gain Combining 8');
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -