HỌC VIỆN CƠNG NGHỆ BƯU CHÍNH VIỄN THƠNG
BÀI TẬP LỚN
MƠ PHỎNG HỆ THỐNG TRUYỀN THƠNG
Họ và tên
Lớp
Mã sinh viên
Nhóm
:
:
:
:
Tơ Văn Thìn
D18CQVT-07
B18DCVT415
06
1
Bài 1:
a)
- Đọc ảnh từ tệp đồ họa bằng lệnh a=imread(‘’) . Kiểu dữ liệu của ma trận a chứa giá trị của
các điểm ảnh từ tệp đồ hoạ sau lệnh imread có kiểu là unit8, có giá trị trong khoảng từ 0 – 255, là
ma trận 3 chiều.
a(: , : ,1): là phần tử thứ nhất của chiều thứ 3của ma trận a, chứa thông tin của màu
đỏ.
a(: , : , 2): là phần tử thứ hai của chiều thứ 3 của ma trận a, chứa thông tin của màu
xanh lá cây.
a(: , : ,3): là phần tử thứ ba của chiều thứ 3 của ma trận a, chứa thông tin của màu
xanh lam.
-Thực hiện chuyển lần lượt phần tử thứ nhất ,thứ hai và thứ ba thành chuỗi bit nhị phân bằng
lệnh reshape và de2bi:
+ dùng lệnh reshape để sắp xếp dữ liệu thành 1 hàng .
+ dùng lệnh de2bi để chuyển dữ liệu thành chuỗi bit nhị phân.
+reshape lại thành chuỗi bit ,vì reshape thực hiện theo hàng dọc nên sẽ
chuyển vị ma trận trước khi thực hiện
Ta sẽ có 3 chuỗi bit nhị phân ứng với 3 phần tử chiều thứ 3 của ma trận a là x3,y3 và z3
=> tạo ma trận M từ 3 ma trận x3 y3 z3 để tạo thành một chuỗi bit
-Thực hiện chuyển chuỗi nhị phân ngược lại:
+Ta thực hiện tách chuỗi M thành 3 chuỗi x3,y3,z3 sau đó thực hiện chuyển đổi từng chuỗi .
+ dùng reshape để chuyển chuỗi bit nhị phân thành ma trận 8 hàng
+ dùng lệnh bi2de để chuyển nhị phân thành thập phân . vì lệnh bi2de đọc theo hàng nên phải
chuyển vị ma trận khi thực hiện.
+rồi ta dùng reshape để sắp xếp ma trận thành kích cỡ ban đầu .
=> làm lần lượt với x3 ,y3, z3 ta thu được 3 ma trận x6 ,y6, z6 chứa thông tin 3 màu
của ảnh.
- Sau cùng ta gộp 3 ma trận x6,y6,z6 thành ma trận b có 3 chiều chứa thơng tin ảnh.
- Dùng câu lệnh imshow(b) để hiển thị hình ảnh
Câu b và câu c
a=imread('flower.jpg');
x=a(:,:,1);
y=a(:,:,2);
z=a(:,:,3);
% chuyển thành dãy nhị phân
x1=reshape(x,1,4915200);%sắp xếp ma trận x (theo cột) thành ma trận x1
(chỉ có 1 hàng)
x2=de2bi(x1,'left-msb');%chuyển thập phân thành nhị phân lưu vào x2
%có kích thước 4915200x8
x3=reshape(x2',1,4915200*8);%chuyển vị ma trận x2 thành 8x4915200
%(cột là chuỗi bit nhi phân cua 1 phân tu trong x), rồi cho lần
%lượt các cột x2 thành hàng cua x3(x3 có 1 hàng)
2
y1=reshape(y,1,4915200);% tương tự x
y2=de2bi(y1,'left-msb');
y3=reshape(y2',1,4915200*8);
z1=reshape(z,1,4915200);%tương tự x
z2=de2bi(z1,'left-msb');
z3=reshape(z2',1,4915200*8);
M=[x3 y3 z3];% gộp 3 chuõi thành 1 chuỗi M
length_M = length(M);
%chiều dài chuỗi
disp('chieu dai chuoi: ')
disp(length_M)
% chuyển ngượcc lại
% tách ma tran M thành 3 phần
M1=reshape(M,4915200*8,3);% tách chuỗi M thành 3 cột, mỗi cột
%tương ứng x3 y3 z3
M1=M1';% M chuyen cột thành hàng
x3=M1(1,:);
y3=M1(2,:);
z3=M1(3,:);
% thuc hien bien doi lan luot
x4=reshape(x3,8,4915200);
x5=bi2de(x4','left-msb');
x6=reshape(x5,2560,1920);
y4=reshape(y3,8,4915200);
y5=bi2de(y4','left-msb');
y6=reshape(y5,2560,1920);
z4=reshape(z3,8,4915200);
z5=bi2de(z4','left-msb');
z6=reshape(z5,2560,1920);
% Gộp thành ma tran b
b(:,:,1)=x6;
b(:,:,2)=y6;
b(:,:,3)=z6;
% hien thi anh
imshow(b);
title('anh phuc hoi tu chuoi M: ');
%% lay thong tin anh
Image_info=imfinfo('flower.jpg')
% chieu rong anh
Image_Width=Image_info.Width;
disp('Chieu rong cua anh: ')
disp(Image_Width)
% chieu cao anh
Image_Height=Image_info.Height;
disp('Chieu cao cua anh: ')
disp(Image_Height)
% Dinh dang anh
Image_Format=Image_info.Format;
disp('dinh dang cua anh: ')
disp(Image_Format)
3
4
Câu 2 :
a)
Các tham số chính của hệ thống :
+M=64
+ Hệ thống 64-PSK
+ Rbit = 5*10^6 (b/s)
+ số lượng bit thực hiện mơ phỏng: 4000*log2(M)
+ pha: phi=0
+ tốc độ kí hiệu:R_sym= Rbit/log2(M)
+ tần số kí hiệu :T_sym= 1/R_sym
+ Năng lượng 1 symboy Es=3*10^-6
c) SNR = 8 dB
clear all; close all; clc;
%% dieu che 64-PSK
M = 64;
% 64-PSK
k = log2(M);
% Tu ma
%tao tin hieu nhi phan vao
tin_hieu_vao = randi([0 1],1,4000*k);
%% cac tham so
Es = 3e-6;
% Nang luong 1 symbol
phi = 0;
% Pha ban dau
Rb = 5*10^6;
% Toc do du lieu: bit/s
T = 1/Rb;
% Chu ki bit
T_bit = T*length(tin_hieu_vao);
% Thoi gian truyen het chuoi bit
N_sym = Rb/k;
% Toc do symbol
Tsym = 1/N_sym;
% Chu ky symbol
t = 0:T_bit/(length(tin_hieu_vao)/k-1):T_bit; % Vecto thoi gian cua symbol
%% Tao cac ki hieu do dai k bit tu chuoi nhi phan tin_hieu_vao
y = reshape(tin_hieu_vao,k,length(tin_hieu_vao)/k)';
z = bi2de(fliplr(y))';
5
%% Dieu che 64-PSK
% Tao tin hieu phat st
% Tao chuoi dk: la cac ki hieu phuc
dk = pskmod(z,M);
% Tao xung phat pt theo dau bai cho
p = @(t) sqrt((2*Es)/Tsym)*(1-sin(2*pi*t/Tsym));
pt = 0;
pt1 = 0;
for c=1:length(t)
for i=1:200
pt(i) = p(t(c)-i*Tsym);
end
pt1(c) = sum(pt);
end
pt1;
% Tao tin hieu phat st
st = dk.*pt1*exp(j*phi);
% ve tin hieu khi chua qua kenh truyen
% Dang song tin hieu
figure
plot(t,real(st),'r',t,imag(st),'m')
title('Dang song tin hieu st truoc khi qua kenh AWDN')
xlabel('t')
ylabel('Bien do')
legend('Phan thuc','Phan ao')
% Bieu do chom sao
scatterplot(st)
title('Bieu do chom sao st truoc khi qua kenh AWGN')
% Pho tin hieu khi qua bo dieu che
pho_st = fft(st);
% Chuyen st sang mien tan so
figure
plot(abs(pho_st).^2)
title('Pho tin hieu st truoc khi qua kenh AWGN')
% Mau mat
eyediagram(st,2)
title('Mau mat st truoc khi qua kenh AWGN')
%% Kenh AWGN
SNR = 8;
st_awgn = awgn(st,SNR,'measured');
% Ve tin hieu khi da qua kênh truyên
% Bieu do chom sao
scatterplot(st_awgn)
title('bieu do chom sao khi di qua kenh AWGN')
% Dang song tin hieu
figure
plot(t,real(st_awgn),'r',t,imag(st_awgn),'m')
title('Dang song tin hieu st qua kenh AWGN')
xlabel('t')
ylabel('Bien do')
legend('Phan thuc','Phan ao')
% Mau mat
eyediagram(st_awgn,2)
title('mau mat khi qua kenh truyen')
% Pho
f_st_awgn = fft(st_awgn);
figure
plot(abs(f_st_awgn).^2)
title('Pho tin hieu st qua kenh AWGN')
%% Giai dieu che 64-PSK
gdc_st = (st_awgn)./(pt1)/exp(j*phi);
st_gdc1 = pskdemod(gdc_st,M);
6
% Chuyen chuoi st_gdc1 ve dang nhi phan
zz = fliplr(de2bi(st_gdc1))';
tin_hieu_ra = reshape(zz,length(tin_hieu_vao),1)';
+ chòm sao
7
+ dạng sóng :
+ mẫu mắt
8
+Phổ tín hiệu
9
b)
y
MC_st_awgn
st
st_gdc1
Điều chế
64-PSK
Giải điều
chế 64-PSK
n(t)
AWGN
So sánh
Lỗi
%nối tiếp vào chương trình câu c
% tinh BER tai cac SNR dau bai cho
%Monte-Carlo
SNR_1 = [5 8 12];
% Don vi: dB
snr = 10.^(SNR_1/10);
% doi don vi sang l?n
ty_so_loi = 0;
BER = 0;
for vt = 1:length(SNR_1)
% Tin hieu dieu che st di qua kenh AWGN
MC_st_awgn = awgn(st,SNR_1(vt),'measured');
% Giai dieu che
MC_st_gdc = (MC_st_awgn)./(pt1)/exp(j*phi);
MC_st_gdc1 = pskdemod(MC_st_gdc,M);
% Chuoi bit nhi phan dau ra
MC_zz = fliplr(de2bi(MC_st_gdc1))';
MC_d_out = reshape(zz,length(tin_hieu_vao),1)';
% Loi bit theo mo phong
so_sanh = MC_d_out ~= tin_hieu_vao; % so sanh tin hieu giai dieu che voi tin hieu
phat
so_loi = sum(so_sanh);% tong so loi
ty_so_loi(vt) = (so_loi)/length(tin_hieu_vao); % tong so loi/tong so bit truyen
end
figure
semilogy(SNR_1,ty_so_loi,'m-*')
grid on
title('Ti so loi bit')
xlabel('SNR')
ylabel('BER')
+ Biểu đồ BER :
10
Nhận xét:
-Hệ thống truyền thơng AWGN có nhiễu ảnh hưởng đến dạng tín hiệu
-Với SNR tỷ lệ nghịch với tý lệ lỗi bit Ber. SNR tăng thì Ber giảm và ngược lại.
-tỷ số SNR có thể đánh giá chất lượng kênh truyền.
d)
+ Với các mức SNR cho BER gần như nhau và tệp đồ họa được khôi phục qua kênh truyền gần
giống nhau
11