You are on page 1of 80

MÔ PHỎNG CÁC HỆ THỐNG

THÔNG TIN VÔ TUYẾN SỬ


DỤNG MATLAB

Simulation of Radio Communication Systems using Matlab

Trần Xuân Nam


Bộ môn Thông tin, Khoa Vô tuyến điện tử
Đại học Kỹ thuật Lê Quí Đôn
100 Hoàng Quốc Việt, Cầu Giấy , Hà Nội, Việt Nam
Phone: (069)-515392 E-mail: namtx@lqdtu.edu.vn
2
Mục lục

1 Giới thiệu Matlab 1


1.1 Matlab là gì? . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.2 Khởi động và Thoát khỏi MATLAB . . . . . . . . . . . . . . 2
1.3 Làm việc với MATLAB Desktop . . . . . . . . . . . . . . . . 3
1.4 Các lệnh MATLAB cơ bản . . . . . . . . . . . . . . . . . . . 4
1.5 Các ký hiệu đặc biệt . . . . . . . . . . . . . . . . . . . . . . . 5
Tài liệu tham khảo . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

Tài liệu tham khảo 6

2 Tính toán và Lập trình sử dụng Matlab 7


2.1 Các phép tính số học . . . . . . . . . . . . . . . . . . . . . . 7
2.2 Các toán tử so sánh . . . . . . . . . . . . . . . . . . . . . . . 8
2.3 Các toán tử logic . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.4 Vector và Ma trận . . . . . . . . . . . . . . . . . . . . . . . . 11
2.4.1 Tạo vector và ma trận . . . . . . . . . . . . . . . . 11
2.4.2 Các phép toán đối với vector và ma trận . . . . . . 12
2.5 Lập trình với Matlab . . . . . . . . . . . . . . . . . . . . . . 19
2.5.1 Điều khiển luồng (flow control) . . . . . . . . . . . 19
2.5.2 Tạo chương trình MATLAB bằng tệp .m . . . . . . 22
2.6 Sử dụng đồ hoạ trong MATLAB . . . . . . . . . . . . . . . . 24
2.6.1 Vẽ đồ thị . . . . . . . . . . . . . . . . . . . . . . . . 24
Tài liệu tham khảo . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

Tài liệu tham khảo 29

3 Lý thuyết mô phỏng 31
3.1 Vai trò của mô phỏng . . . . . . . . . . . . . . . . . . . . . . 31
3.2 Mô phỏng vs. Phân tích . . . . . . . . . . . . . . . . . . . . . 32
3.2.1 Sơ đồ truyền dẫn số qua kênh AWGN . . . . . . . . 32
3.2.2 Sơ đồ truyền dẫn số qua kênh AWGN sử dụng các
bộ lọc và KĐCS phi tuyến . . . . . . . . . . . . . . 33
3.2.3 Hệ thống truyền dẫn qua kênh thông tin vệ tinh . . 35
3.3 Xây dựng mô hình mô phỏng . . . . . . . . . . . . . . . . . . 35
3.4 Các phương pháp mô phỏng . . . . . . . . . . . . . . . . . . 37

i
ii Mục lục

3.5 BER vs Xác suất lỗi bit . . . . . . . . . . . . . . . . . . . . . 38


3.6 Vai trò của mô phỏng . . . . . . . . . . . . . . . . . . . . . . 39
3.7 Tính toán quĩ tuyến và mô phỏng . . . . . . . . . . . . . . . 39
3.8 Các tham số đánh giá phẩm chất hệ thống . . . . . . . . . . 40
3.9 Kiểm định mô hình Mô phỏng . . . . . . . . . . . . . . . . . 41
3.10 Năng lượng và Công suất tín hiệu . . . . . . . . . . . . . . . 41
3.11 Mô phỏng Monte-Carlo trong Truyền dẫn Số . . . . . . . . . 42

4 Kênh thông tin vô tuyến 45


4.1 Kênh tạp âm AWGN . . . . . . . . . . . . . . . . . . . . . . 45
4.1.1 Tạp âm AWGN . . . . . . . . . . . . . . . . . . . . 45
4.1.2 Mô phỏng tạp âm AWGN . . . . . . . . . . . . . . 47
4.1.3 Mô phỏng truyền dẫn qua kênh AWGN . . . . . . . 48
4.2 Kênh pha-đinh . . . . . . . . . . . . . . . . . . . . . . . . . . 50
4.2.1 Mô hình toán học của pha-đinh . . . . . . . . . . . 51
4.2.2 Ảnh hưởng của chuyển động của MS . . . . . . . . 52
4.2.3 Hậu quả của truyền sóng pha-đinh đa đường . . . . 53
4.3 Kênh pha-đinh Rayleigh . . . . . . . . . . . . . . . . . . . . . 54
4.4 Mô phỏng pha-đinh Rayleigh . . . . . . . . . . . . . . . . . . 56
4.4.1 Đặc tính thống kê . . . . . . . . . . . . . . . . . . . 56
Tài liệu tham khảo . . . . . . . . . . . . . . . . . . . . . . . . . . . 58

Tài liệu tham khảo 58

5 Điều chế số 59
5.1 Điều chế pha sóng mang . . . . . . . . . . . . . . . . . . . . . 59

6 KỸ THUẬT THU PHÁT PHÂN TẬP KHÔNG GIAN-THỜI


GIAN 61
6.1 Các phương pháp phân tập . . . . . . . . . . . . . . . . . . . 61
6.1.1 Phân tập thời gian . . . . . . . . . . . . . . . . . . 61
6.1.2 Phân tập tần số . . . . . . . . . . . . . . . . . . . . 62
6.1.3 Phân tập phân cực . . . . . . . . . . . . . . . . . . 62
6.1.4 Phân tập không gian . . . . . . . . . . . . . . . . . 63
6.2 Kỹ thuật kết hợp phân tập không gian thu . . . . . . . . . . 63
6.2.1 Mô hình tín hiệu . . . . . . . . . . . . . . . . . . . 63
6.2.2 Kết hợp chọn lọc (Selection Combining) . . . . . . 64
6.2.3 Kết hợp tỷ lệ tối đa (Maximal Ratio Combining) . 67
6.2.4 Kết hợp đồng độ lợi (Equal Gain Combining) . . . 70
6.2.5 Kết hợp phân tập thu và tách sóng MLD . . . . . . 71
6.3 Kỹ thuật kết hợp phân tập không gian phát . . . . . . . . . . 74
6.3.1 Phân tập phát tỉ lệ tối đa (MRT) . . . . . . . . . . 74
6.3.2 Phân tập phát giữ chậm . . . . . . . . . . . . . . . 74
6.3.3 Phân tập phát không gian-thời gian . . . . . . . . . 75
6.4 Kết luận . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
Mục lục iii

Tài liệu tham khảo . . . . . . . . . . . . . . . . . . . . . . . . . . . 79

Tài liệu tham khảo 79

7 CÁC HỆ THỐNG MIMO 85


7.1 Mô hình kênh MIMO . . . . . . . . . . . . . . . . . . . . . . 85
7.2 Dung lượng kênh truyền MIMO . . . . . . . . . . . . . . . . 86
7.2.1 Dung lượng kênh truyền cố định . . . . . . . . . . . 86
7.2.2 Dung lượng kênh truyền Rayleigh pha-đinh . . . . . 90
7.3 Các phương pháp truyền dẫn trên kênh truyền MIMO . . . . 90
7.4 Ghép kênh theo không gian . . . . . . . . . . . . . . . . . . . 92
7.5 Các bộ tách tín hiệu tuyến tính . . . . . . . . . . . . . . . . . 93
7.5.1 Bộ tách tín hiệu ZF . . . . . . . . . . . . . . . . . . 94
7.5.2 Bộ tách tín hiệu MMSE . . . . . . . . . . . . . . . 96
7.5.3 Các tham số phẩm chất bộ tách tín hiệu tuyến tính 98
7.6 Các bộ tách tín hiệu phi tuyến . . . . . . . . . . . . . . . . . 99
7.6.1 Bộ tách tín hiệu QRD . . . . . . . . . . . . . . . . 99
7.6.2 Bộ tách tín hiệu V-BLAST . . . . . . . . . . . . . . 101
7.6.3 Bộ tách tín hiệu có trợ giúp của phương pháp rút
gọn cơ sở dàn . . . . . . . . . . . . . . . . . . . . . 104
7.6.4 Bộ tách tín hiệu MLD . . . . . . . . . . . . . . . . 110
7.6.5 Bộ tách tín hiệu hình cầu (sphere detector) . . . . . 111
7.7 Tóm tắt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
Tài liệu tham khảo . . . . . . . . . . . . . . . . . . . . . . . . . . . 122

Tài liệu tham khảo 122

8 MÃ KHÔNG GIAN-THỜI GIAN 125


8.1 Giới thiệu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
8.2 Mã khối không gian-thời gian . . . . . . . . . . . . . . . . . . 125
8.2.1 Mã STBC cho tập tín hiệu thực . . . . . . . . . . . 127
8.2.2 Mã STBC cho tập tín hiệu phức . . . . . . . . . . . 130
8.3 Mã lưới không gian-thời gian . . . . . . . . . . . . . . . . . . 133
8.4 Mã không gian-thời gian cho các hệ thống đa người dùng . . 133
Tài liệu tham khảo . . . . . . . . . . . . . . . . . . . . . . . . . . . 133

Tài liệu tham khảo 133


iv Mục lục
Danh sách hình vẽ

1.1 Môi trường làm việc của MATLAB . . . . . . . . . . . . . . . 3

2.1 Đồ thị sin(x) và cos(x) . . . . . . . . . . . . . . . . . . . . . . 26


2.2 Mô tả BER của hệ thống BPSK trên kênh pha-đinh Rayleigh. 27

3.1 Hệ thống dễ dàng thực hiện phân tích giải tích. . . . . . . . . 32


3.2 Hệ thống khó thực hiện phân tích giải tích. . . . . . . . . . . 34
3.3 Hệ thống khó thực hiện phân tích giải tích. . . . . . . . . . . 36
3.4 Lược đồ xây dựng mô hình mô phỏng. . . . . . . . . . . . . . 36
3.5 Mối quan hệ giữa sai số, thời gian chạy mô phỏng so với độ
phức tạp của mô hình. . . . . . . . . . . . . . . . . . . . . . . 37

4.1 Một ví dụ về tạp âm Gauss với giá trị trung bình 0 và phương
sai σ 2 = 1. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
4.2 Hàm mật độ xác suất Gauss với σ 2 = 1. . . . . . . . . . . . . 46
4.3 Mật độ phổ công suất và hàm tự tương quan của tạp âm trắng. 47
4.4 Sơ đồ mô phỏng truyền dẫn BPSK trên kênh AWGN. . . . . . 48
4.5 Phẩm chất BPSK trên kênh AWGN. . . . . . . . . . . . . . . 50
4.6 Mô hình truyền sóng đa đường. . . . . . . . . . . . . . . . . . 51
4.7 Đáp ứng xung của một bộ lọc FIR. . . . . . . . . . . . . . . . 54
4.8 Hàm phân bố Rayleigh với σ 2 = 1. . . . . . . . . . . . . . . . 55

6.1 Phương pháp kết hợp chọn lọc. . . . . . . . . . . . . . . . . . 64


6.2 Phân phối xác xuất (CDF) của SNR cho phương pháp kết
hợp phân tập lựa chọn. . . . . . . . . . . . . . . . . . . . . . 66
6.3 Độ lợi phân tập của các phương pháp kết hợp phân tập. . . . 66
6.4 Phương pháp kết hợp tỷ lệ tối đa. . . . . . . . . . . . . . . . . 67
6.5 Phân phối xác xuất (CDF) của SNR cho phương pháp kết
hợp tỉ lệ đối đa. . . . . . . . . . . . . . . . . . . . . . . . . . . 69
6.6 Sơ đồ máy thu với 2 nhánh phân tập MRC và một bộ tách
tín hiệu tối ưu. . . . . . . . . . . . . . . . . . . . . . . . . . . 81
6.7 Phẩm chất BER trung bình của máy thu MRC với M nhánh
phân tập sử dụng điều chế BPSK. . . . . . . . . . . . . . . . 81
6.8 Sơ đồ phân tập MRT có N nhánh phân tập với các đường
phản hồi. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
6.9 Sơ đồ phân tập phát giữ chậm với N nhánh phân tập. . . . . 82

v
vi Danh sách hình vẽ

6.10 Sơ đồ máy phát mã khối STBC Alamouti với 2 anten phát


và 1 anten thu. . . . . . . . . . . . . . . . . . . . . . . . . . . 82
6.11 Sơ đồ Alamouti STBC với 2 anten phát và 2 anten thu. . . . 83
6.12 Phẩm chất BER của các hệ thống Alamouti STBC so sánh
với các hệ thống MRC. . . . . . . . . . . . . . . . . . . . . . . 83
7.1 Mô hình kênh MIMO vô tuyến. . . . . . . . . . . . . . . . . . 85
7.2 Mô hình tương đương của kênh truyền SISO. . . . . . . . . . 86
7.3 Mô hình tương đương của kênh truyền MISO. . . . . . . . . . 87
7.4 Mô hình tương đương của kênh truyền SIMO. . . . . . . . . . 88
7.5 Dung lượng kênh truyền MIMO pha-đinh Rayleigh. . . . . . . 91
7.6 Phương pháp phân kênh theo không gian. . . . . . . . . . . . 92
7.7 Phân loại các bộ tách tín hiệu MIMO-SVD. . . . . . . . . . . 92
7.8 Sơ đồ bộ tách tín hiệu tuyến tính cho MIMO-SDM. . . . . . . 94
7.9 Mô tả nguyên lý hoạt động của bộ tách tín hiệu V-BLAST. . 102
7.10 Phẩm chất của các bộ tách tín hiệu cho hệ thống 4×4 MIMO-
SDM. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
7.11 Biểu diễn một dàn 2 chiều. . . . . . . . . . . . . . . . . . . . 105
7.12 Ví dụ biểu diễn thao tác của thuật toán LLL trên một lưới 2
chiều. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
7.13 Miền (vùng )quyết định của các bộ tách tín hiệu [16]. . . . . . 108
7.14 Mô hình tương đương của bộ tách tín hiệu có trợ giúp rút
gọn cơ sở lưới. . . . . . . . . . . . . . . . . . . . . . . . . . . 109
7.15 Thuật toán tách tín hiệu cầu [28]. . . . . . . . . . . . . . . . . 115
8.1 Configuration of a STBC system. . . . . . . . . . . . . . . . . 126
Chương 1

Giới thiệu Matlab

1.1 Matlab là gì?


MATLAB [1][2] là từ viết tắt của Matrix Laboratory với ý nghĩa phần mềm
ứng dụng cho tính toán ma trận. MATLAB được mô tả như là một gói phần
mềm dùng cho tính toán kỹ thuật tích hợp các công cụ tính toán, trực quan
hóa (visualization), và lập trình. Môi trường làm việc của MATLAB dễ sử
dụng và gần gũi với biểu diễn toán học của các phép toán. Các ứng dụng điển
hình của MATLAB bao gồm:
• Tính toán toán học
• Phát triển thuật toán
• Thu kết dữ liệu (data acquisition)
• Mô hình, mô phỏng và tạo mẫu
• Phân tích, khai thác và trực giác hóa dữ liệu,
• Đồ họa khoa học và kỹ thuật
• Phát triển ứng dụng bao gồm cả việc phát triển giao diện người sử dụng
MATLAB là một hệ thống tương tác trong đó phần tử dữ liệu cơ sở là
một mảng không cần định kích thước. Điều này cho phép giải quyết được
nhiều vấn đề tính toán, đặc biệt là các vấn đề gắn với các phép toán ma trận
hay vector, mà chỉ tiêu tốn một phần thời gian cần thiết để viết các chương
trình sử dụng các ngôn ngữ không tương tác vô hướng (scalar) như C hay
FORTRAN.
Hệ thống MATLAB bao gồm năm phần chính:
• Môi trường phát triển (Development Environment). Đây là một
tập hợp các công cụ và phương tiện hỗ trợ người dùng sử dụng các
hàm và tệp MATLAB. Nhiều công cụ là các giao diện đồ họa người
dùng (GUI: Graphical User Interface). Tập hợp công cụ này bao gồm
Màn hình MATLAB (MATLAB Desktop) và Cửa sổ Lệnh (Command

1
2 Chương 1. Giới thiệu Matlab

Window), Lịch sử Lệnh (Command History), Chương trình Soạn thảo và


Gỡ rối (Editor and Debugger), và một Trình duyệt (Browser) để xem trợ
giúp, Không gian Làm việc (Workspace), các Tệp, và Đường dẫn Tìm
kiếm (Search Path).
• Thư viện Hàm Toán học (Mathematical Function Library). Đây
là một tập hợp các thuật toán tính toán trải rộng từ các hàm cơ cở như
cộng, trừ, sin, cos, các phép tính số học phức, tới các hàm phức tạp hơn
như đảo ma trận, tính giá trị riêng (eigenvalue) của ma trận, các hàm
Bessel, và các phép biến đổi nhanh.
• Ngôn ngữ MATLAB (MATLAB Language). Đây là ngôn ngữ ma
trận/mảng bậc cao với các khai báo luồng điều khiển, các hàm số, các
cấu trúc dữ liệu, vào/ra, các đặc điểm lập trình hướng đối tượng. Nó cho
phép viết cả các chương trình gọn nhẹ hay các chương trình ứng dụng
phức tạp.
• Đồ họa (Graphics.) MATLAB có nhiều phương tiện hiển thị vector
và ma trận ở dạng đồ thị, cũng như sửa đổi và in các đồ thị này. Nó bao
gồm các hàm bậc cao để trực giác hóa các dữ liệu hai và ba chiều, xử lý
ảnh, hoạt hình, và biểu diễn đồ họa. Nó cũng bao gồm cả các hàm bậc
thấp cho phép tùy biến hóa đồ họa cũng như xây dựng các giao diện đồ
họa hoàn chỉnh cho các ứng dụng MATLAB của người sử dụng.
• Giao diện Chương trình Ứng dụng MATLAB (MATLAB Ap-
plication Program Interface [API]). Đây là một thư viện cho phép
viết các chương trình C và Fortran tương tác với MATLAB. Nó có cả
các phương tiện để gọi các thường trình (routine) từ MATLAB, dùng
MATLAB như là động cơ tính toán, và dùng để đọc và viết MAT-files.
MATLAB cung cấp một họ các giải pháp theo từng ứng dụng, được gọi
la hộp công cụ (toolbox). Hộp công cụ MATLAB bao gồm một tập hợp đầy
đủ các hàm MATLAB ở dạng tệp "m" (m-file) dùng để mở rộng môi trường
MATLAB cho việc giải quyết các loại vấn đề cụ thể. Các ví dụ về phạm vi ứng
dụng của các hộp công cụ MATLAB là xử lý tín hiệu, hệ thống điều khiển,
mạng nơ-ron, fuzzy logic, wavelet, mô phỏng, và nhiều ứng dụng khác.

1.2 Khởi động và Thoát khỏi MATLAB


Để khởi động MATLAB từ Windows, nhắp đúp (double-click) vào biểu tượng
MATLAB

trên màn hình desktop của windows. Sau khi khởi động xong màn hình sẽ hiện
ra cửa sổ Môi trường Làm việc của MATLAB gồm 3 phần chính là: Thư mục
Hiện thời (Current Directory), cửa sổ Lịch sử Câu lệnh (Command History)
và Cửa sổ Câu lệnh (Command Windows) như ở Hình 1.1.
1.3. Làm việc với MATLAB Desktop 3

Hình 1.1: Môi trường làm việc của MATLAB

Để kết thúc MATLAB có thể thực hiện bằng cách nhắp phím chuột trái
vào ô đóng cửa sổ hình dấu sao ( ) phía trên và bên tay trái cửa sổ MAT-
LAB. Ngoài ra cũng có thể kết thúc MATLAB bằng cách nhập vào câu lệnh
» quit
ở cửa sổ Command Windows rồi bấm Enter.

1.3 Làm việc với MATLAB Desktop


MATLAB Desktop bao gồm một Thanh Công cụ (Tool Bar) với các menu
File, Edit, Debug, Desktop, Windows và Help. Bên cạnh Thanh Công cụ
là một menu kéo xuống (Pull-down Menu) cho phép xem và thay đổi thư mục
làm việc hiện thời. Nội dung của thư mục làm việc hiện thời được hiển thị
ở cửa sổ Current Menu. Phía dưới của sổ Current Menu là cửa sổ Command
History hiển thị các câu lệnh MATLAB đã được nhập trước đó. Tiếp theo
cửa sổ Command History xuống phía dưới có phím , cho phép truy nhập
nhanh đến các thư viện của MATLAB, Simulink và các cài đặt Desktop Tools
hay là các lựa chọn Preferences.
Cửa sổ to nhất trong MATLAB Desktop là cửa sổ câu lệnh Command
Window dùng để nhập các câu lệnh MATLAB hay chạy các chương trình cho
trước.
4 Chương 1. Giới thiệu Matlab

1.4 Các lệnh MATLAB cơ bản


Các câu lệnh của MATLAB gần giống với các câu lệnh Unix. Một số câu lệnh
cơ bản của MATLAB được tóm tắt lại dưới đây:
» ls Liệt kê nội dung của thư mục làm việc hiện thời. Cũng có thể dùng câu
lệnh dir thay cho câu lệnh ls. Ví dụ:

» ls
. .. temp

liệt kê thư mục con temp bên trong thư mục làm việc hiện thời của
MATLAB.
» pwd Hiển thị đường dẫn của thư mục hiện tại. Ví dụ:

» pwd

ans =

C:\MATLAB701\work

chỉ ra đường dẫn của thư mục làm việc hiện tại là C:\MATLAB701\work

» who chỉ ra các biến đang được lưu ở bộ nhớ. Ví dụ:


» a=1

a =

» b=2

b =

» who

Your variables are:

a b

liệt kê hai biến a và b đang được lưu trữ ở bộ nhớ chương trình.
1.5. Các ký hiệu đặc biệt 5

» clear [tên biến] xóa biến có tên được khai báo khỏi bộ nhớ. Ví dụ:

» clear a
» who

Your variables are:

b
Để xóa hết tất cả các biến đang được lưu tại bộ nhớ, sử dụng lệnh

»clear all
»clc lệnh xóa toàn bộ thông tin trên Command Windows và đưa con trỏ trở
về vị trí ban đầu.

1.5 Các ký hiệu đặc biệt


( ) dấu ngoặc tròn được sử dụng để chỉ ra thứ tự ưu tiên trong các biểu thức
số học hoặc bao quanh đối số của một hàm số. Dấu ngoặc đơn cũng được
dùng để bao quanh chỉ số phần tử trong một vector hay ma trận. Ngoài
ra, dấu ngoặc đơn này còn được sử dụng để bao quanh các chỉ số dưới
(subscript) logic.

Ví dụ:

A(2) chỉ ra phần tử thứ 2 của A.

A([1 2 3]) liệt kê các phần tử thứ nhất, hai và ba của A.

A(A>0.5) liệt kê các phần tử của A lớn hơn 0.5.

[ ] dấu ngoặc vuông được sử dụng để tạo các vector và ma trận

Ví dụ:

» A=[2 6 3]

A =

2 6 3

tạo một vector hàng với ba phần tử

» A=[2 6 3; 1 2 3]
6 Chương 1. Giới thiệu Matlab

A =

2 6 3

1 2 3

định nghĩa một ma trận với sáu phần tử cho trước.


{ } dấu ngoặc móc được sử dụng để tạo ra các mảng tế bào (cell array). Bộ
dấu ngoặc móc này tương tự như bộ ngoặc vuông ngoại trừ các cấp độ
nesting được bảo toàn.

biểu diễn phép toán chuyển vị liên hợp phức của một ma trận. Ví dụ, A′ là
ma trận chuyển vị liên hợp phức của A còn A.′ là ma trận chuyển vị của
A.
. dấu chấm biểu diễn phân cách giữa phần nguyên và phần thập phân của
một số thập phân. Ví dụ: π = 3.1416.
; dấu chấm phảy dùng để ngăn cách các hàng khi khai báo ma trận, hoặc
ngăn không hiển thị kết quả một phép toán trên màn hình.
% dấu phần trăm dùng để tạo chú thích. Tất cả các câu lệnh viết sau dấu
phần trăm này đều bị bỏ qua.
... dấu 3 chấm dùng để nối hai phần của một câu lênh trên 2 dòng với nhau.
Một câu lệnh dài có thể viết trên 2 dòng cho tiên theo dõi. Khi đó, dấu
3 chấm được sử dụng để nối 2 dòng với nhau.

Tài liệu tham khảo


[1] Getting started with Matlab. The Mathworks Inc., 2006.
[2] A. Biran and M. Breiner, Matlab for Engineers. Addison Wesley, 1995.
Chương 2

Tính toán và Lập trình sử


dụng Matlab

2.1 Các phép tính số học


Bốn phép tính số học cơ bản gồm cộng, trừ, nhân, chia được thể hiện tương
ứng bằng các ký hiệu +, −, ∗, /. Ví dụ

» 2 + 1
ans=
3
» 3 − 1

ans=
2
» 2 ∗ 3
ans=

6
» 6/3
ans=

2
Với các phép tính phức tạp hơn có dấu ngoặc thì dấu ngoặc đơn (gồm cả
mở và đóng) được sử dụng để phân cách thứ tự ưu tiên. Ví dụ, phép tính
[(2 + 3) − (15 − 3)][7 + 5 − 4]
(2.1)
2
được biểu diễn trong Matlab như sau

7
8 Chương 2. Tính toán và Lập trình sử dụng Matlab

» ((2+3)-(15-3))*(7+5-4)/2
trong đó dấu ngoặc đơn được sử dụng thay cho dấu ngoặc vuông đã được mặc
định dùng cho vector và ma trận trong Matlab.
Trong Matlab phép tính lấy mũ được biểu diễn bởi ký hiệu bởi dấu mũ ˆ
như:
» 5ˆ 2
ans=
25

2.2 Các toán tử so sánh


Trong Matlab các toán tử so sánh được biểu diễn như sau: nhỏ hơn (<), lớn
hơn (>), nhỏ hơn hoặc bằng (<=), lớn hơn hoặc bằng (>=), bằng (trùng)
nhau (==), khác nhau (∼=). Khi hai mảng có cùng kích thước được so sánh
với nhau thì toán tử so sánh sẽ thực hiện việc so sánh từng phần tử với nhau.
Các toán tử <, >, <=, and >= chỉ so sánh phần thực của các toán hạng với
nhau. Các toán tử == and ∼= thực hiện so sánh cả phần thực và phần ảo
của hai toán hạng. Kết quả của phép toán so sánh cho ta 1 nếu phép so sánh
là TRUE và ngược lại 0 nếu FALSE. Một số ví dụ về toán tử so sánh được trình
bày ở dưới đây
» 1==2
ans =

0
» 3 > 1
ans =
1

» 4 <= 10
ans =
1
» 3 ∼= 7

ans =
1
2.2. Các toán tử so sánh 9

Trong trường hợp so sánh 2 vector hay 2 ma trận với nhau thì toán sử
so sánh thực hiện và cho ta kết quả so sánh của từng phần tử tương ứng ở 2
vector hay ma trận với nhau. Ví dụ
» A=[1 3 4; 2 8 7; 6 9 5]

A =
1 3 4
2 8 7

6 9 5
» B=[3 1 4; 7 8 2; 6 5 9]
B =
3 1 4

7 8 2
6 5 9
» A==B
ans =

0 0 1
0 1 0
1 0 0
» A∼=B

ans =
1 1 0
1 0 1
0 1 1

» A >= B
ans =
0 1 1
0 1 1
10 Chương 2. Tính toán và Lập trình sử dụng Matlab

1 1 0

» A < B
ans =
1 0 0
1 0 0

0 0 1

2.3 Các toán tử logic


Các ký hiệu &, |, và ∼ được sử dụng để biểu diễn toán tử logic AND, OR, và
NOT. Các toán tử này làm việc với từng phần tử của mảng, với 0 biểu diễn
FALSE còn 1 hay bất kỳ phần tử khác 0 nào biểu diễn TRUE. Các toán tử logic
trả lại một mảng logic với các phần tử 0 (FALSE) hoặc 1 (TRUE). Các ký hiệu
trên cũng có thể thay thế bằng cách sử dụng các hàm Matlab ở dạng and(A, B),
or(A, B), hay not(A). Hàm HOẶC tuyện đối được biểu diễn như sau xor(A, B).
Trình tự ưu tiên của các toán tử logic là NOT, OR và AND.
Phép toán sử dụng toán tử AND (&) cho kết quả TRUE nếu cả hai toán
hạng đều TRUE về mặt logic. Nói theo thuật ngữ số, thì phép toán AND cho ta
kết quả TRUE nếu cả hai toán hạng đều khác 0.
Ví dụ:

» a=[3 5 0 4 0]
a =
3 5 0 4 0
» b=[3 1 0 0 2]

b =
3 1 0 0 2
» a & b
ans =

1 1 0 0 0
Các số 1 chỉ ra các phần tử tương ứng khác không của cả a và b .
Phép toán OR ( | ) cho kết quả TRUE nếu một toán hạng hoặc cả hai toán
hạng là TRUE về mặt logic. Nói theo thuật ngữ số thì phép toán OR chỉ cho kết
2.4. Vector và Ma trận 11

quả FALSE khi cả hai toán hạng đều bằng không.


Ví dụ:

» a | b
ans =
1 1 0 1 1
Phép toán NOT (∼) thực hiện phép đảo toán hạng, cho kết quả FALSE nếu
toán hạng là TRUE và cho kết quả TRUE nếu toán hạng là FALSE. Theo thuật
ngữ số thì các toán hạng bằng không sẽ bằng một và tất cả các toán hạng
khác không sẽ bằng không.
Ví dụ:

» ∼a
ans =
0 0 1 0 1

2.4 Vector và Ma trận


2.4.1 Tạo vector và ma trận
Để tạo một vector cột
" #
1
A= 2 (2.2)
3
chúng ta chỉ việc nhập vào các phần tử và dấu chấm phẩy (;) để phân chia
hàng như sau:

» A=[1; 2; 3]
và thu được
» A=
1
2
3

Để tạo một vector hàng

A = [1 2 3] (2.3)
12 Chương 2. Tính toán và Lập trình sử dụng Matlab

chúng ta có thể sử dụng dấu cách hoặc dấu phẩy để phân chia cột như sau:
» A=[1, 2, 3]

hoặc
» A=[1 2 3]
đều cho chúng ta kết quả
» A=

1 2 3
Tương tự như vector để tạo một ma trận, chúng ta nhập trực tiếp các
phần tử rồi sử dụng dấu chấm phảy (;) và dấu cách (hoặc dấu phảy) để phân
chia các cột và hàng. Ví dụ, để tạo ma trận
" #
1 4 7
A= 2 5 8 (2.4)
3 6 9
chúng ta nhập vào các phần tử như sau

» A=[1 4 7; 2 5 8; 3 6 9]
và thu được
» A=
1 4 7

3 5 8
4 6 9

2.4.2 Các phép toán đối với vector và ma trận


Chuyển vị vector và ma trận: trong Matlab dấu sắc (′ ) được sử dụng để
biểu diễn phép toán chuyển vị. Ví dụ, để chuyển vị ma trận
" #
1 4 7
A= 2 5 8 (2.5)
3 6 9
chúng ta chỉ cần thực hiện

» A′
là thu được ma trận chuyển vị của A
2.4. Vector và Ma trận 13

» ans=
1 2 3
4 5 6
7 8 9

Trong trường hợp A là một ma trận gồm các phần tử phức thì phép toán

này còn thực hiện cả việc lấy liên hợp phức của các phần tử trong ma trận.
Trong trường hợp chỉ muốn chuyển vị mà không cần lấy liên hợp phức thì
nhập thêm dấu chấm vào trước dấu sắc (.′ ). Ví dụ, ma trận phức
" #
−0.43 + j1.06 −1.14 + j0.29 0.32 − j0.69
A = −1.66 + j0.05 1.19 − j1.33 0.17 + j0.85 (2.6)
0.12 − j0.09 1.18 + j0.71 −0.18 + j1.25
nếu lấy chuyển vị liên hợp phức cho chúng ta
» A′

» ans=
-0.43 - 1.06i -1.66 - 0.05i 0.12 + 0.09i
-1.14 - 0.29i 1.19 + 1.33i 1.18 - 0.71i
0.32 + 0.69i 0.17 - 0.85i -0.18 - 1.25i

còn nếu chỉ lấy chuyển vị mà không lấy liên hợp phức sẽ có
» A.′

» ans=
-0.43 + 1.06i -1.66 + 0.05i 0.12 - 0.09i
-1.14 + 0.29i 1.19 - 1.33i 1.18 + 0.71i
0.32 - 0.69i 0.17 + 0.85i -0.18 + 1.25i

Cộng và trừ vector/ma trận: các phép toán cộng hay trừ vector/ma
trận được thực hiện theo từng phần tử. Phép toán cộng và trừ đòi hỏi các ma
trận/vector được cộng hay trừ phải có kích thước (có cùng số hàng và cột)
như nhau. Ví dụ, thao tác cộng hai vector a và b được thực hiện như sau
» a=[1; 4; 6]
a =

1
4
14 Chương 2. Tính toán và Lập trình sử dụng Matlab

6
» b=[2; 9; 3]
b =
2

9
3
» a + b
ans =

3
13
9

Thao tác trừ hai ma trận A và B được biểu diễn như sau:
» A=[1 3 7; 4 1 6; 6 4 2]
A =
1 3 7

4 1 6
6 4 2
» B=[5 1 9; 3 8 7; 5 2 3]
B =

5 1 9
3 8 7
5 2 3
» A - B

ans =
-4 2 -2
1 -7 -1

1 2 -1
2.4. Vector và Ma trận 15

Tích số vector: Hai vector a và b có cùng độ dài có thể nhân với nhau
theo cả hai trình tự ab và ba. Kết quả là một số vô hướng (scalar) với trường
hợp tích trong (inner product) hoặc là một ma trận với trường hợp tích ngoài
(outer product). Ví dụ:
» a = [-1 2 4]
a =
-1 2 4

» b = [3; 8; 10]
b =
3
8

10
» a*b
ans =
53

» b*a
ans =
-3 6 12
-8 16 32

-10 20 40
Nhân ma trận: tích hai ma trận C = AB được xác định khi chiều
của cột A bằng chiều của hàng B, hoặc khi một trong số chúng là một số vô
hướng. Nếu kích thước của A là m × p và của B là p × n, thì ma trận tích
C của chúng có kích thước là m × n. Ví dụ, nhân ma trận A có kích thước
2 ×3 với ma trận B có kích thước là 3 ×2 cho ta ma trận C có kích thước 2 ×2
» A=[2 5 6; 1 4 3]
A =

2 5 6
1 4 3
16 Chương 2. Tính toán và Lập trình sử dụng Matlab

» B=[4 9; 7 2; 6 1]

B =
4 9
7 2
6 1

» C=A*B
C =
79 34
50 20

Trong trường hợp nhân một số vô hướng với một ma trận thì kết quả là
một ma trận mới với các phần tử là tích của từng phần tử với số vô hướng đó.
Ví dụ
» A=[2 5 6; 1 4 3]
A =

2 5 6
1 4 3
» b=5
b =

5
» A*b
ans =
10 25 30

5 20 15
Đối với trường hợp hai ma trận có cùng kích thước, Matlab cho phép
thực hiện nhân từng phần tử với nhau thông qua phép toán nhân từng phần
tử (.∗). Ví dụ:
» A=[2 4 6; 9 3 5; 1 4 2]
2.4. Vector và Ma trận 17

A =
2 4 6
9 3 5
1 4 2

» B=[6 2 5; 7 3 8; 1 0 4]
B =
6 2 5
7 3 8

1 0 4
» C=A.*B
C =

12 8 30
63 9 40
1 0 8
Đảo ma trận: phép toán đảo ma trận được thực hiện nhờ hàm số có
sẵn (built-in function) inv. Ma trận đảo inv(A) của ma trận A chỉ tồn tại khi
A là một ma trận vuông và không gần đơn điệu (nearly singular). Ví dụ:
» A=rand(4,4)
A =
0.9077 0.6220 0.2050 0.2539

0.1772 0.1251 0.5769 0.9528


0.8046 0.2110 0.4998 0.6918
0.5592 0.1788 0.0873 0.3441
» B=inv(A)

B =
-0.4924 -1.2604 1.5160 0.8057
2.3661 1.4403 -2.5141 -0.6797
18 Chương 2. Tính toán và Lập trình sử dụng Matlab

0.5983 -0.5830 3.4275 -5.7183

-0.5812 1.4479 -2.0271 3.4014


trong trường hợp ma trận cần đảo gần với đơn điệu thì Matlab sẽ thông
báo lỗi như
A =
1 2 3
2 4 6
3 5 8

» inv(A)
Warning: Matrix is singular to working precision.
(Type "warning off MATLAB:singularMatrix" to suppress this warning.)
ans =

Inf Inf Inf


Inf Inf Inf
Inf Inf Inf
Định thức ma trận: để tính định thức ma trận, chúng ta có thể sử
dụng hàm built-in det(·) trong Matlab det(·). Ví dụ, tạo một ma trận ngẫu
nhiên với 4 hàng, 4 cột với các phần tử là các số ngẫu nhiên phân bố chuẩn,
rồi tính định thức của ma trận đó
» randn(’seed’,0)
» A=randn(4,4)

A =
1.1650 -0.6965 0.2641 1.2460
0.6268 1.6961 0.8717 -0.6390
0.0751 0.0591 -1.4462 0.5774

0.3516 1.7971 -0.7012 -0.3600


» det(A)
ans =
2.5. Lập trình với Matlab 19

0.0914

2.5 Lập trình với Matlab


2.5.1 Điều khiển luồng (flow control)
Matlab cung cấp cho người lập trình các cấu trúc luồng sau: if, switch và
cases, for, while, continue, break

• Câu lệnh if, esle, và elseif


Câu lệnh if đánh giá một biểu thức logic và thi hành một nhóm các câu lệnh
khi biểu thức đó là TRUE. Các từ khóa tùy chọn khác như elseif hay else thi
hành các nhóm câu lệnh khác. Một từ khóa end, khớp với if, được sử dụng ở
phần cuối của nhóm nhóm câu lệnh cuối cùng.
Ví dụ sau đây hiển thị trên mà hình yêu cầu nhập câu trả lời và nhận câu
trả lời ở dạng ký tự (string) từ bàn phím. Nếu câu trả lời là Y thì máy tính in
ra màn hình thông báo “Bạn đã đồng ý.” còn nếu câu trả lời là N thì máy
tính thông báo “Bạn không đồng ý.” Trong trường hợp chữ nhập vào khác
Y hay N máy tính in ra màn hình thông báo “Bạn nhập sai câu trả lời.”
và thực hiện ngắt chế độ nhập bàn phím.
r=input(’Nhap "Y" neu dong y hoac "N" neu khong (Y/N):’,’s’);
if r==’Y’
disp(’Ban da dong y.’)
elseif r==(’N’)
disp(’Ban khong dong y.’)
else
disp(’Ban nhap sai cau tra loi.’)
return
end

• Câu lệnh switch và case


Câu lệnh switch thi hành một nhóm các câu lệnh dựa vào giá trị của một
biến hoặc một biểu thức. Các từ khóa case and otherwise được dùng cho
các nhóm câu lệnh. Chỉ có trường hợp khớp với điều kiện đầu tiên là được thi
hành. Kết thúc luồng switch là một từ khóa end. Ví dụ sau đây mô tả ví dụ
nhập câu trả lời từ bàn phím ở mục trên sử dụng cấu trúc switch
s=input(’Nhap "Y" neu dong y hoac "N" neu khong (Y/N):’,’s’);
switch s
case ’Y’
20 Chương 2. Tính toán và Lập trình sử dụng Matlab

disp(’Ban da dong y.’)


case ’N’
disp(’Ban khong dong y.’)
otherwise
disp(’Ban nhap sai cau tra loi.’)
end

• Câu lệnh for


Vòng lặp for lặp lại một nhóm câu lệnh một số thời gian cố định cho trước.
Cấu trúc vòng lặp được kết thúc bới từ khóa end. Ví dụ sau đây mô tả việc
cách dùng vòng for để tìm các phần tử của một ma trận lớn hơn một giá trị
cho trước1 (bằng 5)
H=[1 8 3; 4 9 6; 7 2 5]
[nRow,nCol]=size(H);
disp(’Cac phan tu sau >= 5:’)
for i=1:nRow
for k=1:nCol
if H(i,k)>=5
disp([’Phan tu o dong ’ num2str(i) ’ cot ’ num2str(k)])
end
end
end
Kết quả của vòng for này là
H =
1 8 3
4 9 6
7 2 5

Cac phan tu sau >= 5:


Phan tu o dong 1 cot 2
Phan tu o dong 2 cot 2
Phan tu o dong 2 cot 3
Phan tu o dong 3 cot 1
Phan tu o dong 3 cot 3
Do hàm disp chỉ làm việc với các ký tự (string) nên hàm num2str được
dùng ở phần đối số của hàm disp để biến đổi các chỉ số i và k về dạng ký tự.

• Câu lệnh while


Vòng lặp while lặp lại một nhóm câu lệnh một số lần nhất định bằng điều
khiển của một điều kiện logic. Cấu trúc vòng lặp while được kết thúc bởi một
từ khoá end. Ví dụ sau đây mô tả cách tạo ra một chuỗi dữ liệu {1, −1} trong
đó chứa 10 bit 1.

1 Sau khi đã quen với Matlab có thể dùng hàm có sẵn find thay cho vòng for này.
2.5. Lập trình với Matlab 21

clear all
rand(’seed’,0)
noOne=0;
k=1;
while noOne<=9
n(k)=rand>0.5;
s(k)=1-2*n(k);
if s(k)==1
noOne=noOne+1
end
k=k+1;
end
s
Kết quả thu được là một chuỗi 24 bit 1, −1 trong đó có chứa 10 bit 1
s =
Columns 1 through 15
1 1 -1 -1 -1 1 -1 -1 1 1 -1 -1 1 1 1

Columns 16 through 24
1 -1 -1 -1 -1 -1 1 -1 1

• Câu lệnh break


Câu lệnh break cho phép thoát sớm khỏi vòng lặp for hay vòng lặp while.
Trong trường hợp có nhiều vòng lặp lồng vào nhau thì câu lệnh break chỉ cho
phép thoát ra khỏi vòng lặp trong cùng. Ví dụ sau đây mô tả lại phương pháp
tạo một chuỗi dữ liệu {1, −1} trong đó chứa 10 bit 1 sử dụng vòng lặp for kết
hợp với câu lệnh break. Trong trường hợp có 100 bit đã được tạo ra nhưng
chưa có đủ 10 bit 1 thì chương trình cũng dừng lại.

rand(’seed’,0)
noOne=0;
for k=1:100
n(k)=rand>0.5;
s(k)=1-2*n(k);
if s(k)==1
noOne=noOne+1;
end
if noOne==10
break
end
end
s
Kết quả chúng ta cũng thu được một chuỗi 24 bit giống như ở ví dụ về câu
lệnh while
22 Chương 2. Tính toán và Lập trình sử dụng Matlab

s =
Columns 1 through 15
1 1 -1 -1 -1 1 -1 -1 1 1 -1 -1 1 1 1

Columns 16 through 24
1 -1 -1 -1 -1 -1 1 -1 1

2.5.2 Tạo chương trình MATLAB bằng tệp .m


Trong phần trước chúng ta đã thấy MATLAB như là một môi trường tính
toán tương tác. Ngoài chức năng của một môi trường tính toán tương tác,
MATLAB còn cho phép xây dựng các chương trình lập trình như các ngôn
ngữ lập trình thông dụng với một kho dữ liệu các hàm xây dựng sẵn (built-in
functions). Các chương trình MATLAB được lưu giữ với phần tên tệp mở rộng
.m và thường được gọi là các tệp m (m-file). Có hai loại tệp m:
• Chương trình (script): thực hiện một tập hợp các câu lệnh và làm việc
với các dữ liệu nằm ở không gian công tác (workspace). Các chương trình
(script) không nhận đối số đầu vào và cũng không trả các đối số đầu ra.
• Hàm (function): thực hiện một tập hợp các câu lệnh chứa trong nó. Tuy
nhiên, các function nhận các đối số đầu vào và cho các đối số đầu ra.
Các biến khai bao bên trong function chỉ tồn tại trong function.
Để xem hướng dẫn sử dụng các function từ Command Window nhập vào
help functionName. Ví dụ, để xem cách sử dụng hàm or chúng ta nhập vào
»help or
và nhận được hướng dẫn sau
| Logical OR. A | B is a matrix whose elements are 1’s where either A or B
has a non-zero element, and 0’s where both have zero elements. A and B must
have the same dimensions unless one is a scalar.

C = OR(A,B) is called for the syntax ’A | B’ when A or B is an object.


See also XOR.

Để soạn thảo các script hay các function của MATLAB chúng ta có thể
sử dụng bất kỳ một chương trình soạn thảo văn bản nào rồi lưu lại với tên
mở rộng .m. Chúng ta cũng có thể sử dụng ngay chương trình soạn thảo của
MATLAB (MATLAB Editor). Để xem hay soạn thảo lại một m-file có sẵn
chỉ cần sử dụng câu lệnh

» edit fileName
Để tạo một tệp mới chỉ cần sử dụng câu lệnh
2.5. Lập trình với Matlab 23

» edit
không cần tên tệp.

• Tạo các hàm MATLAB


Để tạo một function trong MATLAB chúng ta cần tạo một script với dòng
đầu tiên có cấu trúc

function [Output1,..., OutputM]=functionName(Input1, ...,InputN)


Trong đó {Input1,..., InputN} là N đối số vào và {Output1,..., OutputM}
là M đối số ra. Tên của hàm functionName nhất thiết phải giống với tên tệp m
và không trùng với tên các tệp có sẵn.
Ví dụ sau đây hướng dẫn cách viết một function để tính biệt thức ∆ =
a − 4ac của phương trình bậc hai ax2 + bx + c = 0
2

function delta=discriminant(a,b,c)
% Function to calculate the discriminant of a quaratic equation
% ax^2 + bx + c = 0

delta=b^2 - 4*a*c;
Giả sử phương trình bậc hai cần tìm nghiệm số là x2 + 4x + 3 = 0. Các
hệ số phương trình là a = 1, b = 4 và c = 3. Sử dụng hàm discriminant.m
vừa tạo chúng ta có thể tính được ngay biệt thức của phương trình này
»delta=discriminant(a,b,c)
delta =

• Tạo các chương trình MATLAB


Một chương trình MATLAB chứa một tập hợp các câu lệnh. Khi chạy một
chương trình MATLAB thì MATLAB tiến hành tất cả các câu lệnh chứa trong
nó. Các chương trình MATLAB có thể làm việc với các dữ liệu đang tồn tại ở
trong workspace, hoặc cũng có thể tạo ra các dữ liệu mới để làm việc. Tuy các
chương trình MATLAB không trả lại các đối số ra (output argument) nhưng
các biến do chương trình tạo ra được lưu lại ở workspace và được sử dụng ở
các câu lệnh tiếp theo.
Ví dụ chương trình quadEqn.m sau đây mô tả một chương trình MATLAB
để tính nghiệm của phương trình bậc hai ax2 + bx + c = 0

Vi dụ: Chương trình quadEqn.m


% Chuong trinh tinh nghiem so cua mot phuong trinh bac hai
24 Chương 2. Tính toán và Lập trình sử dụng Matlab

% Nhap cac hang so a, b, c


disp(’Chuong trinh tinh nghiem cua phuong trinh bac 2’)
a=input(’Nhap vao hang so a=’);
b=input(’Nhap vao hang so b=’);
c=input(’Nhap vao hang so c=’);

% Tinh biet thuc delta


delta=discriminant(a, b, c)

% Xet biet thuc va tinh nghiem so


if delta > 0
x1=(-b + sqrt(delta))/(2*a);
x2=(-b - sqrt(delta))/(2*a);
disp([’Hai nghiem cua pt la x1=’ num2str(x1) ’ va x2=’ num2str(x2)])
elseif delta==0
x1=-b/(2*a);
disp([’Phuong trinh co mot nghiem duy nhat x=’ num2str(x1)])
elseif delta < 0
disp(’Phuong trinh vo nghiem! ’)
end
Sử dụng chương trình quadEqn.m này tính nghiệm số của phương trình x2 +
4x + 3 = 0 cho ta kết quả như sau:
» quadEqn
Chuong trinh tinh nghiem cuar phuong trinh bac 2
Nhap vao hang so a=1
Nhap vao hang so b=4
Nhap vao hang so c=3
Hai nghiem cua phuong trinh la x1=-1 va x2=-3
và của phương trình 4x2 + 3x + 2 là

» quadEqn Chuong trinh tinh nghiem cuar phuong trinh bac 2


Nhap vao hang so a=4
Nhap vao hang so b=3
Nhap vao hang so c=2
Phuong trinh vo nghiem!

2.6 Sử dụng đồ hoạ trong MATLAB


2.6.1 Vẽ đồ thị
Phương pháp phổ biến nhất để vẽ đồ thị là sử dụng hàm plot có sẵn trong
MATLAB. Câu lệnh plot(x,y) vẽ đồ thị của y theo x, trong đó y và x là các
vector có cùng độ dài. Trong trường hợp Y và X là các ma trận thì câu lệnh
plot(X,Y) vẽ ra các đồ thị với các cột (hay hàng) của Y tương ứng với các cột
(hay hàng) của X.
Trường hợp muốn vẽ nhiều đồ thị trên một hình vẽ chúng ta có thể khai
2.6. Sử dụng đồ hoạ trong MATLAB 25

báo theo dạng plot(x1,y1,x2,y2,...,xN,yN) với {xn,yn} là cặp giá trị của
từng đồ thị. Để đánh dấu từng đồ thị chúng ta có thể gán cho chúng các dấu
(marker), các màu, kiểu đường đồ thị riêng, hay cũng có thể kết hợp với nhau.
Các định dạng đường đồ thị định nghĩa trong MATLAB được liệt kê ở bảng
sau

Bảng 2.1: Các tham số định dạng đường đồ thị trong MATLAB
Ký hiệu màu Màu Ký hiệu dấu Dấu Ký hiệu đường Kiểu đường
b blue . point - solid
g green o circle : dotted
r red x x-mark -. dashdot
c cyan + plus – dashed
m magenta * star
y yellow s square
k black d diamond
v triangle (down)
∧ triangle (up)
< triangle (left)
> triangle (right)
p pentagram
h hexagram

Ví dụ sau đây mô tả phương pháp sử dụng hàm plot để vẽ hai đồ thị


sin(x) và cos(x) chung trên một hình vẽ.

x = 0:pi/10:2*pi;
y = sin(x);
z= cos(x);
plot(x,y,’r+:’, x,z, ’b-.o’)
xlabel(’x’)
ylabel(’sin(x)/cos(x)’)
title(’Do thi ham sin(x) va cos(x)’)
legend(’sin(x)’,’cos(x)’)
grid
Trong đó đường đồ thị sin(x) được biểu diễn bởi đường đứt nét màu đỏ với
các dấu cộng (+), còn đường đồ thị cos(x) được biểu diễn bởi đường “gạch
và chấm” (.−) màu xanh nước biển với các dấu tròn. Câu lệnh xlabel(’x’)
và xlabel(’sin(x)/cos(x)’) dùng để đánh dấu trục hoành và trục tung của
đồ thị. Câu lệnh title(’Do thi ham sin(x) va cos(x)’) dùng để đặt tên
cho đồ thị. Câu lệnh legend(’sin(x)’,’cos(x)’) dùng để ghi chú giải cho
từng đồ thị và cuối cùng, câu lệnh grid dùng để hiển thị các đường lưới giá
trị đồ thị. Kết quả cụ thể được biểu diễn trên Hình vẽ 2.2
Sử dụng câu lệnh help plot chúng ta có thể biết thêm chi tiết về cách
dùng hàm plot.
Một câu lệnh vẽ đồ thị khác thường được sủ dụng nhiều trong thông tin
số để vẽ tỉ số lỗi bit (BER: Bit Error Rate) là câu lệnh semilogy(x,y). Câu
lệnh tương tự như câu lệnh plot nhưng cho phép biểu diễn trục tung của đồ
thị ở thang logarith.
26 Chương 2. Tính toán và Lập trình sử dụng Matlab

Do thi ham sin(x) va cos(x)


1
sin(x)
cos(x)
0.8

0.6

0.4

0.2
sin(x)/cos(x)

−0.2

−0.4

−0.6

−0.8

−1
0 1 2 3 4 5 6 7
x

Hình 2.1: Đồ thị sin(x) và cos(x)

Ví dụ, tỉ số BER của hệ thống truyền dẫn BPSK qua kênh pha-đinh
Rayleigh phân tích bằng lý thuyết là [1]
 
1 1
BERBPSK−Fading = 1 − q  (2.7)
2 1+ 1 Eb /N0

trong đó Eb /N0 là tỉ số năng lượng bit tín hiệu trên phổ tần số tạp âm (một
số trường hợp được hiểu và gọi là tỉ số tín hiệu trên tạp âm S/N). Sử dụng
chương trình BERBPSKFading.m sau với câu lệnh semilogy(BER,EbNodB) cho
phép vẽ đồ thị BER theo tỉ số Eb /N0 trên thang logarith.
[BERBPSKFading.m]
% Chuong trinh ve do thi BER cua h/t BPSK tren kenh fading Rayleigh
EbNodB=0:30
EbNo=10.^(EbNodB./10)
BER=1/2*(1-1./sqrt(1+1./EbNo))
semilogy(EbNodB,BER)
xlabel(’Eb/No’)
ylabel(’BER’)
title(’Ti so BER cua he thong BPSK qua kenh pha-dinh Rayleigh ’)
2.6. Sử dụng đồ hoạ trong MATLAB 27

grid

Ti so BER cua he thong BPSK qua kenh pha−dinh Rayleigh


0
10

−1
10
BER

−2
10

−3
10

−4
10
0 5 10 15 20 25 30
Eb/No

Hình 2.2: Mô tả BER của hệ thống BPSK trên kênh pha-đinh Rayleigh.

Một số câu lệnh vẽ đồ thị thường dùng khác gồm bar hay hist. Để biết
thêm chi tiết về các câu lệnh này sử dụng lệnh help trong MATLAB.

Bài tập
1. Sử dụng hàm randn tạo một chuỗi ngẫu nhiên gồm N = 1000 giá trị
x = {x1 , x2 , ..., xk , ..., xN }. Viết chương trình tính giá trị trung bình (kỳ
vọng) Ex , phương sai σx2 và độ lệch chuẩn σx sử dụng các công thức sau
đây
28 Chương 2. Tính toán và Lập trình sử dụng Matlab

N
1 X
Ex = xk (2.8)
N k=1
 2
N
X N
X
x2k  xk 
 
k=1  k=1 
σx2 = E(x2 ) − Ex2 = −  (2.9)
N  N 
 

p
σx = σx2 (2.10)
2. Viết chương trình tạo một chuỗi −1 và +1 ngẫu nhiên x có độ dài 104
bit. Tạo một chuỗi bit thứ 2 y giống như x tuy nhiên các phần tử thứ
10, 50, 100, 150, 250, 300, 350 bị đảo dấu so với các phần tử tương ứng
ở y. Tức là, y10 = −x10 , ..., y350 = −x350 . So sánh y và x và tính toán tỉ
số sai số giữa hai chuỗi.
3. Dựa vào ví dụ vẽ đồ thị BER của hệ thống BPSK trên kênh pha-đinh
Rayleigh ở mục 2.6.1 và hàm sai số bù erfc có sẵn trong MATLAB,
i. Viết chương trình vẽ đồ thị BER của hệ thống BPSK trên kênh tạp
âm Gauss theo công thức sau[1]

1 p 
BERBPSK−AWGN = erfc Eb /N0 (2.11)
2
ii. Vẽ đồ thị BER của hệ thống BPSK trên kênh tạp âm Gauss kết hợp
với đồ thị BER của hệ thống BPSK trên kênh pha-đinh Rayleigh
vào một hình vẽ, đánh dấu và đặt chú giải cho từng đồ thị.
4. Viết một hàm MATLAB y=QPSKMap(x) nhận đối số là một chuỗi ngẫu
nhiên 1 và 0 có độ dài N bit. Hàm QPSKMap thực hiện kiểm tra từng cặp
2 bit liên tiếp xn và xn+1 rồi thực hiện phép biến đổi sau
xn xn+1 ym

00 → √1
2
+ j √12
01 → − √12 + j √12
10 → − √12 − j √12
11 → √1
2
− j √12

trong đó n = 1, 2, ..., N và m = 1, 2, ..., N/2


5. Viết một chương trình QPSKMod tạo ra 20 bit 0, 1 ngẫu nhiên. Sử dụng
hàm MATLAB QPSKMap ở ví dụ trên để chuyển chuỗi bit {0,1} thành
chuỗi các dấu QPSK ym .
Tài liệu tham khảo 29

Tài liệu tham khảo


[1] H. Harada and R. Prasad, Simulation and Software Radio for Mobile Com-
munications. Artech House, 2002.
30 Chương 2. Tính toán và Lập trình sử dụng Matlab
MÔ PHỎNG CÁC HỆ THỐNG
THÔNG TIN VÔ TUYẾN SỬ
DỤNG MATLAB

Simulation of Radio Communication Systems using Matlab

Trần Xuân Nam


Bộ môn Thông tin, Khoa Vô tuyến điện tử
Đại học Kỹ thuật Lê Quí Đôn
100 Hoàng Quốc Việt, Cầu Giấy , Hà Nội, Việt Nam
Phone: (069)-515392 E-mail: namtx@lqdtu.edu.vn
Chương 3

Lý thuyết mô phỏng

3.1 Vai trò của mô phỏng


2
Các hệ thống thông tin hiện đại đòi hỏi phải đáp ứng được nhu cầu truyền
dẫn dữ liệu tốc độ cao. Tuy nhiên, các hệ thống này thường lại bị hạn chế về
công suất và băng tần. Các yêu cầu mâu thuẫn này dẫn đến việc sử dụng các
phương thức điều chế bậc cao, mã sửa sai và các phương pháp xử lý tín hiệu
phức tạp khác ở phía thu. Để đánh giá phẩm chất của một hệ thống truyền dẫn
đơn giản trên kênh tạp âm Gauss trắng cộng tính (AWGN: Additive White
Gaussian Noise) truyền thống thì phương pháp giải tích toán học có thể được
sử dụng rất hữu hiệu. Tuy nhiên, đối với các hệ thống truyền dẫn hiện đại
làm việc trên các kênh phức tạp, như kênh thông tin di động tế bào, chịu ảnh
hưởng lớn của pha-đinh đa đường và nhiễu, thì việc thiết kế và phân tích giải
tích trở nên hết sức phức tạp. Có một điều may mắn là nhờ sự phát triển của
máy tính trong vài thập kỷ gần đây, nên máy tính đã ngày càng có tính năng
xử lý cao và giá thành thấp. Hệ quả của sự phát triển này là các kỹ thuật
thiết kế và phân tích dựa trên máy tính ngày càng trở nên phổ biến. Đối với
thông tin, các xử lý phức tạp của máy thu và máy phát hay các ảnh hưởng
của kênh truyền nay đã có thể mô phỏng bằng các máy tính thông thường.
Ngoài ra, sự phát triển của máy tính cũng hỗ trợ cho sự phát triển của
lý thuyết mô phỏng. Trong những năm gần đây, ngày càng có nhiều công cụ
mô phỏng có tính năng cao hỗ trợ cho việc mô phỏng được thực hiện dễ dàng
hơn. Động cơ quan trọng cho mô phỏng là do mô phỏng là công cụ quí giá cho
phép tìm hiểu sâu về hoạt động của hệ thống. Một hệ thống mô phỏng hoàn
chỉnh đóng vai trò như một phòng thí nghiệm cho phép kiểm tra tại nhiều vị
trí trong hệ thống. Và vì vậy, các tham số nghiên cứu như độ rộng băng tần,
bộ lọc hay tỉ số tín hiệu trên tạp âm (SNR: Signal to Noise Ratio) có thể thay
đổi được theo mong muốn. Hiệu quả của các thay đổi này có thể dễ dàng quan
sát trên màn hình máy tính. Các tham số như dạng sóng, phổ tín hiệu, sơ đồ
mẫu mắt, chòm sao tín hiệu, biểu đồ histogram, hay nhiều biểu đồ khác đều
có thể được hiển thị trên màn hình máy tính, cho phép người nghiên cứu có
2 Source: W. H. Tranter et al., Principles of Communication Systems Simulation with Wireless Applica-

tions, Prentice-Hall, 2004.

31
32 Chương 3. Lý thuyết mô phỏng

thể phân tích, đánh giá và so sánh với các kết quả thực hiện trên phần cứng.

3.2 Mô phỏng vs. Phân tích


Để hiểu rõ vai trò của mô phỏng, chúng ta xét 3 sơ đồ hệ thống sau đây.

3.2.1 Sơ đồ truyền dẫn số qua kênh AWGN


Hình 3.1 mô tả một sơ đồ truyền dẫn thông tin số cơ bản. Tại phía phát,
nguồn dữ liệu tạo ra một chuỗi các dấu phát dk , trong đó một dấu phát được
tạo ra độc lập với các dấu khác. Đối với một hệ thống thông tin nhị phân,
chuỗi dấu phát chứa hai dấu {1, 0}. Các nguồn dữ liệu kiểu này thường được
sử dụng phổ biến trong mô phỏng và được gọi là nguồn gián đoạn không nhớ
(DMS: Discrete Memoryless Source). Các dấu phát được tạo ra sau đó được
ánh xạ thành các dạng sóng phù hợp. Với hệ thống nhị phân, tập dạng sóng
được định nghĩa {s1 (t), s2 (t)}. Máy phát (Tx), sau đó, sẽ thực hiện chức năng
khuếch đại dạng sóng đầu ra của bộ điều chế để phát đi trên kênh truyền với
công suất yêu cầu.

dk
Nguån §iÒu chÕ
D÷ liÖu vµ Tx

Kªnh truyÒn
AWGN zk +
^
dk d~k
QuyÕt ®Þnh LÊy mÉu Läc phèi hîp

Hình 3.1: Ví dụ về một hệ thống dễ dàng thực hiện phân tích giải tích.

Tín hiệu phát đi qua kênh truyền trước khi đến máy thu. Trong thực tế
kênh truyền là một môi trường truyền dẫn phức tạp, gây ảnh hưởng lớn đến
chất lượng truyền dẫn tín hiệu. Tuy nhiên, trong ví dụ đơn giản này, chúng
ta giả thiết kênh truyền chỉ tạo ra tạp âm trắng cộng tính (AWGN). Tín hiệu
thu nhận được ở đầu vào máy thu sẽ được đưa qua bộ lọc phối hợp, còn được
gọi là máy thu tương quan. Đầu ra bộ lọc phối hợp được lấy mẫu tại cuối chu
kỳ dấu để tạo nên thống kê quyết định (decision statistic), d˜k , rồi so sánh với
ngưỡng quyết định T để tạo nên ước lượng dˆk của tín hiệu gốc dk . Nếu d˜k > T
thì quyết định được thực hiện theo một trong hai dấu, còn ngược lại, d˜k < T ,
quyết định theo dấu còn lại. Máy thu kiểu này thường được gọi là máy thu tối
ưu do bản chất của việc ước lượng tín hiệu phát là làm tối giản xác suất lỗi
3.2. Mô phỏng vs. Phân tích 33

PE .
Hệ thống đề cập đến ở Hình 3.1 là một hệ thống có thể phân tích bằng
giải tích một cách dễ dàng nhờ các kiến thức cơ bản về lý thuyết thông tin và
giải tích. Thực tế là xác suất lỗi PE đã được tính toán một cách dễ dàng và
trình bày ở trong hầu hết các tài liệu về thông tin số, và cho bởi
r !
Es
PE = Q k (3.1)
N0

trong đó Es là năng lượng trung bình của các dấu phát, N0 là mật độ phổ
công suất đơn phía của tạp âm, k là hệ số xác định bởi tương quan giữa các
dạng sóng {s1 (t), s2 (t)}. Nếu các tần số được chọn một cách chính xác, các tín
hiệu không tương quan và k = 1. Với tín hiệu điều chế khóa dịch pha (PSK),
các tín hiệu điều chế có cùng tần số và công suất, nhưng khác pha ban đầu.
Trong trường hợp pha khác nhau π, sao cho s2 (t) = −s1 (t)}, thì các tín hiệu
sẽ tương quan ngược (anticorrelated), và k = 2.
Sở dĩ chúng ta nói rằng hệ thống truyền dẫn trên Hình 3.1 là hệ thống có
thể phân tích bằng giải tích dễ dàng là do các lý do sau:

• Do giả thiết kênh truyền AWGN và máy thu tuyến tính. Giả thiết này
dẫn đến thống kê quyết định d˜ trở thành một biến Gauss ngẫu nhiên.
• Do các giả thiết nguồn dữ liệu không có nhớ
• Do giả thiết đồng bộ dấu được thực hiện lý tưởng nên chúng ta có thể
biết chính xác thời điểm bắt đầu và kết thúc của một dấu, vì vậy, cho
phép thống kê quyết định được tách ra một cách chính xác.

Mặc dù có thể phân tích được dễ dàng nhưng trong một số trường hợp
xây dựng chương trình mô phỏng cho các hệ thống kiểu này vẫn cần thiết. Lý
do là do đây là một hệ thống cơ bản nên nó thường được sử dụng làm cơ sở
để mở rộng cho các hệ thống truyền dẫn phức tạp hơn. Ví dụ, nếu thay khối
kênh AWGN bằng khối kênh pha-đinh Rayleigh chúng ta có mô hình truyền
dẫn số qua kênh pha-đinh Rayleigh, hay chúng ta cũng có thể thêm vào khối
san bằng kênh ở máy thu để có được sơ đồ truyền dẫn sử dụng bộ san bằng để
loại bỏ ảnh hưởng của pha-đinh chọn lọc theo tần số đối với kênh có trễ. Trong
những trường hợp như vậy, việc xây dựng thành công chương trình mô phỏng
cho hệ thống truyền dẫn cơ bản được kiểm nghiệm bằng lý thuyết này, cho
phép mở rộng nhanh chóng để xây dựng thành công chương trình mô phỏng
cho các hệ thống phức tạp.

3.2.2 Sơ đồ truyền dẫn số qua kênh AWGN sử dụng các bộ lọc và


KĐCS phi tuyến
Trong mục trước chúng ta đã xét một sơ đồ truyền dẫn cơ bản trong thông
tin. Chúng ta cũng đã thấy rằng với sơ đồ truyền dẫn cơ bản đó thì nhờ sử
dụng một số giả thiết chúng ta có thể phân tích dễ dàng phẩm chất lỗi bít của
34 Chương 3. Lý thuyết mô phỏng

dk K§CS
Nguån
§iÒu chÕ Phi tuyÕn
D÷ liÖu
vµ Läc

Kªnh truyÒn
AWGN zk +
^
dk d~k
QuyÕt ®Þnh LÊy mÉu Läc phèi hîp

Hình 3.2: Ví dụ về một hệ thống khó thực hiện phân tích giải tích.

hệ thống. Trong mục này chúng ta sẽ xét một sơ đồ phức tạp hơn, trong đó
có sử dụng thêm một bộ khuếch đại công suất (KĐCS) phi tuyến và bộ lọc ở
đầu ra máy phát. Chúng ta đã biết rằng bộ khuếch đại công suất phi tuyến
có hiệu suất nguồn cao hơn bộ khuếch đại công suất tuyến tính, và vì vậy,
thường được sử dụng ở các ứng dụng đòi hỏi tiết nghiệm nguồn như thông tin
di động chẳng hạn. Tuy nhiên, việc sử dụng bộ khuếch đại phi tuyến lại tạo
nên méo hài và méo điều chế lẫn nhau (intermodulation), làm cho phổ của tín
hiệu đầu ra KĐCS rộng hơn rất nhiều so với phổ đầu ra bộ điều chế. Bộ lọc
đầu ra, thông thường là một bộ lọc băng thông có tần số trung tâm trùng với
tần số sóng mang, có nhiệm vụ làm suy giảm méo hài và méo điều chế lẫn
nhau do tính phi tuyến của bộ KĐCS gây nên. Tuy nhiên, bộ lọc này lại làm
cho tín hiệu bị phân tán theo thời gian, do đó gây nên nhiễu xuyên dấu (ISI).
Hậu quả của ISI là xác suất lỗi của một dấu phụ thuộc vào một hay nhiều
dấu trước đó. Nếu như xác suất lỗi của dấu thứ i phụ thuộc vào k dấu trước
đó thì chúng ta cần tính xác suất
Pr(Ei |di−1 , di−2 , ..., di−k )
Đối với trường hợp nhị phân có 2k chuỗi khác nhau, do đó chúng ta cần tính
cho 2k trường hợp. Giả thiết là mỗi dấu dữ liệu có xác suất là 0 hay 1 như
nhau, chúng ta có xác suất lỗi của dấu thứ i được tính như sau
1 1 1
1 X X X
PE = k ··· Pr(Ei |di−1 , di−2 , ..., di−k ) (3.2)
2 d d d
i−1=0 i−2=0 i−k=0

Tức là, chúng ta cần tính 2 xác suất lỗi khác nhau, với mỗi xác suất lỗi phụ
k

thuộc một trong 2k chuỗi trước đó, sau đó chia trung bình cho k. Do kênh
truyền đang xét là kênh AWGN nên mỗi xác suất trong 2k xác xuất lỗi là hàm
Q Gauss. Phương pháp tính dễ hiểu, việc tính toán đối số của mỗi hàm Q lại
nhàm chán, và vì vậy, mô phỏng thường được sử dụng thay thế cho giải tích.
Hệ thống ở Hình 3.2 có một tính chất quan trọng làm cho phân tích trở
nên dễ dàng hơn. Đó là phần hệ thống từ điểm có tạp âm đến điểm xuất hiện
3.3. Xây dựng mô hình mô phỏng 35

thống kê Vk là tuyến tính. Thống kê d˜k có thể được biểu diễn ở dạng
d˜k = Sk + Ik + Nk (3.3)
trong đó Sk và Ik là các thành phần của d˜k do tín hiệu và nhiễu, còn Nk là
thành phần do tạp âm. Do tính chất tuyến tính nên nếu tạp âm là Gauss thì
Nk cũng là một biến ngẫu nhiên Gauss, do nó là kết quả của phép biến đổi
tuyến tính của một biến ngẫu nhiên Gauss. Hơn nữa, thống kê quyết định của
d˜k cũng sẽ là một biến Gauss có cùng phương sai như của Nk , nhưng với giá
trị trung bình Sk + Ik , trong đó cả hai thành phần này đều xác định. Giá trị
trung bình của d˜k được xác định từ kiến thức về mật độ phổ công suất của
tạp âm kênh và băng tần tạp âm tương đương của hệ thống từ kênh đến đầu
ra của d˜k . Vì vậy, hàm mật độ phổ công suất (PDF) của d˜k có thể biết được
và xác suất lỗi dễ dàng được xác định. Nói tóm lại, lý do chúng ta có thể dễ
dàng xác định PDF của d˜k , cho dù hệ thống có tính phi tuyến, là do tạp âm
không đi qua phần phi tuyến của hệ thống.
Do tạp âm chỉ đi qua phần tuyến tính của hệ thống nên phương pháp mô
phỏng được đơn giản hóa. Cũng do tạp âm không đi qua phần phi tuyến nên
giá trị trung bình của d˜k có thể xác định được bằng giải tích và do đó PDF
của d˜k có thể biết được và xác suất lỗi được xác định dễ dàng. Các khái niệm
này được kết hợp vào trong một kỹ thuật mô phỏng vừa đơn giản, lại nhanh
chóng. Đó là phương pháp bán giải tích (semi-analytical), trong đó giải tích
và mô phỏng được kết hợp với nhau làm cho mô phỏng được thực hiện nhanh
hơn. Mô phỏng bán giải tích là một công cụ quan trọng và được sử dụng rộng
rãi trong nghiên cứu.

3.2.3 Hệ thống truyền dẫn qua kênh thông tin vệ tinh


Hệ thống mô tả ở Hình 3.3 được biết đến như là một hệ thống không thể phân
tích được bằng giải tích. Hệ thống này là một mô hình truyền dẫn hai chặng
qua kênh vệ tinh, trong đó bộ phát đáp được mô hình hóa bởi một bộ khuếch
đại công suất lớn (HPA) phi tuyến và một bộ lọc để loại bỏ méo hài ngoài
băng tần do tính phi tuyến gây nên. So sánh Hình 3.3 và Hình 3.2 chúng ta
thấy chúng có cấu trúc tương tự nhau. Tuy nhiên, mô hình kênh vệ tinh ở
Hình 3.3 được bổ xung thêm hai nguồn tạp âm: một cho đường lên (up-link)
và một cho đường xuống (down-link). Như vậy, tín hiệu ở máy thu chứa hai
thành phần tạp âm, trong đó tạp âm tuyến lên đi qua một bộ khuếch đại phi
tuyến. Dù cho chúng ta có giả thiết là cả tạp âm trên đường lên và đường
xuống đều là tạp âm Gauss, thì PDF của tạp âm ở máy thu vẫn rất khó xác
định, đặc biệt là với tạp âm đường lên. Vì vậy, mô phỏng là công cụ cần thiết
đối với các hệ thống kiểu này.

3.3 Xây dựng mô hình mô phỏng


Bước đầu tiên trong việc phát triển một chương trình mô phỏng của một hệ
thống thông tin là phát triển mô hình mô phỏng của hệ thống đó. Mô hình
36 Chương 3. Lý thuyết mô phỏng

dk K§CS
Nguån
§iÒu chÕ p hi tuyÕn
D÷ liÖu
vµ Läc

Kªnh truyÒn
Up link noise +

K§CS
p hi tuyÕn
vµ Läc

Downlink noise
+
^
dk d~k
QuyÕt ®Þnh LÊy mÉu Läc phèi hîp

Hình 3.3: Ví dụ về một hệ thống khó thực hiện phân tích giải tích.

PhÇn M« h×nh M« h×nh


cøng gi¶i tÝch m« pháng

Hình 3.4: Lược đồ xây dựng mô hình mô phỏng.

thường được biểu diễn ở dạng toán học mô tả mối quan hệ vào/ra của hệ
thống. Nghệ thuật của mô hình hóa là phát triển mô hình hoạt động có chứa
đầy đủ các tính năng cần thiết nhưng lại không quá phức tạp để có thể thực
hiện được bằng các máy tính thông dụng. Yêu cầu này đòi hỏi phải có sự thỏa
hiệp giữa tính chính xác, độ phức tạp và yêu cầu tính toán của mô hình.
Đối với một quá trình mô phỏng, thông thường có hai mô hình được xây
dựng: mô hình giải tích và mô hình mô phỏng như ở Hình 3.4. Cả hai mô hình
này đều mô tả tính trừu tượng của hệ thống. Mô hình giải tích thường biểu
diễn ở dạng công thức toán học hay các hệ phương trình xác định mối quan
hệ vào/ra của hệ thống. Các công thức này thường là mô tả một phần của hệ
thống, và có độ chính xác trong một giải điện áp, dòng điện, hay tần số nào
đó. Mô hình mô phỏng thường là một tập hợp của các thuật toán thực hiện
giải pháp tính toán bằng số (numerical) của các công thức xác định mô hình
giải tích. Các kỹ thuật giải tích số và xử lý tín hiệu số là các công cụ được sử
dụng để phát triển các thuật toán này.
Mối quan hệ giữa sai số mô hình, độ phức tạp và thời gian mô phỏng được
3.4. Các phương pháp mô phỏng 37

Cao Thêi gian m« pháng Dµi


Sai sè vs §é phøc t¹p vs §é phøc t¹p

Thêi gian m« pháng


Sai sè m« h×nh
Vïng ho¹t ®éng
thùc tÕ

ThÊp Ng¾n
ThÊp §é phøc t¹p M« h×nh Cao

Hình 3.5: Mối quan hệ giữa sai số, thời gian chạy mô phỏng so với độ phức tạp của mô
hình.

biểu diễn ở Hình 3.5. Chúng ta có thể thấy rằng một mô hình có độ phức tạp
thấp có sai số mô hình hóa lớn, nhưng lại yêu cầu thời gian chạy mô phỏng
ngắn. Ngược lại, mô hình có độ phức tạp lớn có sai số nhỏ nhưng lại yêu cầu
thời gian mô phỏng dài.

3.4 Các phương pháp mô phỏng


Có hai loại mô phỏng cơ bản: mô phỏng xác định và mô phỏng ngẫu nhiên. Mô
phỏng xác định thường gặp trong trường hợp mô phỏng các mạch điện được
thiết kế sử dụng một chương trình thiết kế như kiểu SPICE. Chương trình này
được sử dụng để tạo ra một mạch điện và cấp dòng đầu vào. Chương trình
mô phỏng tạo ra dòng điện chạy ở các nhánh của mạch điện và điện áp qua
từng phần tử. Điện áp và dòng điện thường được biểu diễn bởi các dạng sóng.
Khoảng thời gian mong muốn của các dạng sóng này được xác định trước khi
chạy mô phỏng. Do mạch điện cố định và tín hiệu đầu vào là xác định nên mỗi
lần chạy mô phỏng sẽ cho cùng một kết quả giống nhau. Hơn nữa, có thể sử
dụng tính tay để tìm ra cùng các dạng sóng như vậy. Trong trường hợp này,
mô phỏng được sử dụng để tiết kiệm thời gian và tránh các lỗi toán học do
phải thực hiện các phép toán dài và nhàm chán.
Nếu giả thiết đầu vào của hệ thống là một dạng sóng ngẫu nhiên. Nói
chính xác là nếu đầu vào hệ thống là một hàm mẫu của một quá trình ngẫu
nhiên, thì một cách tương đương có thể coi trở kháng của điện trở là một biến
ngẫu nhiên xác định bởi một hàm mật độ xác suất xác định. Kết quả của mô
phỏng này sẽ không còn là một dạng sóng xác định và các mẫu của dạng sóng
này sẽ tạo nên một tập hợp của các biến ngẫu nhiên. Các mô phỏng trong đó
xuất hiện các giá trị ngẫu nhiên được gọi là các mô phỏng ngẫu nhiên.
Để lấy ví dụ, chúng ta giả thiết điện áp qua một phần tử mạch điện được
ký hiệu là e(t) và mô phỏng được sử dụng để tạo ra e(t) trong khoảng thời
gian 1ms, tức là e(0.01). Trong mô phỏng xác định thì e(0.01) không đổi và
chúng ta có kết quả như nhau sau mỗi lần mô phỏng.
Một ví dụ khác là hệ thống truyền dẫn số trong đó tín hiệu thu bao gồm
38 Chương 3. Lý thuyết mô phỏng

tín hiệu phát cộng tạ âm ngẫu nhiên. Giả thiết rằng nhiệm vụ của chúng ta
là tính xác suất lỗi dấu tại đầu ra máy thu. Từ giáo trình truyền dẫn chúng
ta biết rằng đối với truyền dẫn tín hiệu BPSK qua kênh AWGN, thì xác suất
lỗi dấu là r !
2Eb
PE = Q (3.4)
N0

trong đó Eb là năng lượng dấu, N0 là mật độ phổ công suất tạp âm một phía,
và Q(x) là hàm Q Gauss được định nghĩa bởi
Z ∞  2
1 y
Q(x) = exp − (3.5)
2π x 2

Để ý rằng PE là một số chứ không phải một biến ngẫu nhiên, mặc dù tạp âm
ngẫu nhiên xuất hiện ở đầu vào máy thu. Số PE là một giá trị trung bình sau
một số lần thử vô hạn, trong đó một lần thử bao gồm việc gửi một số dấu số
đi qua hệ thống và quan sát kết quả đầu ra. Tất nhiên là kết quả sẽ có thể
là chính xác hoặc là một lỗi ở đầu ra. Đối với các quá trình Ergodic (dừng),
chúng ta có thể xác định xác suất lỗi bằng 2 cách. Chúng ta có thể xem một
bit được truyền và tính PE như là trung bình tập hợp (ensemble average),
trong đó chúng ta có một tập hợp (ensemble) của các dạng sóng tạp âm có
cùng tính chất thống kê. Một cách khác là chúng ta có thể xác định PE như
là trung bình thời gian bằng cách truyền vô hạn các dấu nhị phân và sử dụng
hàm mẫu đơn của tạp âm. Điểm mấu chốt laf chúng ta tính PE dựa trên một
số vô hạn các dấu nhị phân phát đi. Nếu thay vì xác định PE dựa trên một
số vô hạn các dấu phát, chúng ta ước lượng PE dựa trên một số vô hạn các
dấu phát, chúng ta ước lượng PE sử dụng một số hữu hạn các dấu nhị phân
phát, chúng ta sẽ tìm được rằng ước lượng của PE thực tế là một biến ngẫu
nhiên do mỗi hàm mẫu có khoảng hữu hạn sẽ tạo nên một giá trị khác nhau
(mong muốn là không nhiều lắm) cho xác suất lỗi. Điều này sẽ được trình bày
ở phần sau khi chúng ta xem xét kỹ thuật Monte Carlo

3.5 BER vs Xác suất lỗi bit


Xét hệ thống truyền dẫn số đơn giản ở Hình 3.1 và giả thiết rằng chúng ta
cần tính tỉ số lỗi bit. Kỹ thuật mô phỏng cơ bản nhất để xác định đại lượng
phẩm chất quan trọng này là gửi một số lớn các dấu số qua hệ thống và tính
lỗi thu được ở đầu ra máy thu. Kỹ thuật này được gọi là mô phỏng Monte
Carlo. Nếu N dấu được hệ thống xử lý và Ne lỗi đếm được ở đầu ra hệ thống
thì ước lượng Monte Carlo của xác suất lỗi là
Ne
P̂E = . (3.6)
N
Đại lượng này được gọi là BER theo N dấu. Ý nghĩa của BER là nó cho ta
ước lượng của xác suất lỗi dấu, mà theo định nghĩa tần suất tương đối của
3.6. Vai trò của mô phỏng 39

xác suất là
Ne
PE = lim . (3.7)
N →∞ N

Do một mô phỏng theo yêu cầu có thể chỉ cần xử lý một số hữu hạn các dấu,
nên xác suất lỗi dấu chỉ có thể xác định xấp xỉ.
Do thuật ngữ tỉ số lỗi bít và xác suất lỗi bit thường được dùng chung, có
thể có lúng túng trong việc phân biệt hai khái niệm này. Thực chất hai khái
niệm này hoàn toàn khác nhau. BER là ước lượng của xác suất lỗi bit. BER
thực chất là một tỉ số (tỉ lệ), do nó mang ý nghĩa Ne lỗi trong N dấu truyền.
Nếu xét một thí nghiệm truyền N dấu qua một kênh ngẫu nhiên (tạp âm) K
lần, thì số lỗi NE đếm được trong mỗi lần thường khác nhau. Xác suất lỗi bit,
tuy nhiên, lại là một số chứ không phải một biến ngẫu nhiên. Víp dụ, xác suất
lỗi bit cho một hệ thống nhị phân PSK trên kênh AWGN là Q( 2Eb /N0 ) là
cố định nếu Eb và N0 không đổi.
Thực tế là với N lớn, ước lượng P̂E hội tụ đến PE , theo định nghĩa tần
suất tương đối của xác suất.

3.6 Vai trò của mô phỏng


Mô phỏng được sử dụng rộng rãi trong nhiều công đoạn của quá trình thiết kế
và triển khai các hệ thống truyền dẫn hiện đại. Mục đính chính của mô phỏng
là để đánh giá phẩm chất và tối ưu tham số. Ngoài ra, mô phỏng còn được sử
dụng để thiết lập các thủ tục kiểm chuẩn (benchmark), dự đoán tuổi thọ, và
thẩm định hệ thống sau khi đã được triển khai ra hiện trường. Phương pháp
mô phỏng sẽ chịu chi phối hay hướng dẫn do dòng thiết kế tổng quát sử dụng.
Thiết kế của một hệ thống truyền dẫn phức tạp thường được thực hiện
theo phương thức “từ trên xuống dưới”. Tức là, khi thiết kế một hệ thống
chúng ta bắt đầu ở mức hệ thống và bắt đầu bổ xung chi tiết của thiết kế
từ hệ thống xuống các hệ thống con, và cuối cùng là đến mức phần tử. Khi
triển khai hệ thống thì quá trình lại được thực hiện “từ dưới lên trên”. Tức
là, các phần tử được chế tạo trước, sau đó chúng được lắp ráp thành các hệ
thống con, và cuối cùng toàn bộ hệ thống được xây dựng từ các hệ thống con.
Tương tự như thiết kế hệ thống, phát triển mô phỏng cũng được thực hiện
theo giải pháp “từ trên xuống dưới”. Chúng ta bắt đầu với một mô phỏng ở
mức hệ thống có mức từu tượng cao, tiếp theo là các mô hình cụ thể hơn và
mô phỏng của các hệ thống con và các phần tử. Khi bắt đầu quá trình triển
khai, các đặc tính đo được của các phần tử và hệ thống con được bổ xung vào
mô hình mô phỏng.

3.7 Tính toán quĩ tuyến và mô phỏng


Quá trình thiết kế một hệ thống truyền dẫn bắt đầu từ việc xác định và phân
tích các yêu cầu người dùng và kỳ vọng phẩm chất như hệ số cho qua, tỉ lệ
lỗi, xác suất outage, và các điều kiện ràng buộc về băng tần, công suất, trọng
40 Chương 3. Lý thuyết mô phỏng

lượng, độ phức tạp/chi phí, kênh công tác, tuổi thọ mong muốn của hệ thống.
Dựa trên yêu cầu người dùng, kỹ sư hệ thống xác định các khái niệm ban đầu
của hệ thống như sơ đồ điều chế, kỹ thuật mã hóa và san bằng nếu cần thiết.
Một tập hợp của các giá trị tham số, được gọi là chỉ tiêu mức A, như mức
công suất, băng tần, và chỉ số điều chế cũng được thiết lập trong giai đoạn
đầu này của thiết kế.
Mục đích chính của giai đoạn này là xác định tô-pô của hệ thống và các
giá trị tham số sẽ đáp ứng các ràng buộc thiết kế. Như đã nói trước đây, phẩm
chất hệ thống là hàm số của tỉ số tín hiệu trên tạp âm (SNR, hay tương đương
là Eb /N0 ) và méo tổng cộng gây ra do các phần tử trên đường truyền dẫn. Tỉ
số SNR được xây dựng thông qua quá trình tính toán quĩ tuyến, mà chủ yếu
là liên quan đến tính toán công suất và các tham số liên quan như công suất
phát, độ lợi anten, suy hao truyến, độ lợi công suất, hệ số tạp âm của các bộ
khuếch đại và lọc. Mặc dù tính toán quĩ tuyến không phải là bài toán quan
tâm của mô phỏng, nó lại giúp thiết lập một dải các giá trị SNR hay Eb /N0
để tiến hành ước lượng phẩm chất trong khoảng đó.
Người thiết kế bắt đầu với cấu hình ban đầu của hệ thống với các chỉ tiêu
cấp A và quĩ tuyến. Quĩ tuyến chỉ ra Eb /N0 tại một điểm quan trọng (critical)
của hệ thống sau khi tất cả các suy hao triển khai đã được tính đến. Điểm
“cực” này thường chính là đầu vào máy thu. Quĩ tuyến được gọi là “cân bằng”
nếu như tuyến có Eb /N0 đủ lớn, với một lề an toàn (safe margin), để tạo ra
phẩm chất chấp nhận được của hệ thống.
Nếu quĩ tuyến không cân bằng, các chỉ tiêu cấp A, suy hao triển khai, và
ngay cả cấu hình hệ thống cần thay đổi và quĩ tuyến cần phải tính lại. Ví dụ,
có thể cần thay đổi lại công suất phát, kích thước anten hay các bộ khuếch đại
tạp âm thấp. Sau khi đã cân bằng được quĩ tuyến, thì sử dụng mô phỏng để
kiểm tra lại quĩ tuyến và điều chỉnh lại hệ thống. Nếu như quĩ tuyến đã được
cân bằng thì chuyển sang giai đoạn tiếp theo là thiết kế các hệ thống con và
các phần tử.

3.8 Các tham số đánh giá phẩm chất hệ thống


Có nhiều đại lượng được sử dụng để đánh giá phẩm chất một hệ thống. Đối
với các hệ thống truyền dẫn thông tin thông thường tỉ số SNR (hay tỉ số CNR:
Carrier-to-Noise Ratio) được sử dụng cho hệ thống tương tự và BER (hoặc có
thể SER: Symbol Error Rate hay FER: Frame Error Rate) được sử dụng cho
các hệ thống truyền dẫn số. SNR có thể cũng được sử dụng làm tham số phụ
cho đánh giá phẩm chất của hệ thống truyền dẫn số.
Tỉ số SNR được định nghĩa là tỉ số của công suất tín hiệu trên công suất
của tạp âm, tức là
Ps E{s2 (t)}
SNR = = (3.8)
Pn E{n2 (t)}

trong đó E biểu diễn phép toán lấy giá trị kỳ vọng.


Với hệ thống truyền dẫn số, tỉ số lỗi bit BER thường không thể xác định
3.9. Năng lượng và Công suất tín hiệu 41

được mà được ước lượng nhờ mô phỏng Monte-Carlo. Giả thiết số N bit được
truyền đi và xảy ra Ne bit lỗi ở đầu ra, tỉ số BER được định nghĩa là
Ne
BER = . (3.9)
N
Thực chất đây là ước lượng của xác suất lỗi bít được định nghĩa bởi
Ne
PE = lim (3.10)
N →∞ N

Với tỉ số lỗi khung chúng ta cũng có thể định nghĩa tương tự


Nf
FER = e . (3.11)
Nf
trong đó Nfe là số khung thu lỗi và Nf là tổng số khung gửi đi.

3.9 Năng lượng và Công suất tín hiệu


Các thành phần năng lượng Es và công suất tín hiệu Ps được định nghĩa như
sau Z ∞
Es = s2 (t)dt (3.12)
−∞
T /2
1
Z
Ps = lim s2 (t)dt (3.13)
T →∞ T −T /2

Trong trường hợp tín hiệu rời rạc (đã lấy mẫu), năng lượng và công suất tín
hiệu được định nghĩa như sau

X
Es = Ts s2 [n] (3.14)
n=−∞
N
1 X
Ps = lim s2 (t)dt (3.15)
N →∞ 2N + 1
n=−N

Nếu chuỗi tín hiệu là hữu hạn và chuỗi được phát lặp lại, thì
N
X −1
Es = Ts s2 [n] (3.16)
n=0
N −1
1 X
Ps = s2 [n] (3.17)
N n=0

Trong Matlab công suất của chuỗi tín hiệu s[n] được tính nhờ sử dụng
hàm norm.m như sau: Ps=norm(s)ˆ 2/length(s)

3.10 Mô phỏng Monte-Carlo trong Truyền dẫn Số


Để đánh giá phẩm chất của một hệ thống thông tin số, mô phỏng Monte-Carlo
thường được sử dụng để ước lượng tỉ số BER. Như đã thảo luận ở phần trên,
42 Chương 3. Lý thuyết mô phỏng

để có ước lượng chính xác của BER, chúng ta cần tăng số lượng bit gửi đi đến
vô cùng (∞). Tuy nhiên, việc tăng số lượng bit gửi đi đồng nghĩa với thời gian
chạy mô phỏng sẽ lâu hơn. Vì vậy, để có được sự thỏa hiệp giữa độ chính xác
của kết quả mô phỏng và thời gian chạy mô phỏng, chúng ta mong muốn tìm
được số lượng bit cần gửi đi N tương ứng với giá trị BER mong muốn. Chúng
ta sẽ nghiên cứu vấn đề này thông qua trường hợp dưới đây.
Xét biến ngẫu nhiên
y =s+z (3.18)

trong đó s là một hằng số, z là một biến ngẫu nhiên Gauss với giá trị trung
bình m và phương sai σz2 = 1. Rõ ràng là y cũng là một biến ngẫu nhiên Gauss
với giá trị trung bình m và phương sai σy2 = 1.
Giả thiết là chúng ta cần ước lượng xác suất y < 0 cho một giá trị s cho
trước, tức là
P (s) = P (y < 0|s) (3.19)

bằng mô phỏng Monte-Carlo. Cụ thể là chúng ta sử dụng máy tính để tạo ra


một chuỗi các biến Gauss ngẫu nhiên, có kỳ vọng bằng 0 và phương sai bằng
1, độc lập thống kê và có phân bố giống nhau (i.d.d.), zi , i = 1, 2, ..., N. Nhờ
cộng zi với s, chúng ta có một chuỗi các biến ngẫu nhiên
yi = s + zi , i = 1, 2, ..., N. (3.20)
Từ các biến ngẫu nhiến tao ra bằng máy tính này, chúng ta mong muốn
ước lượng xác suất một biến ngẫu nhiên Gauss, với kỳ vọng m, m > 0 và
phương sai đơn vị, nhỏ hơn 0. Chúng ta làm phép kiểm tra xem yi < 0 và định
nghĩa một biến ngẫu nhiên mới xi như sau
0, nếu yi ≥ 0

xi = (3.21)
1, nếu yi < 0

Như vậy, ước lượng của xác suất P (y < 0|s) là


N
1 X
P̂ (s) = xi (3.22)
N i=1

Nói cách khác, ước lượng P (s) đơn giản là số các biến ngẫu nhiên yi , i =
1, 2, ..., N nhỏ hơn 0 chia cho tổng số N biến ngẫu nhiên.
Do ước lượng P̂ (s) là một hàm số của các biến ngẫu nhiên xi , i =
1, 2, ..., N, nên nó cũng là một biến ngẫu nhiên. Để xác định độ chính xác
của ước lượng này so với giá trị thật P (s), chúng ta tính giá trị kỳ vọng và
phương sai của ước lượng này. Đầu tiên là giá trị kỳ vọng của P̂ (s)
N
1 X
E[P̂ (s)] = E[xi ] (3.23)
N i=1
Nhưng do
E[xi ] = 0 · P (yi > 0) + 1 · P (yi < 0) (3.24)
3.10. Mô phỏng Monte-Carlo trong Truyền dẫn Số 43

nên
N
1 X
E[P̂ (s)] = P (yi < 0) (3.25)
N i=1
N
1 X
= P (s) = P (s) (3.26)
N i=1
Điều này chứng tỏ rằng giá trị kỳ vọng của ước lượng P̂ (s) đúng bằng giá trị
thật P (s).
Tiếp theo, chúng ta tính phương sai của ước lượng P̂ (s). Phương sai của
P̂ (s) được định nghĩa như sau
h i2
2
σP (s) = E P̂ (s) − E[P̂ (s)] (3.27)
h i
= E P̂ 2 (s) − P 2(s) (3.28)

Tuy nhiên,
" N N
#
1 XX
2
E[P̂ (s)] = E xi xj (3.29)
N 2 i=1 j=1
N N N
1 X 1 X X
= 2 2
E[xi ] + 2 E[xi xj ] (3.30)
N i=1 N i=1 i=1,i6=j

Và chúng ta có
E[x2i ] = 0 · P (yi ≥ 0) + 1 · P (yi < 0) (3.31)

E[xi xj ] = E[xi ] E[xj ] = P 2(s) (3.32)
Thay (3.31) và (3.32) vào (3.30), chúng ta thu được phương sai của ước
lượng như sau
1 N(N − 1) 2
E[P̂ 2 (s)] = P (s) + P (s) (3.33)
N N2
1
P (s)[1 − P (s)] (3.34)
N
Nói chung, khi ước lượng P (s) dựa vào mô phỏng chúng ta mong muốn độ
lệch chuẩn σP (s) là nhỏ so với P (s). Ví dụ, giả sử là chúng ta ước lượng một
xác suất nhỏ, P (s) = 10−3 . Chúng ta cần biết số mẫu cần thiết là bao nhiêu
để đảm bảo độ lệch chuẩn σP (s) là nhỏ so với P (s)? Tức là
 1/2
1
σP (s) = P (s)[1 − P (s)] ≪ P (s) (3.35)
N
hay, một cách tương đương,
σP2 (s) ≪ P 2 (s).
44 Chương 3. Lý thuyết mô phỏng

Vì vậy
1
N≫ (3.36)
P (s)

Ví dụ, nếu P (s) = 10−3 , thì N ≫ 1000. Nếu chúng ta chọn kích thước mẫu
N = 104 , thì trung bình, chúng ta sẽ có 10 giá trị của yi , i = 1, 2, ..., 104 sẽ nhỏ
hơn 0. Chúng ta coi kích thước mẫu này như giá trị nhỏ nhất để thu được ước
lượng tin cậy của P (s). Vì vậy, theo kinh nghiệm (as a rule of thumb) kích
thước mẫu cần thỏa mãn
10
N> (3.37)
P (s)

khi P (s) ≪ 1. Điều kiện này thường đủ để ước lượng xác suất lỗi của một hệ
thống truyền dẫn số chịu ảnh hưởng của tạp âm cộng và nhiễu khác.
Ví dụ: Trong một hệ thống thông tin số, tín hiệu thu được với mức điện
áp s, (s > 0), chịu ảnh hưởng của tạp âm Gauss cộng tính có kỳ vọng bằng 0
và phương sai đơn vị. Xác định số mẫu nhỏ nhất N cần thiết để xác định xác
suất P (y < 0|s) khi yi = s + zi , cho s = 3 và s = 5, dựa theo kinh nghiệm
(3.37).
Xác suất đúng ước lượng được bằng mô phỏng Monte-Carlo được tính
như sau:

s = 3 → P (3) = P (y < 0|s = 3) = 1.35 × 10−3 (3.38)


s = 5 → P (5) = P (y < 0|s = 5) = 2.87 × 10−7 (3.39)
Dựa trên kinh nghiệm (3.37), số mẫu tối thiểu cần thiết để ước lượng P (3) và
P (5) là

10
s=3→N = = 7047 (3.40)
P (3)
10
s=5→N = = 107 (3.41)
P (5)
MÔ PHỎNG CÁC HỆ THỐNG
THÔNG TIN VÔ TUYẾN SỬ
DỤNG MATLAB

Simulation of Radio Communication Systems using Matlab

Trần Xuân Nam


Bộ môn Thông tin, Khoa Vô tuyến điện tử
Đại học Kỹ thuật Lê Quí Đôn
100 Hoàng Quốc Việt, Cầu Giấy , Hà Nội, Việt Nam
Phone: (069)-515392 E-mail: namtx@lqdtu.edu.vn
Chương 4

Kênh thông tin vô tuyến

4.1 Kênh tạp âm AWGN


4.1.1 Tạp âm AWGN
Thuật ngữ tạp âm (noise) mô tả các tín hiệu điện không mong muốn xuất
hiện trong hệ thống. Sự xuất hiện của tạp âm làm giảm khả năng tách chính
xác các tín hiệu phát và, vì vậy, làm giảm tốc độ truyền dẫn thông tin. Tạp
âm được tạo ra từ nhiều nguồn khác nhau, nhưng có thể phân loại thành hai
nguồn chính là nhân tạo và tự nhiên [1]. Nguồn tạp âm nhân tạo xuất hiện từ
các nguồn đánh lủa, chuyển mạch hay các phát xạ điện từ. Tạp âm tự nhiên
gồm tạp âm xuất hiện trong các mạch hay linh kiện điện tử, xáo động khí
quyển hay các nguồn thiên hà.
Thiết kế tốt các mạch điện, thiết bị hay hệ thống cho phép loại bỏ hoặc
giảm nhỏ đáng kể ảnh hưởng của các tạp âm bằng cách nối đất, chọn vị trí
đặt thiết bị hay sử dụng các phương pháp lọc. Tuy nhiên, có một nguồn tạp
âm tự nhiên không thể loại bỏ là tạp âm nhiệt. Tạp âm nhiệt xuất hiện do
chuyển động nhiệt của các điện tử ở trong tất cả các linh kiện điện tử như
điện trở, dây dẫn hay các phần tử dẫn điện khác. Sự chuyển động ngẫu nhiên
và độc lập của vô hạn các điện tử tạo nên các đặc tính thống kê Gauss theo
định lý giới hạn trung tâm (central limit theorem). Vì vậy, tạp âm nhiệt có thể
mô tả như một quá trình ngẫu nhiên Gauss có giá trị trung bình bằng không
(zero mean). Một ví dụ về tạp âm Gauss với giá trị trung bình 0 và phương
sai σ 2 = 1 được miêu tả ở Hình vẽ 4.1.
Hàm mật độ xác suất (PDF: Probability Density Function) của một quá
trình ngẫu nhiên Gauss n(t) được biểu diễn như sau

n2
 
1
p(n) = √ exp − 2 (4.1)
σ 2π 2σ
Hình vẽ 4.2 biểu diễn hàm PDF Gauss với giá trị trung bình bằng không
và độ lệch chuẩn (standard deviation) σ = 1.
Một đặc tính quan trọng của tạp âm Gauss có giá trị trung bình bằng
không là phương sai σ 2 bằng trung bình bình phương của n, tức là, σ 2 =

45
46 Chương 4. Kênh thông tin vô tuyến

1
n(t)

−1

−2

−3

−4
0 100 200 300 400 500 600 700 800 900 1000
t

Hình 4.1: Một ví dụ về tạp âm Gauss với giá trị trung bình 0 và phương sai σ 2 = 1.

E{n2 (t)}.

0.4

0.35

0.3

σ=1
0.25 0.242

0.2

0.15

0.1

0.05

0
−5 −4 −3 −2 −1 0 1 2 3 4 5

Hình 4.2: Hàm mật độ xác suất Gauss với σ 2 = 1.

Tạp âm trắng : một đặc tính quan trọng của tạp âm nhiệt là mật độ
phổ tần số của nó như nhau tại mọi tần số. Tức là, nó là nguồn tạp âm phát
4.1. Kênh tạp âm AWGN 47

ra một lượng công suất như nhau trên một đơn vị băng tần tại tất cả các tần
số bằng
N0
Gn (f ) = [W/Hz] (4.2)
2
như mô tả ở Hình vẽ 4.3(a). Hệ số 2 trong công thức trên chỉ thị rằng Gn (f )
là một hàm mật độ phổ công suất 2 phía (two-sided power spectral density
function) còn N0 thì được gọi là mật độ phổ công suất tạp âm. Tạp âm với
công suất có mật độ phổ đều như vậy được gọi là tạp âm trắng (white noise).

G n( f ) R n( t )

N 0/2
N 0/2

f t
(a) MËt ®é phæ c«ng suÊt t¹p ©m tr¾ng (b) Hµm tù t− ¬ng quan

Hình 4.3: Mật độ phổ công suất và hàm tự tương quan của tạp âm trắng.

Hàm tự tương quan của tạp âm trắng là phép biến đổi Fourier ngược của
mật độ phổ công suất tạp âm cho bởi
Z ∞
−1
Rn (τ ) = F {Gn (f )} = Gn (f )ej2πf τ df (4.3)
−∞
N0
= δ(τ ) (4.4)
2
như biểu diễn ở Hình vẽ 4.3(b). Tức là, hàm tự tương quan của tạp âm trắng
là một hàm xung delta tại τ = 0 được nhân trọng số với N0 /2. Để ý rằng
Rn (τ ) = 0 với mọi τ 6= 0 nên bất kỳ hai mẫu khác nhau nào của tạp âm trắng
đều không tương quan với nhau bất kể chúng gần nhau đến mức nào. Do tạp
âm nhiệt được cộng với tín hiệu nên nó còn được gọi là tạp âm cộng (additive
noise). Tổng hợp các đặc tính của tạp âm nhiệt ở trên chúng ta có thể tóm
tắt lại rằng tạp âm nhiệt trong các hệ thống thông tin là tạp âm Gauss trắng
cộng (AWGN: Additive White Gaussian Noise).

4.1.2 Mô phỏng tạp âm AWGN


Trong MATLAB, chúng ta có thể sử dụng hàm có sẵn randn để mô phỏng
tạp âm AWGN. Hàm randn cho phép tạo ra các biến ngẫu nhiên theo phân
bố chuẩn chính tắc (standard normal distribution) với giá trị trung bình 0,
phương sai 1 và độ lệch chuẩn 1.
48 Chương 4. Kênh thông tin vô tuyến

0.45
Theory
0.4 Simulated

0.35

0.3

0.25
p(n)

0.2

0.15

0.1

0.05

0
−5 −4 −3 −2 −1 0 1 2 3 4 5
n

Hình 4.4: Hàm phân bố của tạp âm AWGN.

Hình 4.4 biểu diễn hàm pdf của tạp âm AWGN tạo nên bằng mô phỏng
sử dụng hàm randn sử dụng chương trình Prog. 4.1.
Matlab Program 4.1 SimAWGN.m
%% Script to describe AWGN
% Plot time version of AWGN
N=10^6;
t=1:N;
n=randn(1,N);
plot(t,n)
xlabel(’t’)
ylabel(’n(t)’)
axis([0 1000 -4 4])

% Plot pfd of the normal distribution by theory


step=0.1;
x=-5:step:5;
sigma=1;
px=1/sqrt(2*pi)*exp(-1/2*x.^2/sigma^2);
figure(2)
plot(x,px)
%xlabel(’n’)
ylabel(’p(n)’)
hold on

% Plot pdf of simulated AWGN


z=randn(1,N);
h=hist(z,x);
plot(x,h/N/step,’o’);
4.2. Kênh pha-đinh 49

legend(’Theory’,’Simulated’)

%hold on
%pdfplot(z,100)

Do phân bố chuẩn chính tắc là một trường hợp đặc biệt của phân bố
Gauss trong đó giá trị trung bình bằng 0 và phương sai bằng 1, nên để mô
phỏng tạp√âm AWGN với phương sai bằng N0 chúng ta chỉ việc nhân hàm
randn với N0 , tức là độ lệch chuẩn mong muốn. Do tạp âm mô phỏng là một
biến số phức gồm hai thành phần thực và ảo, nên công suất tạp âm là tổng
công suất của từng thành phần. Để tạo được tạp âm phức với công suất N0
chúng ta cần chuẩn hóa công suất của mỗi thành phần (thực và ảo) bằng 1/2.
Ví dụ, để tạo được 1000 dấu tạp âm phức có công suất N0 chúng ta làm như
sau:
n = sqrt(N0 /2) ∗ (randn(1, 1000) + j ∗ randn(1, 1000))

4.2 Kênh pha-đinh


Hình vẽ 4.5 mô tả một đường liên lạc giữa anten trạm gốc (BS: Base Station)
và anten trạm di động (MS: Mobile Station). Xung quanh MS có nhiều vật
phản xạ như nhà, cây, đồi núi, ...trong khi xung quanh BS lại có rất ít hoặc
không có các vật phản xạ do anten trạm BS được đặt trên cao. Các vật phản
xạ này được gọi chung là vật tán xạ. Liên lạc giữa BS và MS thông qua nhiều
đường (path), mỗi đường chịu một hay nhiều phản xạ, và tín hiệu đến máy
thu là tín hiệu tổng hợp từ tất cả các đường này. Do các đường có biên độ,
pha, và độ trễ khác nhau, nên tín hiệu truyền qua các đường có thể kết hợp với
nhau một cách có lợi hoặc không có lợi, tạo nên một sóng đứng ngẫu nhiên.
Hiện tượng này được gọi là truyền sóng pha-đinh đa đường. Kênh truyền sóng
kiểu này được gọi là kênh pha-đinh đa đường.

Hình 4.5: Mô hình truyền sóng đa đường.


50 Chương 4. Kênh thông tin vô tuyến

4.2.1 Mô hình toán học của pha-đinh


Tín hiệu vô tuyến luôn là tín hiệu băng thông (bandpass) và có băng tần hẹp
(narrowband). Tín hiệu băng thông phát đi tại tần số sóng mang fc với đường
bao phức s(t) 3 được biểu diễn như sau
s̃(t) = ℜ s(t)ej2πfc t (4.5)
 

trong đó ℜ[.] biểu diễn phép toán lấy phần thực.


Đặt độ dài của đường l là xl và ký hiệu c là tốc độ ánh sáng (cũng chính
là tốc độ lan truyền của sóng điện từ trong không khí), thì thời gian truyền
sóng từ BS tới MS là xl /c. Giả sử độ suy hao của đường l là al , thì tín hiệu
thu được tại MS không tính đến tạp âm là
X xl 
r̃(t) = al s̃ t − . (4.6)
l
c
Thế (4.5) vào (4.6) chúng ta có
X h  xl  j2πfc (t− xl ) i
r̃(t) = al ℜ s t − e c (4.7)
l
c
" #
X  xl  j2πfc (t− xl )
=ℜ al s t − e c (4.8)
l
c
Viết lại r̃(t) ở dạng
" #
 X xl  −j2πfc xl ej2πfc t
r̃(t) = ℜ al s t − e c (4.9)
c
 l j2πfc t 
= ℜ r(t)e (4.10)
trong đó thành phần đường bao tín hiệu thu là tổng của nhiều thành phần tín
hiệu có độ trễ, suy hao và dịch pha khác nhau
X
r(t) = al s (t − τl ) e−j2πfc τl (4.11)
l
còn τl = xl
c
là thời gian trễ của đường truyền thứ l.

4.2.2 Sự ảnh hưởng của chuyển động của MS

Hình 4.6: Sự lan truyền của đường l tới một trạm MS.
3 s(t) còn được gọi là tín hiệu băng tần gốc tương đương
4.2. Kênh pha-đinh 51

Hình vẽ 4.6 minh hoạ sự chuyển động của một trạm MS theo trục x trong mặt
phẳng x − y với vận tốc v. Ở đây, chúng ta đã giả thiết rằng ăng ten phát được
phân cực một cách phù hợp sao cho vector điện trường song song với trục z.
Khi MS chuyển động với tốc độ v, độ dài đường truyền sóng thứ l thay đổi
một khoảng là
x′l = xl − ∆xl (4.12)
Nếu góc tới của tia thứ l so với hướng chuyển động là φl , chúng ta có
∆xl ≈ vt cos(φl ). (4.13)
Như vậy, tín hiệu thu được khi không có tạp âm là
" #
X j2πfc  t− xl −∆xl   x l − ∆x l
r̃(t) = ℜ al e c
s t− (4.14)
l
c
"  #
X xl v cos(φl ) x l v cos(φ l )t
=ℜ al ej2πfc t e−j2πfc c ej2πfc c t s t − + (4.15)
l
c c
Thông thường do tốc độ của MS rất nhỏ so với vận tốc truyền sóng nên ta có
v/c ≈ 0 nên
" #
X xl v cos(φl )
 xl

r̃(t) = ℜ al ej2πfc t e−j2πfc c ej2πfc c t s t − . (4.16)
l
c
Đặt
fc
fD = v (4.17)
c
là tần số Doppler lớn nhất, sau một số phép biến đổi toán học thuần tuý chúng
ta có
" #
X
r̃(t) = ℜ al ej2πfD cos(φl )τl ej2π[fc +fD cos(φl )](t−τl ) s (t − τl ) (4.18)
l

Nếu đặt
αl = al ej2πfD cos(φl )τl (4.19)

fD,l = fD cos(φl ) (4.20)
ta có thể viết lại r̃(t) ở dạng rút gọn sau
" #
X
r̃(t) = ℜ αl ej2π(fc +fD,l )(t−τl )
s (t − τl ) (4.21)
l

trong đó αl và fD,l tương ứng là hệ số suy hao và tần số Doppler của tia l
dưới tác động của sự chuyển động của MS. Từ công thức (4.21) chúng ta có
thể thấy rằng vật tán xạ thứ l đã dịch tín hiệu phát đi τl về thời gian và fD,l
về tần số.
52 Chương 4. Kênh thông tin vô tuyến

Ta hoàn toàn có thể viết r̃(t) dưới dạng tín hiệu băng thông như trong
biểu thức (4.10) trong đó đường bao phức của tín hiệu thu được có dạng
X
r(t) = αl e−jϕl(t) s (t − τl ) (4.22)
l

với
ϕl (t) = 2π[(fc + fD,l )τl − fD,l t] (4.23)
là góc pha của đường tín hiệu thứ l. Từ biểu thức (4.22), ta có thể mô hình
hoá kênh truyền bằng một bộ lọc tuyến tính biến đổi theo thời gian (linear
time-variant filter) với đáp ứng xung được cho bởi:
X
g(t, τ ) = αl e−jϕl(t) δ(τ − τl ) (4.24)
l

trong đó δ(.) là hàm delta dirac.

4.2.3 Hậu quả của truyền sóng pha-đinh đa đường


Hậu quả của truyền sóng pha-đinh đa đường là [2]
• Pha-đinh hay chọn lọc theo thời gian(time selective fading) gắn với
Doppler spread tạo ra do chuyển động của MS.
• Trải trễ (delay spread) hay chọn lọc theo tần số
Doppler spread . Khi MS chuyển động qua các vùng ngẫu nhiên, tín
hiệu thu được tại MS thay đổi về cường độ và pha tuỳ thuộc vào vận tốc
chuyển động của MS. Xét trường hợp sự sai khác giữa các thời gian trễ của
các đường tín hiệu τm − τn đủ nhỏ so với độ rộng của một ký hiệu được điều
biến (mođulated symbol duration). Khi đó các τl trong (4.24) là xẫp xỉ bằng
nhau và bằng τ̂ . Trong trường hợp này, đáp ứng xung g(t, τ ) có dạng
g(t, τ ) = g(t)δ(τ − τ̂ ) (4.25)
và tín hiệu thu được bằng
Z +∞
r(t) = g(t, τ )s(t − τ )dτ (4.26)
−∞
Z +∞
= g(t)δ(τ − τ̂ )s(t − τ )dτ (4.27)
−∞
= g(t)s(t − τ̂ ) (4.28)
Giả sử băng tần của tín hiệu là đủ nhỏ (tốc độ truyền tin đủ nhỏ) sao cho
thời gian trễ τ̂ không làm ảnh hưởng tới tín hiệu, khi đó s(t − τ̂ ) ≈ s(t), và
tín hiệu thu được trở thành
r(t) = g(t)s(t) (4.29)
với độ tăng ích kênh phức (complex channel gain) g(t) = l αl e−jϕl (t) . Nhớ
P

rằng do tần số sóng mang fc có giá trị rất lớn nên dù sự khác biệt giữa các
4.2. Kênh pha-đinh 53

thời gian trễ là nhỏ thì giữa các góc pha ϕl (t) vẫn có sự khác biệt lớn. Kết
quả là làm cho độ tăng ích đường truyền g(t) biến đổi theo thời gian. Điều
này có nghĩa là tín hiệu thu được vẫn trải qua hiện tượng pha đinh. Hơn nữa,
do g(t) thay đổi nhanh hơn s(t) nên tín hiệu thu bị trải (spread) trên thang
tần số. Hiện tượng này còn được gọi là Doppler spread. Cụ thể là, một âm
đơn s(t) = A sẽ bị trải thành vài thành phần ở băng tần [−fD , fD ], mỗi thành
phần tương ứng với một vật tán xạ.
Thực hiện biến đổi Fourier đối với đáp ứng xung g(t, τ ), ta thu được hàm
truyền đạt
Z +∞
G(t, f ) = g(t, τ )e−j2πf τ dτ (4.30)
−∞
Z +∞
= g(t)δ(τ − τ̂ )e−j2πf τ dτ (4.31)
−∞
= g(t)e−j2πf τ̂ (4.32)
Do biên độ của hàm truyền đạt bằng |G(t, f )| = g(t) với f bất kỳ, tất cả các
thành phần tần số trong tín hiệu thu được đều có cùng một độ tăng ích là
g(t). Trong trường hợp này ta nói rằng tín hiệu thu trải qua hiện tượng pha
đinh phẳng (flat fading). Và kênh truyền như thế này được gọi là kênh pha
đinh phẳng.
Delay spread . Xét trường hợp các tần số Doppler fD,l rất nhỏ tương
ứng với MS đứng im. Khi đó các góc pha ϕl (t) trong (4.23) xấp xỉ bằng
ϕl (t) ≈ 2πfc τl = ψl và là một hằng số. Như vậy, công thức (4.24) có thể được
viết lại như sau
X
g(t, τ ) = gl δ(τ − τl ) = gs (τ ) (4.33)
l

với gl = αl e−jψl không phụ thuộc thời gian.


Từ biểu thức (4.33), ta thấy rằng với giả thiết fD,l rất nhỏ kênh truyền
trở thành một bộ lọc tuyến tính bất biến (linear time-invariant filter) với đáp
ứng xung có chiều dài hữu hạn (FIR: Finite Impulse Response) gs (τ ).

Hình 4.7: Đáp ứng xung của một bộ lọc FIR.


54 Chương 4. Kênh thông tin vô tuyến

Hình vẽ 4.7 minh hoạ đáp ứng xung của một bộ lọc FIR tuyến tính bất
biến. Giải τD được gọi là trải trễ (delay spread). Chúng ta có thể thấy do độ
dài các đường truyền sóng khác nhau nên đã làm cho tín hiệu bị dịch chuyển
trễ.
Thực hiện biến đổi Fourier lên đáp ứng xung ở (4.33) chúng ta có đáp
ứng tần số
Z +∞
G(f ) = gs (τ )e−j2πf τ dτ (4.34)
−∞
X
= gl e−j2πf τl . (4.35)
l

Từ đây chúng ta thấy rằng tại các tần số khác nhau thì biên độ |G(f )| có giá
trị khác nhau. Kênh truyền dẫn trong trường hợp này được gọi là kênh pha
đinh chọn lọc theo tần số (frequency selective fading).

4.3 Kênh pha-đinh Rayleigh


Từ các công thức (4.24) và (4.25), chúng ta viết lại được độ tăng ích kênh
trong trường hợp MS chuyển động như sau
X
g(t) = αl e−jϕl(t) . (4.36)
l

Trong trường hợp không tồn tại tia trực tiếp (LOS: Line Of Sight) giữa BS và
MS và tín hiệu thu được là tổng hợp của một số lượng lớn các đường tín hiệu,
theo luật số lớn ta có thể coi g(t) = gI (t) + jgQ (t), trong đó gI (t) và gQ (t)
là các số thực với mọi t, là một quá trình ngẫu nhiên Gauss phức dừng rộng
(wide-sense stationary complex Gaussian random process) [3]. Trong một số
môi trường tán xạ, gI (t) và gQ (t) là các biến ngẫu nhiên Gauss độc lập với
nhau, có giá trị trung bình bằng không và cùng phương sai σg2 tại bất kỳ thời
điểm t nào, tức là
E{gI (t)} = E{gQ (t)} = 0 (4.37)

E{gI (t)2 } = E{gQ (t)2 } = σg2 (4.38)
trong đó E{a} là trung bình thống kê hay trung bình tập hợp của một biến
ngẫu nhiên a.
Sử dụng công thức về phân bố Gauss ở (4.1) chúng ta có

gI2
 
1
p(gI ) = √exp − 2 (4.39)
σg 2π 2σg
2 
gQ

1
p(gQ ) = √ exp − 2 (4.40)
σg 2π 2σg
4.3. Kênh pha-đinh Rayleigh 55

0.7

0.6

0.5

0.4
p(α)

0.3

0.2

0.1

0
0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5
α

Hình 4.8: Hàm phân bố Rayleigh với σ 2 = 1.

Do gI (t) và gQ (t) là các quá trình độc lập nên chúng ta có phân bố
|g|2
 
1
p(g) = p(gI )p(gQ ) = 2 exp − 2 (4.41)
σg 2π 2σg
với
|g(t)|2 = gI2 (t) + gQ
2
(t). (4.42)
Chuyển g(t) sang hệ toạ độ cực g(t) = α(t)ejθ(t) , với α(t) = |g(t)| là biên
độ của g(t), chúng ta có pdf kết hợp [2]
α2
 
α
p(α, θ) = 2 exp − 2 . (4.43)
σg 2π 2σg
Do α và θ là các biến độc lập nên chúng ta có thể viết
α2
 
α 1
p(α, θ) = p(α) · p(θ) = 2 exp − 2 · (4.44)
σg 2σg 2π
hay
α2
 
α
p(α) = 2 exp − 2 , α ≥ 0 (4.45)
σg 2σg
1
p(θ) = , −π ≤ θ < π (4.46)

Tức là, pdf của biên độ α(t) là phân bố Rayleigh, và pha-đinh kiểu này
được gọi là pha-đinh Rayleigh. Hình vẽ 4.8 mô tả phân bố Rayleigh với σ = 1.
56 Chương 4. Kênh thông tin vô tuyến

4.4 Kênh pha-đinh Rice

2.5
K = 0
K = 5
K = 10
K = 18

1.5
p(α)

0.5

0
0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5
α

Hình 4.9: Hàm phân bố Rice cho các giá trị khác nhau của K với Ap = 1.

Trong trường hợp môi trường tán xạ tồn tại tia truyền thẳng, gI (t) và
gQ (t) là các biến ngẫu nhiên Gauss độc lập với nhau, có giá trị trung bình
bằng µI (t) và µQ (t) khác 0. Nếu ta vẫn giả thiết gI (t) và gQ (t) có cùng phương
sai σg2 tại bất kỳ thời điểm t nào,thì biên độ của g(t), tức là α(t), tại một thời
điểm t bất kỳ sẽ có phân bố Rice được cho bởi [3]
α2 + χ2
   
α αχ
p(α) = 2 exp − 2
I0 , α≥0 (4.47)
σg 2σg σg2
trong đó
χ = µ2I (t) + µ2Q (t) (4.48)
được gọi là tham số lệch tâm (non-centrality parameter), và I0 (x) là hàm số
Bessel sửa đổi bậc 0 loại 1 (zero order modified Bessel function of the first
kind). Dạng pha đinh này được gọi là pha đinh Rice.
Một số mô hình kênh Rice đã được đề xuất trong thực tế giả thiết rằng
µI (t) và µQ (t) là các hằng số khác không [4, 5]. Một phương pháp có nhiều ưu
điểm hơn đã được đề xuất bởi Aulin [6]. Trong phương pháp này các giá trị
trung bình µI (t) và µQ (t) tương ứng với các thành phần đồng pha (in phase)
và trực giao (quadrature) của tia LOS được mô hình là các tham số xác định
4.5. Mô phỏng pha đinh Rayleigh và pha đinh Rice 57

biến đổi theo thời gian (deterministic time-varying) như sau [3, 6]
µI (t) = χ cos(2πfD cos(φ0 )t + θ0 ) (4.49)
µQ (t) = χ sin(2πfD cos(φ0 )t + θ0 ) (4.50)
trong đó fD cos(φ0 ) và θ0 là tần số Doppler và góc lệch pha ngẫu nhiên ứng
với tia LOS.
Một thông số quan trọng của kênh pha đinh Rice là hệ số Rice (Rice
factor), K, được định nghĩa là tỉ số giữa công suất của tia LOS χ2 và công
χ2
suất của các thành phần tán xạ 2σg2 , tức là K = 2σ 2 . Ta thấy rằng, khi K = 0
g

thì kênh truyền thuần tuý là kênh Rayleigh, và khi K = ∞ kênh truyền sẽ
không còn hiện tượng pha đinh.
Sử dụng hệ số Rice, ta có thể viết
KAp Ap
χ2 = , 2σg2 = , (4.51)
K +1 K +1
trong đó Ap = E{α2} = χ2 + 2σg2 là công suất trung bình của g(t). Khi đó,
hàm phân bố Rice trong (4.47) được viết lại như sau
s !
2
 
2α(K + 1) (K + 1)α K(K + 1)
p(α) = exp −K − I0 2α , α≥0
Ap Ap Ap
(4.52)
Hình vẽ 4.9 minh hoạ phân bố Rice cho một số giá trị khác nhau của K.
Trường hợp K = 0 chính là hàm phân bố Rayleigh. Từ hình vẽ ta thấy rằng
khi p
K càng lớn thì bề rộng của p(α) càng có xu hướng co hẹp lại quanh giá
trị Ap = 1. Điều đó chứng tỏ rằng khi K càng lớn thì tính ngẫu nhiên của
α càng giảm.

4.5 Mô phỏng pha đinh Rayleigh và pha đinh Rice


Các chương trình mô phỏng kênh thông tin vô tuyến được sử dụng rất nhiều
trong các phòng nghiên cứu vì chúng cho phép ta khảo sát và đánh giá hệ thống
một cách thuận tiện với chi phí rất thấp so với việc đo thử trong các môi trường
thực tế. Một số phương pháp xây dựng các chương trình mô phỏng pha đinh
đã được đề xuất như phương pháp tổng của các tín hiệu hình sin (SOS: sum
of sinusoids method) [7, 8, 9], phương pháp lọc nhiễu Gauss (Gaussian noise
filtering method) [3], phương pháp biến đổi Fourier rời rạc (IDFT method)
[10], vân vân. Trong cuốn sách này chúng tôi trình bày phương pháp được
sử dụng rộng rãi trong mô phỏng pha đinh Rayleigh và pha đinh Rice, đó là
phương pháp tổng của các tín hiệu sin.

4.5.1 Mô phỏng pha đinh Rayleigh


Để đơn giản ta giả thiết tín hiệu phát đi là s(t) = 1 và số lượng tia tới MS là
L, khi đó từ công thức (4.22) ta có thể viết đường bao phức của tín hiệu như
58 Chương 4. Kênh thông tin vô tuyến

Hình 4.10: Đường bao tín hiệu bị pha đinh Rayleigh, số lượng tia L = 35, tần số Doppler
cực đại fD = 100 Hz.

sau
L
X
r(t) = αl e−jϕl (t) (4.53)
l=1
XL
= al ej2πfD,lτl e−jϕl (t) (4.54)
l=1

Sử dụng ϕl (t) ở công thức (4.23), sau một số biến đổi toán học, ta có
L
X
r(t) = al ej[2πfD cos(φl )t+θl ] (4.55)
l=1

với θl = −2πfc τl là góc pha ban đầu của tia tới thứ l. Các góc pha θl được giả
thiết là độc lập thống kê với nhau và có phân bố đều trong khoảng [0, 2π). Để
thuận tiện, ta thực hiện chuẩn hoá r(t) sao cho công suất của nó bằng 1, tức
là ta chọn các hệ số al = √1L . Lúc này ta có
L
1 X j[2πfD cos(φl )t+θl ]
r(t) = √ e (4.56)
L l=1
4.5. Mô phỏng pha đinh Rayleigh và pha đinh Rice 59

Theo mô hình của Jakes thì tia thứ l đến đều từ tất cả các hướng nên nếu
chọn ψ0 là một giá trị ngẫu nhiên trong khoảng [0, 2π) thì
l−1
φl = ψ0 + 2π , với l = 1, 2, . . . , L (4.57)
L
Thuật toán mô phỏng được tổng kết như sau.

Thuật toán mô phỏng pha đinh Rayleigh


Thuật toán này dựa trên phương pháp của Jakes được mô tả như sau

• Chọn L lẻ

• Tạo ψ0 ngẫu nhiên trong khoảng [0, 2π)

• For l = 1 to L

1. Tạo θl ngẫu nhiên trong khoảng [0, 2π)


2. Tính
φl = ψ0 + 2π l−1
L

3. Tính rl (t) = ej[θl +2πfD cos(φl )t]

• End
L
1 X
• Tính r(t) = √ rl (t)
L l=1

Thuật toán này tuy dễ hiểu và dễ thực hiện nhưng số lượng phép tính sẽ
tăng lên đáng kể nếu ta chọn L có giá trị lớn. Trong [7] Jakes đã trình bày một
phương pháp nhằm làm giảm số lượng các thành phần dao động tần số thấp
trong (4.56), nhờ đó giảm được số lượng phép tính. Jakes đã chọn số lượng tia
L thoả mãn điều kiện
L = 4M + 2 (4.58)
Khi đó số lượng thành phần tần số thấp trong (4.56) sẽ giảm từ L xuống còn
M + 1. Trong [8], Pop và các cộng sự cũng đã đề xuất phương pháp nhằm
khắc phục những nhược điểm trong phương pháp giảm số lượng thành phần
dao động tần thấp của Jakes. Bạn đọc có thể tham khảo [7] và [8] để hiểu rõ
hơn về các phương pháp này.
Hình vẽ 4.10 minh hoạ một đường bao bị pha đinh Rayleigh điển hình
được tạo ra bởi chương trình mô phỏng pha đinh Rayleigh trình bày ở trên.
Trong chương trình mô phỏng, số lượng tia đến được chọn là L = 35 và tần
số Doppler cực đại fD = 100 Hz.
60 Chương 4. Kênh thông tin vô tuyến

Hình 4.11: Đường bao tín hiệu bị pha đinh Rice, số lượng tia L = 35, tần số Doppler cực
đại fD = 100 Hz, hệ số Rice K = 5 và K = 10.

4.5.2 Mô phỏng pha đinh Rice


Từ thuật toán mô phỏng pha đinh Rayleigh, ta dễ dàng xây dựng được thuật
toán mô phỏng pha đinh Rice dựa trên kết quả phân tích trình bày ở trên.
Một cách cụ thể hơn, pha đinh Rice sẽ bao gồm 2 thành phần: một thành
phần sinh ra do các tia tán xạ và một thành phần sinh ra do tia LOS. Để mô
phỏng hai thành phần này, ta coi thành phần thứ nhất có phân bố Rayleigh
Ap
và có công suất 2σg2 = K+1 (xem công thức (4.51)). Thành phần thứ hai là
thành phần có tham số xác định theo thời gian được cho bởi các biểu thức
(4.49) và (4.50). Thành phần này có công suất χ2 = A pK
K+1
. Rõ ràng tổng công
suất của hai thành phần này là χ + 2σg = Ap .
2 2

Trong chương trình mô phỏng này, ta chọn Ap = 1. Thành phần tán xạ


thứ nhất được chọn là r(t) trong bởi biểu thức (4.56). Tuy nhiên, để thành
phần này có công suất là 2σg2 = K+1
1
, ta cần phải chuẩn hoá nó bằng cách chia
q
r(t) cho K+1 1
. Thành phần LOS được cho bởi biểu thức
r(t)LOS = µI + jµQ (4.59)
Kết quả là đường bao tín hiệu tổng hợp bị pha đinh Rice được cho bởi [9]
√ √
r(t)RICE = [r(t) + Kej[2πfD cos(φ0 )t+θ0 ] ]/ K + 1 (4.60)
Thuật toán mô phỏng được mô tả như sau.
4.6. Kết luận 61

Thuật toán mô phỏng pha đinh Rice


• Chọn L lẻ
• Gán cho φ0 một giá trị bất kỳ trong khoảng [0, 2π)
• Tạo θ0 ngẫu nhiên trong khoảng [0, 2π)
• Gán cho hệ số Rice K giá trị mong muốn
• Tạo ψ0 ngẫu nhiên trong khoảng [0, 2π)
• For l = 1 to L
1. Tạo θl ngẫu nhiên trong khoảng [0, 2π)
2. Tính
φl = ψ0 + 2π l−1
L
3. Tính rl (t) = ej[θl +2πfD cos(φl )t]
• End
L
1 X
• Tính r(t) = √ rl (t)
L l=1
√ √
• Tính r(t)RICE = [r(t) + Kej[2πfD cos(φ0 )t+θ0 ] ]/ K + 1
Hình vẽ 4.11 minh hoạ các đường bao bị pha đinh Rice được tạo ra bởi
chương trình mô phỏng pha đinh Rice trình bày ở trên. Trong chương trình
mô phỏng, số lượng tia đến được chọn để mô phỏng thành phần tán xạ là
L = 35, tần số Doppler cực đại fD = 100 Hz, hệ số Rice K = 5 và K = 10.
Từ các hình vẽ 4.10 và 4.11 ta thấy rõ ràng là khi hệ số Rice tăng lên, tín hiệu
càng ít chịu ảnh hưởng của hiện tượng pha đinh.
Để đánh giá tính chính xác của các chương trình mô phỏng trên. Chúng
ta cần phải đánh giá những đặc tính thống kê của các mô hình trên, đặc biệt
là các đại lượng thống kê bậc nhất (tức là giá trị trung bình) và đại lượng
thống kê bậc hai (tức là các hàm tự tương quan và tương quan chéo). Tuy
nhiên trong phạm vi quyển sách này chúng tôi sẽ không đi sau vào đánh giá
các đặc tính thống kê này. Bạn đọc có thể tham khảo những nội dung này
trong [3, 8, 9].

4.6 Kết luận


Trong chương này chúng ta đã xem xét một số mô hình kênh thông tin cơ bản
được sử dụng trong mô phỏng đánh giá chất lượng của các hệ thống thông tin
vô tuyến. Thông qua các kiến thức của chương này, chúng ta biết được các
kiến thức về kênh AWGN, kênh pha đinh Rayleigh, kênh pha đinh Rice cũng
như các thuật toán mô phỏng các loại kênh truyền này. Những kiến thức này
sẽ giúp ích cho bạn đọc khi muốn thực hiện mô phỏng các dạng kênh truyền
khác nhau trong thông tin vô tuyến.
62 Chương 4. Kênh thông tin vô tuyến

Bài tập
1. Giả sử độ rộng xung là Ts , công thức mô phỏng pha-đinh Rayleigh sử
dụng mô hình của Jakes theo thời gian rời rạc là
L−1
1 X j[θl+2π cos(φl )fD Ts n]
gn = √ e . (4.61)
L l=0
với fD Ts được gọi là tần số Doppler chuẩn hoá (normalized Dopller
frequency). Cho fD Ts = 0.001, tạo 104 mẫu kênh pha-đinh Rayleigh. Sử
dụng hai hàm có sẵn hist và abs, vẽ phân bố biên độ của kênh pha đinh
tạo ra.

Tài liệu tham khảo


[1] B. Sklar, Digital Communicatons Fundamentals and Applicatons. Pren-
tice Hall, 1988.
[2] J. K. Cavers, Mobile Channel Characteristics. Kluwer Academic Pub-
lishers, 2000.
[3] G. L. Stüber, Principles of Mobile Communication. Kluwer Academic
Publishers, 2001.
[4] S. O. Rice, “Statistical properties of a sine wave plus random noise,” Bell
Syst. Tech. J., vol. 27, pp. 109–157, Jan. 1948.
[5] K. W. Yip, “Discrete time model for digital communications over a
frequency selective rician fading wssus channel,” IEE. Proc. Commun.,
vol. 15, pp. 34–42, Feb. 1996.
[6] T. Aulin, “A modified model for the fading signal at a mobile radio chan-
nel,” IEEE Trans. Veh. Technol., vol. 28, pp. 182–203, 1979.
[7] W. C. Jakes, Microwave Mobile Communications. Piscataway, NJ: IEEE
Press, 1994.
[8] M. F. Pop and N. C. Beaulieu, “Limitations of sum of sinusoids fading
channel simulators,” IEEE. Trans. Commun., vol. 49, pp. 699–708, Apr.
2001.
[9] C. Xiao and Y. R. Zheng, “A statistic simulation model for mobile radio
fading channels,” Proc. WCNC, vol. 1, pp. 144–149, Mar. 2003.
[10] D. J. Young and N. C. Beaulieu, “The generation of correlated rayleigh
random variates by inverse fourier transform,” IEEE. Trans. Commun.,
vol. 48, pp. 1114–1127, Jul. 2000.
MÔ PHỎNG CÁC HỆ THỐNG
THÔNG TIN VÔ TUYẾN SỬ
DỤNG MATLAB

Simulation of Radio Communication Systems using Matlab

Trần Xuân Nam


Bộ môn Thông tin, Khoa Vô tuyến điện tử
Đại học Kỹ thuật Lê Quí Đôn
100 Hoàng Quốc Việt, Cầu Giấy , Hà Nội, Việt Nam
Phone: (069)-515392 E-mail: namtx@lqdtu.edu.vn
Chương 5

Mô phỏng Monte-Carlo
một số hệ thống vô tuyến
điển hình

5.1 Mô phỏng truyền dẫn BPSK qua kênh AWGN


Hình vẽ 5.1 mô tả một sơ đồ mô phỏng đơn giản trên kênh AWGN sử dụng
điều chế BPSK.

Data Source Modulator y k= s k+ n k Detector s^k


bk
{0,1}
sk
+ s^k

AWGN
nk s^k

sk Error Detection
&
BER Calculation

Hình 5.1: Sơ đồ mô phỏng truyền dẫn BPSK trên kênh AWGN.

Tại máy phát dữ liệu phát bk ∈ {0, 1} được tạo ra từ một nguồn gián đoạn
không không nhớ (DMS:Discrete Memoryless Source). Trong Matlab chuỗi dữ
liệu phát bk có thể được tạo nhờ sử dụng hàm có sẵn rand hoặc randn như
sau
bk = rand(1, N) > 0.5

hoặc
bk = randn(1, N) > 0
trong đó N là số mẫu cần tạo.
Chuỗi dữ liệu bk sau đó được điều chế BPSK. Phép điều chế BPSK ở đây
có thể coi tương đương với phép ánh xạ
 √
sk = √Es nếu bk = 0 (5.1)
− Es nếu bk = 1

63
64 Chương 5. Mô phỏng Monte-Carlo một số hệ thống vô tuyến điển hình
√ √
tạo nên chuỗi dấu phát sk ∈ {+ Es , − Es }. Trong trường hợp điều chế
BPSK, Es = Eb = 1 nên sk ∈ {+1, −1}. Do đó phép ánh xạ bk → sk trong
điều chế BPSK có được thực hiện bằng Matlab như sau
sk = 1 − 2 ∗ bk
Các dấu phát sk truyền qua kênh truyền và chịu ảnh hưởng của tạp âm
AWGN. Do ảnh hưởng của AWGN, tín hiệu thu yk là xếp chồng (cộng) của
các dấu phát sk và các dấu tạp âm nk , tức là
yk = sk + nk (5.2)
trong đó nk là các dấu tạp âm AWGN phức có dạng
nk = nI,k + jnQ,k (5.3)
trong đó nI,k và nQ,k tương ứng là thành phần đồng pha và vuông pha của
tạp âm. Do phương sai của các thành phần σn2 I = σn2 Q = σn2 = N0 /2, trong đó
N0 /2 là mật độ phổ công suất tạp âm. Như vậy, phương sai của tạp âm nk trở
thành 2σn2 = N0 . Để tạo được tạp âm nk với phương sai 2σn2 chúng ta có thể
sử dụng hàm randn có sẵn trong Matlab để tạo ra chuỗi các dấu tạp âm có
phân bố chuẩn chính tắc, rồi nhân với độ lêch chuẩn của tạp âm σn như sau
nk = sigma ∗ (randn(1, N) + j ∗ randn(1, Ns )) (5.4)
Để tạo ra tạp âm có năng lượng thỏa mãn tỉ số (Eb /N0 )req cho trước chúng ta
đặt độ lệch chuẩn 
Eb
σn = (σn2 ) = . (5.5)
2(Eb /N0 )req

Tức là,
sigma = sqrt(Eb/(2 ∗ EbNo))
nk = sigma ∗ (randn(1, N) + j ∗ randn(1, Ns ))
Tại máy thu, do tín hiệu điều chế BPSK chỉ chứa thành phần đồng pha
(phần thực), nên để tách tín hiệu phát sk từ tín hiệu thu được yk , máy thu
thực hiện tách lấy phần thực trước, sau đó thực hiện tách tín hiệu sử dụng
phương pháp tách sóng hợp lẽ tối ưu (MLD: Maximum Likelihood Detection).
Cụ thể, máy thu thực hiện phép so sánh và quyết định sau:
if yk ≥ 0 → ŝk = +1 (5.6)
elseif yk < 0 → ŝk = −1 (5.7)
Phép so sánh này được thực hiện trong Matlab nhờ sử dụng hàm sign(yk).
Tín hiệu tách được ŝk sau đó được so sánh với tín hiệu phát sk để tính toán
phẩm chất lỗi bít BER của hệ thống.
Một ví dụ mẫu chương trình mô phỏng truyền BPSK qua kênh AWGN
được trình bày ở chương trình MATLAB BPSKAWGN.m ở Matlab Program 5.1.
Chương trình thực hiện mô phỏng với N = 105 dấu BPSK {+1, −1}. Kết quả
BER thu được tù chương trình mô phỏng BPSKAWGN.m được so sánh với giá trị
lý thuyết [1]
1
BERBPSK−AWGN = erfc Eb /N0 (5.8)
2
để xác định tính chính xác của kết quả mô phỏng (xem Hình vẽ 5.2).
5.1. Mô phỏng truyền dẫn BPSK qua kênh AWGN 65

BER cua BPSK qua kenh AWGN


−1
10
By simulation
By theory

−2
10

−3
10
BER

−4
10

−5
10

−6
10
0 1 2 3 4 5 6 7 8 9 10
Eb/No [dB]

Hình 5.2: Phẩm chất BPSK trên kênh AWGN.

Matlab Program 5.1 BPSKAWGN.m


% Chuong trinh mo phong truyen dan BPSK qua kenh AWGN
% Dinh nghia tham so
EbNodB=0:10;
EbNo=10.^(EbNodB./10);
sigLen=5*10^5;

% Tao tin hieu BPSK {+1,-1}


s=1-2*(rand(1,sigLen)>=0.5);

% Tinh toan nang luong bit tin hieu Eb


Eb=norm(s)^2/sigLen;

% Mat do pho AWGN


No=Eb./EbNo;

% Vong lap tinh toan BER theo Eb/No


for k=1:length(EbNo)
% Tao AWGN
n=sqrt(No(k)./2).*(randn(1,sigLen)+j*randn(1,sigLen));
% Tin hieu thu
y=s+n;
% Tach tin hieu
shat=sign(real(y));
error=s-shat;
noError=length(find(error~=0));
BER(k)=noError/sigLen;
end
66 Chương 5. Mô phỏng Monte-Carlo một số hệ thống vô tuyến điển hình

% BER ly thuyet cua truyen dan BPSK qua kenh AWGN


BERtheory=1/2*erfc(sqrt(EbNo));

% Ve do thi
semilogy(EbNodB,BER,’*’,EbNodB,BERtheory)
xlabel(’Eb/No’)
ylabel(’BER’)
legend(’By simulation’,’By theory’)
title(’BER cua BPSK qua kenh AWGN’)
grid

5.2 Mô phỏng truyền dẫn M-PSK qua kênh pha-đinh


Rayleigh
Sơ đồ mô phỏng Monte-Carlo của hệ thống truyền dẫn MPSK qua kênh pha-
đinh Rayleigh được biểu diễn ở Hình 5.3
Coherent Detector

Mapping Modulator y k= g ks k+ n k y^k sk


^
Data Source Decision
bk qk sk + s k =Q{ y^k }
^

gk g k*
AWGN *
nk
gk
Fading
generator
gk

sk Error Detection sk
^
SER/BER
Calculation

Hình 5.3: Sơ đồ mô phỏng truyền dẫn MPSK qua kênh pha-đinh sử dụng tách tín hiệu
đồng bộ (coherent detection).

Q
2 1 2p/M

3 0
p/M
I

4
7 ( M -1)

5 6

Hình 5.4: Sơ đồ phân bố tín hiệu (signal constellation) của tín hiệu 8PSK.
5.2. Mô phỏng truyền dẫn M-PSK qua kênh pha-đinh Rayleigh 67

Dựa trên thuật toán mô phỏng truyền dẫn BPSK qua kênh AWGN, chúng
ta có thể xây dựng thuật toán mô phỏng hệ thống truyền dẫn MPSK qua kênh
pha-đinh Rayleigh như sau:

1. Tạo dữ liệu và Điều chế: điều chế M-PSK thực hiện nhóm κ = log2 M
bít dữ liệu nhị phân thành một điểm tín hiệu trên sơ đồ phân bố tín
hiệu như trên Hình 5.4. Dựa trên phương pháp gán nhãn các điểm tín
hiệu từ 0 đến M − 1 như ở hình vẽ, chúng ta thấy rằng điểm tín hiệu
thứ i có thể được biểu diễn bởi
 
2π π
si = A exp i+ (5.9)
M M

Trong đó A = Es là biên độ tín hiệu và M π
là pha ban đầu của sơ đồ
tín hiệu. Như vậy, để tạo ra chuỗi các dấu điều chế MPSK sk , chúng ta
có thể tạo ra các số nguyên ngẫu nhiên bk ∈ {0, 1, 2, ..., M − 1}, rồi thay
i = bk ở công thức (5.9). Như vậy, toàn quá trình tạo dữ liệu, mapping,
và điều chế có thể được thực hiện bằng Matlab như sau
bk = randint(1, N, [0 M − 1]);
theta = 2 ∗ pi/M ∗ bk + pi/M;
sk = A ∗ exp(j ∗ theta)

2. Tạo kênh pha-đinh: kênh pha-đinh gk được tạo bởi thuật toán tạo pha-
đinh Rayleigh ở Mục 4.5. Trong trường hợp pha-đinh Rayleigh có thể sử
dụng kết quả Bài tập 4.1.
3. Tạo tạp âm AWGN nk : tạp âm nk được tạo ra sử dụng phương pháp
mô tả ở Mục 5.1 với σn2 = 2EEs /N
s
0
. Với tín hiệu MPSK một dấu sk chứa
κ = log2 M bit dữ liệu nhị phân, vì vậy, quan hệ năng lượng bit và dấu
được biểu diễn bởi Es = κEb = Eb log2 M
4. Tách tín hiệu đồng bộ (coherent detection): nguyên lý tách coherent de-
tection là sử dụng liên hợp phức của ước lượng kênh truyền ĝk (ước lượng
được nhờ các bộ ước lượng kênh) nhân với tín hiệu thu yk để quay pha
tín hiệu, bị dịch đi do pha-đinh, về vị trí ban đầu, tức là, ŷk = ĝk∗ yk . Để
thuận tiện cho mô phỏng chúng ta có thể coi ĝk được ước lượng một cách
chính xác, tức là, ĝk = gk , và sử dụng ngay gk cho tách tín hiệu coherent.
Mặc dù bằng cách này ảnh hưởng quay pha do pha-đinh đã được khắc
phục, nhưng góc pha tín hiệu thu vẫn không trùng với góc pha của tín
hiệu phát do còn chịu ảnh hưởng của tạp âm. Sử dụng phương pháp tách
tín hiệu hợp lẽ tối đa (MLD), bộ tách tín hiệu thực hiện quyết định dựa
trên góc pha của ŷk . Tức là,
θˆk = ∠ŷk (5.10)
trong đó ∠ biểu diễn phép tính lấy góc pha. Trong Matlab phép tính lấy
góc này có thể thực hiện được nhờ hàm có sẵn angle. Từ góc pha θˆk
68 Chương 5. Mô phỏng Monte-Carlo một số hệ thống vô tuyến điển hình

này chuỗi dữ liệu phát ban đầu bk bằng thao tác ánh xạ ngược
 
M ˆ
b̂k = θk (5.11)

trong đó · biểu diễn phép tính làm tròn về số nguyên gần nhất về phía
0, tức là phép tính lấy floor. Trong Matlab phép tính · được thực hiện
bằng hàm có sẵn floor.
5. Tính toán tỉ số lỗi dấu SER và tỉ số lỗi bit BER: sai số dấu của giữa tín
hiệu phát bk và tín hiệu thu được b̂k , được xác định nhờ so sánh hiệu số
k = b̂k − bk , mỗi k
= 0 tương ứng với một dấu bị sai. Vì vậy, tỉ số SER
có thể tính được tính bởi
Ns
SER = e (5.12)
N
Để tính được tỉ số BER chúng ta có thể sử dụng hàm biterr của Matlab
như sau:
BER = biterror(bk, bk_hat, kappa) (5.13)

với kappa=κ = log2 M.

Bài tập
5.1 Sử dụng thuật toán mô phỏng truyền dẫn M-PSK ở Mục 5.2, viết chương
trình mô phỏng tính tỉ số lỗi SER và BER cho điều chế QPSK qua kênh
pha-đinh Rayleigh. So sánh tỉ số BER của QPSK thu được với xác suất
lỗi của BPSK ở công thức (2.7), viết nhận xét.

Tài liệu tham khảo


[1] H. Harada and R. Prasad, Simulation and Software Radio for Mobile Com-
munications. Artech House, 2002.

You might also like