📄 misosimu.m
字号:
clear
clc
% declaration
numOfBlk = 1000;
qamOrder = 2;
Eb_N0_dB = [0:25];
errRate = zeros(size(Eb_N0_dB));
%% AlamoutiSpace Time Code 2*1
for i = 1 : length(Eb_N0_dB)
% Main Program
txData = randint(numOfBlk*2,1,qamOrder);
temp = reshape(txData,numOfBlk,2);
temp = qammod(temp,qamOrder);
%channel definition
H = 1/sqrt(2) * (randn(numOfBlk,2) + sqrt(-1)*randn(numOfBlk,2));
% transmission
txMod(:,1) = H(:,1).* 1/sqrt(2).*temp(:,1) + H(:,2).* 1/sqrt(2).*temp(:,2) ;
txMod(:,2) = -H(:,1).*(1/sqrt(2).*temp(:,2)').' + H(:,2).*(1/sqrt(2).*temp(:,1)').' ;
% addition du bruit
txMod = awgn(txMod,Eb_N0_dB(i),'measured');
temp(:,1) = sqrt(2)*(H(:,1)'.' .* txMod(:,1) + H(:,2) .* txMod(:,2)'.')./(abs(H(:,1)).^2 + abs(H(:,2)).^2);
temp(:,2) = sqrt(2)*(H(:,2)'.' .* txMod(:,1) - H(:,1) .* txMod(:,2)'.')./(abs(H(:,1)).^2 + abs(H(:,2)).^2);
rxData(:,1) = qamdemod(temp(:,1),qamOrder);
rxData(:,2) = qamdemod(temp(:,2),qamOrder);
[numErr errRate(i)] = symerr(rxData,reshape(txData,numOfBlk,2));
end
% observations graphiques
f1 = figure(1);
semilogy(Eb_N0_dB,errRate,['k',':','o']);
xlabel('Eb/No en dB');
ylabel('BER');
%% Space Time Code 2*2
for i = 1:length(Eb_N0_dB)
txData = randint(numOfBlk*2,1,qamOrder);
temp = reshape(txData,numOfBlk,2);
temp = qammod(temp,qamOrder);
H11 = 1/sqrt(2) * (randn(numOfBlk,1) + sqrt(-1)*randn(numOfBlk,1));
H12 = 1/sqrt(2) * (randn(numOfBlk,1) + sqrt(-1)*randn(numOfBlk,1));
H21 = 1/sqrt(2) * (randn(numOfBlk,1) + sqrt(-1)*randn(numOfBlk,1));
H22 = 1/sqrt(2) * (randn(numOfBlk,1) + sqrt(-1)*randn(numOfBlk,1));
r1(:,1) = H11.* 1/sqrt(2).*temp(:,1) + H21.* 1/sqrt(2).*temp(:,2) ;
r1(:,2) = -H11.*(1/sqrt(2).*temp(:,2)').' + H21.*(1/sqrt(2).*temp(:,1)').' ;
r2(:,1) = H12.* 1/sqrt(2).*temp(:,1) + H22.* 1/sqrt(2).*temp(:,2) ;
r2(:,2) = -H12.*(1/sqrt(2).*temp(:,2)').' + H22.*(1/sqrt(2).*temp(:,1)').' ;
r1 = awgn(r1,Eb_N0_dB(i),'measured');
r2 = awgn(r2,Eb_N0_dB(i),'measured');
%reception
%1st antenna
s1=r1(:,1).*conj(H11)+conj(r1(:,2)).*H21;
s2=r1(:,1).*conj(H21)-conj(r1(:,2)).*H11;
%2nd antenna
S1=r2(:,1).*conj(H12)+conj(r2(:,2)).*H22;
S2=r2(:,1).*conj(H22)-conj(r2(:,2)).*H12;
sv1=s1./((abs(H11)).^2+(abs(H21)).^2);
sv2=s2./((abs(H11)).^2+(abs(H21)).^2);
Sv1=S1./((abs(H12)).^2+(abs(H22)).^2);
Sv2=S2./((abs(H12)).^2+(abs(H22)).^2);
s11=real(sv1);
s12=real(sv2);
s21=real(Sv1);
s22=real(Sv2);
s111=(s11+s21)/2;
s222=(s12+s22)/2;
rxData(:,1) = qamdemod(s111,qamOrder);
rxData(:,2) = qamdemod(s222,qamOrder);
[numErr errRate(i)] = symerr(rxData,reshape(txData,numOfBlk,2));
end
% observations
f1 = figure(1);
hold on
semilogy(Eb_N0_dB,errRate,['b','-','o']);
xlabel('Eb/No en dB');
ylabel('BER');
%% AlamoutiSpace Time Code3*2
for i = 1:length(Eb_N0_dB)
% Main Program
% genration des donn閑s
txData = randint(numOfBlk*3,1,qamOrder);
temp3 = reshape(txData,numOfBlk,3);
% Modulation QAMm des donn閑s transmises
temp3 = qammod(temp3,qamOrder);
% definition du canal
H11 = 1/sqrt(2) * (randn(numOfBlk,1) + sqrt(-1)*randn(numOfBlk,1));
H12 = 1/sqrt(2) * (randn(numOfBlk,1) + sqrt(-1)*randn(numOfBlk,1));
H13 = 1/sqrt(2) * (randn(numOfBlk,1) + sqrt(-1)*randn(numOfBlk,1));
H21 = 1/sqrt(2) * (randn(numOfBlk,1) + sqrt(-1)*randn(numOfBlk,1));
H22 = 1/sqrt(2) * (randn(numOfBlk,1) + sqrt(-1)*randn(numOfBlk,1));
H23 = 1/sqrt(2) * (randn(numOfBlk,1) + sqrt(-1)*randn(numOfBlk,1));
% transmission des donn閑s
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -