📄 simosimula.m
字号:
clear
clc
% declaration des param閠res
numOfBlk = 1000;
qamOrder = 2;
Eb_N0_dB = [0:20];
errRate = zeros(size(Eb_N0_dB));
%% 1*1 ,1*2 ,1*3 et 1*4
for i = 1 : length(Eb_N0_dB)
txData = randint(numOfBlk,1,qamOrder);
% Modulation
temp = qammod(txData,qamOrder);
% channel definition
H1 = 1/sqrt(2) * (randn(numOfBlk,1) + sqrt(-1)*randn(numOfBlk,1));
H2 = 1/sqrt(2) * (randn(numOfBlk,1) + sqrt(-1)*randn(numOfBlk,1));
H3 = 1/sqrt(2) * (randn(numOfBlk,1) + sqrt(-1)*randn(numOfBlk,1));
H4 = 1/sqrt(2) * (randn(numOfBlk,1) + sqrt(-1)*randn(numOfBlk,1));
txMod1 = H1.*temp;
txMod2 = H2.*temp;
txMod3 = H3.*temp;
txMod4 = H4.*temp;
% additing noise
txMod1 = awgn(txMod1,Eb_N0_dB(i),'measured');
txMod2 = awgn(txMod2,Eb_N0_dB(i),'measured');
txMod3 = awgn(txMod3,Eb_N0_dB(i),'measured');
txMod4 = awgn(txMod4,Eb_N0_dB(i),'measured');
% decoding
temp1 = txMod1./H1;
temp2 = txMod2./H2;
temp3 = txMod3./H3;
temp4 = txMod4./H4;
t1=real(temp1);
t2=real(temp2);
t3=real(temp3);
t4=real(temp4);
temp4=(t1+t2+t3+t4)/4;
temp3=(t1+t2+t3)/3;
temp2=(t1+t2)/2;
rxData1 = qamdemod(temp1,qamOrder);
rxData2 = qamdemod(temp2,qamOrder);
rxData3 = qamdemod(temp3,qamOrder);
rxData4 = qamdemod(temp4,qamOrder);
[numErr errRate1(i)] = symerr(rxData1,txData);
[numErr errRate2(i)] = symerr(rxData2,txData);
[numErr errRate3(i)] = symerr(rxData3,txData);
[numErr errRate4(i)] = symerr(rxData4,txData);
end
%% observations
f1 = figure(1);
hold on
semilogy(Eb_N0_dB,errRate1,['m','-']);
semilogy(Eb_N0_dB,errRate2,['b','-']);
semilogy(Eb_N0_dB,errRate3,['g','-']);
semilogy(Eb_N0_dB,errRate4,['r','-']);
xlabel('Eb/No en dB');
ylabel('BER');
grid on
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -