📄 tcr_bs_to_relay_snr15_geser.m
字号:
clear allclcjmluser=2;snr_SR_db=15;snr_SD_db=snr_SR_db;snr_RD_db=25;for z=-7:snr_RD_db snr_RD=10^((z)/10);snr_SR=10^((snr_SR_db)/10);snr_SD=10^((snr_SD_db)/10);varians_SR = 1/(sqrt(2*snr_SR));varians_RD = 1/(sqrt(2*snr_RD));varians_SD = 1/(sqrt(2*snr_SD));jdata=10000;datauser1=randint(1,jdata,[0 1],1);datauser2=randint(1,jdata,[0 1],2);datauser=[datauser1 datauser2];b=[datauser1;datauser2];b=2*b-1;for k=1:jmluser s(k,1)=1; for n=2:length(b(1,:)); s(k,n)=b(k,n)*s(k,n-1); endends1=s(1,:);s2=s(2,:);% Pembangkitan Kanalrandn('seed',3);hR0=(randn(1,length(s1)).*(0.707));randn('seed',4);hI0=(randn(1,length(s1)).*(0.707));hs1=abs(hR0+i*hI0);randn('seed',5);hR1=(randn(1,length(s1)).*(0.707));randn('seed',6);hI1=(randn(1,length(s1)).*(0.707));hs2=abs(hR1+i*hI1);randn('seed',7);hR2=(randn(1,length(s1)).*(0.707));randn('seed',8);hI2=(randn(1,length(s1)).*(0.707));h21=abs(hR2+i*hI2);randn('seed',9);hR_sr=(randn(1,length(s1)).*(0.707));randn('seed',10);hI_sr=(randn(1,length(s1)).*(0.707));hsr=abs(hR_sr+i*hI_sr);randn('seed',11);hR_r1=(randn(1,length(s1)).*(0.707));randn('seed',12);hI_r1=(randn(1,length(s1)).*(0.707));hr1=abs(hR_r1+i*hI_r1);randn('seed',13);hR_r2=(randn(1,length(s1)).*(0.707));randn('seed',14);hI_r2=(randn(1,length(s1)).*(0.707));hr2=abs(hR_r2+i*hI_r2);%Pembangkitan Noise AWGN%Noise BS_U1randn('seed',20);noise1_real= randn(1,length(s1));es1_real= noise1_real.*varians_SR;randn('seed',80);noise1_imag= randn(1,length(s1));es1_imag= noise1_imag.*varians_SR;es1=es1_real+i*es1_imag;%Noise BS_U2randn('seed',21);noise2_real= randn(1,length(s2));es2_real= noise2_real.*varians_SD;randn('seed',81);noise2_imag= randn(1,length(s2));es2_imag= noise2_imag.*varians_SD;es2=es2_real+i*es2_imag;%Noise U1_U2randn('seed',22);noise21_real= randn(1,length(s1));es21_real= noise21_real.*varians_RD;randn('seed',82);noise21_imag= randn(1,length(s1));es21_imag= noise21_imag.*varians_RD;es21=es21_real+i*es21_imag;%Noise BS_Rrandn('seed',23);noise_sr1_real= randn(1,length(s1));esr1_real= noise_sr1_real.*varians_SR;randn('seed',83);noise_sr1_imag= randn(1,length(s1));esr1_imag= noise_sr1_imag.*varians_SR;esr1=esr1_real+i*esr1_imag;%Noise R_U1randn('seed',24);noise_r1_real= randn(1,length(s1));er1_real= noise_r1_real.*varians_RD;randn('seed',84);noise_r1_imag= randn(1,length(s1));er1_imag= noise_r1_imag.*varians_RD;er1=er1_real+i*er1_imag;%Noise R_U2randn('seed',25);noise_r2_real= randn(1,length(s1));er2_real= noise_r2_real.*varians_RD;randn('seed',85);noise_r2_imag= randn(1,length(s1));er2_imag= noise_r2_imag.*varians_RD;er2=er2_real+i*er2_imag;%Data yang dikirim BS ke user 1 dan BS ke relay timeslot 1BS_U1_1=s1;BS_R_1=s1;%Data yang diterima User1 dan Relay dari BS pada timeslot 1Rs1=hs1.*BS_U1_1+es1;Rsr1=hsr.*BS_R_1+esr1;%Data yang dikirim BS ke user 2 dan BS ke Relay timeslot 2BS_U2_2=s2;BS_R_2=s2;%Data yang diterima User 2 dan Relay dari BS pada timeslot 2Rs2=hs2.*BS_U2_2+es2;Rsr2=hsr.*BS_R_2+esr1; %Kanal yang dilewati dari BS ke relay Ts 1 dan 2 sama aja jadi dipake esr1%Hasil deteksi U1 pada timeslot 1r_11=real(Rs1);r_11=sign(r_11);d11(1)=1;for n=2:length(b(1,:)); d11(n)=r_11(n)*conj(r_11(n-1));end% d11=real(d11);U1E_1=d11;%Hasil Deteksi Relay pada timeslot 1r_r1=real(Rsr1); r_r1=sign(r_r1);dr1(1)=1;for n=2:length(b(1,:)); dr1(n)=r_r1(n)*conj(r_r1(n-1));end% dr1=real(dr1);RE_1=dr1; %Estimasi di relay%Hasil Deteksi Relay pada timeslot 2r_r2=real(Rsr2); r_r2=sign(r_r2);dr2(1)=1;for n=2:length(b(1,:)); dr2(n)=r_r2(n)*conj(r_r2(n-1));end% dr2=real(dr2);RE_2=dr2; %Estimasi di relay%Hasil deteksi U2 pada timeslot 2r_22=real(Rs2);r_22=sign(r_22);d22(1)=1;for n=2:length(b(1,:)); d22(n)=r_22(n)*conj(r_22(n-1));end% d22=real(d22);U2E_2=d22;%Encode oleh Relay sebelum mengirimkan kembali ke User 1& 2b_R=[RE_1;RE_2];for k=1:jmluser s_R(k,1)=1; for n=2:length(b(1,:)); s_R(k,n)=b_R(k,n)*s_R(k,n-1); endends_R1=sign(s_R(1,:));s_R2=sign(s_R(2,:));%Data yang dikirim dari Relay ke User1 & User2 Timeslot 3R_U1=s_R1+i*s_R2;R_U2=s_R1+i*s_R2;%Data yang diterima user1 dan user2 dari Relay Timeslot 3Rr1=hr1.*R_U1+er1;Rr2=hr2.*R_U2+er2;%Hasil Deteksi User1 Timeslot 3SE_r11=real(Rr1); %Hasil deteksi s1 oleh user1SE_r21=imag(Rr1); %Hasil deteksi s2 oleh user1r13=[SE_r11;SE_r21]; %Real baris 1 dan imajiner baris 2for k=1:jmluser be_u1(k,1)=1; for n=2:length(r13(1,:)); be_u1(k,n)=r13(k,n)*conj(r13(k,n-1)); %Estimasi endenddc_u1=(be_u1(1,:)); %Sinyal b1be_u2=(be_u1(2,:)); %Sinyal b2%Hasil Deteksi User2 Timeslot 3SE_r12=real(Rr2); %Hasil deteksi s1 oleh user2SE_r22=imag(Rr2); %Hasil deteksi s2 oleh user2r23=[SE_r12;SE_r22]; %Real baris 1 dan imajiner baris 2for k=1:jmluser be_u23(k,1)=1; for n=2:length(r23(1,:)); be_u23(k,n)=r23(k,n)*conj(r23(k,n-1)); %Estimasi endenddc_u2=(be_u23(1,:)); %Sinyal b1be_u22=(be_u23(2,:)); %Sinyal b2%%%Data yang dikirimkan User 1&2 ke User 2&1 Timeslot 4b2=[sign(dc_u1);sign(be_u22)];for k=1:jmluser s_4(k,1)=1; for n=2:length(b2(1,:)); s_4(k,n)=b2(k,n)*s_4(k,n-1); endends21_4=s_4(1,:);s12_4=s_4(2,:);%Data dari user1 ke user 2 timeslot 4s12_4=-i*conj(s12_4);%Data dari user2 ke user 1 timeslot 4s21_4=-i*conj(s21_4);%Sinyal yang diterima user 1 timeslot 4Rs21_4=real(-i*h21.*s21_4+es21);Rs21_4=sign(Rs21_4);be_21_4(1)=1;for n=2:length(b(1,:)); be_21_4(n)=Rs21_4(n)*conj(Rs21_4(n-1));enddc_21_4=be_21_4;%Sinyal yang diterima user 2 timeslot 4Rs12_4=real(-i*h21.*s12_4+es21);Rs12_4=sign(Rs12_4);be_12_4(1)=1;for n=2:length(b(1,:)); be_12_4(n)=Rs12_4(n)*conj(Rs12_4(n-1));enddc_12_4=be_12_4;%%% decision_1=U1E_1+dc_u1+dc_21_4;% decision_1=sign(decision_1);% decision_2=U2E_2+be_u22+dc_12_4;% decision_2=sign(decision_2);decision_1=U1E_1+dc_u1;decision_1=sign(decision_1);decision_2=U2E_2+be_u22;decision_2=sign(decision_2);Terima_1=(decision_1+1)/2;Terima_2=(decision_2+1)/2;Terima=[Terima_1 Terima_2];[N(z+8),BER(z+8)]=biterr(datauser,Terima);endsemilogy(0:32,BER,'o-','markerfacecolor','m')xlabel('Eb/No(dB)')ylabel('BER') title('Performance of TCR')hold ongrid on
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -