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

Báo cáo thí nghiệm thông tin số đại học Bách Khoa Hà Nội

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 (517.54 KB, 18 trang )

Báo cáo thí nghiệm thơng tin số
Họ và tên:
Lớp:
I.

MSSV:
Bài 1:Q trình ngẫu nhiên của tín hiệu

Bài 1.1:
Source code:
x=-5:0.1:5;
Px=(1/sqrt(2*pi)*exp(-x.^2/2));
plot(x,Px);
% Ve do thi
xlabel('x');
% Label cho truc hoanh
ylabel('Px'); % Label cho truc tung
title(' Do thi ham phan bo xac suat Gauss'); % Ten do thi
Kết quả mô phỏng:


Bài 1.2:
Source code:
length=100000;
% Do dai cua qua trinh ngau nhien
x=randn(1,length); % Tao qua trinh ngau nhien theo phan
phoi chuan
step=.1;
% buoc nhay bang 0.1
k=-5:step:5;
% Khoang xet tu -5 den 5, b?oc nhay


0.1
px=hist(x,k)/length/step % Tinh so vecto trong cac khoang
cho boi vecto k
stem(k,px)
% ve do thi roi rac
Px_lythuyet=exp(-k.^2/2)/sqrt(2*pi); % Ham phan bo xac
suat theo ly thuyet
hold on;
plot(k,Px_lythuyet);
title(' Phan bo sac xuat Gauss');
% Tieu de cua do thi
xlabel('x');
% Ten truc hoanh
ylabel('P(x)');
% Ten truc tung


legend('Ly thuyet','Mo phong'); % Tao ghi chu
hold off;
Kết quả mô phỏng:

II.

Bài II:Lượng tử hóa tuyến tính:

Bài 2.1:
Chương trình con:
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);
Lệnh Command:


>> xs=rand(1,5)*2-1;
>> [xi xq]=lquan(xs,-1,1,3)
xi =
1

3

1

7

0

xq =
-0.6250 -0.1250 -0.6250 0.8750 -0.8750
Bài 2.2:
Source code:
t = 0:.01:20;
xt = sin( randn() + t).*cos(rand()*t);
% Tin hieu vao
[inx xqt] = lquan (xt, -1, 1, randi(3)+1);
% xqt: tin hieu da duoc luong tu hoa
plot(t,xt,'b',t,xqt,'r');
% Ve 2 do thi tren cung 1 he truc
grid on ;

% Bat luoi do hoa
title ('Luong Tu Hoa Tuyen Tinh');
% tieu de
xlabel('t');
% truc x
ylabel('xt xqt');
% truc y
legend('Tin hieu dau','Tin hieu qua Luong Tu');
% giai thich tung duong tren do thi
Kết quả mô phỏng:


III.

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

Source code:
N =1000;
x_uni = 2*rand(1, N)-1;
% x_uni phan bo 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
SNqR_sin = zeros (size(nbit));
% SNqR cua tin hieu sin
SNqR_lt = 6.02 *nbit;
% mang SNqR tinh theo Ly thuyet

Ps_uni = sum (x_uni.^2)/N;
% Cong suat tinh hieu mo phong
Ps_sin = sum (x_sin.^2)/N;
% Cong suat tin hieu sin
for i=1:size(nbit,2)
[xi xq_uni] = lquan (x_uni,-1,1,nbit(i) );
% Luong tu hoa voi ket qua dua vao xq
eq_uni = x_uni - xq_uni;
sai so

% Tinh


Pq_uni= sum (eq_uni.^2)/N;
% Cong
suat tap am luong tu
SNqR_uni(i) = 10 .* log10 (Ps_uni ./Pq_uni) ;
% tinh
SNqR
end
for i=1:size(nbit,2)
% tra ve so cot n
[xi xq_sin] = lquan (x_sin,-1,1,nbit(i) );
% Luong tu hoa voi ket qua dua vao xq
eq_sin = x_sin - xq_sin;
% Sai so eq_sin
Pq_sin= sum (eq_sin.^2)/N;
% Cong suat tap am luong tu Pq_sin
SNqR_sin(i) = 10 .* log10 (Ps_sin ./Pq_sin) ;
% tinh SNqR_sin

end
plot
(nbit,SNqR_uni ,'r',nbit,SNqR_sin,'b',nbit,SNqR_lt,'o');
% Ve 3 do thi SNqR(nbit) tren cung mot he truc
xlabel('nbit');
ylabel('SNqR');
legend('SNqR_uni(nbit)','SNqR_sin(nbit)', 'SNqR_lt(nbit)')
% Ghi chu thich

Kết quả mô phỏng:


IV.

Bài 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:
Source code:
L=500;
x=randn(1,L);
x1=linspace(-1,1,L)
%Bien do tang dan
x2=sin(linspace(-10,10,L)) % Tin hieu hinh sin
[n y]=xcorr(x);
figure(1);
subplot(2,2,1) % 2 hang, 2 cot, o thu nhat
stem(y,n);
title('Do thi ham tu tuong quan cua x=randn(1,L)');
xlabel('n');
[n y1]=xcorr(x1);

subplot(2,2,2) % 2 hang, 2 cot, o thu 2
stem(y1,n);
title('Do thi ham tu tuong quan cua x1=linspace(-1,1,L)');
xlabel('n');
[n y2]=xcorr(x2);
subplot(2,2,3) % 2 hang, 2 cot, o thu 3
stem(y2,n);
title('Do thi ham tu tuong quan cua x2=sin(linspace(10,10,L))');
xlabel('n');
Kết quả mô phỏng:



Bài 4.2:
Source code:
N=200;
x=randn(1,50);
w=linspace(0,2*pi,N);
fx=freqz(x,1,w);
esd_x=fx.*conj(fx);
acorr_x=xcorr(x);
ft_acorr_x=freqz(acorr_x,1,w).*exp(j*w*49);
subplot(2,1,1);
semilogy(w/pi,esd_x);
title('Ham mat do nang luong cua tin hieu');
xlabel('w/pi');
ylabel('esd_x');
subplot(2,1,2);
semilogy(w/pi,real(ft_acorr_x),'b');
title('Pho cua ham tu tuong quan');

xlabel('w/pi');
ylabel('ft_acorr_x');
Kết quả mô phỏng:


V.

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

Bài 5.1:
Source code:
len=100000;
SNR_db=0:2:8;
for i=1:length(SNR_db)
SNR=10.^(SNR_db/10);
N0=1./SNR;
NRZ_signal=randsrc(1,len);
noise=sqrt(N0(i)).*randn(size(NRZ_signal));
r_signal=NRZ_signal+noise;
NRZ_decoded=sign(r_signal);


[Num,BER(i)]=symerr(NRZ_signal,NRZ_decoded);

end
semilogy(SNR_db,BER,'ro-');
xlabel('SNR(dB)');
ylabel('BER');
title('Ti le loi bit');


Bài 5.2:
Source code:
len=100000;
SNR_db=0:2:8;
for i=1:length(SNR_db)
SNR=10.^(SNR_db/10);
N0=1./SNR;
NRZ_signal=randsrc(1,len);
noise=sqrt(N0(i)).*randn(size(NRZ_signal));
r_signal=NRZ_signal+noise;
NRZ_decoded=sign(r_signal);
[Num,BER(i)]=symerr(NRZ_signal,NRZ_decoded);
Pe=0.5*(1-erf(sqrt(SNR/2)));
end
semilogy(SNR_db,BER,'bo--',SNR_db,Pe,'r*--');%Ve 2 do thi
tren cung he truc
xlabel('SNR(dB)');
% Ten truc hoanh


legend('ly thuyet','Thuc te'); % Tao chu thich
title('Ti le loi bit');
% Ten do thi

Kết quả mô phỏng:

VI.

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


Bài 6.1:
Source code:
len=500000;
x=(randsrc(1,len)+1)/2;
for i=1:2:length(x)
switch x(i)
case 0
if x(i+1)==0


else
end
case 1
if x(i+1)==0
else

qpsk_signal((i+1)/2)=exp(j*pi/4);
qpsk_signal((i+1)/2)=exp(j*3*pi/4);

qpsk_signal((i+1)/2)=exp(j*7*pi/4);

qpsk_signal((i+1)/2)=exp(j*5*pi/4);
end
end
end
Es=std(qpsk_signal).^2; %Tinh nang luong
N0=Es/(10^(0/10)); % Cong suat tap am cua nhieu voi SNR =
0 dB
noise=sqrt(N0/2).*(randn(1,length(qpsk_signal))
+j.*randn(1,length(qpsk_signal)));

qpsk_awgn=qpsk_signal + noise; % Tin hieu khi co nhieu
plot(qpsk_awgn,'o');
title('SNR=0dB');
grid on;
axis auto;
xlabel('I');
ylabel('Q');
hold on;
plot(qpsk_signal,'o');
t=0:0.01:2*pi;
plot(exp(j*t),'k--');
xlabel('I');
ylabel('Q');
title('Bieu do chom sao cua tin hieu dieu che QPSK va tin
hieu sau khi di qua kenh AWGN');

Kết quả mô phỏng:
a. SNR=0dB:


b. SNR=3dB:

c. SNR=6dB:


VII.

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

Source code:

len = 50000; %Do dai bit
SNR_bd = 0:2:8;
SNR = 10.^(SNR_bd/10);
bsignal = randint(1,len); %Tao dong bit ngau nhien
for t=1:2:len
switch bsignal(t)
case 0
if bsignal(t+1)==0
qpsk_signal((t+1)/2) = exp(j*3*pi/4);
else
qpsk_signal((t+1)/2) = exp(j*5*pi/4);
end
case 1
if bsignal(t+1)==0
qpsk_signal((t+1)/2) = exp(j*pi/4);
else
qpsk_signal((t+1)/2) = exp(j*7*pi/4);
end
end
end
for k=1:length(SNR_bd)
r_signal = awgn(qpsk_signal,SNR_bd(k));
%QPSK co nhieu


for t=1:2:len
if real(r_signal((t+1)/2))>=0
if imag(r_signal((t+1)/2))>=0
r_bsignal(t) = 1;
r_bsignal(t+1) = 0;

else
r_bsignal(t) = 1;
r_bsignal(t+1) = 1;
end
else
if imag(r_signal((t+1)/2))>=0
r_bsignal(t) = 0;
r_bsignal(t+1) = 0;
else
r_bsignal(t) = 0;
r_bsignal(t+1) = 1;
end
end
end
[number,ratio] = biterr(bsignal,r_bsignal);
BER(k) = ratio
end
Pb = 1/2.*erfc(sqrt(SNR/2))
plot(SNR_bd,Pb,'o-',SNR_bd,BER,'r');
title('Ty le loi bit ly thuyet va mo phong');
xlabel('SNR_bd');
ylabel('Pb');
legend('Ly thuyet','Mo phong');
Kết quả mô phỏng


VIII. Bài 8:Mô phỏng điều chế M- QAM qua kênh nhiễu Gauss
Source code:
n_sym = 50000; % So ki tu dieu che
M = [16 32 64];

SNR_db = 0:25;
BER = zeros(length(M),length(SNR_db));
for k=1:size(M,2) % Size(M,2): so cot cua M
s_stream = randi([0 M(k)-1],1,n_sym);
s_mod = qammod(s_stream,M(k),0,'GRAY'); % Dieu che tin
hieu y
for r=1:size(SNR_db,2)
s_mod_awgn = awgn(s_mod,SNR_db(r),'measured');% y
qua kenh nhieu
s_demod = qamdemod(s_mod_awgn,M(k),0,'GRAY'); %
Giai dieu che M-QAM
[number,ts] = biterr(s_stream,s_demod); % Ty le
loi bit
BER(k,r) = ts
end
end
semilogy(SNR_db,BER(1,:),'o-',SNR_db,BER(2,:),'b*-',SNR_db
,BER(3,:),'k.-');
grid on;
title('Ty le loi bit trong dieu che M-QAM');


xlabel('SNR_bd');
ylabel('BER');
legend('M=16','M=32','M=64');
Kết quả mô phỏng:




×