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

Báo cáo thí nghiệm 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 (323.49 KB, 21 trang )

Báo cáo
Thí nghiệm thơng tin số
Sinh viên: Nguyễn Văn Cơng
Lớp: Điện tử 2 – K56
MSSV: 20115466

Hà Nội ngày 28 tháng 3 năm 2014


BÀI SỐ 1
Q trình ngẫu nhiên của tín hiệu
Bài 1.1.
Code matlab
x=-5:0.1:5 % tao x la 1 mang cac phan tu trong khoang (-5,5), cach nhau 0.1
Px=exp(-x.^2/2)/sqrt(2*pi); % ham phan bo xs
plot(x,Px); % ve do thi ham phan phoi xs
title(‘ham phan bo xs theo dinh luat phan phoi chuan’); % ten do thi
xlabel(‘x’); % dien ten truc x
ylabel(‘y’); % dien ten truc y

Bài 1.1.

Code matlab


len=100000;

% do dai cia qua trinh ngau nhien.

x=randn(1,len); % tao qua trinh ngau nhien trong phan phoi chuan
step=.1;


k=-5:step:5;

% tao khoang cach
% khoang cach xet trong khoang (-5,5)

px=hist(x,k)/len/step; % tinh so vecto trong cac khoang duoc cho boi k
stem(k,px);

% ve do thi roi rac

Px_lythuyet = exp(-k.^2/2)/ sqrt(2*pi); % ham phan bo ly thuyet
hold on;

% giu do thi vua ve

plot(k,Px_lythuyet);

% ve do thi ham phan bo xs phan phoi chuan

title('phan bo xac suat Gauss'); % tieu de do thi
xlabel('x');
ylabel('p(x)');

% truc hoanh
% truc tung

legend('Ly thuyet','Mo phong');
hold of;

Thay đổi độ dài của quá trình ngẫu nhiên trong bài 1.2 lên thành len=1000000



BÀI SỐ 2
Lượng tử hóa tuyến tính

Bài 2.1

Code matlab
t=0:0.01:20;
xt=sin(randn()+t).*cos(rand()*t);
[inx xqt]= lquan(xt,-1,1,randint(1,1,3)+2);
plot(t,xt,'b',t,xqt,'r');
grid on;


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.1

Code matlab


N=1000;
x=2*rand(1,N)-1;

% x phan bo deu tu -1 den 1

nbit= 1:10;


% so bit luong tu tu 1 den 10

SNqR= zeros(size(nbit));

% khoi tao mang SNqR chua ket qua

SNqR_lt= 6.02 * nbit;

% Mang chua SNqR tinh theo ly thuyet

Ps=sum(x.^2)/N;

% cong suat tin hieu x

for i=1:size(nbit,2)
[inx xq]=lquan(x,-1,1,nbit(i));
eq= x-xq;
Pq=sum(eq.^2)/N;
SNqR(i)=10*log(Ps/Pq);
end
plot(nbit,SNqR,'b',nbit,SNqR_lt,'r');
title('Do thi mo phong');
xlabel('nbit');
ylabel('SNqR');
legend( 'Mo phong','ly thuyet');
grid on;

Bài 3.2
Tương tự bài 3.1, thay đổi tín hiệu x là tín hiệu điều hịa
X=sin(linspace(1,5,N));

N=1000;
x=sin(linspace(1,5,N));
nbit= 1:10;
SNqR= zeros(size(nbit));
SNqR_lt= 6.02 * nbit;
Ps=sum(x.^2)/N;


for i=1:size(nbit,2)
[inx xq]=lquan(x,-1,1,nbit(i));
eq= x-xq;
Pq=sum(eq.^2)/N;
SNqR(i)=10*log(Ps/Pq);
end

plot(nbit,SNqR,'b',nbit,SNqR_lt,'r');
title('Do thi mo phong');
xlabel('nbit');
ylabel('SNqR');
legend( 'Mo phong','ly thuyet');
grid on;


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
Code matlab
L=500;


% do dai cua qua trinh ngau nhien

x=randn(1,L);

% tao qua trinh ngau nhien theo phan phoi chuan

[acorr_x,n]=xcorr(x);

% ham tu tuong quan cua x, dong thoi lay cac gia tri truc %hoanh va bien n

plot(n,acorr_x); % ve do thi ham tu tuong quan
title(' Do thi ham tu tuong quan ');
xlabel('x');

% truc hoanh

ylabel('r(x)');

% truc tung

% tieu de do thi


Thay đổi tín hiệu x bằng tín hiệu có biên độ tăng dần từ -1 đến 1

Tín hiệu sin

Bài 4.2
Code matlab



N=200; % so luong tan so roi rac du lon
L=50;

% do dai cua qua trinh ngau nhien

x=randn(1,L);

% x la qua trinh ngau nhien theo phan phoi chuan

w=linspace(0,2*pi,N);

%w là khoang tan so (0,2*pi) voi N tan so roi rac

fx=freqz(x,1,w);

% bien doi fourier cua x tai cac tan so roi rac trong w

esd_x=fx.*conj(fx);

% mat do pho nang luong cua x

plot(w/(2*pi),esd_x);

% do thi mat do pho nang luong

title('do thi mat do pho nang luong'); % tieu de do thi
xlabel('w/2\pi');
ylabel('ESD(x)');


Tìm hàm tự tương quan và vẽ đồ thị so sánh.
Code matlab
N=1000;

% so luong tan so roi rac du lon

L=500; % do dai cua qua trinh ngau nhien


x=randn(1,L);

% x la qua trinh ngau nhien theo phan phoi chuan

w=linspace(0,2*pi,N);

% w là khoang tan so (0,2*pi) voi N tan so roi rac

fx=freqz(x,1,w);

% bien doi fourier cua x tai cac tan so roi rac trong w

esd_x=fx.*conj(fx);

% mat do pho nang luong cua x

plot(w/(2*pi),esd_x);

% do thi mat do pho nang luong


hold on;
title(‘do thi mat do pho nang luong và ham tu tuong quan’);
xlabel(‘w/2\pi);
[acorr_x,n]=xcorr(x);
% ham tu tuong quan
ft_acorr_x=freqz(acorr_x,1,w).*exp(j*w*(L-1));
plot(w/(2*pi),real(ft_acorr_x),’r:’);
% do thi ham tuong quan
legend(‘ESD(w)’,’R(w)’);
hold of;

BÀI SỐ 5
Mã đường dây NRZ


Bài 5.1

Matlab code
len=100000; % do dai dong bit mo phong
SNR_db=0:2:8 % tao vecto SNR_db
SNR=10.^(SNR_db/10); % doi SNR tu decibel sang lann

bsignal=(rand(1,len)>=0.5);
NRZ_signal=bsignal*2-1; % bien doi dong bit 0 1 sang -1 1
N0=1./SNR;

% phuon 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); % 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;
end
plot(SNR_db,Pe,'bo--'); % ve do thi


Bài 5.2
Code matlab
len=100000; % do dai dong bit mo phong
SNR_db=0:2:8 % tao vecto SNR_db
SNR=10.^(SNR_db/10); % doi SNR tu decibel sang lann
% tao dong bit nhi phan
bsignal=(rand(1,len)>=0.5);
NRZ_signal=bsignal*2-1; % bien doi dong bit 0 1 sang -1 1
N0=1./SNR;

% phuon 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); % 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;

end
plot(SNR_db,Pe,'bo--'); % ve do thi
hold on;
Pe_lythuyet=(1/2)*(1-efr(sqrt(SNR/2)));
plot(SNR_db,Pe_lythuyet,'rx--'); % ve do thi ly thuyet
title('ty le loi bit BER theo ti le tin hieu tren tap am SNR');
xlabel('SNR [db]');
ylabel('BER');
legend('Mo phong','ly thuyet');
hold on;


BÀI SỐ 6
Điều chế QPSK

Bài 6.1
Code matlab
len=50000;
bsignal = (rand(1,len) >=0.5); % tao dong bit ngau nhien do dai len
qpsk_signal=[];
for i= 1:2:length(bsignal)
if bsignal(i)==0&bsignal(i+1)==0
qpsk_signal((i+1)/2)= exp(j*3*pi/4);
elseif bsignal(i)==0&bsignal(i+1)==1
qpsk_signal((i+1)/2)= exp(j*5*pi/4);
elseif bsignal(i)==0&bsignal(i+1)==1
qpsk_signal((i+1)/2)= exp(j*7*pi/4);
elseif bsignal(i)==0&bsignal(i+1)==1
qpsk_signal((i+1)/2)= exp(j*pi/4);
end


end
plot(qpsk_signal,'o'); % ve tin hieu dieu che len do thi
hold on;
t=0:0.01:2*pi;
plot(exp(j*t),'b--');
xlabel('I');
ylabal('Q');


title('bieu do chom sao qpsk');

Bài 6.2
Code matlab
len=50000;
bsignal = (rand(1,len) >=0.5); % tao dong bit ngau nhien do dai len
qpsk_signal=[];
for i= 1:2:length(bsignal)
if bsignal(i)==0&bsignal(i+1)==0
qpsk_signal((i+1)/2)= exp(j*3*pi/4);
elseif bsignal(i)==0&bsignal(i+1)==1
qpsk_signal((i+1)/2)= exp(j*5*pi/4);
elseif bsignal(i)==0&bsignal(i+1)==1
qpsk_signal((i+1)/2)= exp(j*7*pi/4);


elseif bsignal(i)==0&bsignal(i+1)==1
qpsk_signal((i+1)/2)= exp(j*pi/4);
end


end
Es=std(qpsk_signal).^2;
SNR_db=6;
SNR=10^(SNR_db/10);
N0=Es/SNR;
noise=sqrt(N0/2)*(randn(size(qpsk_signal))+ j*randn(size(qpsk_signal)));
output_signal=qpsk_signal+ noise;
plot(qpsk_signal,'ro');
t=0:0.01:2*pi;
plot(exp(j*t),'r--');
xlabel('I');
ylabel('Q');
title('tin hieu qpsk dieu che di qua kenh nhieu trang voi SNR=6db');
hold of;


BÀI SỐ 7
Mô phỏng điều chế QPSK
qua kênh nhiều Gauss
Bài 7.
Code matlab
function ber=QPSK_map(n,bit,snr)
%n- number of bit
%bit
%snr-Signal Noise Ratio
s=[];
for i=1:2:n
if bit(i)==0&bit(i+1)==0
s((i+1)/2)=exp(j*pi/4);



elseif bit(i)==0&bit(i+1)==1
s((i+1)/2)=exp(j*3*pi/4);
elseif bit(i)==1&bit(i+1)==1
s((i+1)/2)=exp(j*5*pi/4);
elseif bit(i)==1&bit(i+1)==0
s((i+1)/2)=exp(j*7*pi/4);
end
end
es=var(s);
eb=es/2;
n_0=eb/10^(snr/10);
noise=sqrt(n_0/2)*(randn(size(s))+j*randn(size(s)));
r=s+noise;
t=0:0.01:2*pi;
d=[];
bit1=[];
a=[0 0 0 1 1 1 1 0];
for i=1:n/2
d(1)=(real(r(i))-real(exp(j*pi*1/4)))^2+(imag(r(i))-imag(exp(j*pi/4)))^2;
m=1;
for k=2:4
d(k)=(real(r(i))-real(exp(j*pi*(2*k-1)/4)))^2+(imag(r(i))-imag(exp(j*(2*k-1)*pi/4)))^2;
if d(k)<=d(m)
m=k;
end
end
bit1=[bit1 a(2*m-1) a(2*m)];
end



ber=sum(xor(bit,bit1))/n
end
.
SNR
BER

0
0,064

2
0.028

4
0.0069

6
0.0012


BÀI SỐ 8
Xác suất lỗi bít trong điều chế QPSK
Bài 8.1
Code matlab
n=50000;
snr=[0:1:10];
bit=randn(1,n)>0.5;
ber=[ ];p=[ ];
for i=1:length(snr)
ber(i)=QPSK_map(n,bit,snr(i));

gamma_b(i)=10^(snr(i)/10);
p(i)=erfc(sqrt(2*gamma_b(i))/sqrt(2))/2;
end
symilog(snr,ber,'-',snr,p,'--');
legend('Mo phong','Ly thuyet');
title('BER/SNR');
xlabel('SNR');
ylabel('BER');



×