1. Phading trong kênh thông tin mô hình toán học
4.5.1 Yêu cầu công suất
Phương pháp phân tập máy thu yêu cầu phát hai ký hiệu ra khỏi 2 anten cùng một lúc. Nếu hệ thống phát ra công suất giới hạn, để có tổng công suất phát giống nhau, từ hai anten năng lượng phân phối cho mỗi ký hiệu chỉ là một nửa. Kết quả là phân tập máy thu bị 3dB giảm khi tính BER. Tuy nhiên, 3dB giảm đi của công suất trong mỗi anten phát tức là chúng ta sử dụng các bộ khuyếch đại công suất nhỏ hơn, rẻ hơn và tuyến tính hơn. 3dB giảm trong khuếch đại công suất là tiết kiêm được chi phí rất đáng kể. Hai bộ khuếch đại công suất giảm một nửa tốt hơn nhiều 1 bộ khuyếch đại công suất trong trường hợp MRRC.
4.5.2 Lỗi khi ƣớc lƣợng kênh truyền.
Mặc dù trong luận văn này, giả sử rằng nơi thu xác định được kênh truyền một cách lý tưởng. Việc ước lượng kênh thông tin có thể thực hiện bằng việc chèn ký hiệu hoa tiêu vào thu lại các ký hiệu này [7, 8]. Những tín
hiệu hoa tiêu có giá trị xác định trước này được phát một cách định kỳ từ anten phát tới anten thu. Anten thu lấy ra những mẫu này và thực hiện phép nội suy tìm ra ước lượng của kênh cho từng ký hiệu đã được phát đi.
Có nhiều yếu tố có thể làm ảnh hưởng tới việc chèn và rút ra các ký hiệu hoa tiêu này ví dụ như là nội suy không chính xác hay lỗi lượng tử hoá. Đối với các hệ thống có băng thông hẹp thì lỗi ước lượng lớn nhất là kênh truyền bị biến đổi theo thời gian. Vì vậy, lỗi ước lượng kênh truyền sẽ được tối thiểu hoá khi tốc độ chèn các tín hiệu hoa tiêu phải lớn hơn hoặc bằng tần số lấy mẫu Nyquist trên kênh truyền (bằng hai lần tần số Doppler lớn nhất). Tức là, chỉ cần kênh được lấy mẫu ở một tốc độ đủ lớn thì lỗi ước lượng kênh sẽ được giảm thiểu. Đối với phương pháp phân tập anten thu bậc M thì thấy rằng tại một thời điểm xác định có M mẫu độc lập tại M kênh được sử dụng. Thế nhưng, với phương pháp phân tập anten thu thì chúng ta lại phải ước lượng M kênh truyền từ 1 anten thu duy nhất. Có thể thấy rằng, việc ước lượng kênh truyền thực sự rất phức tạp.
4.5.3 Những ảnh hƣởng của trễ.
Với phương pháp phân tập anten phát bậc N (N anten ở phần phát), nếu các phiên bản tín hiệu được phát ở N khoảng thời gian riêng biệt từ tất cả các anten thì tại nơi thu, việc trễ khi giải mã sẽ là N chu kỳ ký hiệu. Đối với một hệ thống đa sóng mang, nếu các phiên bản tín hiệu được gửi đi ở tại cùng 1 thời điểm trên các tần số sóng mang khác nhau thi giải mã sẽ chỉ trễ là 1 chu kỳ ký hiệu.
KẾT LUẬN
Luận văn đã trình bày hai phương pháp phân tập theo không gian là phương pháp phân tập anten phát (ở đây là phuơng pháp của Alamouti, dùng mã không gian - thời gian) và phương pháp phân tập anten thu. Phương pháp phân tập anten phát sử dụng 2 anten phát và M anten thu sẽ cho bậc tương đương với phương pháp phân tập anten thu MRRC với 1 anten phát và 2M anten thu. Cả hai phương pháp đều nhằm cải thiện chất lượng của hệ thống không dây. Các phương pháp đều không cần các thông tin phản hồi từ máy thu. Độ phức tạp của cả hai phương pháp là tương đương nhau. Nếu toàn bộ công suất phát ra là giống nhau thì phương pháp phân tập anten phát bị thiệt 3 dB bởi vì đồng thời phát 2 ký hiệu riêng biệt từ 2 anten. Nếu tăng công suất phát gấp đôi chất lượng hai hệ thống là giống hệt nhau. Hơn nữa, nếu cùng một công suất phát thì việc chế tạo hai bộ khuếch đại công suất nhỏ lại là ưu điểm của phân tập anten phát. Phương pháp phân tập anten phát cần số hoa tiêu gấp hai lần phân tập anten thu.
TÀI LIỆU THAM KHẢO
[1] W. C. Jakes, Ed., Microwave Mobile Communications. New York, Wiley, 1974. [2] J. K. Cavers, ―An analysis of pilot symbol assisted modulation for Rayleigh fading channels,‖ IEEE Trans. Veh. Technol., vol. 40, pp.686–693, 1991.
[3] S. Sampei and T. Sunaga, ―Rayleigh fading compensation method for 16 QAM in digital land mobile radio channels,‖ in Proc. IEEE Vehicular Technology Conf.,
San Francisco, CA, 1989, pp. 640–646.
[4] T. Miki and M. Hata, ―Performance of 16 kbit/s GMSK tranmission with postdetection selection diversity in land mobile radio,‖ IEEE Transactions on Vehicular Technology, vol. 33, pp. 128–133, Aug. 1984.
[5] Q. Zhang, ―Probability of error for equal gain combiners over rayleigh channels: some closed form solutions.,‖ IEEE Transactions on Communications, vol. 45, pp. 270–273, Mar. 1997.
[6] V. K. B. A. Annamalai, C. Tellambura, ―Probability of error for equal gain combiners over rayleigh channels: some closed form solutions.,‖ IEEE Transactions on Communications, vol. 45, pp. 270–273, Mar. 1997.
[7] Theodore. S. Rappaport, ―Wireless Communications‖, Prentice-Hall Communications Engineering and Emerging Technologies Series.
[8] S. Alamouti, ―A simple transmit diversity technique for wireless communications,‖ IEEE J. Select. Areas Commun., vol. 16, PP. 1451—1458,
October 1998.
[9] www.math.harvard.edu/~knill/sofia/data/statistics.pdf
[10] J. K. Cavers, ―An analysis of pilot symbol assisted modulation for Rayleigh fading channels,‖ IEEE Trans. Veh. Technol., vol. 40, pp. 686–693, 1991.
[11] S. Sampei and T. Sunaga, ―Rayleigh fading compensation method for 16 QAM in digital land mobile radio channels,‖ in Proc. IEEE Vehicular Technology Conf.,
PHỤ LỤC A. Mã chƣơng trình
A1. Mã chƣơng trình hình 1, hình 14.
mod = input('chon che do dieu che(1=BPSK,2=QPSK,3=8PSK,4=16QAM): '); close all;
totsim =20; % so luong ky hieu truyen
index = 1; % dung cho cac vecto SNR and SER b = 2^mod; % so diem tin hieu tren chom sao k = 2; % co 2 ky hieu
rate = 1;
% cac diem tren chom sao tin hieu switch mod
case 1 % --- BPSK
ref(1) = +1; ref(2) = -1; case 2 % --- QPSK (GRAY)
ref(1) = 1; ref(2) = i; ref(3) = -1; ref(4) = -i; case 3 % --- 8PSK (GRAY)
ct = sqrt(2);
ref(1) = 1; ref(2) = (1+i)/ct; ref(3) = i; ref(4) = (-1+i)/ct; ref(5) = -1; ref(6) = (-1-i)/ct; ref(7) = -i; ref(8) = (1-i)/ct; case 4 % --- 16QAM (GRAY)
x1 = 1/sqrt(10); x3 = 3/sqrt(10);
x4 = 4/sqrt(10); % chuan hoa nang luong xuong 1
ref(1) = x3+i*x1; ref(2) = x3+i*x3; ref(3) = x1+i*x3; ref(4) = x1+i*x1; ref(5) = ref(1)-x4; ref(6) = ref(2)-x4; ref(7) = ref(3)-x4; ref(8) = ref(4)-x4;
ref(9) = ref(5)-i*x4; ref(10) = ref(6)-i*x4; ref(11) = ref(7)-i*x4; ref(12) = ref(8)-i*x4;
ref(13) = ref(9)+x4; ref(14) = ref(10)+x4; ref(15) = ref(11)+x4; ref(16) = ref(12)+x4;
end snr=40;
esno(index) = snr; % gan ti le tin tren tap, luc dau index=1 % --- tinh muc nhieu tu gia tri SNR tren bit('rate' duoc dung) amp = sqrt(2*rate*10^(snr/10)); % de quy dinh AWGN o dong 82
errcnt = 0; % bo dem loi dat = 0 truoc moi lan dua 1 gia tri SNR moi % --- vong lap
for nsim = 1:1:totsim % --- cac ky hieu nguon
u = rand(1,k); % vi k=2 tuc la co 2 ky hieu switch mod case 1 % --- BPSK u = 1+floor(2.*u); case 2 % --- QPSK u = 1+floor(4.*u); case 3 % --- 8PSK u = 1+floor(8.*u); case 4 % --- 16QAM u = 1+floor(16.*u); end % --- dieu che
v = ref(u); % vi tri ky hieu tren chom sao, gia tri phuc % --- ma hoa khong gian - thoi gian
x(1,2) = v(2); % x(1,2) tren may phat 2 x(2,1) = -conj(v(2)); % tai thoi diem t+1 phat x(2,1) tren may phat 1 x(2,2) = conj(v(1)); % phat x(2,2) tren may phat 2 % --- kenh nhieu loi vao, 1 loi ra voi nhieu RAYLEIGH FADING and AWGN fade(1) = gnrayleigh(0,sqrt(0.5));
fade(2) = gnrayleigh(0,sqrt(0.5));
noise(1) = (gngauss(0,1) + i*gngauss(0,1))/amp; noise(2) = (gngauss(0,1) + i*gngauss(0,1))/amp; f = sqrt(2); % ---chuan hoa cong suat pha =1
y(1) = ( fade(1)*x(1,1) + fade(2)*x(1,2) ) / f + noise(1); % pt 11 y(2) = ( fade(1)*x(2,1) + fade(2)*x(2,2) ) / f + noise(2); % pt 11 % --- giai ma khong gian thoi gian
e = ( -1 + abs(fade(1)).^2 + abs(fade(2)).^2 ) * abs(ref).^2; % size(e)= 1 x 2
m1 = y(1)*conj(fade(1)) + conj(y(2))*fade(2) - ref; % gan giong pt 12 % ref la cac tin hieu tren chom sao
% m1 la de tinh loi, tuc la tin hieu thu duoc tru di tin hieu chuan m1 = m1 .* conj(m1);
m1 = m1 + e;
[c,uhat(1)] = min(m1); % chon loi nho nhat ML % u la tin hieu, uhat la uoc luong cua tin hieu
m2 = y(1)*conj(fade(2)) - conj(y(2))*fade(1) - ref; % gan giong pt 12 m2 = m2 .* conj(m2); % chi con gia tri thuc
m2 = m2 + e;
% m2 la de tinh loi
[c,uhat(2)] = min(m2); % uhat(2) la vi tri ma m2 dat min % ve gian do subplot(2,2,1); plot(v,'k*'); hold on; subplot(2,2,2); plot(y,'kx'); axis tight; hold on; subplot(2,2,3); plot(v+noise,'k+');
axis([-1.2 1.2 -1.2 1.2]); % chi co nhieu trang %axis tight; hold on; subplot(2,2,4); plot(ref(uhat),'ko'); hold on; function [gsrv1]=gngauss(m,sgma) if nargin == 0, m=0; sgma=1; elseif nargin == 1, sgma=m; m=0; end; u=rand; z=sgma*(sqrt(2*log(1/(1-u)))); u=rand; gsrv1=m+z*cos(2*pi*u); function [ry]=gnrayleigh(m,sgma) u=rand; z=sgma*(sqrt(2*log(1/(1-u)))); u=rand;
gsrv1=m+z*cos(2*pi*u); gsrv2=m+z*sin(2*pi*u); ry = sqrt ((gsrv1.^2 + gsrv2.^2)); A2. Mã chƣơng trình hình 2 clear N=1000000; % so bit truyen snr=0:1:25; for m=1:size(snr,2) efade = 0; egaus = 0;
No=10^(-snr(m)/10); % pho cua nhieu AWGN sigma= sqrt(No/2); % do lech chuan for n=1:N
s=(-1)^round(rand); x=randn/sqrt(2); y=randn/sqrt(2);
p=x^2 + y^2; % cong suat Phading a=sqrt(p); % Bien do Phading
r=a*s + sigma*randn; % tin hieu meo Phading + AWGN rg = s + sigma*randn; % tin hieu sach + AWGN
if (r>0) shat=+1; else shat=-1; end if (rg>0) sh=+1; else sh=-1; end if (shat ~= s) efade = efade + 1; end if (sh ~= s) egaus = egaus + 1; end end
pe(m)=efade/N; % BER phading Rayleigh phang peg(m)=egaus/N; % BER chi co AWGN
fprintf('%f \t %e\n',snr(m),pe(m)); end
semilogy(snr,pe,'-') hold on
semilogy(snr,peg,':')
legend('kenh Rayleigh+AWGN','kenh AWGN'); ylabel('Ty le loi bit');
xlabel('E_b/N_0 trung binh (dB)');
A3. Mã chƣơng trình hình 6
BitMapping=[0;1]; SignalSet=[1;-1]; Trail=10;
NumberOfBits=200; % so bit truyen ER=0;
Bits=0; NTx=1; MRx=2; Eb=1; SNR=[0:2:10]; for jj=1:length(SNR) ER=zeros(5,1); Bits=0; SP2MRx=0; NP2MRx=0; SP1MRx=0; NP1MRx=0; p=10^(SNR(jj)/10); %% SNR tai bo thu
sigma=sqrt(Eb/(2*p)); %% do lech chuan sigma2=N0/2;
while ((min(ER(2:4))<Trail)|((Bits<NumberOfBits)&(min(ER(2:4))>=Trail))) %ma tran kenh truyen MRxXNTX
%tao 2 ky hieu 2PSK
RandomIndex=ceil(2*rand(NTx,1)); %% chi so th 2PSK 1=1, 2=-1
x=SignalSet(RandomIndex); %% anh xa gia tri BIT thanh gia tri phuc Bits=Bits+1; %% bo dem so BIT
%vecto nhan
%tao nhieu Gauss %% kenh AWGN
gn=sigma*randn(1,1); ygn=x+gn;
%% Phan tap may thu
AWGN=sigma*randn(MRx,1);%+j*sqrt(0.5)*randn(MRx,1);
H=sqrt(abs(sqrt(0.5)*randn(MRx,NTx)+j*sqrt(0.5)*randn(MRx,NTx))); y2MRx=H*x+AWGN;
SP2MRx=SP2MRx+(H*x)'*(H*x)/MRx; %%cs th tren anten nhan NP2MRx=NP2MRx+AWGN'*AWGN/MRx; %% cs nhieu tren anten nhan %% anten thu AWGN1Rx=sigma*randn(1,1); %% kenh phading h=sqrt(abs(sqrt(0.5)*randn(1,1)+j*sqrt(0.5)*randn(1,1))); y1MRx=h*x+AWGN1Rx; SP1MRx=SP1MRx+(h*x)'*(h*x); NP1MRx=NP1MRx+AWGN1Rx'*AWGN1Rx; %% may thu DS_Gaussian=BPSKDetector(ygn,1); DS_single=BPSKDetector(y1MRx,h); DS_sc=BPSKDetectSC(y2MRx,H); DS_eqc=BPSKDetectEQC(y2MRx,H); DS_mrc=BPSKDetectMRC(y2MRx,H); % dem loi ER(1)=ER(1)+mod(BitMapping(DS_Gaussian)+BitMapping(RandomIndex),2); %% ER(2)=ER(2)+mod(BitMapping(DS_single)+BitMapping(RandomIndex),2); %% ER(3)=ER(3)+mod(BitMapping(DS_sc)+BitMapping(RandomIndex),2); %% SC
ER(4)=ER(4)+mod(BitMapping(DS_eqc)+BitMapping(RandomIndex),2); %% EGC ER(5)=ER(5)+mod(BitMapping(DS_mrc)+BitMapping(RandomIndex),2); %% MRC end % ket thuc vong lap While
BER(:,jj)=ER/Bits
SimSNR2dB(jj)=10*log10(SP2MRx/(2*NP2MRx)) SimSNR1dB(jj)=10*log10(SP1MRx/(2*NP1MRx)) end %% ket thuc vong lap SNR
figure;
semilogy(SNR,BER(3,:),'-ms',SNR,BER(4,:),'-ro',SNR,BER(5,:),'-cx'); legend('phuong phap SC','phuong phap EGC','phuong phap MRC');
xlabel('Eb/N0 (dB)'); ylabel('BER');
title('BPSK voi cac phuong phap MRC, SC, EGC');
A4. Mã chƣơng trình hình 11, 12, 13
% mo hinh Jakes dung de xay dung kenh truyen Rayleigh % goi jakes.m o dong 22
clear all;close all;
Fc = 900e+06; % tan so song mang Hz --> ISM band
wc = 2*pi*Fc; % chuyen sang tan so song mang (rad/sec)
V = 3000/3600; % toc do phuong tien di dong (= 3 Km/hr) in m/sec N0 = 8; % kenh co 8 duong
lambda = 3e+08/Fc; % tan so song mang --> buoc song ung voi Fc Fm = V/lambda % tan so Doppler
Fs = 8*Fm; % tan so lay mau
M = 10000; % so mau dung mo phong paths = 1; %
Ts = 1/Fs; % chu ky lay mau
t = [0:Ts:(M-1)*Ts]; % thoi gian mo phong roi rac %%%%%%%%%%%%% fad = jakes(Fm,Fs,M,N0,paths); %%%%%%%%%%%%%%% a = abs(fad); xi = real(fad); xq = imag(fad);
[R_xx,lags] = xcorr(fad,64,'coeff'); % uoc luong ham tuong quan cheo [Sx,w] = periodogram(R_xx,[],'twosided',128,Fs); figure subplot(3,1,1) hist(a,50); title('Envelope'); subplot(3,1,2) hist(xi,50); title('In-phase'); subplot(3,1,3) hist(xq,50); title('Quadrature'); figure plot(t(1:128), 10*log10(a(1:128)),'k');
axis([0 128/Fs min(10*log10(a(1:128)))-1 max(10*log10(a(1:128)))+1]); xlabel('Thoi gian (s)');
ylabel('Do khuech dai');
title('Phading Envelope (128 samples)') figure;
subplot(2,1,1)
plot(lags,R_xx,'k'); % lag o dong 28 title('Ham tu tuong quan');
grid
subplot(2,1,2)
psdplot(fftshift(Sx),w-Fs/2,'Hz','linear','PSD'); axis([-Fm-5 Fm+5 0 max(Sx)*1.2]);
function ray = jakes(fm,fs,M,N_0,index)
% fm tan so doppler % fs tan so lay mau % M so mau
% N_0 so duong
% luu y o day fading ta xet la ko tuong quan N = 2*(2*N_0+1); % N=34
nn = 1 : N_0; % duong thu 1 toi duong thu 8
f = fm*cos(2*pi*nn/N); %vector tan so co 8 thanh phan
Ts = 1/fs; %chu ky lay mau
onset = N_0*(1/fm); %khoang thoi gian on dinh can thiet
Te = 2*onset + M*Ts; %chu ky danh gia bang M*Ts (thoi gian ly tuong neu ko bi fading)
% nhung vi co fading nen phai keo dai 1 khoang la 2*onset
t = 0 : Ts : Te; %vecto thoi gian (dai on binh thuong)
%%%%%%%%%%%%%%% %thiet lap pha ban dau alpha = 0;
beta_n = pi*(nn + 2*(index-1))/(N_0+1); %phase vector co 8 thanh phan %phan thuc
Xc0 = sqrt(2)*cos(alpha)*cos(2*pi*fm*t); % la vecto co Te/Ts thanh phan Xc = Xc0 + 2*cos(beta_n)*cos(2*pi*f'*t);
%phan ao
Xs0 = sqrt(2)*sin(alpha)*cos(2*pi*fm*t); Xs = Xs0 + 2*sin(beta_n)*cos(2*pi*f'*t); %%%%%%%%%%%%%%%%%%%%%%%%
%ham fading phuc
T = (1/sqrt(2*N_0+1))*(Xc+sqrt(-1)*Xs); % vi nhieu kenh nen phai chia bot cho sqrt(2*N_0+1))
%%%%%%%%%
Tstart = onset + 0.9*rand(1)*onset; %cong them onset de cho he thong on dinh
% 0.9*rand(1)*onset cong them de cho thanh khoi dau ngau nhien Mstart = round(Tstart/Ts);
Mend = Mstart + M -1; % M la so mau ray = T(Mstart:Mend);
A5. Mã chƣơng trình hình 15 Main.m
figure('name','nguyen huu tung'); [SNR,BER]=MRC_16QAM(1); semilogy(SNR,BER,'k-','LineWidth',2); hold on; [SNR,BER]=MRC_16QAM(2); semilogy(SNR,BER,'k-v','LineWidth',2); [SNR,BER]=MRC_16QAM(4); semilogy(SNR,BER,'k-s','LineWidth',2); [SNR,BER]=MRC_16QAM(6); semilogy(SNR,BER,'k-o','LineWidth',2); legend('uncode','MRx=2','MRx=4','MRx=6') grid on; xlabel('Es/N0'); ylabel('BER');
title('MRC 16QAM voi so may thu thay doi');
function [SNR,BER]=MRC_16QAM(MRx)
%close all; %clear all; format short e; Trail=60;
NumberOfBits=6000; % so bit trong moi lan mo phong qset=16; % kich co cua chom sao tin hieu
ER=0; % thiet lap loi b an dau NTx=1; % so anten ben phat
%MRx=4; % so anten ben thu ES=10;% cong suat tin hieu
BitMapping=[0 0 0 0;0 0 0 1;0 0 1 1;0 0 1 0;0 1 0 0;0 1 0 1;0 1 1 1;0 1 1 0;...
1 0 0 0;1 0 0 1;1 0 1 1;1 0 1 0;1 1 0 0;1 1 0 1;1 1 1 1;1 1 1 0]; % dung cho QAM16
SignalSet=[3+3*i;1+3*i;-1+3*i;-3+3*i;3+1*i;1+1*i;-1+1*i;-3+1*i;... 3-1*i;1-1*i;-1-1*i;-3-1*i;3-3*i;1-3*i;-1-3*i;-3-3*i]; %% for 16QAM SNR=[0:2:10]; %%%%%%%%%%%%%%%%%%%%% for jj=1:length(SNR)
ER=0; %% thiet lap loi ban dau SP=0; %% thiet lap cs tin hieu NP=0; %% thiet lap cs nhieu Bits=0;
RV=0;
Sigma2=ES/2*10^(-SNR(jj)/10); %% do lech chuan binh phuong nhieu theo moi huong, la nhieu trang
while ((ER<Trail)|((Bits<NumberOfBits)&(ER>=Trail))) % neu so loi ER < 60 hoac so bits< 6000
% moi lan lai dua them 4 bit vao de xu ly truyen
%% tao ra tin hieu de truyen di
XInd=ceil(qset*rand(NTx,1)); % nhan gia tri tu 0 ---> 16 X=SignalSet(XInd); % anh xa no vao tin hieu phuc 16QAM
Bits=Bits+NTx*log2(qset); % so bit truyen di tang them 1 luong la 4 bit=NTx*log2(qset)
%% dem so bit
%tao ra ma tran kenh truyen 4 thu 1 phat MRxXNTX
H=sqrt(0.5/NTx)*randn(MRx,NTx)+i*sqrt(0.5/NTx)*randn(MRx,NTx); % size H= 4 x 1
% size(H)= 4 x 1 %tao nhieu trang
AWGN=sqrt(Sigma2)*randn(MRx,1)+i*sqrt(Sigma2)*randn(MRx,1); % tai dau thu, vec to thu dc la 4 x 1 (4 may thu)
Y=H*X+AWGN; %%% Recieved Vector size la (4 x 1) %HH=VirtualH
SP=SP+real((H*X)'*(H*X)/(MRx));%% cong suat tin hieu trung binh tren cac anten nhan
NP=NP+real(AWGN'*AWGN/(MRx)); %% cong suat nhieu trung binh tren cac anten nhan
% tinh SP va NP de tinh ti le tin tren nhieu tai noi thu RV=RV+1; %% dem xem da nhan bao nhieu vecto
%%% MRRC cho 16QAM
[umin,uInd]=min(H'*Y*ones(qset,1)-H'*H*SignalSet);
% uInd: la vi tri bi nhan gia tri toi thieu trong 16 gia tri % H'*Y*ones(qset,1)-H'*H*SignalSet
% uInd(ii)=(mod(phase(u(ii)+i*u(ii+NTx))/pi*4+8,8)-1)/2+1; % uInd viet tat cua U index
% rem(7,5)=2 chia lay phan du
% vidu rem(BitMapping(XInd,:)+BitMapping(uInd,:),2)= 0 1 0 0 ER=ER+sum(rem(BitMapping(XInd,:)+BitMapping(uInd,:),2));
% o day lenh REM rat hay rem(1+1,2)=0, rem(0+0,2)=0 nghia la neu bit la % dung thi loi ko duoc cong them
% BitMapping(XInd,:) la 4 bit phat % BitMapping(uInd,:) la 4 bit thu end % while
BER(jj)=ER/Bits; % ty le tin hieu/ nhieu SNR(jj);
MSNR(jj)=10*log10(SP/NP); % cs tin hieu/ nhieu tai bo thu (dB) end; % for
A6. Mã chƣơng trình hình 16 Main.m
figure('name','nguyen huu tung'); [SNR,BER]=MRC_8PSK(1); semilogy(SNR,BER,'k-','LineWidth',2); hold on; [SNR,BER]=MRC_8PSK(2); semilogy(SNR,BER,'k-v','LineWidth',2); [SNR,BER]=MRC_8PSK(4);
semilogy(SNR,BER,'k-s','LineWidth',2); [SNR,BER]=MRC_8PSK(6); semilogy(SNR,BER,'k-o','LineWidth',2); legend('uncode','MRx=2','MRx=4','MRx=6') grid on; xlabel('Es/N0 (dB)'); ylabel('BER');
title('MRC 8PSK voi so may thu thay doi');
function [SNR,BER]=MRC_8PSK(MRx) format short e; Trail=60; NumberOfBits=6000; ER=0; NTx=1; ES=1; BitMapping=[0 0 0;0 0 1;0 1 1;0 1 0;1 1 0;1 1 1;1 0 1;1 0 0]; %% Gray SignalSet=[1;real(exp(i*pi/4))+real(exp(i*pi/4))*i;i;- real(exp(i*pi/4))+real(exp(i*pi/4))*i;-1;-real(exp(i*pi/4))- real(exp(i*pi/4))*i;-i;real(exp(i*pi/4))-real(exp(i*pi/4))*i]; qset=length(SignalSet); SNR=[0:2:10]; %%%%%%%%%%%%%%%%%%%%% for jj=1:length(SNR) ER=0; %% ER2=0; SP=0; %% NP=0; %% Bits=0; RV=0; Sigma2=ES/2*10^(-SNR(jj)/10); while ((ER<Trail)|((Bits<NumberOfBits)&(ER>=Trail))) XInd=ceil(qset*rand(NTx,1)); X=SignalSet(XInd); Bits=Bits+NTx*log2(qset); H=sqrt(0.5/NTx)*randn(MRx,NTx)+i*sqrt(0.5/NTx)*randn(MRx,NTx); AWGN=sqrt(Sigma2)*randn(MRx,1)+i*sqrt(Sigma2)*randn(MRx,1); Y=H*X+AWGN; %%% Vecto nhan duoc
Y2=X+AWGN;
SP=SP+real((H*X)'*(H*X)/(MRx));%cs tin hieu tren an ten phat NP=NP+real(AWGN'*AWGN/(MRx)); %cs tin hieu tren an ten thu RV=RV+1; %% Dem so vecto nhan duoc
[umin,uInd]=min(H'*Y*ones(qset,1)-H'*H*SignalSet);
[umin2,uInd2]=min(ones(1,MRx)*Y2*ones(qset,1)-SignalSet); % chi co nhieu trang don thuan
ER=ER+sum(rem(BitMapping(XInd,:)+BitMapping(uInd,:),2)); ER2=ER2+sum(rem(BitMapping(XInd,:)+BitMapping(uInd2,:),2)); end BER(jj)=ER/Bits; BER2(jj)=ER2/Bits; SNR(jj); MSNR(jj)=10*log10(SP/NP); end
A7. Mã chƣơng trình hình 17 Main.m
figure('name','nguyen huu tung'); [SNR,BER]=MRC_QPSK(1); semilogy(SNR,BER,'k-','LineWidth',2); hold on; [SNR,BER]=MRC_QPSK(2); semilogy(SNR,BER,'k-v','LineWidth',2); [SNR,BER]=MRC_QPSK(4); semilogy(SNR,BER,'k-s','LineWidth',2); [SNR,BER]=MRC_QPSK(6); semilogy(SNR,BER,'k-o','LineWidth',2); legend('uncode','MRx=2','MRx=4','MRx=6') grid on; xlabel('Es/N0 (dB)'); ylabel('BER');
title('MRC QPSK voi so may thu thay doi');
function [SNR,BER]=MRC_QPSK(MRx)
%clear all; format short e; Trail=60;
NumberOfBits=6000;
qset=4; %% kich co cua chom sao QPSK ER=0;
NTx=1; %MRx=4; ES=1;
BitMapping=[0,0;0,1;1,1;1,0]; % 4 vi tri anh xa tren chom sao
SignalSet=[1+i*0;0+i*1;-1+i*0;0-i*1]*exp(i*pi/4); % cac vi tri chom sao la gia tri phuc
SNR=[0:2:10];
%%%%%%%%%%%%%%%%%%%%% for jj=1:length(SNR)
ER=0; %% dat loi ban dau la 0
SP=0; %% thiet lap cs tin hieu ban dau NP=0; %% thiet lap cs nhieu ban dau Bits=0;
RV=0;
Sigma2=ES/2*10^(-SNR(jj)/10); %% do lech chuan nhieu theo tung huong