📄 diversity.m
字号:
n=2000000;
data=randint(n,1);
data_mol=zeros(n,1);
data_com=zeros(n,1);
data_demol=zeros(n,1);
map=[0,1;1,exp(j*pi)];%modulation map
for i=1:length(data);%mapping
if data(i)==map(1,1)
data_mol(i)=1;
else data_mol(i)=-1;
end;
end;
Es=1;
h=(randn(2,length(data))+j*randn(2,length(data)))/sqrt(2);%static Relay channel
h0=h(1,:);
h1=h(2,:);
EsN0=0:1.5:30;%GAWN/singnal
BER=zeros(1,length(EsN0));
r0=zeros(1,length(data));
r1=zeros(1,length(data));
idx=1;
for SNR=EsN0
N0=Es./(10.^(SNR./10));
GAWN0=sqrt(N0/2).*randn(n,1)+j*sqrt(N0/2).*randn(n,1);
GAWN1=sqrt(N0/2).*randn(n,1)+j*sqrt(N0/2).*randn(n,1);
for k=1:length(data)
r0(k)=h0(k)*data_mol(k)+GAWN0(k);
r1(k)=h1(k)*data_mol(k)+GAWN1(k);
data_com(k)=r0(k)*conj(h0(k))+r1(k)*conj(h1(k));
if (abs(map(1,2)-data_com(k)))^2>(abs(map(2,2)-data_com(k)))^2
data_demol(k)=-1;
else data_demol(k)=1;
end;
end;
BER(idx)=1-length(find(data_mol-data_demol==0))/length(data);
idx=idx+1;
end;
semilogy(EsN0,BER);
axis([0 40 10^(-6) 1]);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -