You are on page 1of 22

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Ố

Họ và tên: Hoàng Lê Diệu Hường


Mã sinh viên: 20151923
Lớp: Điện tử 02 – K60
Mã lớp thí nghiệm: 671382
Nhóm thí nghiệm: N19
Hà Nội, ngày 08/05/2018

BÀI SỐ 1: QUÁ TRÌNH NGẪU NHIÊN CỦA TÍN HIỆU

Bài 1.1
x= -5:0.1:5;
Px=(1/sqrt(2*pi))*exp(-x.^2/2);
plot(x,Px);
xlabel('x');
ylabel('P(x)');
title('Ham phan bo xac suat GAUSS');

Ta có kết quả:

2
Bài 1.2
len = 100000;
x=randn(1,len);
step=0.1;
k=-5:step:5;
px= hist(x,k)/len/step;
stem(k,px);
px_lythuyet = exp(-k.^2/2)/sqrt(2*pi);
hold on;
plot(k,px_lythuyet);

title('Phan bo xac suat GAUSS');


xlabel('x');
ylabel('p(x)');
legend('Ly thuyet', 'Mo phong');
hold off;

Ta có kết quả:

3
BÀI SỐ 2: LƯỢNG TỬ HÓA TUYẾN TÍNH

* Hàm lquan
function [indx qy] = lquan(x,xmin,xmax,nbit)
nlevel = 2^nbit;
q = (xmax-xmin)/nlevel;
[indx qy] = quantiz(x,xmin+q:q:xmax-q, xmin+q/2:q:xmax-q/2);

Tại cửa sổ Command Window:

Bài 2.1
xs =rand(1,5)*2-1;

[xi xq] =lquan(xs,-5,5,3)

Ta có kết quả:

4
Bài 2.2
t=0:0.01:20;
xt=sin(randn()+t).*cos(rand()*t);
[inx xqt] = lquan(xt,-1,1,randi(3)+1);
plot(t,xt,'k',t,xqt,'r');
grid on;
xlabel('t');
ylabel('tin hieu');
title('tin hieu x(t) va xq(t)');
legend('tin hieu x(t)','tin hieu luong tu xq(t)');

Ta có kết quả:

5
BÀI SỐ 3: TẠP ÂM LƯỢNG TỬ TRONG KỸ THUẬT

LƯỢNG TỬ HÓA TUYẾN TÍNH

Bài 3:
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;
Ps_uni=sum(x_uni.^2)/N;
Ps_sin=sum(x_sin.^2)/N;
for i=1:length(nbit)
[xi_uni xq_uni]=lquan(x_uni,-1,1,nbit(i));
eq_uni=x_uni-xq_uni;
Pq_uni=sum(eq_uni.^2)/N;
SNqR_uni(i)=10*log10(Ps_uni/Pq_uni);
[xi_sin xq_sin]=lquan(x_sin,-1,1,nbit(i));
eq_sin=x_sin-xq_sin;
Pq_sin=sum(eq_sin.^2)/N;
SNqR_sin(i)=10*log10(Ps_sin/Pq_sin);
end
6
plot(nbit,SNqR_uni,'g',nbit,SNqR_sin,'b-.',nbit,SNqR_lt,'m-');
title('Do thi SNqR theo nbit');
xlabel('x');
ylabel('SNqR');
legend('SNqR uni','SNqr sin','SNqR lt');
hold off;

Ta có kết quả:

Trong Workspace

SNqR lý thuyết: SNqR_lt

7
SNqR mô phỏng phân bố đều: SNqR_uni

SNqR mô phỏng sin: SNqR_sin

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
L=500;
x=randn(1,L);
acorr_x=xcorr(x);
n=-(L-1):1:L-1;
plot(n,acorr_x);
8
title('do thi ham tu tuong quan');
xlabel('n');
ylabel('acorr_x');
hold on;

x=linspace(-1,1,L); %bien do tang dan


acorr_x=xcorr(x);
n=-(L-1):1:L-1;
plot(n,acorr_x,'r');
title('do thi ham tu tuong quan');
xlabel('n');
ylabel('acorr_x');
hold on;

x=sin(linspace(-10,10,L)); %bien do hinh sin


acorr_x=xcorr(x);
n=-(L-1):1:L-1;
plot(n,acorr_x,'k-.');
title('do thi ham tu tuong quan');
xlabel('n');
ylabel('acorr_x');
hold on;

Bài 4.2
L=50;
N=200;
x=randn(1,L);
w=linspace(0,2*pi,N);
9
fx=freqz(x,1,w);
esd_x=fx.*conj(fx);
acorr_x=xcorr(x);
subplot(2,1,1);
semilogy(w/pi,esd_x);
title('Mat do pho nang luong');
xlabel('n');
ylabel('S(ejw)');
hold on;
ft_acorr_x=freqz(acorr_x,1,w).*exp(j*w*(L-1));
subplot(2,1,2);
semilogy(w/pi,real(ft_acorr_x),'r');
xlabel('n');
ylabel('Rxx(ejw)');

BÀI SỐ 5: MÃ ĐƯỜNG DÂY NRZ

Bài 5.1
%khoi tao cac gia tri ban dau
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 dB sang l?n
%Tao dong bit nhi phan
bsignal=randint(1,len); %dong bit ngau nhien có ?? dài len
10
NRZ_signal=bsignal*2-1; %bien doi dong bit 0 1 sang -1 1
%cau truc chuong trinh
N0=1./SNR;
for i=1:length(SNR_db)
%Tao tap am noise voi ty so SNR là SNR(i)
noise=sqrt(N0(i))*randn(1,len);
%Tín hieu thu duoc = tin hieu NRZ ben phat + tap âm
r_signal = NRZ_signal +noise;
%giai ma tin hieu NRZ thu dc
NRZ_decoded=sign(r_signal);
%So sánh voi tin hieu NRZ ban dau, tính xác suat loi luu vào BER(i)
[number,ratio] = symerr(NRZ_decoded,NRZ_signal);
BER(i)=ratio;
end
plot(SNR_db, BER,'b');
xlabel('SNRdb');
ylabel('BER');
title('Ti le bit loi');

Bài 5.2
%khoi tao cac gia tri ban dau
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 dB sang l?n

11
%Tao dong bit nhi phan
bsignal=randint(1,len); %dong bit ngau nhien có ?? dài len
NRZ_signal=bsignal*2-1; %bien doi dong bit 0 1 sang -1 1
%cau truc chuong trinh
N0=1./SNR;
for i=1:length(SNR_db)
%Tao tap am noise voi ty so SNR là SNR(i)
noise=sqrt(N0(i))*randn(1,len);
%Tín hieu thu duoc = tin hieu NRZ ben phat + tap âm
r_signal = NRZ_signal +noise;
%giai ma tin hieu NRZ thu dc
NRZ_decoded=sign(r_signal);
%So sánh voi tin hieu NRZ ban dau, tính xác suat loi luu vào BER(i)
[number,ratio] = symerr(NRZ_decoded,NRZ_signal);
BER(i)=ratio;
end
plot(SNR_db, BER,'ko--');
xlabel('SNRdb');
ylabel('Pe');
title('Ti le bit loi ly thuyet va thuc te');
hold on;
Pe=(1-erf(sqrt(SNR./2)))./2
plot(SNR_db,Pe,'r');
legend('Mo phong', 'Ly thuyet');
hold off;

Pe Lý thuyết:

12
BER mô phỏng:

BÀI SỐ 6: KỸ THUẬT ĐIỀU CHẾ SỐ QPSK

Bài 6
len = 100000;
bsignal = randint(1, len);
for i=1:2:len;
switch bsignal(i)
case 0
if bsignal(i+1)==0
qpsk_signal((i+1)/2)=exp(j*3*pi/4); %00 ung voi -1+j
else
qpsk_signal((i+1)/2)=exp(j*5*pi/4); %01 ung voi -1-j
end
case 1
if bsignal(i+1)==0
qpsk_signal((i+1)/2)=exp(j*pi/4); %10 ung voi 1+j
else
qpsk_signal((i+1)/2)=exp(j*pi/4); %11 ung voi 1-j
end
end
end
plot(qpsk_signal,'o');
hold on;

t=0:0.01:2*pi;
plot(exp(j*t),'r--');
title('Bieu do chom sao cua tin hieu dieu che QPSK');

13
xlabel('I');
ylabel('Q');
hold off;

- SNR=6dB
len=50000;
bsignal = randint(1,len);
for i=1:2:len;
switch bsignal(i)
case 0
if bsignal(i+1)==0
qpsk_signal((i+1)/2)=exp(j*3*pi/4);
else
qpsk_signal((i+1)/2)=exp(j*5*pi/4);
end
case 1
if bsignal(i+1)==0
qpsk_signal((i+1)/2)=exp(j*pi/4);
else
qpsk_signal((i+1)/2)=exp(j*7*pi/4);
end
end
end
title('Do thi chom sao QPSK');
xlabel('I');
ylabel('Q');

14
%-----------------SNR=6dB--------------------------------------------------
-----
Es=std(qpsk_signal).^2;
N0=Es/(10^(6/10));
noise=sqrt(N0/2).*(randn(1,length(qpsk_signal))+1i.*randn(1,length(qpsk_sig
nal)));
qpsk=qpsk_signal + noise;
plot(qpsk,'bo');
title('SNR=6dB');
grid on;axis auto;
xlabel('I');
ylabel('Q');
hold on;
plot(qpsk_signal,'r*');

- SNR=3dB
len=50000;
bsignal = randint(1,len);
for i=1:2:len;
switch bsignal(i)
case 0
if bsignal(i+1)==0
qpsk_signal((i+1)/2)=exp(j*3*pi/4);
else
qpsk_signal((i+1)/2)=exp(j*5*pi/4);
end
case 1
if bsignal(i+1)==0
15
qpsk_signal((i+1)/2)=exp(j*pi/4);
else
qpsk_signal((i+1)/2)=exp(j*7*pi/4);
end
end
end
title('Do thi chom sao QPSK');
xlabel('I');
ylabel('Q');
%-----------------SNR=3dB--------------------------------------------------
-----
Es=std(qpsk_signal).^2;
N0=Es/(10^(3/10));
noise=sqrt(N0/2).*(randn(1,length(qpsk_signal))+1i.*randn(1,length(qpsk_sig
nal)));
qpsk=qpsk_signal + noise;
plot(qpsk,'bo');
title('SNR=3dB');
grid on;axis auto;
xlabel('I');
ylabel('Q');
hold on;
plot(qpsk_signal,'r*');

- SNR=0dB
len=50000;
bsignal = randint(1,len);
for i=1:2:len;

16
switch bsignal(i)
case 0
if bsignal(i+1)==0
qpsk_signal((i+1)/2)=exp(j*3*pi/4);
else
qpsk_signal((i+1)/2)=exp(j*5*pi/4);
end
case 1
if bsignal(i+1)==0
qpsk_signal((i+1)/2)=exp(j*pi/4);
else
qpsk_signal((i+1)/2)=exp(j*7*pi/4);
end
end
end
title('Do thi chom sao QPSK');
xlabel('I');
ylabel('Q');
%-----------------SNR=0dB--------------------------------------------------
-----
Es=std(qpsk_signal).^2;
N0=Es/(10^(0/10));
noise=sqrt(N0/2).*(randn(1,length(qpsk_signal))+1i.*randn(1,length(qpsk_sig
nal)));
qpsk=qpsk_signal + noise;
plot(qpsk,'bo');
title('SNR=0dB');
grid on;axis auto;
xlabel('I');
ylabel('Q');
hold on;
plot(qpsk_signal,'r*');

17
BÀI SỐ 7: XÁC SUẤT LỖI BIT TRONG ĐIỀU CHẾ QPSK
len = 50000; %do dai dong bit mo phong
SNR_db = 0:2:8; %tao vecto SNR_bd = [0 2 4 6 8]
SNR = 10.^(SNR_db/10); %doi SNR tu Decibel sang lan
bsignal = randint(1,len); %tao dong bit ngau nhien do dai len
for t=1:2:len %dieu che QPSK
switch bsignal(t)
case 0
if bsignal(t+1)==0
qpsk_signal((t+1)/2) = exp(j*3*pi/4); %00 ung voi -1+j
else
qpsk_signal((t+1)/2) = exp(j*5*pi/4); %01 ung voi -1-j
end
case 1
if bsignal(t+1)==0
qpsk_signal((t+1)/2) = exp(j*pi/4); %10 ung voi 1+j
else
qpsk_signal((t+1)/2) = exp(j*7*pi/4); %11 ung voi 1-j
end
end
end
for i=1:length(SNR_db) % tim BER
r_signal = awgn(qpsk_signal,SNR_db(i)); % dieu che qpsk co nhieu
for k=1:2:len % vong lap dung de giai ma
tin hieu qpsk co nhieu
18
if real(r_signal((k+1)/2))>=0
if imag(r_signal((k+1)/2))>=0
r_bsignal(k) = 1;
r_bsignal(k+1) = 0;
else
r_bsignal(k) = 1;
r_bsignal(k+1) = 1;
end
else
if imag(r_signal((k+1)/2))>=0
r_bsignal(k) = 0;
r_bsignal(k+1) = 0;
else
r_bsignal(k) = 0;
r_bsignal(k+1) = 1;
end
end
end
[number,ratio] = biterr(bsignal,r_bsignal);
BER(i) = ratio
end
Pb = 1/2.*erfc(sqrt(SNR/2))
plot(SNR_db,Pb,'k-');
hold on;
plot(SNR_db,BER,'ro--');
title('Do thi ty le loi bit ly thuyet va mo phong');
xlabel('SNR_ db');
ylabel('Pb');
legend('Ly thuyet','Mo phong');

19
Pb lý thuyết:

BER mô phỏng:

20
BÀI SỐ 8: MÔ PHỎNG ĐIỀU CHẾ M-QAM QUA KÊNH NHIỄU GAUSS
n_sym = 50000; % so ki tu dieu che
M = [16 64 128];
SNR_db = 0:25;
BER = zeros(length(M),length(SNR_db));
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 tin hieu
y
for r=1:size(SNR_db,2) % vong lap tinh BER
s_mod_awgn = awgn(s_mod,SNR_db(r),'measured'); % tin hieu y qua
kenh nhieu tro thanh y_awgn
s_demod = qamdemod(s_mod_awgn,M(k),0,'GRAY'); % giai dieu che M-
QAM
[number,ratio] = biterr(s_stream,s_demod); % tinh ti le loi
bit
BER(k,r) = ratio % luu ti le loi bit
vua tinh vao BER
end
end
semilogy(SNR_db,BER(1,:),'bo-',SNR_db,BER(2,:),'r-',SNR_db,BER(3,:),'m*-');
grid on;
title('Do thi ty le loi bit dieu che M-QAM');
xlabel('SNR_ db');
ylabel('BER');
legend('16-QAM','64-QAM','128-QAM');

Ta có kết quả:

21
22

You might also like