Viết chương trình matlab vẽ hàm mật độ xác suất của phân phối chuẩn hoá.. Mô tả hình dáng đồ thị của hàm Px trên là hình gì?. Ý nghĩa và ứng dụng của hàm phân phối xác suất Gauss trong
Trang 1TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
VIỆN ĐIỆN TỬ - VIỄN THÔNG
□&□ BÁO CÁO THÍ NGHIỆM MÔN: THÔNG TIN SỐ
Mã học phần : ET3250
Sinh viên : Đặng Văn Khương
MSSV : 20182612
Lớp : DTVT 02
Mã lớp thí nghiệm : 713391
Hà Nội, 2022
Trang 2Bài số 1 : Mô phỏng nhiễu Gauss
Bài 1.1 Viết chương trình matlab vẽ hàm mật độ xác suất của phân phối chuẩn
hoá.
+) Code:
x=-5:0.02:5;
P= exp(-x.*x/2)/sqrt(2*pi);
plot(x,P);
title( 'Ham phan bo xac suat Gauss' );
xlabel( 'x' );
ylabel( 'P' );
+) Hiển thị:
Câu hỏi:
1 Mô tả hình dáng đồ thị của hàm P(x) trên (là hình gì)? Giải thích?
- Đồ thị của P(x) có hình dạng chuông Đó là do hàm P(x) được biểu thị theo cơ
số tự nhiên e.
2 Ý nghĩa và ứng dụng của hàm phân phối xác suất Gauss trong thông tin số.
- Hàm phân phối xác suất Gauss trong thông tin số cho biết mật độ lượng thông tin trong khoảng giá trị xác định.
Trang 33 Nếu thay đổi kỳ vọng µ và phương sai �2 thì P(x) thay đổi như thế nào (cụ thể đồ thị thay đổi như thế nào?) Giải thích?
- Nếu tăng kỳ vọng µ và phương sai �2 thì do đặc trưng của hàm lũy thừa đồ thị P(x) tràn xa và lệch sang phía bên phát.
Bài 1.2 Sử dụng hàm randn của matlab tạo quá trình ngẫu nhiên với đô ̣ dài
100000 phần tử.
+) Code :
m=0;
s=1;
x1 = -5:0.02:5;
P = exp(-(x1-m).^2/2*s^2)/(sqrt(2*pi)*s);
plot(x1,P, 'r' ); % Ve ham phan bo voi m =0, s=1
n = randn(1, 100000);
m = mean(n);
x2 = -5:0.1:5;
c = hist(n,x2);
hold on ;
stem(x2, c/100000/(x2(2)-x2(1)));
title( 'Ham phan bo xac suat' );
xlabel( 'x' );
ylabel( 'P(x)' );
hold off
+) Hiển thị :
Trang 4Câu hỏi :
4 Nêu nhận xét về kết quả của hai hàm mô phòng và lý thuyết?
- Hàm mô phỏng tương đồng với tính toán lý thuyết.
5 Thay đổi độ dài của quá trình ngẫu nhiên trong bài 1.2 trong bài tập 1.2 lên 1.000.000 phần tử So sánh kết quả và kết quả cũ? Giải thích?
- Hàm mô phỏng “mịn” do hàm phân phối mô tả giá trị ngẫu nhiên nên càng nhiều phép thử thì càng chính xác.
6 Câu lệnh “px=hist(x,k)/len/step;”? Tại sao phải chia len và step?
- Chia cho len để tạo đường nét liền
- Chia cho step để tăng độ dài mỗi phần tử
Bài 2.1
Hàm lquan
Bài số 2 : kĩ thuật lượng tử hoá tuyến tính.
Trang 5function [id qy]= lquan(x,xmin,xmax,nbit)
nlevel = 2^nbit; % So muc luong tu hoa
q = (xmax-xmin)/nlevel; % Buoc luong tu
[id qy] = quantiz(x,xmin+q:q:xmax-q,xmin+q/2:q:xmax-q/2);
xs = rand(1,5)*2-1;
[xi xq] = lquan(xs,-1,1,3)
Câu hỏi :
7 Dòng lệnh sử dụng: [xi xq] = lquan(xs, -1, -1, 3)
8 xs = [-0.6671, -0,3500, -0.7871, -0.7231, -0.3599]
9 Xi = [1, 2, 7, 1, 2]
10 Xq = [-0.625, -0.375, -0,6250, -0.3750]
11 Dòng bít được truyền
Bài 2.2
+) Code:
t=0:0.01:20; % Khoang thoi gian xet tu 0 den 20, cach deu 0.01
xt=sin(randn()+t).*cos(rand()*t); % Tin hieu ngau nhien co bien do -1 den 1
[inx xqt] = lquan(xt,-1,1,randi(3)+1); % Tinh xqt
plot(t,xt, 'b' ,t,xqt, 'r' ); % Ve do thi xt va xqt
grid on ;
title( 'Do thi cua tin hieu x(t) va x_q(t)' );
xlabel( 't' );
legend( 'x(t)' , 'x_q(t)' );
hold off ;
+) Đồ thị:
Trang 612, Số bit dùng để lượng tử hóa cho một mẫu tín hiệu là n = 3 (có 8 mức lượng tử hóa
và 23 = 8)
13, Bước lượng tử q = 0.25
14, Liệt kê tất cả các mức lượng tử: 0.875, 0.625, 0.375, 0.125, -0.125, -0.375, -0.625, -0.875
BÀI SỐ 3: TẠP ÂM LƯỢNG TỬ HÓA TRONG KỸ
THUẬT LƯỢNG TỬ HÓA TUYẾN TÍNH
Bài 3:
Chạy chương trình:
N = 1000;
x_uni = 2*rand(1,N)-1;
x_sin = sin(linspace(1,5,N));
nbit = 1:10;
SNqR_uni = zeros(size(nbit));
SNqR_sin = zeros(size(nbit));
SNqR_lt = 6.02*nbit;
Trang 7Ps_uni = sum(x_uni.^2)/N;
Ps_sin = sum(x_sin.^2)/N;
for i = 1:size(nbit,2)
[indx_uni xq_uni] = lquan(x_uni,-1,1,nbit(i)); [indx_sin xq_sin] = lquan(x_sin,-1,1,nbit(i)); eq_uni = x_uni - xq_uni;
eq_sin = x_sin - xq_sin;
Pq_uni = sum(eq_uni.^2)/N;
Pq_sin = sum(eq_sin.^2)/N;
SNqR_uni(i) = 10*log10(Ps_uni/Pq_uni); SNqR_sin(i) = 10*log10(Ps_sin/Pq_sin);
end
plot(nbit,SNqR_uni,'b-');
hold on;
plot(nbit,SNqR_sin,'r ');
plot(nbit,SNqR_lt,'m-.');
title('Do thi SN_qR theo nbit');
xlabel('nbit');
ylabel('SN_qR');
legend('Phan bo deu','Hinh sin','Ly thuyet'); grid on;
hold off;
Kết quả:
Trang 8nbit 1 2 3 4 5 6 7 8 9 10 SNqR lý
thuyết
6.020
0
12.04 00
18.06 00
24.080
0
30.100 0
36.12 00
42.14 00
48.16 00
54.18 00
60.200 0 SNqR mô
phỏng(pb
đều)
6.122
17
12.05 90
18.01 25
23.937 1
29.914 9
36.23 82
42.03 80
54.23 33
52.12 55
59.932 0
SNqR mô
phỏng(pb
sin)
6.417
1
12.88 34
19.39 81
25.670 2
32,038 9
38.16 20
44.32 66
50.40 33
56.45 44
62.572
Câu hỏi :
17 Khi n tăng lên 1 thì giá trị SNqR thay đổi thế nào? Tại sao?
- Giá trị SNqR tăng thêm 6.02 lần vì theo công thức SNqR = 6.02n
18 Giải thích tại sao SNqR chỉ phụ thuộc vào n, không phụ thuộc vào kích thước bước lượng tử và dải biên độ lưỡng tử?
- Theo công thức tính SNqR = 6.02n\
19 Khi thay tín hiệu x là tín hiệu điều hòa thì giá trị SNqR thay đổi so với khi tín hiệu
x phân bố đều như thế nào?
- SNqR của tín hiệu điều hòa có giá trị lớn hơn SNqR của tín hiệu phân bố không đều
Bài số 4: Mật độ phổ năng lượng và hàm tự tương quan
của tín hiệu
Bài 4.1
+ Code:
L = 500; % Chieu dai tin hieu
x = randn(1,L); % Tao tin hieu ngau nhien
acorr_x = xcorr(x); % Tinh ham tu tuong quan
n = (-L+1):(L-1); % Cac mau gia tri
plot(n,acorr_x); % Ve do thi ham tu tuong quan tin hieu ngau nhien
title('Ham tu tuong quan');
xlabel('n');
ylabel('r_x_x');
hold on;
x = linspace(-1,1,L); % Tao tin hieu co bien do tang dan
acorr_x = xcorr(x); % Tinh ham tu tuong quan
plot(n,acorr_x,'g '); % Ve do thi ham tu tuong quan tin hieu co bien do tang dan
x = sin(linspace(-10,10,L)); % Tao tin hieu hinh sin
acorr_x = xcorr(x); % Tinh ham tu tuong quan
Trang 9plot(n,acorr_x,'r*'); % Ve do thi ham tu tuong quan tin hieu hinh sin
legend('Ngau nhien','Bien do tang dan','Hinh sin')
hold off;
+ Hiển thị :
+ Trả lời câu hỏi:
21 Đồ thị của hàm tương quan trong trường hợp tổng quát luôn có biên độ tăng dần đều.
22 Giá trị cực đại của hàm tự tương quan luôn nằm ở gốc đồ thị.
23 Hàm tự tương quan của các trường hợp tín hiệu khác nhau là khác nhau
Bài 4.2:
+ Code:
L = 50; % Do dai tin hieu
N = 200; % So luong cac tan so roi rac trong khoang 0 den 2*pi
x = rand(1,L); % Tao tin hieu ngau nhien
w = linspace(0,2*pi,N); % Tao N tan so tang dan tu 0 den 2*pi
fx = freqz(x,1,w); % Bien doi Fourier cua x tai cac tan so roi rac
esd_x = fx.*conj(fx); % Tinh ham mat do pho nang luong
acorr_x = xcorr(x); % Tinh ham tu tuong quan cua tin hieu x
ft_acorr_x = freqz(acorr_x,1,w).*exp(j*w*(L-1)); % Bien doi Fourier cua ham tu tuong quan cua tin hieu x
% Ve do thi
subplot(2,1,1);
semilogy(w/pi,esd_x);
title('Mat do pho nang luong');
xlabel('\omega');
ylabel('S(e^j^\omega)')
hold on;
subplot(2,1,2);
semilogy(w/pi,real(ft_acorr_x),'r');
xlabel('\omega');
ylabel('R_x_x(e^j^\omega)');
Trang 10hold off;
+ Hiển thị :
+ Trả lời câu hỏi:
24 Phổ biên độ rời rạc của tín hiệu có đặc điểm gì? Giải thích?
- Đối xứng qua trục có n=1 vì theo công thức của FT và DFT Phụ thuộc vào hàm
=> L-1=0 => đối xứng qua n=1
25.So sánh đồ thị phổ biên độ của esd_x và ft_acorr_x
- Phổ biên độ giống nhau
26 Giải thích tại sao khi vẽ đồ thị với cách 1 trục hoành là w/pi và cách 2 trục hoành
là k*2/N?
- Vì cách 1 dùng biến đổi FT, cách 2 dùng biến đổi DFT
27 Phải chọn N tối thiểu là bao nhiêu để kết quả mô phỏng chính xác? Tại sao?
- Chọn N tối thiểu là 104 vì N > 21 và N
28 Ý nghĩa và ứng dụng của định lý Weiner-Khintchine trong thông tin số?
- Phổ của hàm là mật độ phổ năng lượng của tín hiệu sẽ thể hiện sự phân bố năng lượng tín hiệu.
Bài số 5 : Mã đường dây NRZ
Bài 5.1
+ Code :
len = 100000; % Do dai dong bit mo phong
SNR_db = 0:2:8; % Tao vector SNR_db = 0 2 4 6 8
SNR = 10.^(SNR_db/10); % Doi SNR tu Decibel sang lan
Trang 11bsignal = randi([0 1],1,len); % Dong bit ngau nhiên do dai len
NRZ_signal = bsignal*2-1; % Bien doi dòng bit 0 1 sang -1 1
N0 = 1./SNR; % Cong suat tap am
for i=1:length(SNR_db)
noise = sqrt(N0(i))*randn(1,len); % Tao tap am noise voi ti so SNR(i)
r_signal = NRZ_signal + noise; % Tin hieu thu duoc = NRZ + noise
NRZ_decoded = sign(r_signal); % Giai ma tin hieu NRZ thu duoc
[n,BER(i)] = symerr(NRZ_decoded,NRZ_signal); % Tinh xac suat loi
end
plot(SNR_db,BER,'bo '); % Ve do thi BER
Pe = 1/2*(1-erf(sqrt(SNR)/sqrt(2))); % Xac suat loi theo ly thuyet
hold on;
plot(SNR_db,Pe,'r* '); % Ve do thi Pe
title('Do thi ty le bit loi theo ly thuyet va mo phong');
xlabel('SNR_d_B');
ylabel('BER');
+ Hiển thị :
+ Code :
len = 100000; % Do dai dong bit mo phong
SNR_db = 0:2:8; % Tao vector SNR_db = 0 2 4 6 8
SNR = 10.^(SNR_db/10); % Doi SNR tu Decibel sang lan
bsignal = randi([0 1],1,len); % Dong bit ngau nhiên do dai len
NRZ_signal = bsignal*2-1; % Bien doi d?ng bit 0 1 sang -1 1
N0 = 1./SNR; % Cong suat tap am
for i=1:length(SNR_db)
noise = sqrt(N0(i))*randn(1,len); % Tao tap am noise voi ti so SNR(i)
Trang 12r_signal = NRZ_signal + noise; % Tin hieu thu duoc = NRZ + noise
NRZ_decoded = sign(r_signal); % Giai ma tin hieu NRZ thu duoc
[n,BER(i)] = symerr(NRZ_decoded,NRZ_signal); % Tinh xac suat loi
end
plot(SNR_db,BER,'bo '); % Ve do thi BER
Pe = 1/2*(1-erf(sqrt(SNR)/sqrt(2))); % Xac suat loi theo ly thuyet
hold on;
plot(SNR_db,Pe,'r* '); % Ve do thi Pe
title('Do thi ty le bit loi theo ly thuyet va mo phong');
xlabel('SNR_d_B');
ylabel('BER');
legend('Mo phong','Ly thuyet');
+ Hiển thị :
Pe lý thuyết 0.1587 0.1040 0.0565 0.0230 0.0060 BER mô
phỏng
+ Trả lời câu hỏi:
Trang 1329 Giải thích tại sao phải sử dụng các mã đường dây? Mã đường dây được sử dụng trong những trường hợp nào?
- Mã đường dây có tác dụng chuyển phổ tín hiệu
- Hỗ trợ quá trình đồng bộ đồng hồ có khả năng kiểm soát lỗi
30 Khi tỷ số SNR tang thig xác suất lỗi thay đổi như thế nào? Giải thích? So sánh với kết quả trên đồ thị?
- Giảm vì đây là 2 đại lương tỷ lệ nghịch.
31 Nếu giải mã tín hiệu NRZ bằng lệnh “NRZ-decoded = sign (r_signal)” như hướng dẫn ở trên sẽ có một số trường hợp không chính xác, là trường hợp nào? Tại sao?
- Đó là trường hợp không mang dấu bởi vì có 2 loại tín hiệu NRZ đơn cực và NRZ lưỡng cực
Q32 Nhận xét kết quả mô phỏng, so sánh giữa các giá trị BER tính bằng mô phỏng và xác suất lỗi Pe tính theo lý thuyết Từ đó rút ra kết luận gì?
- Kết quả thu dược khá giống với lý thuyết.
BÀI SỐ 6: KỸ THUẬT ĐIỀU CHẾ SỐ QPSK
Bài 6
Chạy chương trình:
len = 50000; % Do dai dong bit mo phong
SNR_db = 0; % SNR co don vi Decibel
SNR = 10^(SNR_db/10); % Doi SNR tu Decibel sang lan
bsignal = randi([0 1],1,len); % Tao dong bit ngau nhien do dai len
% Thuc hien dieu che QPSK
for i=1:2:len
if bsignal(i)==0 & bsignal(i+1)==0 % 00
qpsk_signal((i+1)/2) = exp(j*3*pi/4);
elseif bsignal(i)==0 & bsignal(i+1)==1 % 01
qpsk_signal((i+1)/2) = exp(j*5*pi/4);
elseif bsignal(i)==1 & bsignal(i+1)==1 % 11
qpsk_signal((i+1)/2) = exp(j*7*pi/4);
elseif bsignal(i)==1 & bsignal(i+1)==0 % 10
qpsk_signal((i+1)/2) = exp(j*pi/4);
end
end
Es = std(qpsk_signal)^2; % Nang luong ky hieu
N0 = Es/SNR; % Cong suat tap am
% Tao nhieu Gauss
noise = sqrt(N0/2)*(randn(1,length(qpsk_signal))
+j*randn(1,length(qpsk_signal)));
Trang 14qpsk_awgn = qpsk_signal + noise; % Cho tin hieu dieu che di qua kenh AWGN
plot(qpsk_awgn,'.'); % Ve bieu do chom sao tin hieu co nhieu
title('Do thi chom sao 4-QPSK');
xlabel('I');
ylabel('Q');
hold on;
plot(qpsk_signal,'r*'); % Ve bieu do chom sao tin hieu khong nhieu
plot(exp(j*[0:0.01:2*pi]),'r ');
Kết quả:
+ Trường hợp SNR = 0 dB
+ Trường hợp SNR = 3 dB
Trang 15+ Trường hợp SNR = 6 dB
Trả lời câu hỏi :
Trang 1633 Điềun chế tín hiệu để làm gì? Tại sao phải điều chế số? Nêu vai trò và chức năng của khối điều chế trong thông tin số?
- Điều chế tín hiệu để đưa thông tin cần truyền đi xa hơn Khối điều chế có vai trò quan trọng, có nhiệm vụ làm trung gian trong quá trình xử lý tín hiệu để truyền đi.
34 Mô tả kết quả mô phỏng? Giải thích?
- KQ mô phỏng tín hiệu thu được dạng chum sao Do đây là 4QPSK nên sẽ có 4 điểm lệch nhau 90 độ
35 Trong điều chế PSK, khi nào phía thu sẽ giải mã sai?
36 Năng lương ký hiệu Es và năng lượng bit Eb trong trường hợp trên là bao nhiêu? Tại sao?
- Es = 3dB vì theo CT Es = N.SQR
BÀI SỐ 7: XÁC SUẤT LỖI BIT TRONG
ĐIỀU CHẾ QPSK
Bài 7
Chạy chương trình:
len = 50000; % Do dai dong bit mo phong
SNR_db = 0:2:8; % Tao vector SNR_db = 0 2 4 6 8
SNR = 10.^(SNR_db/10); % Doi SNR tu Decibel sang lan
bsignal = randi([0 1],1,len); % Tao dong bit ngau nhien do dai len
% Thuc hien dieu che QPSK
for i=1:2:len
if bsignal(i)==0 & bsignal(i+1)==0 % 00
qpsk_signal((i+1)/2) = exp(j*3*pi/4);
elseif bsignal(i)==0 & bsignal(i+1)==1 % 01
qpsk_signal((i+1)/2) = exp(j*5*pi/4);
elseif bsignal(i)==1 & bsignal(i+1)==1 % 11
qpsk_signal((i+1)/2) = exp(j*7*pi/4);
elseif bsignal(i)==1 & bsignal(i+1)==0 % 10
qpsk_signal((i+1)/2) = exp(j*pi/4);
end
end
% Tim BER mo phong
for i=1:length(SNR_db)
r_signal = awgn(qpsk_signal,SNR_db(i)); % Dieu che QPSK di qua nhieu AWGN
for j=1:2:len % Giai dieu che tin hieu QPSK co nhieu
if real(r_signal((j+1)/2))>=0
if imag(r_signal((j+1)/2))>=0 % Goc phan tu I
r_bsignal(j) = 1;
r_bsignal(j+1) = 0;
else % Goc phan tu IV
r_bsignal(j) = 1;
r_bsignal(j+1) = 1;
Trang 17end
else
if imag(r_signal((j+1)/2))>=0 % Goc phan tu II
r_bsignal(j) = 0;
r_bsignal(j+1) = 0;
else % Goc phan tu III
r_bsignal(j) = 0;
r_bsignal(j+1) = 1;
end
end
end
[n,BER(i)] = biterr(r_bsignal,bsignal);
end
Pb = 1/2*erfc(1/sqrt(2).*sqrt(SNR)); % Xac suat loi bit
plot(SNR_db,Pb,'ro '); % Ve do thi Pb ly thuyet
title('Do thi ty le bit loi ly thuyet va mo phong');
xlabel('SNR_d_B');
ylabel('BER');
hold on;
plot(SNR_db,BER); % Ve do thi BER mo phong
legend('Ly thuyet','Mo phong');
hold off;
Kết quả:
Trang 18SNR 0dB 2dB 4dB 6dB 8dB
37 So sánh điều chế BPSK và QPSK?
- Xác suất lỗi bit là tương đương nhau nhưng QPSK có tỷ lệ lỗi thấp hơn
- QPSK là điều chế phụ trực giao mã hóa 2 bit thành 1
- BPSK là điều chế pha nhị phân, điều chế tín hiệu số 0, 1 lệch pha 180 độ
38 Nêu một số hệ thống trong thực tế sử dụng kỹ thuật điều chế số QPSK?
- Hệ thống OFDM
- Hệ thống truyền tin dưới nước
BÀI SỐ 8: MÔ PHỎNG ĐIỀU CHẾ M-QAM QUA KÊNH
NHIỄU GAUSS Bài 8.1
Chạy chương trình:
n_sym = 50000; % So ky tu dieu che
M = [16 32 64]; % So symbol ky hieu
SNR_db = 0:25; % Tao vector SNR = 0 - 25 Decibel
BER = zeros(length(M),length(SNR_db)); % BER de luu ti le loi bit
for k = 1:size(M,2) % size(M,2) la so cot cua M
s_stream = randi([0 M(k)-1],1,n_sym); % Tao dong bieu tuong do dai n_sym
s_mod = qammod(s_stream,M(k),0,'GRAY'); % Dieu che M-QAM
for r = 1:size(SNR_db,2) % Vong lap tinh BER
s_mod_awgn = awgn(s_mod,SNR_db(r),'measured'); % Tin hieu qua nhieu
s_demod = qamdemod(s_mod_awgn,M(k),0,'GRAY'); % Giai dieu che M-QAM
[num ratio] = biterr(s_stream,s_demod); % Tinh ti le loi bit
BER(k,r) = ratio; % Luu ti le loi bit vao BER
end
end
semilogy(SNR_db,BER(1,:),'bo-'); % Ve do thi BER ung voi M = 16
hold on;
semilogy(SNR_db,BER(2,:),'rs-'); % Ve do thi BER ung voi M = 32
semilogy(SNR_db,BER(3,:),'m*-'); % Ve do thi BER ung voi M = 64
grid on;
title('Do thi the hien ty le loi bit M-QAM');