Tải bản đầy đủ (.pdf) (11 trang)

Dieu che MPSK đọc ảnh bằng matlab

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 (589.12 KB, 11 trang )

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



×