Professional Documents
Culture Documents
Mo Phong Kenh Thong Tin
Mo Phong Kenh Thong Tin
Chương 6:
Mô phỏng kênh thông tin
Thành phần của Hê ̣ thống Thông tin
Bernard Sklar, Digital Communications: Fundamentals and Applications, Prentice Hall, 2nd, 2000. 3
Kênh truyền
4
Cáp đồng
6
Sợi quang
7
Kênh vô tuyến
8
Kênh vô tuyến
9
Quá trình thu phát
Mã hóa,
Nhận tín hiệu và
điều chế…
khôi phục lại tín
hiệu được phát đi.
Giải điều chế, giải
mã và lọc tín hiệu…
Mô Phỏng Monte Carlo
Mô Phỏng Monte Carlo
Gieo ngẫu nhiên với phân bố đều
Sai số ~
Tính số Pi bằng mô phỏng MC
xx = rand;
yy = rand;
rr = sqrt(xx^2 + yy^2);
if (rr < 1)
giatri = giatri + 1;
end
giatri = 4*giatri/trial_num;
Số mẫu Trị Pi
10^5 3.1342
10^6 3.1407
10^7 3.1418
Phân phối đều: Mô Phỏng Monte Carlo
function sum_ppdeu(aa,bb,xx,trial_num)
CDF = zeros(1,length(xx));
for tt = 1 : length(xx)
for num = 1 : trial_num
RV = aa + (bb-aa)*rand;
if (RV < xx(tt))
CDF(tt) = CDF(tt) + 1;
end
end
end
CDF = CDF/trial_num;
Phân phối đều: Mô Phỏng Monte Carlo
function theory_ppdeu(aa,bb,xx)
CDF = zeros(1,length(xx));
for tt = 1 : length(xx)
if (xx(tt) < aa)
CDF(tt) = 0;
else
if (aa <= xx(tt) && xx(tt) <= bb)
CDF(tt) = (xx(tt) - aa)./(bb -
aa);
else
CDF(tt) = 1;
end
end
end
plot(xx,CDF,'b-')
end
Phân phối đều: Mô Phỏng Monte Carlo
clear all;
clc;
close all;
aa = 2;
bb = 5;
xx = 0:0.5:8;
trial_num = 10^5;
sum_ppdeu(aa,bb,xx,trial_num)
theory_ppdeu(aa,bb,xx)
Phân phối đều: Mô Phỏng Monte Carlo
Phân phối đều: Mô Phỏng Monte Carlo
Var X
2
X
12
Phân phối đều: Mô Phỏng Monte Carlo
% Lý Thuyết
for tt = 1 : length(aa)
EX(tt) = (bb + aa(tt))/2;
end
% Mô Phỏng
RV = aa(tt) + (bb-aa(tt))*rand;
EX(tt) = EX(tt) + RV;
EX = EX/trial_num;
Phân phối đều: Mô Phỏng Monte Carlo
% Mô Phỏng
EX = (bb + aa)/2
RV = aa(tt) + (bb-aa(tt))*rand
var(tt) = var(tt) + (RV - EX(tt))^2
Phân phối đều: Mô Phỏng Monte Carlo
Ký hiệu: X ~ N , 2
Hàm PDF:
1 x 2
fX x exp
2 2 2 2
Phân bố Gauss (Normal Distribution)
Hàm PDF 1 x
2
fX x exp
2 2 2 2
Hàm CDF
x x
FX x f X t dt 1 Q
Q(.) là hàm Q (Gaussian Q function)
1 y2
Q x exp dy
2 x 2
Phân bố Gauss (Normal Distribution)
x2
Hàm CDF: 1 exp 2 , x 0
FX x 2
0, x0
x x2
Hàm PDF: 2 exp 2 , x 0
f X x 2
0, x0
Trị trung bình & Phương sai:
4 2
E X Var X
2 2
Phân bố Gauss (Normal Distribution)
• Mô Phỏng MATLAB:
XX = sqrt(var)*randn(1,1);
YY = sqrt(var)*randn(1,1);
RV = sqrt(XX^2 + YY^2);
Phân bố Gauss (Normal Distribution)
Phân bố Mũ
Thermal Noise
Intermodulation noise
Crosstalk
Impulse Noise
Thermal Noise
Thermal noise due to agitation of
electrons
Present in all electronic devices and
transmission media
Cannot be eliminated
Function of temperature
Particularly significant for satellite
communication
Noise Terminology
SD | hSD |2
Var D N0
th
OP Pr( SD th ) Pr | hSD |
2
th th
OP F|h |2 1 exp SD
SD
Nếu kênh truyền giữa S và D là kênh fading Rayleigh thì
độ lợi kênh truyền |hSD|2 có phân phối mũ
Xác suất dừng của hệ thống
function LYTHUYET(PdB,LD,gth)
PP = 10^(PdB/10);
OUT_SM = 1 - exp(-
LD*gth/PP);
%
%
end
Chương trình mô phỏng
function MOPHONG(PdB,LD,gth,bit_frame)
PP = 10^(PdB/10);
OUT_SM = zeros(1,length(PP));
for aa = 1 : length(PP)
fprintf('Running %d per %d \n',aa,length(PP));
for bitnum = 1 : bit_frame
hh = 1/sqrt(2*LD)*(randn(1,1)+j*randn(1,1));
SNR = PP(aa)*abs(hh)^2;
if (SNR < gth)
OUT_SM(aa) = OUT_SM(aa) + 1;
end
end
end
OUT_SM = OUT_SM/bit_frame;
Kết quả mô phỏng
Dung lượng kênh truyền
C = E C E log 2 (1 SD )
log 2 1 x f SD x dx
0
th th
OP F|h |2 1 exp SD
SD
x
F SD x 1 exp d SD
β biểu diễn hệ số suy hao đường
truyền
d là khoảng cách giữa S và D
d SD x
f SD x exp d SD
Dung lượng kênh truyền
Hàm PDF
2m m
mx
2
fX x x 2 m1
exp
m m
Hàm CDF
m 2
FX x m, x / m
Hàm Gamma
m x m1
exp x dx
0
Code Matlab:gamma(.)
Mathematica:Gamma[]
Tính chất
m m 1 m 1
n n 1 ! n N
Phân bố Nakagami
x
Lower : m, x t m1 exp t dt
0
m, x m, x m
Xác suất dừng của hệ thống
Matlab:
Phân bố Nakagami
m
d
Trong Matlab:
OP = gammainc(m*lambda*gth/gamma,m)
x
1
a 1 t
gammainc ( x, a ) t e dt
a 0
Matlab: Kênh Truyền Nakagami-m
for nn = 0:(mm - 1)
aa = …
1/factorial(nn)*(mm*LD*gth/PP)^nn
*exp(-mm*LD*gth./PP);
Hs1 = Hs1 + aa;
end
Out_LT = 1 - Hs1;
Matlab: Kênh Truyền Nakagami-m
for aa = 1 : length(PP)
fprintf('Running %d per %d \n',aa,length(PP));
for bitnum = 1 : sample
hh = gamrnd(mm,1/LD/mm);
SNR = PP*hh;
if (SNR < gth)
Out_SM(aa) = Out_SM(aa) + 1;
end
end
Matlab: Kênh Truyền Nakagami-m