You are on page 1of 11

MATLAB/CDA

Marc Combalia Escudero


Junting Pan
Vctor Garca Satorras

MQAM

snrmin=10^(0/10);
snrmax=10^(30/10);
%CALCUL ALPHA I BETA MQAM
alpha = @(M) (4*(1-1/(M^(1/2)))/(log2(M)));
beta = @(M) 3*log2(M)/(M-1);

-Rayleigh

%RAYLEIGH
ray_MQAM = @(x,y,M) ((2*sin(x).^2)./(2*sin(x).^2+beta(M)*y));
BERray2 = (snrmin:1:snrmax);
BERray8 = (snrmin:1:snrmax);
BERray64 = (snrmin:1:snrmax);
for aux=snrmin:snrmax
BERray2(aux) = alpha(2)/pi*integral(@(x)ray_MQAM(x,aux, 2),0,pi/2);
BERray8(aux) = alpha(2)/pi*integral(@(x)ray_MQAM(x,aux, 8),0,pi/2);
BERray64(aux) = alpha(2)/pi*integral(@(x)ray_MQAM(x,aux, 64),0,pi/2);
end

figure(1)
loglog(BERray2,'color','r'); hold on;
loglog(BERray8,'color','b'); hold on;
loglog(BERray64, 'color', 'g');
title('Rayleigh MQAM');

En el for calculem la integral de la MGF per a cada valor del SNR, posteriorment
representem el resultat en funci daquest SNR

-Rice:

K=1
rice_MQAM=
@(x,y,K,M)(2*(1+K)*sin(x).^2)./(2*(1+K)*sin(x).^2+beta(M)*y).*exp((K*beta(M)*y)./(2*(1+K)*sin(x).^2+beta(M)));
BERrice2 = (snrmin:1:snrmax);
BERrice8 = (snrmin:1:snrmax);
BERrice64 = (snrmin:1:snrmax);
for aux=snrmin:snrmax
BERrice2(aux) = alpha(2)/pi*integral(@(x)rice_MQAM(x,aux,1,2),0,pi/2);
BERrice8(aux) = alpha(8)/pi*integral(@(x)rice_MQAM(x,aux,1,8),0,pi/2);
BERrice64(aux) = alpha(64)/pi*integral(@(x)rice_MQAM(x,aux,1,64),0,pi/2);
end

figure(2)
loglog(BERrice2,'color','r'); hold on;
loglog(BERrice8,'color','b'); hold on;
loglog(BERrice64, 'color', 'g');
title('Rice MQAM');

-Nakagami:

En el cas de Nakagami representarem 3 grfiques amb els valor m= 0.5, 2 i 4;


m=0.5
naka_MQAM = @(x,y,m,M)((1+((beta(M)*y)./(2*m*(sin(x)).^2))).^(-m));
for aux=snrmin:snrmax
BERnaka12(aux) =
alpha(2)/pi*integral(@(x)naka_MQAM(x,aux,0.5,2),0,pi/2);
BERnaka18(aux) =
alpha(8)/pi*integral(@(x)naka_MQAM(x,aux,0.5,8),0,pi/2);
BERnaka164(aux) =
alpha(64)/pi*integral(@(x)naka_MQAM(x,aux,0.5,64),0,pi/2);
end
figure(3)
loglog(BERnaka12,'color','r'); hold on;
loglog(BERnaka18,'color','b'); hold on;
loglog(BERnaka164, 'color', 'g');
title('NAKA 0.5 MQAM');

Fem servir sempre el mateix mtode, integrem la MGF per a cada valor del SNR i ho
representem grficament respecte aquest SNR

m=2
for aux=snrmin:snrmax
BERnaka22(aux) =
alpha(2)/pi*integral(@(x)naka_MQAM(x,aux,2,2),0,pi/2);
BERnaka28(aux) =
alpha(8)/pi*integral(@(x)naka_MQAM(x,aux,2,8),0,pi/2);
BERnaka264(aux) =
alpha(64)/pi*integral(@(x)naka_MQAM(x,aux,2,64),0,pi/2);
end
figure(4)
loglog(BERnaka22,'color','r'); hold on;
loglog(BERnaka28,'color','b'); hold on;
loglog(BERnaka264, 'color', 'g');
title('NAKA 2 MQAM');

m=4
for aux=snrmin:snrmax
BERnaka32(aux) =
alpha(2)/pi*integral(@(x)naka_MQAM(x,aux,4,2),0,pi/2);
BERnaka38(aux) =
alpha(8)/pi*integral(@(x)naka_MQAM(x,aux,4,8),0,pi/2);
BERnaka364(aux) =
alpha(64)/pi*integral(@(x)naka_MQAM(x,aux,4,64),0,pi/2);
end
figure(5)
loglog(BERnaka32,'color','r'); hold on;
loglog(BERnaka38,'color','b'); hold on;
loglog(BERnaka364, 'color', 'g');
title('NAKA 4 MQAM');

MFSK

En mfsk el codi s el mateix que en el cas anterior, nicament em donat nous valors a
les variables alpha i Beta.
%LIMITS DE INTEGRACIO
snrmin=10^(0/10);
snrmax=10^(30/10);
%CALCUL DE ALPHA I BETA PER MFSK
alpha = @(M) M/2;
beta = @(M) log2(M);

-Rayleigh

%RAYLEIGH
ray_MFSK = @(x,y,M) ((2*sin(x).^2)./(2*sin(x).^2+beta(M)*y));
BERray2 = (snrmin:1:snrmax);
BERray8 = (snrmin:1:snrmax);
BERray64 = (snrmin:1:snrmax);
for aux=snrmin:snrmax
BERray2(aux) = alpha(2)/pi*integral(@(x)ray_MFSK(x,aux, 2),0,pi/2);
BERray8(aux) = alpha(2)/pi*integral(@(x)ray_MFSK(x,aux, 8),0,pi/2);
BERray64(aux) = alpha(2)/pi*integral(@(x)ray_MFSK(x,aux, 64),0,pi/2);
end

figure(1)
loglog(BERray2,'color','r'); hold on;
loglog(BERray8,'color','b'); hold on;
loglog(BERray64, 'color', 'g');
title('Rayleigh MFSK');

-Rice

K=1
%RICE
rice_MFSK=
@(x,y,K,M)(2*(1+K)*sin(x).^2)./(2*(1+K)*sin(x).^2+beta(M)*y).*exp((K*beta(M)*y)./(2*(1+K)*sin(x).^2+beta(M)));
BERrice2 = (snrmin:1:snrmax);
BERrice8 = (snrmin:1:snrmax);
BERrice64 = (snrmin:1:snrmax);
for aux=snrmin:snrmax
BERrice2(aux) = alpha(2)/pi*integral(@(x)rice_MFSK(x,aux,1,2),0,pi/2);
BERrice8(aux) = alpha(8)/pi*integral(@(x)rice_MFSK(x,aux,1,8),0,pi/2);
BERrice64(aux) =
alpha(64)/pi*integral(@(x)rice_MFSK(x,aux,1,64),0,pi/2);
end

-Nakagami:

naka_MFSK = @(x,y,m,M)(1+((beta(M)*y)./(2*m*sin(x).^2))).^(-m);
%m=0.5
for aux=snrmin:snrmax
BERnaka12(aux) =
alpha(2)/pi*integral(@(x)naka_MFSK(x,aux,0.5,2),0,pi/2);
BERnaka18(aux) =
alpha(8)/pi*integral(@(x)naka_MFSK(x,aux,0.5,2),0,pi/2);
BERnaka164(aux) =
alpha(64)/pi*integral(@(x)naka_MFSK(x,aux,0.5,2),0,pi/2);
end
figure(3)
loglog(BERnaka12,'color','r'); hold on;
loglog(BERnaka18,'color','b'); hold on;
loglog(BERnaka164, 'color', 'g');
title('NAKA 0.5 MFSK');
for aux=snrmin:snrmax
BERnaka22(aux) =
alpha(2)/pi*integral(@(x)naka_MFSK(x,aux,2,2),0,pi/2);
BERnaka28(aux) =
alpha(8)/pi*integral(@(x)naka_MFSK(x,aux,2,2),0,pi/2);
BERnaka264(aux) =
alpha(64)/pi*integral(@(x)naka_MFSK(x,aux,2,2),0,pi/2);
end
%m=2
figure(4)
loglog(BERnaka22,'color','r'); hold on;
loglog(BERnaka28,'color','b'); hold on;
loglog(BERnaka264, 'color', 'g');
title('NAKA 2 MFSK');

%m=4
for aux=snrmin:snrmax
BERnaka32(aux) =
alpha(2)/pi*integral(@(x)naka_MFSK(x,aux,4,2),0,pi/2);
BERnaka38(aux) =
alpha(8)/pi*integral(@(x)naka_MFSK(x,aux,4,2),0,pi/2);
BERnaka364(aux) =
alpha(64)/pi*integral(@(x)naka_MFSK(x,aux,4,2),0,pi/2);
end
figure(5)
loglog(BERnaka32,'color','r'); hold on;
loglog(BERnaka38,'color','b'); hold on;
loglog(BERnaka364, 'color', 'g');
title('NAKA 4 MFSK');

You might also like