Professional Documents
Culture Documents
Matlab/Cda: Marc Combalia Escudero Junting Pan Víctor García Satorras
Matlab/Cda: Marc Combalia Escudero Junting Pan Víctor García 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:
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');