Tải bản đầy đủ (.docx) (21 trang)

Báo cáo thí nghiệm thông tin số 1 px có dạng hình chuông 2 px là hàm mật độ xác xuất, nó tuân theo phân phối chuẩn tắc n(0,1) 3 ứng dụng của hàm gauss trong thông tín số tính hàm lỗi thông qua hàm gauss

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 (593.06 KB, 21 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 thơng tin số
Mã học phần : ET3250
Sinh viên

: Nguyễn Khánh Tồn

MSSV

: 20172855

Lớp
Lớp thí nghiệm

: ĐTVT 04 - K62
: 713392


Câu 1.1
x= -5:0.1:5;
Px = exp(-x.^2/2)/sqrt(2*pi);
plot(x,Px);
+ Chương trình :
>> x= -5:0.1:5;
>> p= exp(-x.^2/2)/(sqrt(2*pi));
>> plot(x, Px);
>> xlabel('x',);


>> ylabel('P(x)');
+ Kết quả thực hiện :

1.
2.
3.
4.

Px có dạng hình chng .
Px là hàm mật độ xác xuất, nó tuân theo phân phối chuẩn tắc N(0,1).
Ứng dụng của hàm Gauss trong thơng tín số tính hàm lỗi thơng qua hàm
gauss
Nếu thay đổi kỳ vọng μ thì tâm chuông thay đổi tâm chuông ở giá trị μ , nếu
thay đổi σ^2 thì chiều cao với độ rộng của chng thay đổi với σ^2 càng
lớn thì chiều cao chuông càng nhỏ và độ rộng chuông càng lớn.

Câu 1.2


len = 1000000;
x = randn(1,len);
step = 0.1;
k = -5:step:5;
+ Chương trình :
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 Gaus');

xlabel('x');
ylabel('Px');
legend('Ly thuyet','mo phong');
hold off;
+ Kết quả thực hiện :



Nhận xét: Kết quả phân bố trên hình thì ta thấy lý thuyết và mơ phịng
cho kết quả giống nhau

Nếu ta thay đổi độ dài của quá trình ngẫu nhiên lên 1.000.000 phần tử thì
kết quả Lý thuyết và Mơ phỏng phân bố là giống nhau

Vì ta len = 100.000 hay len = 1.000.000 nó là rất lớn và khi ta random(1,
len) nên ta có thể coi nó là phân bố ngẫu nhiên trên vô cùng nên kết quả thu
được khơng hề có sự khác biệt nhau là mấy

Hàm hist(x,k) dùng để tính số vector trong các khoảng được cho vởi
vector k . Ta phải chia hist(x,k) cho len và step vì để chuẩn hóa nó cho giống
phân bố hàm gauss
Câu 2 :
Hàm lquan
function [id qy]= lquan(x,xmin,xmax,nbit)
nlevel = 2^nbit;
q = (xmax-xmin)/nlevel;
[id qy] = quantiz(x,xmin+q:q:xmax-q,xmin+q/2:q:xmax-q/2);
Bài 2.1
Chạy code chương trình:
xs = rand(1,5)*2-1;

[xi xq] = lquan(xs,-1,1,3)
Kết quả:


Bài 2.2
Chạy chương trình:
t=0:0.01:20;
xt=sin(randn()+t).*cos(rand()*t);
[inx xqt] = lquan(xt,-1,1,randi(3)+1);
plot(t,xt,'b',t,xqt,'r');
grid on;
title('Do thi cua tin hieu x(t) va x_q(t)');
xlabel('t');
legend('x(t)','x_q(t)');
hold off;
Kết quả:






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)
Bước lượng tử q = 0.25
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 3:
Chạy chương trình:

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 tin hieu x_uni
[indx_sin xq_sin] = lquan(x_sin,-1,1,nbit(i)); % Luong tu hoa tin hieu x_sin
eq_uni = x_uni - xq_uni;
% tinh sai so luong tu hoa x_uni
eq_sin = x_sin - xq_sin;
% tinh sai so luong tu hoa x_sin
Pq_uni = sum(eq_uni.^2)/N; % tinh cong suat tap am luong tu x_uni
Pq_sin = sum(eq_sin.^2)/N; % tinh cong suat tap am luong tu x_sin


SNqR_uni(i) = 10*log10(Ps_uni/Pq_uni); % tinh SNR_db cua x_uni
SNqR_sin(i) = 10*log10(Ps_sin/Pq_sin); % tinh SNR_db cua x_sin
end
plot(nbit,SNqR_uni,'b-'); % ve do thi SNR tin hieu phan bo deu mo phong
hold on;

plot(nbit,SNqR_sin,'r--'); % ve do thi SNR tin hieu sin mo phong
plot(nbit,SNqR_lt,'m-.'); % Ve do thi SNR tin hieu phan bo deu ly thuyet
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ả:

SNqR_uni = [ 5.9304 11.9406 17.8829 23.9378 30.0528 35.9707 42.0338
48.0322 54.0226 60.2443 ]
SNqR_sin = [ 6.4171 12.8834 19.3981 25.6702 32.0389 38.1620 44.3266
50.4033 56.4544 62.5722 ]
SNqR_lt = [ 6.0200 12.0400 18.0600 24.0800 30.1000 36.1200 42.1400
48.1600 54.1800 60.2000 ]






Khi n tăng lên 1 thì SNqR thay đổi 1 lượng = 6.0206 (dB)
Ta có cơng thức tính SNqR khi tính tốn chỉ phụ thuộc n
Khi tay tín hiêu x từ sin sang uniform SNqR chênh nhau 1 lượng = 1.76(dB)
Vì SNqR_sin= 1,76 + 6.02n cịn SNqR_uni = 6.02n

Bài 4.1
Code :
L=500;

x= randn(1,L);
% Tao 1 vecto ngau nhien co 500 phan tu
[x acorr_x] = xcorr(x);
% tinh ham tu tuong quan cua vecto tin hieu x
stem(acorr_x,x);
% Ve do thi ham tuong quan
title ('Do thi ham tuong quan tin hieu');
xlabel('x');
ylabel('acorr_x');


+ Kết quả thực hiện :

Bài 4.2
Code :
L=50;
x=randn(1,L);
% Tao 1 vecto ngau nhien co 50 phan tu
y=xcorr(x);
% tính y=xcorr(x)
esd_x=(fft(x,500)).^2; % Ham tra ve bien doi Fourier roi rac 500 diem
ft_acorr_x=fft(y,500);
stem(esd_x);
hold on;
stem(ft_acorr_x);


+ Kết quả thực hiện :

Bài 5.1

Code :
len=100000; % do dai dong bit mo phong
SNR_db=0:2:8; % tao vecto SNR_db=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 co do dai len
NRZ_signal = bsignal*2-1; % bien doi dong bit 0 1 sang -1 1
N0 =1./SNR; % phuong sai cua tap am = cong suat tap am
% cho tin hieu di qua kenh nhieu trang va dai dieu che
for i=1:length(SNR_db)
noise = sqrt(N0(i)*randn(1,len)); % tao tap am noise
r_signal=NRZ_signal+noise; %tin hieu thu duoc= tin hieu NRZ ben phat+tap
am noise
NRZ_decoded= sign(r_signal); % giai ma tin hieu NRZ thu duoc


Pe(i)=symerr(NRZ_signal,NRZ_decoded)/len; % dem so bit loi thong %qua
ham symerr() roi chia cho do dai dong bit, ra ti so bit loi
end
plot(SNR_db,Pe,'bo--');
% Ve do thi
title(' Ti le BER/SNR ');
xlabel (' SNR[dB]');
ylabel (' BER ');
+ Kết quả thực hiện :

Bài 5.2
Code :
len = 100000; %Do dai dong bit mo phong
SNR_db = 0:2:8; %Tao vecto SNR_db = 0 2 4 6 8
SNR = 10.^(SNR_db/10); %Doi SNR tu decibel sang lan

bsignal = (rand(1,len) >= 0.5); %Tao dong bit ngau nhien do dai len
NRZ_signal = bsignal*2 - 1; %Bien doi dong bit 0 1 sang -1 1
N0 = 1./SNR; %Phuong sai cua tap am = cong suat tap am


%Cho tin hieu di qua kenh nhieu trang va giai dieu che
for i=1:length(SNR_db)
noise = sqrt(N0(i))*randn(1,len); %Tao tap am noise
r_signal = NRZ_signal + noise;
%Tin hieu thu duoc = Tin hieu NRZ ben phat
+ tap am noise
NRZ_decoded = sign(r_signal);
%Giai ma tin hieu NRZ thu %duoc
Pe(i) = symerr(NRZ_signal,NRZ_decoded)/len; %Dem so bit loi thong qua ham
symerr() roi chia cho do dai dong bit ra ty so bit loi
end
plot(SNR_db,Pe,'bo--');
hold on;
Pe_lythuyet = (1/2)*(1-erf(sqrt(SNR/2))); % Tinh ti so bit loi theo %ly thuyet
plot(SNR_db,Pe_lythuyet,'r.:');
legend('mo phong','ly thuyet');
hold off;
title('ti le loi bit BER theo ty le tin hieu tren tap am SNR');
xlabel('SNR[dB]');
ylabel('BER');
+ Kết quả thực hiện :


Bài 6.1
Code :

len=50000; % do dai dong bit mo phong
bsignal= randint(1,len); %tao dong bit ngau nhien do dai len
qpsk_signal=[];
for i=1:2:length(bsignal)
if bsignal(i)==0 & bsignal(i+1)==0 % anh xa tin hieu 00 thanh -1+j
qpsk_signal((i+1)/2)=exp(j*3*pi/4);
elseif bsignal(i)==0 & bsignal(i+1)==1 % anh xa tin hieu 01 thanh -1-j
qpsk_signal((i+1)/2)=exp(j*5*pi/4);
elseif bsignal(i)==1 & bsignal(i+1)==1 % anh xa tin hieu 11 thanh 1-j
qpsk_signal((i+1)/2)=exp(j*7*pi/4);
elseif bsignal(i)==1 & bsignal(i+1)==0 % anh xa tin hieu 10 thanh 1+j
qpsk_signal((i+1)/2)=exp(j*pi/4);
end
end
plot(qpsk_signal,'*');
hold on;
t=0:0.01:2*pi;
plot(exp(j*t),'g-.');
xlabel('I');
ylabel('Q');
title('Bieu do chom sao QPSK');


+ Kết quả thực hiện :

Bài 6.2
Code :
len =50000; % do dai dong bit mo phong
bsignal= randint(1,len); % tao dong bit ngau nhien co do dai
len qpsk_signal=[];

for i=1:2:length(bsignal)
if bsignal(i)==0 & bsignal(i+1)==0
% anh xa tin hieu 00 thanh -1+j
qpsk_signal((i+1)/2)=exp(j*3*pi/4);
elseif bsignal(i)==0 & bsignal(i+1)==1 % anh xa tin hieu 01 thanh-1-j
qpsk_signal((i+1)/2)=exp(j*5*pi/4);
elseif bsignal(i==1) & bsignal(i+1)==1 % anh xa tin hieu 11 thanh 1+j
qpsk_signal((i+1)/2)=exp(j*7*pi/4);
elseif bsignal(i)==1 & bsignal(i+1)==0 % anh xa tin hieu 10 thanh 1+j
qpsk_signal((i+1)/2)=exp(j*pi/4);
end
hold off;


end
Es= std(qpsk_signal).^2; % tinh cong suat ki hieu = phuong sai cua tin hieu QPSK
SNR_db=6; % ti le tin hieu tren nhieu 6 dB
SNR=10^(SNR_db/10); %quy doi tu dB sang lan
N0 =Es/SNR; % cong suat tap am
noise = sqrt(N0/2)*(randn(size(qpsk_signal))+j*randn(size(qpsk_signal))); %
%tao kenh nhieu trang voi SNR tuong ung
output_signal = qpsk_signal+noise; % dau ra cua tin hieu QPSK sau khi di qua
kenh nhieu trang
plot(output_signal,'.'); % ve tin hieu ra tren do thi
hold on;
plot(qpsk_signal,'ro'); % ve tin hieu dieu che len do thi
t=0:0.01:2*pi;
plot(exp(j*t),'r-');
title('Tin hieu QPSK dieu che di qua kenh nhieu trang voi SNR=6dB');
xlabel('I');

ylabel('Q');
+ Kết quả thực hiện :


Bài 7.1
Code :
len = 100000;
%do dai dong bit mo phong
bsignal = randint(1,len); %tao dong bit ngau nhien do dai len
qpsk_signal = [];
for i = 1:2:length(bsignal)
if bsignal(i)==0&bsignal(i+1)==0 %anh xa tin hieu 00 thanh -1+j
qpsk_signal((i+1)/2) = exp(j*3*pi/4);
elseif bsignal(i)==0&bsignal(i+1)==1 %anh xa tin hieu 01 thanh -1-j
qpsk_signal((i+1)/2) = exp(j*5*pi/4);
elseif bsignal(i)==1&bsignal(i+1)==1 %anh xa tin hieu 11 thanh 1-j
qpsk_signal((i+1)/2) = exp(j*7*pi/4);
elseif bsignal(i)==1&bsignal(i+1)==0 %anh xa tin hieu 10 thanh 1+j
qpsk_signal((i+1)/2) = exp(j*pi/4);
end
end
Es = std(qpsk_signal).^2; %tinh cong suat ky hieu = phuong sai cua tin hieu
QPSK
SNR_db = 0:2:8; %ty le tin hieu tren nhieu
SNR = 10.^(SNR_db/10); %quy doi tu dB sang lan
N0 = Es./SNR; %cong suat tap am
for i = 1:length(SNR_db)


noise=sqrt(N0(i)/2)*(randn(size(qpsk_signal)) + j*randn(size(qpsk_signal)));

%tao kenh nhieu trang voi SNR tuong ung
output_signal = qpsk_signal + noise;
%dau ra cua tin hieu QPSK sau khi di qua kenh nhieu trang
demodulated_signal = []; %tao vecto rong tin hieu giai dieu che
a = [1 0 0 0 0 1 1 1]; %tao vecto cac bit them vao tin hieu %giai dieu che
%qua trinh giai dieu che theo phuong phap xac suat cuc dai
for p = 1:len/2
d(1)=(real(output_signal(p))-real(exp(j*pi*1/4)))^2 +
(imag(output_signal(p))-imag(exp(j*pi*1/4)))^2;
m=1;
for k = 2:4;


d(k) = (real(output_signal(p))-real(exp(j*pi*(2*k-1)/4)))^2 +
(imag(output_signal(p))-imag(exp(j*pi*(2*k-1)/4)))^2;
if d(k) <= d(m)
m=k;
end
end demodulated_signal = [demodulated_signal a(2*m-1) a(2*m)];
en
d
Pe(i) = sum(xor(bsignal,demodulated_signal))/len; %Ty le loi bit %BER
end
plot(SNR_db,Pe,'co--'); %ve do thi mo phong
title('Ti le loi bit(BER) voi ti le tin hieu tren nhieu SNR');
xlabel('SNR [dB]');
ylabel('BER');
+ Kết quả thực hiện :

Bài 8:

len = 100000;
%do dai dong bit mo phong
bsignal = randint(1,len); %tao dong bit ngau nhien do dai len
qpsk_signal = [];
for i = 1:2:length(bsignal)
if bsignal(i)==0&bsignal(i+1)==0 %anh xa tin hieu 00 thanh -1+j


qpsk_signal((i+1)/2) = exp(j*3*pi/4);
elseif bsignal(i)==0&bsignal(i+1)==1 %anh xa tin hieu 01 thanh -1-j
qpsk_signal((i+1)/2) = exp(j*5*pi/4);
elseif bsignal(i)==1&bsignal(i+1)==1 %anh xa tin hieu 11 thanh 1-j
qpsk_signal((i+1)/2) = exp(j*7*pi/4);
elseif bsignal(i)==1&bsignal(i+1)==0 %anh xa tin hieu 10 thanh 1+j
qpsk_signal((i+1)/2) = exp(j*pi/4);
end
end
Es = std(qpsk_signal).^2; %tinh cong suat ky hieu = phuong sai cua tin hieu
QPSK
SNR_db = 0:2:8; %ty le tin hieu tren nhieu
SNR = 10.^(SNR_db/10); %quy doi tu dB sang lan
N0 = Es./SNR; %cong suat tap am
%thuc hieu truyen tin hieu tren kenh nhieu voi SNR tu 0 den 8 dB va giai
%dieu che, sau do tinh ty le loi bit BER
for i = 1:length(SNR_db)
noise=sqrt(N0(i)/2)*(randn(size(qpsk_signal)) + j*randn(size(qpsk_signal)));
%tao kenh nhieu trang voi SNR tuong ung
output_signal = qpsk_signal + noise;
%dau ra cua tin hieu QPSK sau khi di qua kenh nhieu trang
demodulated_signal = []; %Tao vecto rong tin hieu giai dieu che

a = [1 0 0 0 0 1 1 1]; %Tao vecto cac bit them vao tin hieu giai dieu che
%qua trinh giai dieu che theo phuong phap xac suat cuc dai
for p = 1:len/2
d(1)=(real(output_signal(p))-real(exp(j*pi*1/4)))^2 +
(imag(output_signal(p))-imag(exp(j*pi*1/4)))^2;
m=1;
for k = 2:4;
d(k) = (real(output_signal(p))-real(exp(j*pi*(2*k-1)/4)))^2 +
(imag(output_signal(p))-imag(exp(j*pi*(2*k-1)/4)))^2;
if d(k) <= d(m)
m=k;
end
end
demodulated_signal = [demodulated_signal a(2*m-1)
a(2*m)];
end
Pe(i) = sum(xor(bsignal,demodulated_signal))/len; %Ty le loi bit BER
end
plot(SNR_db,Pe,'ko--'); %ve do thi mo phong
title('Ti le loi bit(BER) voi ti le tin hieu tren nhieu SNR');
xlabel('SNR [dB]');


ylabel('BER');
hold on;
Pb = (erfc(sqrt(SNR./2)))./2;
plot(SNR_db,Pb,'rx:');
legend('Mo phong','Ly thuyet');
hold off;
+ Kết quả thực hiện :





×