MATLAB ỨNG DỤNG TRONG VIỄN THÔNG - Trang 272

Kênh truyền và đánh giá chất lượng kênh truyền

241

Ví dụ 16-6. Xử lý một chuỗi dữ liệu nhị phân: điều chế bằng phương pháp 16-QAM, sau
đó truyền qua kênh truyền có nhiễu AWGN với tỷ số Eb/No = 10dB. Thực hiện giải điều chế
và tính tỷ số bit lỗi của chuỗi bit thu được.

Ví dụ này là sự mở rộng của ví dụ 15-2, trong đó ta thêm vào hàm tạo nhiễu Gauss awgn
hàm tính tỷ lệ lỗi bit biterr.

%% Định nghĩa các thông số.

M = 16;

k = log2(M);

n = 3e4;

nsamp = 1;

%% Nguồn tín hiệu

% Tạo chuỗi dữ liệu nhị phân ngẫu nhiên dưới dạng vector cột.

x = randint(n,1); % Chuỗi bit nhị phẫnngâu nhiên

%% Chuyển đổi các bit thành các ký hiệu k bit.

xsym = bi2de(reshape(x,k,length(x)/k).','left-msb');

%% Điều chế 16-QAM

y = qammod(xsym,M);

%% Tín hiệu phát

ytx = y;

%% Kênh truyền

% Truyền tín hiệu qua kênh truyền AWGN.

EbNo = 10; % Đơn vị dB

snr = EbNo + 10*log10(k) - 10*log10(nsamp);

ynoisy = awgn(ytx,snr,'measured');

%% Tín hiệu thu

yrx = ynoisy;

%% Giải điều chế

zsym = qamdemod(yrx,M);

%% Chuyển đổi ngược từ các ký hiệu thành chuỗi bit nhị phân.

z = de2bi(zsym,'left-msb');

z = reshape(z.',prod(size(z)),1);

%% Tính BER

% So sánh y và z đếm số bit lỗi và tính tỷ lệ lỗi bit

[number_of_errors,bit_error_rate] = biterr(x,z)

Kết quả thực hiện đoạn chương trình trên:

number_of_errors =

80

bit_error_rate =

0.0027