Bài 1.1: Source code: x=5:0.1:5; Px=(1sqrt(2pi)exp(x.22)); 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)lengthstep % Tinh so vecto trong cac khoang cho boi vecto k stem(k,px) % ve do thi roi rac Px_lythuyet=exp(k.22)sqrt(2pi); % 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
Trang 1Báo cáo thí nghiệm thông tin số
Họ và tên:
Lớp: MSSV:
I Bài 1: Quá 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:
Trang 2Bà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
Trang 3hold 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:
Trang 4>> 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:
Trang 5III 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; % Tinh sai so
Pq_uni= sum (eq_uni.^2)/N; % Cong suat tap am luong tu
Trang 6SNqR_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:
Trang 7Bà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:
Trang 9Bà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:
Trang 10V 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
Trang 11xlabel('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
Trang 12Kế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
qpsk_signal((i+1)/2)=exp(j*pi/4);
else
qpsk_signal((i+1)/2)=exp(j*3*pi/4);
end
Trang 13case 1
if x(i+1)==0
qpsk_signal((i+1)/2)=exp(j*7*pi/4);
else
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:
Trang 14b SNR=3dB:
c SNR=6dB:
Trang 15VII 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
Trang 16for 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
Trang 17VIII 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');
Trang 18xlabel('SNR_bd');
ylabel('BER');
legend('M=16','M=32','M=64'); Kết quả mô phỏng: