You are on page 1of 15

Thông tin số Hà Nội 2014

Baá o caá o thıá nghieeệ m Thoe ng tin soố

Mã học phần : ET3250

Họ tên sinh viên : Lê Minh Nghĩa

Mã số sinh viên : 20146525

Lớp : CN-ĐTVT 02
Khóa : 59

1
Thông tin số Hà Nội 2014

Bài 1: QUÁ TRÌNH NgẪU nhiên của tín hiệu

1.1 code
x = -5:0.01:5;
Px = exp(-x.^2/2)/sqrt(2*pi);
plot(x,Px,'r');
title('Tin hieu ngau nhien Phan phoi chuan');
xlabel('x');
ylabel('Pe');

1.2 code

len = 100000; % Do dai cua qua trinh ngau nhien


x = randn(1,len); % Tao qua trinh ngau nhien (phan phoi
chuan
step = 0.1; % khoang cach lay mau 0.1
k = -5:step:5; % khoang xet -5 -> 5, cach deu 0.1

2
Thông tin số Hà Nội 2014

Px = hist(x,k)/len/step; % tinh xac suat ngau nhien


stem (k, Px); % ve do thi roi rac cua QT ngau nhien
Px_lithuyet = exp(-k.^2/2)/ sqrt(2*pi); % tinh xac suat phan bo theo ly thuyet
hold on; % ve 2 do thi tren cung truc toa do
plot (k, Px_lithuyet, 'r' ); % do thi ly thuyet
title (' phan bo xac suat Gauss '); % tieu de
xlabel(' x ' ); % truc hoanh
ylabel(' Px '); % truc tung
legend('Ly thuyet', 'Mo phong' ); % chu thich
hold off; % tat che do 2 do thi.

Bài 2: Lượng Tử Hóa Tuyến tính

Hàm: lquan
function[indx qy ] = lquan(x,xmin,xmax,nbit)
nlevel = 2^nbit ; % so muc luong tu hoa
q = (xmax - xmin )/nlevel; % Buoc luong tu
[ indx qy ] = quantiz ( x,xmin + q:q:xmax- q, xmin +q/ 2:q:xmax -q/2);

2.1 code
3
Thông tin số Hà Nội 2014

a= [ -0.2 1.9 3.2 -2.5]; % vidu ham lquan


[ indx qy ] = lquan (a,-4,4,2); % vidu ham lquan
xs= rand(1,5) *2-1; % lay 5 mau bang lenh random
[xi xq] = lquan (xs,-1,1,3); % su dung ham lquan

2.2 code
t = 0:0.01:20;
xt = sin (rand() + t ).* cos (rand() *t); % Tin hieu vao
[inx, xqt] = lquan (xt,-1,1,randi(3)+1); % xqt tin hieu da duoc luong tu hoa
hold on; % mo ve 2 do thi
plot(t,xt); % do thi tin hieu vao
plot(t, xqt,'r'); % do thi tin hieu da luong
tu hoa
title ('Luong Tu Hoa Tuyen Tinh'); % tieu de
xlabel('t'); % nhan truc x
ylabel('xt xqt'); % nhan truc y
legend('Tin hieu dau','Tin hieu qua Luong Tu'); % giai thich tung duong
tren do thi
hold off;

Bài 3: tập âm lượng tử trong kĩ thuật Lượng Tử Hóa tuyến tính

4
Thông tin số Hà Nội 2014

Code

N =1000;
x_uni=2*rand(1,N)-1; % x phan bo deu tu -1 den 1
x_sin = sin(linspace(1,5,N)); %Tín hi?u sin
nbit = 1 :10; % so bit luong tu hoa tu 1 den 10
SNqR_uni = zeros (size (nbit)); % khoi tao mang SNqR chua ket qua
SNqR_sin = zeros (size (nbit));
SNqR_lt = 6.02 *nbit; % mang SNqR_lythuyet tinh theo Ly thuyet
Ps_uni = sum (x_uni.^2)/N; % Cong suat tin hieu x
Ps_sin = sum (x_sin.^2)/N;
% tinh gia tri SNqR ung voi moi gia tri nbit

for i=1:size(nbit,2) % tra ve so cot n


[xi_uni, xq_uni] = lquan (x_uni,-1,1,nbit(i) ); % Luong tu hoa voi ket qua
dua vao xq
[xi_sin, xq_sin] = lquan (x_sin,-1,1,nbit(i) );
eq_uni = x_uni - xq_uni; % Tinh sai so
eq_sin = x_sin - xq_sin;
Pq_uni= sum (eq_uni.^2)/N; % Cong suat tap am luong tu
Pq_sin= sum (eq_sin.^2)/N;
SNqR_uni(i) = 10 .* log10(Ps_uni./Pq_uni) ; % ti so nhieu
SNqR_sin(i) = 10 .* log10(Ps_sin./Pq_sin) ;
%end
end
plot (nbit,SNqR_uni,'r' , nbit, SNqR_sin,'b',nbit,SNqR_lt,'g'); % do thi ly
thuyet
title('Luong tu hoa Tuyen Tinh');
xlabel('nbit');
ylabel('SNqR');
legend('SNqR uni mo Phong', 'SNqR sin mo Phong', 'SNqR Ly Thuyet')
grid on

5
Thông tin số Hà Nội 2014

Bài 4: Mật độ phổ năng lượng và hàm tu tương quan của tín hiệu

4.1 code
L =500;
x1 = randn(1,L); % Tin hieu ngau gien roi rac phan phoi
Chuan
x2 = linspace(-1,1,L); % Tin hieu co bien do tang dan
x3 = sin(linspace(-10,10,L)); % Tin hieu sin cua t/h co bien do tang dan
[acorr_x1 n1] = xcorr(x1); % Ham tu tuong quan cua t/h x1
[acorr_x2 n2] = xcorr(x2); % Ham tu tuong quan cua t/h x2
[acorr_x3 n3] = xcorr(x3); % Ham tu tuong quan cua t/h x3
plot( n1, acorr_x1,'r',n2, acorr_x2,'g',n3, acorr_x3);
title('Ham tuong Quan'); % Tieu de
xlabel('n'); % Truc hoanh
ylabel('Rxx'); % Truc tung
legend('x1 Ngau Nhien', 'x2 Bien Do Tang Dan Deu', ' x3 Tin Hieu sin(cua TH
bien do tang dan)');
grid on % bat luoi do thi

6
Thông tin số Hà Nội 2014

4.2 code

L = 50; % do dai mau


x = randn(1,L); % tin hieu ngau nhien x
N = 200; % 200 tan so roi rac
w = linspace (0,2*pi,N); % chia mau tan so
[acorr_x n] = xcorr(x); % ham tuong quan x
f_acorr_x = freqz(acorr_x,1,w).* exp(1i*w*(L-1)); % pho cua ham tu tuong
quan x
esd_x = f_acorr_x .* conj (f_acorr_x); % mat do pho nang luong x
subplot(2,1,1); %
semilogy(w/pi,esd_x); % do thi mat do pho nang
luong
title('Mat do pho nang luong '); % tieu de
xlabel('w/pi '); % truc hoanh
ylabel('esd_ x'); % truc tung
subplot(2,1,2); %
semilogy(w/pi,real(f_acorr_x),'r'); % di thi Pho ham tuong
quan
title('Pho ham tu tuong quan'); % tieu de
xlabel('w/pi'); % truc hoanh
ylabel('f_ acorr_ x'); % nhan truc tung

7
Thông tin số Hà Nội 2014

Bài 5: Mã đường dây NRZ

5.1 code
len = 100000; % Do dai dong bit mo phong
SNR_db = 0:2:8; % vecto SNR_db = [0 2 4 6 8]
SNR = 10.^ (SNR_db/10); % doi SNR tu deciben sang lan
bsignal = randint (1,len); % dong bit ngau nhien do dai 'len'
NRZ_signal = bsignal* 2 -1; % doi dong 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); % nhieu tap am
r_signal = NRZ_signal + noise; % Tin hieu thu duoc
r_bsignal = real(r_signal)>=0;
d(i) = nnz(bsignal- r_bsignal);
end
BER =d/len;
theoryBER = 0.5*erfc(sqrt(10.^(SNR_db/10)));
hold on
plot(SNR_db,BER,'bo--'); % ti le loi bit tren duong truyen
title ('Ma duong day NRZ');
xlabel('SNR_db');
ylabel('Pe');

8
Thông tin số Hà Nội 2014

5.2 code
len = 100000; % Do dai dong bit mo phong
SNR_db = 0:2:8; % vecto SNR_db = [0 2 4 6 8]
SNR = 10.^ (SNR_db/10); % doi SNR tu deciben sang lan
bsignal = randint (1,len); % dong bit ngau nhien do dai 'len'
NRZ_signal = bsignal* 2 -1; % doi dong 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); % nhieu tap am
r_signal = NRZ_signal + noise; % Tin hieu thu duoc
r_bsignal = real(r_signal)>=0;
d(i) = nnz(bsignal- r_bsignal);
end
BER =d/len;
theoryBER = 0.5*erfc(sqrt(10.^(SNR_db/10)));
hold on
plot(SNR_db,BER,'bo--'); % ti le loi bit tren duong truyen
for k =1:length(SNR_db)

9
Thông tin số Hà Nội 2014

Pe_lt = 1/2 * (1- erf(1/ sqrt(2) * sqrt(SNR)));


end
plot (SNR_db,Pe_lt,'r');
title ('ma duong day NRZ');
xlabel ('SNR_db');
ylabel ('Pe');
legend( 'BER Mo phong','Pe li Thuyet');
hold off
grid on

Bài 6:Kỹ thuật điều chế QPSK

code
len = 50000;
signal = randint (1, len);
qpsk_signal = zeros(1,len);
qpsk_noise = zeros(1,len); % sinh ra ma tran de chua
SNR_db = 0; % ti le tin hieu tren tap am
SNR = 10.^ (SNR_db/10); % doi sang deciben
for i =1:len-1 % doan for de TAO TIN HIEU PHUC
if (signal(i)==0 && signal(i+1) == 0)

10
Thông tin số Hà Nội 2014

qpsk_signal(i) = exp(1j*pi/4);
elseif signal(i) == 0 && signal(i+1) ==1
qpsk_signal(i) = exp (3*1j* pi/4);
elseif (signal(i) == 1 && signal(i+1) ==1)
qpsk_signal(i)= exp (5*1i* pi/4) ;
elseif signal(i) == 1 && signal(i+1) ==0
qpsk_signal(i)= exp (7*1j* pi/4) ;
end
end
hold on
t=0:0.01:2*pi ; % khai báo bi?n t
Es= std(qpsk_signal)^2; % Nang luong cua ki hieu
N0= Es/SNR; % Cong suat tap am
noise = sqrt(N0/2)* (randn(1,len) + 1i* randn(1,len)); % Nhieu
for i= 1:len
qpsk_noise(i) = qpsk_signal(i) + noise(i); % Tin hieu qua nhieu trang
end
plot (qpsk_noise,'.');
plot(qpsk_signal,'ro');
plot(exp(1i*t),'k--') ;
hold off
title('Bieu do chom sao tin hieu thu duoc khi SNR=0dB');
xlabel('I');
ylabel('Q');

11
Thông tin số Hà Nội 2014

12
Thông tin số Hà Nội 2014

Bài 7:Xác suất lỗi bit trong điều chế QPSK

Code
leng=1000;
signal=randi([0,1],1,leng);
SNR_db=0:2:8;
SNR=10.^(SNR_db/10);
for i=1:2:leng
if (signal(i)==0 && signal(i+1)==0)
qpsk_signal((i+1)/2)=exp(1i*pi/4);
elseif (signal(i)==0 && signal(i+1)==1)
qpsk_signal((i+1)/2)=exp(1i*3*pi/4);
elseif (signal(i)==1&& signal(i+1)==1)
qpsk_signal((i+1)/2)=exp(1i*5*pi/4);
elseif (signal(i)==1 && signal(i+1)==0)
qpsk_signal((i+1)/2)=exp(1i*7*pi/4);
end
end
for i=1:length(SNR_db)
c(i)=cha(SNR_db(i),qpsk_signal, signal);
end
BER=c/length(signal);
plot(SNR_db,BER,'^--');
hold on;
pb=erfc(sqrt(2*SNR)/sqrt(2))/2; %Công th?c tính xác su?t l?i bit theo l?
thuy?t
plot(SNR_db,pb,'ro-'); % V? đư?ng L? thuy?t
grid on; % m? lư?i
title('Ti le loi Bit');
xlabel('SNR [dB]');
ylabel('BER');
legend('Mo phong','Li thuyet');

% Ham giai dieu che QPSK va dem loi xuat hien trong qua trinh phat
% luu voi ten %'cha'
function y = cha(SNR_db,S,x)
Es = var(S);
Eb = Es/2;
N_0 = Eb/10^(SNR_db/10); % tu SNR_db=10log(Eb/N_0)
N0 = sqrt(N_0/2)*(randn(size(S)) + 1i*randn(size(S))); % tao nhieu trang phuc
NS = S + N0; % tin hieu thu duoc
theta_m = [pi/4,3*pi/4,5*pi/4,7*pi/4];
S_m = exp(1i*theta_m); % vong lap so sanh do lech cua ki hieu thu duoc
% voi cac gia tri ki hieu chuan.
for i = 1:length(S)
d = abs(S_m-NS(i));
md = min(abs(S_m-NS(i)));
if md == d(1)
R(2*i-1) = 0;
R(2*i) = 0;
elseif md == d(2)
R(2*i-1)=0;
R(2*i)=1;
elseif md==d(3)

13
Thông tin số Hà Nội 2014

R(2*i-1)=1;
R(2*i)=1;
elseif md==d(4)
R(2*i-1)=1;
R(2*i)=0;
end
end
c = 0; % mac dinh bien dem loi bit bang 0
for i = 1:length(x)
if R(i)~=x(i)
c = c+1;
end
end
y =c ; % tra ve y
end

Bài 8:Mô phỏng điều chế M-QAM qua kênh nhiễu GAUSS

Code
n_sym=50000; %So ky tu dieu che
M=[16 32 64];
snr=0:25;

14
Thông tin số Hà Nội 2014

ber=zeros(length(M),length(snr));
for k=1:size(M,2) %size (M,2) la so cot cua M
x = randi([0 M(k)-1],1,n_sym);x1=x; %tao dong bieu tuong do dai n_sym
h=modem.qammod(M(k)); %dieu che M-QAM
x=modulate(h,x);
scatterplot(x);
for r=1:size(snr,2)
y=awgn(x,snr(r),'measured');
h1=modem.qamdemod(M(k)); %giai dieu che M-QAM
y=demodulate(h1,y);
Nerr=symerr(x1,y); %So sanh 2 dong ky hieu
ber(k,r)=Nerr/n_sym;
end
end
semilogy(snr,ber); %Ve do thi BER voi cac truong hoi cua M
grid on
xlabel('SNR');
ylabel('M-QAM');
title('Mo phong dieu che M-QAM qua kenh nhieu GAUSS');
legend('16-QAM','32-QAM','64-QAM');

15

You might also like