Tải bản đầy đủ (.pdf) (23 trang)

BÁO cáo THÍ NGHIỆM môn THÔNG TIN số

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (379.71 KB, 23 trang )

TRƯỜ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Ố

Sinh viên

: Nguyễn Trung Kiệm

MSSV

: 20182613

Lớp

: Điện tử 03 – K63

Mã lớp thí nghiệm:

: 706781

Hà Nội, 2021


PHẦN 2: CÁC BÀI THÍ NGHIỆM
BÀI SỐ 1: Q TRÌNH NGẪU NHIÊN CỦA TÍN HIỆU
1.1:
Code:


x=-5:0.1:5; % mang cac phan tu tu -5 den 5 cach nhau 0.1
gauss=exp(-x.^2/2)/sqrt(2*pi); % phan bo xac suat Gauss
plot(x,gauss); % ve do thi
title('Ham phan bo xac suat Gauss');
xlabel('x');
ylabel('P(x)');

Đồ thị:

Câu hỏi 1:


Ý nghĩa của kì vọng: biểu thị các giá trị chính giữa của Gauss
Ý nghĩa của phương sai: biểu thị mức rời rạc của giá trị biến ngẫu nhiên
Câu hỏi 2:
Đồ thị hàm trên giống hình dáng của chng, vì nó tuân theo phân bố xác suất Gauss
Câu hỏi 3:
Ứng dụng phổ biến nhất là mô tả hệ thống bằng tốn học trong nhiễu trắng
Câu hỏi 4:
Nếu giảm kì vong và phương sai thì đồ thị co lại và ngược lại thì giãn ra
1.2:
Code:
m=1; % bat dau tu 1
n=100000; % ket thuc o 100000
x=randn(m,n); % vecto x co gia tri ngau nhien tu 1 den 100000
buocnhay=0.1; % buoc nhay =0.1
k=-5:buocnhay:5; % khoang xet tu -5 den 5 cach deu 0.1
px=hist(x,k)/n/buocnhay; % tim so vector trong [-5, 5]
stem(k,px,'go'); % Ve do thi mo phong
Px_LT=exp(-k.^2/2)/sqrt(2*pi); % Tinh Px ly thuyet

hold on; % giu do thi phia tren
plot(k,Px_LT,'m'); % Ve do thi ly thuyet
title('Phan bo xac suat Gauss'); % tieu de do thi
xlabel('x'); % ten truc hoanh
ylabel('P(x)'); % ten truc ting
legend('Ly thuyet','Mo phong'); % ki hieu
hold off;

Đồ thị:


Câu hỏi 5:
Kết quả 2 đồ thị gần như giống nhau
Câu hỏi 6:
Trong khoảng 1.2 đến 1000000 đã tăng lên rất nhiều phần tử, các nhiều phần tử thì càng chính xác
Câu hỏi 7:
Px chia len để tạo nét liền còn chia step để tang độ dài
Câu hỏi 8:
Càng cho nhiều phần tử thì càng chính xác hơn


BÀI SỐ 2. LƯỢNG TỬ HĨA TUYẾN TÍNH
2.1:
Câu hỏi 9:

[xi xq] = lquan(xs, -1,1,3)
Câu hỏi 10:

Xs - -0.2592 -0.9386 -0.7804 -0.3295 0.9298
Câu hỏi 11:


Xi = 2 0 0 2 7
Câu hỏi 12:

Xq = -0.3750 -0.8750 -0.8750 -0.3750 0.8750
Câu hỏi 13:
Dòng bit được truyền: 010000000010111
2.2:
Code:
step=0:0.01:20;
% khoang xet [0;20]
thoidiem=sin(randn()+step).*cos(rand()*step); % tao gia tri ngau nhien
[inx xqt] = lquan(thoidiem,-1,1,randi(3)+1); % Tinh cac diem lay mau
plot(step,thoidiem,'go',step,xqt,'s-');
% Ve do thi
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ị:

Câu hỏi 14:
Số bit dung để lượng tử hóa là 3
Câu hỏi 15:
Bước lượng tử q =0.25
Câu hỏi 16:

Tất cả các mức lượng tử: -0.6875, -0.4375, -0.1875,0.0625,0.3125,0.5625,0.8125, 0.9375


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
3.1:
Code:
N = 1000;
x_uni = 2*rand(1,N)-1;
% x_uni phan bo deu tu -1 den 1
x_sin = sin(linspace(1,5,N));
% tin hieu sin
nbit = 1:10;
% so bit luong tu tu 1 den 10
SNqR_uni = zeros(size(nbit));
% Khoi tao mang SNqR_uni va SNqR_sin chua
SNqR_sin = zeros(size(nbit));
% SNqR cua tin hieu phan bo deu va tin hieu
sin
SNqR_lt = 6.02*nbit;
% Mang chua SNqR tinh theo ly thuyet
Ps_uni = sum(x_uni.^2)/N;
% Cong suat tin hieu x theo (3-3)
Ps_sin = sum(x_sin.^2)/N;
for i = 1:size(nbit,2)
% size(n,2) tra ve so cot cua n
[indx_uni, xq_uni] = lquan(x_uni,-1,1,nbit(i)); % Luong tu hoa x_uni
[indx_sin, xq_sin] = lquan(x_sin,-1,1,nbit(i)); % Luong tu hoa x_sin
eq_uni = x_uni - xq_uni;
% sai so cua x_uni

eq_sin = x_sin - xq_sin;
% sai so cua x_sin
Pq_uni = sum(eq_uni.^2)/N;
% cong suat tap am luong tu x_uni
Pq_sin = sum(eq_sin.^2)/N;
% cong suat tap am luong tu x_sin
SNqR_uni(i) = 10*log10(Ps_uni/Pq_uni);
% SNR_db cua x_uni
SNqR_sin(i) = 10*log10(Ps_sin/Pq_sin);
% SNR_db cua x_sin
end
plot(nbit,SNqR_uni,'g-.');
% ve do thi SNR tin hieu phan bo deu mo phong
hold on;
plot(nbit,SNqR_sin,'c--');
% ve do thi SNR tin hieu sin mo phong
plot(nbit,SNqR_lt,'k-');
% Ve do thi SNR tin hieu phan bo deu ly thuyet
xlabel('nbit');
legend('Phan bo deu','Hinh sin','Ly thuyet');
title('Do thi SN_qR theo nbit');
ylabel('SN_qR');
grid on;
hold off;

Đồ thị:


SNR theo lý thuyết: 6.0200 12.0400 18.0600 24.0800 30.1000 36.1200 42.1400 48.1600
54.1800 60.2000

SNR theo uni: 5.8361 11.7784 17.8588 23.9559 30.1048 35.9538 42.0177 48.0865 53.8967
60.1301
SNR theo sin: 6.4171 12.8834 19.3981 25.6702 32.0389 38.1620 44.3266 50.4033 56.4544
62.5722
Câu hỏi 17: n tăng thêm thì SNR tang lên do hàm mũ
Câu hỏi 18: Vì dựa vào cơng thức của SNR thì SNR và n tỷ lệ thuậ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ử
Câu hỏi 19: x phân bố trên trong [-1,1]


BÀI SỐ 4: MẬT ĐỘ PHỔ NĂNG LƯỢNG VÀ HÀM TỰ
TƯƠNG QUAN CỦA TÍN HIỆU
4.1:
Code:
L = 500; % Chieu dai cua tin hieu là 500 mau
x = randn(1,L); % Tao tin hieu ngau nhien theo phan phoi Gauss
x = xcorr(x); % ham tu tuong quan cua x
n = (-L+1):(L-1); % Cac mau gia tri
plot(n,x); % Ve do thi ham tu tuong quan tin hieu ngau nhien
xlabel('n');
ylabel('r_x_x');
title('Ham tu tuong quan');
hold on;
biendo = linspace(-1,1,L); % bien do tang dan
ttquanbiendo = xcorr(biendo); % ham tu tuong quan cua tang dan bien do
plot(n,ttquanbiendo,'c--'); % Ve do thi ham tu tuong quan bien do tang dan
biendo = sin(linspace(-10,10,L)); % tin hieu sin
ttquanbiendo = xcorr(biendo); % ham tu tuong quan
plot(n,ttquanbiendo,'k+'); % Ve do thi ham tu tuong quan cua sin
legend('Ngau nhien','Bien do tang dan','Hinh sin')

hold off;

Đồ thị:


Câu hỏi 21: Hàm tự tương quan làm tang biên độ dần đều
Câu hỏi 22: Giá trị lớn nhất nằm khoảng giữa của đồ thị ở điểm n=0
Câu hỏi 23: Tín hiệu khác nhau cho ra hàm tự tương quan khác nhau
4.2:
Code:
L = 50;
% do dai tin hieu
N = 500;
% So luong cac tan so roi rac [0;2pi]
w = linspace(0,2*pi,N); % Tao N tan so tang dan tu 0 den 2*pi
x = rand(1,L);
fx = freqz(x,1,w);
% Bien doi Fourier cac tan so roi rac
esd_x = fx.*conj(fx);
% Tinh mat do pho nang luong
acorr_x = xcorr(x);
% Tinh tu tuong quan cua x
ft_acorr_x = freqz(acorr_x,1,w).*exp(j*w*(L-1)); % Bien doi Fourier ham tu
tuong quan cua x
subplot(2,1,1);
semilogy(w/pi,esd_x); % ve do thi theo logarit co so 10
xlabel('\omega');
ylabel('S(e^j^\omega)');
title('Mat do pho nang luong');
hold on;

subplot(2,1,2);
semilogy(w/pi,real(ft_acorr_x),'c'); % ve do thi theo logarit co so 10
xlabel('\omega');
ylabel('R_x_x(e^j^\omega)');
title('Ham tu tuong quan');
hold off;

Đồ thị:


Câu hỏi 24: trong miền tần số thì phổ của tín hiệu rời rạc nó liên tục
Câu hỏi 25: phổ biên độ của esd_x có biên độ gần như đều nhau. cịn phổ biên độ của ft_acorr_x có biên
độ tăng dần đều.
Câu hỏi 26: ta có w= 2pif => 2f=w/pi = wk/N
Câu hỏi 27: Chọn N càng lớn thì độ chính xác càng cao nhưng đổi lại về hiệu năng
Chính vì vật N ít nhất bằng 20
Câu hỏi 28: để phân tích hệ thống LTN khi mà biến đổi Fourier không tồn tại


BÀI SỐ 5: MÃ ĐƯỜNG DÂY NRZ
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 deci 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;
for i=1:length(SNR_db)
tap_am = sqrt(N0(i))*randn(1,len);
% Tao tap am noise voi ti so SNR(i)
receive_tinhieu = NRZ_signal + tap_am;
% Tin hieu thu duoc = Tin
hieu NRZ ben phat + tap am
giaima_NRZ = sign(receive_tinhieu);
% Giai ma tin hieu NRZ thu
duoc
[n,BER(i)] = symerr(giaima_NRZ,NRZ_signal);
% so sanh voi ber ban dau
va tinh xac suat loi
end
plot(SNR_db,BER,'mx:');
% ve do thi
xlabel('SNR_d_B');
ylabel('BER');
title('Ty le bit loi');

Đồ thị:


Câu hỏi 29: Vì mã đường dây chuyển đổi chuỗi số nhị phân thành tín hiệu số, mục đích để truyền thơng
tin số
Câu hỏi 30: Nếu SNR tang thì xác suất lỗi giảm vì bản chất chúng nó tỷ lệ nghích với nhau, chính vì vật đồ
thị mơ phỏng phù hợp với lý thuyết
Câu hỏi 31: Trường hợp này là trường hợp khơng mang dấu vì NRZ có 2 loại là đơn cực và lưỡng cực

5.2:
Code:
len = 100000;
% Do dai dong bit mo phong
SNR_db = 0:2:8;
% SNR_db = 0 2 4 6 8
SNR = 10.^(SNR_db/10);
% Doi SNR tu deci 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;
for i=1:length(SNR_db)
tap_am = sqrt(N0(i))*randn(1,len);
% Tao tap am noise voi ti so SNR(i)
receive_tinhieu = NRZ_signal + tap_am;
% Tin hieu thu duoc = Tin


hieu NRZ ben phat + tap am
giaima_NRZ = sign(receive_tinhieu);
% Giai ma tin hieu NRZ thu
duoc
[n,BER(i)] = symerr(giaima_NRZ,NRZ_signal);
% so sanh voi ber ban dau
va tinh xac suat loi
end
plot(SNR_db,BER,'ko--');
% 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,'mx:');
xlabel('SNR_d_B');
ylabel('BER');
legend('Mo phong','Ly thuyet');
title('Do thi so sanh ly thuyet và mong phong theo ty le loi');

Đồ thị:

Theo lý thuyết: 0.1587 0.1040 0.0565 0.0230 0.0060
Theo mô phỏng: 0.1584 0.1031 0.0553 0.0224 0.0059


Nhận xét: dựa vào đồ thị thì mơ phỏng gần đúng với lý thuyết


BÀI SỐ 6: KỸ THUẬT ĐIỀU CHẾ SỐ QPSK
Code:
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
tinhieunhiphan = randi([0 1],1,len);
% Tao dong bit ngau nhien do dai len
for i=1:2:len
if tinhieunhiphan(i)==0 & tinhieunhiphan(i+1)==0

% 00
tinhieu_qpsk((i+1)/2) = exp(j*3*pi/4);
elseif tinhieunhiphan(i)==1 & tinhieunhiphan(i+1)==1
% 11
tinhieu_qpsk((i+1)/2) = exp(j*7*pi/4);
elseif tinhieunhiphan(i)==1 & tinhieunhiphan(i+1)==0
% 10
tinhieu_qpsk((i+1)/2) = exp(j*pi/4);
elseif tinhieunhiphan(i)==0 & tinhieunhiphan(i+1)==1
% 01
tinhieu_qpsk((i+1)/2) = exp(j*5*pi/4);
end
end
Es = std(tinhieu_qpsk)^2;
% Nang luong
N0 = Es/SNR;
% Cong suat noise
nhieu_gauss = sqrt(N0/2)*(randn(1,length(tinhieu_qpsk))
+j*randn(1,length(tinhieu_qpsk)));
awgn_qpsk = tinhieu_qpsk + nhieu_gauss; % tin hieu di qua kenh AWGN
plot(awgn_qpsk,'.');
% Ve do thi voi tin hieu co nhieu
xlabel('I');
ylabel('Q');
title('Do thi chom sao 4-QPSK');
hold on;
plot(tinhieu_qpsk,'r*');
% Ve do thi voi tin hieu khong nhieu
plot(exp(j*[0:0.01:2*pi]),'r--');


Đồ thị:
Với SNR = 0db


Với SNR = 3db:


Với SNR =6db:


Câu hỏi 33: Mục đích để truyền tín hiệu đi xa, còn nguyên nhân là do để phù hợp với kênh truyền, cịn
mục đích khối điều chế để xử lý tín hiệu truyền đi
Câu hỏi 34: Từ các đồ thị ta thấy tín hiệu nó bao quanh các chịm sao
Câu hỏi 35: Khi thay đổi SNR thì các điểm nó tiến sát gần hơn các chòm sao
Câu hỏi 36: Năng lượng kí hiệu là 3db cịn năng lượng bit là 1.5db


BÀI SỐ 7: XÁC SUẤT LỖI BIT TRONG ĐIỀU CHẾ QPSK
Code:
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
tinhieunhiphan = randi([0 1],1,len);
% Tao dong bit ngau nhien do dai len
% Thuc hien dieu che QPSK
for i=1:2:len
if tinhieunhiphan(i)==0 & tinhieunhiphan(i+1)==0

% 00
tinhhieu_qpsk((i+1)/2) = exp(j*3*pi/4);
elseif tinhieunhiphan(i)==1 & tinhieunhiphan(i+1)==1
% 11
tinhhieu_qpsk((i+1)/2) = exp(j*7*pi/4);
elseif tinhieunhiphan(i)==1 & tinhieunhiphan(i+1)==0
% 10
tinhhieu_qpsk((i+1)/2) = exp(j*pi/4);
elseif tinhieunhiphan(i)==0 & tinhieunhiphan(i+1)==1
% 01
tinhhieu_qpsk((i+1)/2) = exp(j*5*pi/4);
end
end
% Tim BER mo phong
for i=1:length(SNR_db)
receive_tinhieu = awgn(tinhhieu_qpsk,SNR_db(i)); % Dieu che QPSK di qua
nhieu AWGN
for a=1:2:len
% Giai dieu che tin hieu QPSK co nhieu
if real(receive_tinhieu((a+1)/2))>=0
if imag(receive_tinhieu((a+1)/2))>=0
% Goc I
receive_tinhieunhiphan(a) = 1;
receive_tinhieunhiphan(a+1) = 0;
else
receive_tinhieunhiphan(a) = 1;
% Goc IV
receive_tinhieunhiphan(a+1) = 1;
end
else

if imag(receive_tinhieu((a+1)/2))>=0
% Goc II
receive_tinhieunhiphan(a) = 0;
receive_tinhieunhiphan(a+1) = 0;
else
receive_tinhieunhiphan(a) = 0; % Goc III
receive_tinhieunhiphan(a+1) = 1;
end
end
end
[n,BER(i)] = biterr(receive_tinhieunhiphan,tinhieunhiphan);
end
Pb = 1/2*erfc(1/sqrt(2).*sqrt(SNR));
% Xac suat loi bit
plot(SNR_db,Pb,'ko--');
% Ve do thi ly thuyet
xlabel('SNR_d_B');
ylabel('BER');
title('Do thi ty le bit loi ly thuyet va mo phong');
hold on;
plot(SNR_db,BER);
% Ve do thi BER mo phong
legend('Ly thuyet','Mo phong');
hold off;


Đồ thị:

SNR


0dB

2dB

4dB

6dB

8dB

Pb lý thuyết

0.1587

0.1040

0.0565

0.0230

0.0060

BER mô phỏng

0.1573

0.1048

0.0569


0.0237

0.0065

Câu hỏi 37: BPSK và QPSK từ chứng minh trên cho thấy xác suất lỗi giống nhau
Câu hỏi 38:Ứng dụng: 3G, truyền hình số, mạng không dây


BÀI SỐ 8: MÔ PHỎNG ĐIỀU CHẾ M-QAM QUA KÊNH NHIỄU GAUSS
8.1:
Code:
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 i = 1:size(M,2)
% size(M,2) la so cot cua M
s_stream = randi([0 M(i)-1],1,n_sym);
% Tao dong bieu tuong do dai
n_sym
s_mod = qammod(s_stream,M(i),0,'GRAY'); % Dieu che M-QAM
for r = 1:size(SNR_db,2)
% Vong lap tinh BER
tinhhieuquaawgn = awgn(s_mod,SNR_db(r),'measured'); % Tin hieu qua
nhieu
giaidieuchetinhieu = qamdemod(tinhhieuquaawgn,M(i),0,'GRAY'); % Giai
dieu che M-QAM

[num ratio] = biterr(s_stream,giaidieuchetinhieu); % Tinh ti le loi
bit
BER(i,r) = ratio;
% Luu ti le loi bit vao BER
end
end
semilogy(SNR_db,BER(1,:),'gd-');
% Ve do thi M = 16
hold on;
semilogy(SNR_db,BER(2,:),'yh-');
% Ve do thi M = 32
semilogy(SNR_db,BER(3,:),'m<-');
% Ve do thi M = 64
grid on;
xlabel('SNR_d_B');
ylabel('BER');
title('Do thi the hien ty le loi bit M-QAM');
legend('16-QAM','32-QAM','64-QAM');
hold off;

Đồ thị:


SNR
16-QAM

0dB
5dB
0.2888 0.1635


10dB
0.0777

15dB
0.0092

0

32-QAM

0.3303 0.2240

0.1376

0.0419

0.0018

0

64-QAM

0.3597 0.2626

0.1740

0.0795

0.0150


0.0001

Câu hỏi 39: Khi M tang thì BER tang theo
Câu hỏi 40: M càng lên cao thì khả năng khối phục tín hiệu càng khó

20dB

0

25dB



×