You are on page 1of 11

Bài số 1: Hàm xác xuất phân bố Gauss của biến ngẫu nhiên

1.1:
• Code:

x= -4:0.05:4; % bien x lay gia tri tu (-4;4) moi gia tri cach nhau 0.05
p=1/sqrt(2*pi)*exp(-x.^2/2);
plot(x,p); % ham ve do thi lien tu
title('ham phan bo xac xuat cua bien ngau nhien');
xlabel('x');
ylabel('y');
• Đồ thị

1.2 Vẽ đồ thị của hàm phân phối lý thuyết và mô phỏng trên cùng đồ thị:
• Code

n=100000;
x=-4:0.05:4;
p=exp(-x.^2/2)/(sqrt(2*pi));
check=trapz(x,p)
plot(x,p,'r');
hold on;
y=randn(1,n); % tao ma tran ngau nhien phan bo theo ham gauss
m=mean(y); % trung binh cua y
variance=std(y)^2;% phuong sai cua y
x2=-4:0.1:4;
c=hist(y,x2); % su phan bo cua y theo x2
stem(x2,c/n/(x2(2)-x2(1))); %ve do thi roi rac
title('ham mat do phan bo');
xlabel('X');
ylabel('P(X)');
• Đồ thị

1.3:
Nhận xét:
+ Đại luợng kì vọng thể hiện giá trị trung bình cùa hàm phân bố gauss.
Phương sai đặc trưng cho độ lệch của biến x quanh một giá trị kỳ vọng.
+ Hàm phân phối xác suất gauss trong thông tin số thể hiện Nhiễu khi phát
và khi thu tín hiệu ( nhiễu gauss).
+khi tăng kì vọng và phuơng sai thi đồ thị dich sang bên phải:
+ Thay đổi độ dài của quá trình ngẫu nhiên 1.2 lên 1000000 phần tử:

So với kết quả cũ thì kết quả mới giống hàm phân bố xác suất gauss hơn vì
số điểm được lấy lớn hơn rất nhiều. vì thế, để xét 1 quá trình ngẫu nhiên cần
khảo sát nhiều điểm rời rạc.
+Mối liên hệ giữa hàm tự tuơng quan và hàm mật độ phổ năng luợng:

Bài số 2:Điều chế BPSK


2.1:
• Code:
clear
N = 10^6 % number of bits or symbols
ip = rand(1,N)>0.5; % tao 1 day ngau nhien 0 1
s = 2*ip-1; % dieu che BPSk, 1>1,0>-1
n = 1/sqrt(2)*[randn(1,N) + j*randn(1,N)]; % nhieu trang theo phan bo
gauss
SNR = 0:2:6; % ti le tin hieu tren nhieu
for i = 1:length(SNR)
y = s + 10^(-SNR(i)/20)*n; % cong nhieu trang
ipHat = real(y)>0; % receiver - hard decision decoding
c(i) = size(find([ip- ipHat]),2); % dem bit loi
end
BER = c/N;
theoryBer = 0.5*erfc(sqrt(10.^(SNR/10))); % theoretical ber
semilogy(SNR,BER,'b.-');
xlabel('Eb/No, dB');
ylabel('Bit Error Rate');
title('Bit error probability curve for BPSK modulation');
• Đồ thị

2.2:
• Code:
clear
SNR_db=0:6;
SNR_dn_simulation=0:2:6;
for i=1:length(SNR_db)
SNR(i)=10^(SNR_db(i)/10);
gama_b(i)=SNR(i);
p(i)=1/2*[1-erf(1/sqrt(2)*sqrt(gama_b(i)))];
end
semilogy(SNR_db,p,'ro--')
xlabel('SNR');
ylabel('P');
title('loi BER thuyet');
• do thi:

+ Vẽ trên cùng 1 đồ thị:

+ phải sử dụng mã đuờng truyền để giảm nhiễu ISI trên kênh truyền. phải
điều chế tín hiệu để nâng tốc độ kênh truyền.
+Khi tỉ số SNR tăng thì xác suất lỗi giảm do tin hiệu tăng, nhiễu giảm. giống
trên đồ thị.
+ so sánh PSK va FSK: PSK có thể dùng kết hợp với ASk để tăng dung
luợng đuờng truyền dẫn số khi băng thông của kênh tuyền có giới hạn.

Bài số 3: Điều chế QPSK


3.1:
• Code
clear
x=round(rand(1,10000)); % lấy chuỗi bit ngẫu nhiên
for i=1:2:length(x) % vòng lặp
if x(i)==0 & x(i+1)==0 % mã hóa 00 thành exp(j*pi/4)
S((i+1)/2)=exp(j*pi/4);
elseif x(i)==0 &x(i+1)==1 % mã hóa 01 thành exp(j*3*pi/4)
S((i+1)/2)=exp(j*3*pi/4);
elseif x(i)==1 &x(i+1)==1 % mã hóa 11 thành exp(j*5*pi/4)
S((i+1)/2)=exp(j*5*pi/4);
elseif x(i)==1 &x(i+1)==0% mã hóa 10 thành exp(j*7*pi/4)
S((i+1)/2)=exp(j*7*pi/4);
end
end
save ex5p1_Res S x;
plot(S,'*');
hold on;
t=0:0.01:2*pi;
plot(exp(j*t),'r--');
xlabel('\phi(t)');
ylabel('S_m');
title('bieu do khong gian tin hieu phuc cua tin hieu dieu che QPSK');
hold off;

• Đồ thị:
3.2:
• Code:
clear;
load ex5p1_Res;
Es=var(S); % độ thay đổi của S
Eb=Es/2;
SNR_db=6;
N_0=Eb/10.^(SNR_db/10);
N=sqrt(N_0/2)*(randn(size(S))+j*randn(size(S)));% nhiễu trắng
R=S+N; % công nhiễu
plot(R,'.');
hold on;
plot(S,'r*');
hold on;
t=0:0.01:2*pi;
plot(exp(j*t),'r--');
legend('S_m','S');
title('bieu do chom sao cua tin hieu thu duoc');
xlabel('I');
ylabel('Q');
hold off;
• Đồ thị:
Nhận xét:
+ Thay đổi tỉ số SNR trong bài 3.2 thì các chùm sao bị thi hẹp lại. Do SNR
tăng nên tín hiệu tăng, nhiễu giảm.
+ Hàm tạo 1 chuỗi bit ngẫu nhiên :
x=round(rand(1,10000));
Trước tiên hàm rand(1,10000) tạo 1 ma trận 1 hàng 10000 cột (dãy 10000
phần tử ) gồm các phần tử ngẫu nhiên có giá trị trong khoảng (0,1). Sau đó hàm
round làm tròn các giá trị đó tới các giá trị nguyên gần nhất (0 hoặc 1).
Bài số 4:QPSK
4.1:
• Code:

%save this function to a file name “cha.m”


function y=cha1(SNR_db,S,x)
Es=var(S);
Eb=Es/2;
N_0=Eb/10^(SNR_db/10);
N0=sqrt(N_0/2)*(randn(size(S))+j*randn(size(S)));
NS=S+N0;
theta_m=[pi/4,3*pi/4,5*pi/4,7*pi/4];
S_m=exp(j*theta_m);
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);
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;
for i=1:length(x)
if R(i)~=x(i);
c=c+1;
end
end
y=c;
% Main function:
clear all
load ex5p1_Res S x;
SNR_db=0:2:8;
for i=1:length(SNR_db)
c(i)=cha(SNR_db(i),S,x);
end
BEP=c/length(x);
semilogy(SNR_db,BEP,'.--');
save ex6p1_Res c BEP;

• Đồ thị:
4.2:
• Code :
clear;
SNR_db=0:8;
SNR_db_simulation=0:2:8;
for i=1:length(SNR_db)
SNR(i)=10^(SNR_db(i)/10);
gamma_b(i)=SNR(i);
p_b(i)=erfc(sqrt(2*gamma_b(i))/sqrt(2))/2;
end
semilogy(SNR_db,p_b,'ro--')
hold on
load ex6p1_Res c BEP;
semilogy(SNR_db_simulation,BEP,'x--')
title('cac xac suat loi bit');
xlabel('SNR in dB');
ylabel('P_b');
legend('Theory','Simulation');
hold off

• Đồ thị:
+ Xác suất lỗi bit của BPSK lớn hơn của QPSK.
+ QPSK sẽ cho tốc độ bit cao hơn so với BPSK nhưng băng thông tín hiệu
không đổi hoặc ngược lại ( băng thông tín hiệu QPSK sẽ nhỏ hơn băng
thông BPSK với cùng 1 tốc độ) nên QPSK sẽ truyền được luợng tin tức lớn
hơn của BPSK.

You might also like