Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

%pembankitan Kanal Rayleigh: All All

Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 6

close all; clear all; clc;

jmlsamp=1; var=0.1; E1=1; E2=100; EbNo1=50;


jmldata=100000;
monte=1;
for loop=1:monte;
data=randint(1, jmldata, [0,1], 15);
bpskT=data*2-1;
bpskTx=reshape(bpskT, 2, []);
qpskTx=bpskTx(1,:)+j*bpskTx(2,:);

%pembankitan kanal Rayleigh
randn('seed',1)
h1I=randn(1,length(qpskTx));
randn('seed',2)
h1Q=randn(1,length(qpskTx));
h1=sqrt(0.5)*(h1I+j*h1Q);
rand('seed',3)
h2I=randn(1,length(qpskTx));
randn('seed',4)
h2Q=randn(1,length(qpskTx));
h2=sqrt(0.5)*(h2I+j*h2Q);
randn('seed',5)
h3I=randn(1,length(qpskTx));
randn('seed',6)
h3Q=randn(1,length(qpskTx));
h3=sqrt(0.5)*(h3I+j*h3Q);
t=linspace(0,1,jmldata);
dT=length(t)/2;
Dss=qpskTx.*h3;
EbNo=0:30;
EbNoL=10.^(EbNo/10);
varians=1./EbNoL;
sigma=sqrt(varians);
for n=1:length(EbNo)
randn('seed',40); no1I=randn(1,dT);
randn('seed',41); no1Q=randn(1,dT);
no1=(sqrt(1/2))*(no1I+j*no1Q);
noSD(n,:)=sigma(n)*(no1);
Ds(n,:)=Dss+noSD(n,:);
end
Rss=qpskTx.*h1;
EbNoR=30;
EbNoRL=10.^(EbNoR/10);
varR=1/EbNoRL;
sigmaR=sqrt(varR);
randn('seed',42); no2I=randn(1,dT);
randn('seed',43); no2Q=randn(1,dT);
no2=(sqrt(1/2))*(no2I+j*no2Q);
noSD=sigmaR*(no2);
Rs=Rss+noSD;
ERs=mean((abs(Rs)).^2);
Gain=sqrt(E2./(ERs));
RD=Gain*Rs;
DRR=RD.*h2;
for n=1:length(EbNo)
randn('seed',44); no3I=randn(1,dT);
randn('seed',45); no3Q=randn(1,dT);
no3=(sqrt(1/2))*(no3I+j*no3Q);
noSD(n,:)=sigma(n)*(no3);
DR(n,:)=DRR+noSD(n,:);
h4=h1.*h2;
%kanal h1 dan h2 dijumlahkan
DT(n,:)=Ds(n,:).*conj(h3)+DR(n,:).*conj(h4);
%combiner
DE2=(1+sign(real(DT(n,:))))/2;
DE4=(1+sign(imag(DT(n,:))))/2;
DE=[DE2;DE4];
dataRx=reshape(DE,1,[]);
[NUM(n),BER(n)]=biterr(data,dataRx);
end

%pembangkitan kanal Rician Fading
k=3;
N=8; M=8;
c=3*10^8; f=9e8; %v11=40;; v21=40;
Tv1=40; Tv2=220; Tv3=0;
v11=(40:50:140);
v21=(40:50:140);
for vv=1:length(v11);

%kanal h1
Tsend1=Tv1;
Tdiff1=Tsend1-Tv2;
lamda=c/f;
f11=v11(vv)/lamda; f21=v21(vv)/lamda;
v31(vv)=sqrt((v11(vv)*cos(Tdiff1)-v21(vv))^2+(v11(vv)*sin(Tdiff1))^2);
f31=v31(vv)/lamda;
T31diff1=acos((v11(vv)^2+v31(vv)^2-v21(vv)^2)/(2*v11(vv)-v31(vv)));
tetaA1=Tsend1+T31diff1;
a=-pi; b=pi
rand('seed',7)
phiNo11=a+(b-a).*rand(1,length(t));
rand('seed',8)
tetaN1=a+(b-a).*rand(N,dT);
rand('seed',9)
psiM1=a+(b-a).*rand(M,dT);
rand('seed',10)
phiNM1=a+(b-a).*rand(N,M,dT);
alphaN1=0; betaM1=0;
for n=1:N
for tt=1:dT
alphaN1(n,tt)=(((2*n*pi)-pi+tetaN1(n,tt))/(4*N));
end
end

for m=1:M
for tt=1:dT;
betaM1(m,tt)=((2*((2*m*pi)-pi+psiM1(m,tt)))/(4*M));
end
end

for n=1:N;
for m=1:M;
for tt=1:dT;

sigma1(n,m,tt)=(exp(j*((2*pi*f11*t(tt)*cos(alphaN1(n,tt)))+(2*pi*f21*t(tt)*cos(betaM1(m,tt)))+phiNM1(m,n,tt))));
end
end
end

jmlM=ones(M,1);
for n=1:N;
aa(n,:)=(reshape(sigma1(m,:,:),M,[])).'*jmlM;
end

jmlN=ones(N,1);
hh=aa.'*jmlN;
Y1=sqrt(1/(N*M))*hh

pa=2*pi*f31*t*cos(tetaA1)
paa=pa+phiNo11;
paaa=j*paa;
q=exp(paaa);

%p=exp(j*2*pi*f31*t*cos(tetaA1));
%qq=exp(i*phiNo11);
%q=p+qq;
rr=sqrt(k)*q;
r=rr(1:1)
s=Y1'+r;
Z1=s/(sqrt(1+k));

%kanal h2
Tv21=Tv2
Tsend2=Tv21;
Tdiff2=Tsend2-Tv3;
lamda=c/f; v12(vv)=v21(vv); v22(vv)=0;
f12=v12(vv)/lamda; f22=v22(vv)/lamda;
v32(vv)=sqrt((v12(vv)*cos(Tdiff2)-v22(vv))^2+(v12(vv)*sin(Tdiff2))^2);
f32=v32(vv)/lamda;
T31diff2=acos((v12(vv)^2+v32(vv)^2-v22(vv)^2)/(2*v12(vv)-v32(vv)));
tetaA2=Tsend2+T31diff2;
a=-pi; b=pi; aaa=0; bbb=0;
rand('seed',11)
phiNo12=a+(b-a).*rand(1,length(t));
rand('seed',12)
tetaN2=a+(b-a).*rand(N,dT);
rand('seed',13)
psiM2=aaa+(bbb-aaa).*rand(M,dT);
rand('seed',14)
phiNM2=a+(b-a).*rand(N,M,dT);
sigma2=0; alphaN2=0; betaM2=0;
for n=1:N;
for tt=1:dT;
alphaN2(n,tt)=(((2*n*pi)-pi+tetaN2(n,tt))/(4*N));
end
end

%for m=1:M;
% for tt=1:dT;
% betaM2(m,tt)=((2*((2*m*pi)-pi+psiM2(m,tt)))/(4*M));
% end
%end

for n=1:N;
for tt=1:dT;
sigma2(n,m,tt)=(exp(j*((2*pi*f12*t(tt)*cos(alphaN2(n,tt))))));
end
end

%
jmlN2=ones(N,1);
for n=1:N;
bb(n,:)=(reshape(sigma2(n,:),N,[])).'*jmlN2;
end
jmlN2=ones(N,1);
hh2=bb.'*jmlN2;
Y2=sqrt(1/(N))*hh2
pa2=2*pi*f32*t*cos(tetaA1)
paa2=pa2+phiNo12;
paaa2=j*paa2;
q2=exp(paaa2);
rr2=sqrt(k)*q2;
r2=rr2(1:1);
s2=Y2'+r2;
Z2=s2/(sqrt(1+k));

%kanal h3
Tsend3=Tv1;
Tdiff3=Tsend3-Tv3;
lamda=c/f; v13(vv)=v11(vv); v23(vv)=0;
f13=v13(vv)/lamda; f23=v23(vv)/lamda;
v33(vv)=sqrt((v13(vv)*cos(Tdiff3)-v23(vv))^2+(v13(vv)*sin(Tdiff3))^2);
f33=v33(vv)/lamda;
T31diff3=acos((v13(vv)^2+v33(vv)^2-v23(vv)^2)/(2*v13(vv)-v33(vv)));
tetaA3=Tsend3+T31diff3;
a=-pi; b=pi;
rand('seed',15);
phiNo13=a+(b-a).*rand(1,length(t));
rand('seed',16);
tetaN3=a+(b-a).*rand(N,dT);

sigma3=0; alphaN3=0; betaM3=0;
for n=1:N
for tt=1:dT
alphaN3(n,tt)=(((2*n*pi)-pi+tetaN3(n,tt))/(4*N));
end
end

for n=1:N;
for tt=1:dT;
sigma3(n,m,tt)=(exp(j*((2*pi*f13*t(tt)*cos(alphaN3(n,tt))))));
end
end

jmlN3=ones(N,1);
for n=1:N;
cc(n,:)=(reshape(sigma3(n,:),N,[])).'*jmlN3;
end

jmlN3=ones(N,1);
hh3=cc.'*jmlN3;
Y3=sqrt(1/(N))*hh3

pa3=2*pi*f33*t*cos(tetaA1)
paa3=pa3+phiNo13;
paaa3=j*paa3;
q3=exp(paaa3);
rr3=sqrt(k)*q3;
r3=rr3(1:1);

s3=Y3'+r3;
Z3=s3/(sqrt(1+k));
Dss=qpskTx.*Z3;
%data user1ke destination lwt kanal h3
DssRc=qpskTx.*Z3;

EbNoRc=0:30;
EbNoLL=10.^(EbNoRc/10);
varRR=1./EbNoLL;
sigmaRR=sqrt(varRR);

for n=1:length(EbNoRc)
randn('seed',46); no4I=randn(1,dT);
randn('seed',47); no4Q=randn(1,dT);

no4=(sqrt(1/2))*(no4I+j*no4Q);
noSD1(n,:)=sigmaRR(n)*(no4);
DsRc(n,:)=DssRc+noSD1(n,:);
end
RssRc=qpskTx.*Z1;

EbNoR1=30;
EbNoRL1=10^(EbNoR1/10);
varRR1=1/EbNoRL1;
sigmaRR1=sqrt(varRR1);
randn('seed',48); no5I=randn(1,dT);
randn('seed',49); no5Q=randn(1,dT);
no5=(sqrt(1/2))*(no5I+j*no5Q);
noSR1=sigmaRR1*(no5);
RsRc=RssRc+noSR1;
ERsRc=mean((abs(RsRc)).^2);
GainRc=sqrt(E2./(ERsRc));
RDRc=GainRc*RsRc;
DRRRc=RDRc.*Z2;

for n=1:length(EbNoRc)
randn('seed',50); no6I=randn(1,dT);
randn('seed',51); no6Q=randn(1,dT);

no6=(sqrt(1/2))*(no6I+j*no6Q);
noRD1(n,:)=sigmaRR(n)*no6;
DRRc(n,:)=DRRRc+noRD1(n,:);

Z4=Z1.*Z2;
%kanal h1 dan h2 dijumlahkan
DTRc(n,:)=DsRc(n,:).*conj(Z3)+DRRc(n,:).*conj(Z4);
DE2R=(1+sign(real(DTRc(n,:))))/2;
DE4R=(1+sign(imag(DTRc(n,:))))/2;
DERc=[DE2R;DE4R];
dataRxRc=reshape(DERc,1,[]);
[NUM(n),BERRc(vv,n)]=biterr(data,dataRxRc);
end

end
BERmonte=BER/monte;
BERRcmonte=BERRc/monte;
end

semilogy(EbNo,BERmonte,'k*-',EbNoRc,BERRcmonte(1,:),'ko-',EbNoRc,BERRcmonte(2,:),'kv-',EbNoRc,BERRcmonte(3,:),'ks-'); grid on;
hold on;
xlabel('Eb/No(dB)'); ylabel('BER');
legend('Kanal Rayleigh','Kanal M2MRician Fading v1=v2=40km/jam','Kanal M2MRician Fading v1=v2=90km/jam','Kanal M2MRician Fading
v1=v2=140km/jam')

You might also like