📄 simomrc.m
字号:
% Receiver diversity - MRC
clear
clc
packets=4000; frame=130;
BIT=2; % modulation 1/2/3/4 for BPSK/QPSK/16QAM/64QAM
NTx=1; NRx=2;
EbN0=[0:2:20]; sq_NTx=sqrt(NTx); sq2=sqrt(2);
for i_SNR=1:length(EbN0)
SNR=EbN0(i_SNR); sigma=0.5/(10^(SNR/10)); sq_sigma=sqrt(sigma);
for p_count=1:packets
symbol_data=randint(frame*BIT,NTx);
[temp s P]=modulator(symbol_data.',BIT);
X=temp.'; frlg=length(X); x0=X;
H=(randn(frlg,NRx)+j*randn(frlg,NRx))/sq2;
Habs=sum(abs(H).^2,2); z1=0;
for i=1:NRx
r(:,i)=sum(H(:,i).*x0,2)/sq_NTx+sq_sigma*(randn(frlg,1)+j*randn(frlg,1));
z1=z1+r(:,i).*conj(H(:,i));
end
for m=1:P
d1(:,m)=abs(sum(z1,2)-s(m)).^2+(-1+sum(Habs,2))*abs(s(m))^2;
end
[y1,i1]=min((d1),[],2); s1d=s(i1).'; Xd=[s1d];
temp1=X>0; temp2=Xd>0;
error(p_count)=sum(sum(temp1~=temp2));
end
BER(i_SNR)=sum(error)/(packets*frame*BIT);
end
figure(1), semilogy(EbN0,BER,'s'), axis([EbN0([1 end]) 1e-6 1e0]); grid on; hold on;
xlabel('Eb/No(dB)'); ylabel('BER');
semilogy(EbN0,BER,'b'), axis([EbN0([1 end]) 1e-6 1e0]); hold on;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -