Giới thiệu về công cụ mô phỏng MATLAB

Một phần của tài liệu mã hóa nguồn phân tán sử dụng mã LDPC trong mạng cảm biến không dây (Trang 44 - 69)

MATLAB là một môi trường tính toán số và lập trình, được thiết kế bởi công ty MathWorks. MATLAB cho phép tính toán số với ma trận, vẽ đồ thị hàm số hay biểu đồ thông tin, thực hiện thuật toán, tạo các giao diện người dùng và liên kết với những chương trình máy tính viết trên nhiều ngôn ngữ lập trình khác. MATLAB giúp đơn giản hóa việc giải quyết các bài toán tính toán kĩ thuật so với các ngôn ngữ lập trình truyền thống như C, C++, và Fortran.

MATLAB được sử dụng trong nhiều lĩnh vực, bao gồm xử lý tín hiệu và ảnh, truyền thông, thiết kế điều khiển tự động, đo lường kiểm tra, phân tích mô hình tài chính, hay tính toán sinh học. Với hàng triệu kĩ sư và nhà khoa học làm việc trong môi trường công nghiệp cũng như ở môi trường hàn lâm, MATLAB là ngôn ngữ của tính toán khoa học.

4.1.2 Cách tìm một bản MATLAB để sử dụng

Mỗi năm Mathworks - công ty sản xuất và phân phối MATLAB đưa ra thị trường 2 bản cập nhật rxxxxa vào đầu năm và rxxxb vào cuối năm (với xxxx là năm phát hành). Với các bạn bắt đầu tìm hiểu và sử dụng Matlab, nên sử dụng bản r2008a vì dung lượng không quá lớn, chạy nhanh với các máy tính có tài nguyên phần cứng không cao.

Với các bạn sinh viên muốn sử dụng MATLAB, bạn cần có phần mềm MATLAB, thông thường là qua 1 trong các cách sau:

 Tìm trên mạng internet hoặc mua ở các cửa hàng đĩa, dung lượng của bộ cài MATLAB có đầy đủ các Toolbox là khoảng 3.5 Gb cho bản r2008a, khoảng 5Gb cho bản r2012a. Đây là cách nhanh nhất và thông dụng nhất do giá của MATLAB là rất cao. Nếu download trên mạng, bạn nên download bằng phần mềm utorrent, tìm kiếm bản MATLAB bạn cần ở trang isohunt.com. Cách cài đặt và bẻ khóa bạn có thể tìm trên youtube hoặc đọc hướng dẫn ngay trong đĩa cài.

45 | Sinh viên thực hiện : Hoàng Thanh Tùng– Điện Tử 1-K54

 Xin bản trial trên trang chủ của Mathworks,bạn cần hoàn thành form đăng kí.

 Sử dụng MATLAB có bản quyền ở trường Đại học bạn học.

4.1.3 Sử dụng MATLAB hiệu quả

 Muốn thành thạo sử dụng MATLAB bạn cần phải tự mình gõ các câu lệnh và xem kết quả câu lệnh, mắc lỗi và tìm cách sửa lỗi. Cách học "trial and error" này theo tôi là cách tốt nhất để học lập trình. Thời gian và công sức bạn bỏ ra bao nhiêu sẽ mang lại cho bạn nhiều kiến thức bấy nhiêu.

 Nếu bạn đã có nền tảng là một ngôn ngữ lập trình như C, C++ hay Pascal, ... việc làm quen với MATLAB sẽ rất dễ dàng, chỉ cần một ngày là bạn có thể biết cách sử dụng được MATLAB. Tuy nhiên sử dụng được không có nghĩa là thành thạo hay xuất sắc, lập trình MATLAB có tư duy riêng, không giống hệt với tư duy lập trình của ngôn ngữ nào cả và với từng người dùng, tùy theo mục đích sử dụng MATLAB mà tư duy lập trình cũng khác nhau.

 Khả năng ứng dụng to lớn của MATLAB là nhờ các Toolbox được viết bởi những chuyên gia hàng đầu trong nhiều lĩnh vực. Không ai học tất cả các Toolbox của MATLAB cả. Để tiết kiệm thời gian và công sức không cần thiết, mỗi người dùng MATLAB chỉ cần tìm hiểu một hay một vài Toolbox liên quan đến công việc của mình là đủ.

 Tài liệu về MATLAB hiện nay đã có rất nhiều, cả tiếng Việt và tiếng Anh. Để sử dụng MATLAB, không nhất thiết phải đọc nhiều sách. Bạn hãy chọn một cuốn bất kì liên quan đến lĩnh vực ứng dụng của MATLAB mà bạn quan tâm để đọc, làm theo các ví dụ và suy nghĩ. Tài liệu quan trọng nhất chính là Help của MATLAB, nếu như bạn có khả năng tự học tốt, Help là tài liệu duy nhất bạn cần và nó đã có sẵn khi cài MATLAB.

 Để giúp các bạn dễ dàng hơn trong việc sử dụng MATLAB, chúng tôi cung cấp các bài học cơ bản, được dịch từ tài liệu "Introduction to Programming in MATLAB" từ MIT OpenCoursewares gồm 5 bài (Những bạn có khả năng ngoại ngữ nên tìm hiểu trực tiếp bản gốc từ trang web của MIT Opencoursewares) còn các phần hướng dẫn sử dụng các Toolbox được tự thực hiện, hoặc sưu tầm và dịch từ

46 | Sinh viên thực hiện : Hoàng Thanh Tùng– Điện Tử 1-K54

các sách cũng như từ Help của MATLAB. Nếu như có những sai sót, rất mong được sự góp ý từ các bạn.

 Xét cho cùng MATLAB chỉ là công cụ để thực hiện ý tưởng, MATLAB có thể cho ta kết quả nhưng nó không thay ta suy nghĩ, không mang cho ta kiến thức. Nắm chắc kiến thức chuyên môn là chìa khóa để sử dụng MATLAB có hiệu quả. Ví dụ muốn thiết kế bộ điều khiển PID, bạn cần hiểu các thành phần P, I, D có tác dụng như thế nào tới chất lượng hệ thống trước khi dùng câu lệnh của MATLAB để chỉnh định tham số tự động.

4.2. Mô phỏng trên MATLAB

Mục đích của việc thực hiện này là xây dựng một mã nguồn phân tán có thể dung nó cho 1 tập các dữ liệu ECG sử dụng sơ đồ mã hóa LDPC. ECG là một loại dữ liệu y tế và là một dữ liệu đầu vào chuẩn cho một ví dụ về mạng cảm biến không dây trong y tế, ứng dụng của mã nguồn phân tán DSC. Dữ liệu này được tạp ra được 2 (hoặc nhiều hơn) sensor với một phân bố tương quan không gian đã biết. Sự tương quan này là một dạng của nhiễu phân bố Gauss, chỉ số N với giá trị trung bình là 0 và phương sai đã biết. Sự tương quan này thay đổi với phương sai (công suất) nhiễu: Công suất nhiễu càng cao thì tương quan càng ít.

Trong mô hình anỳ ta sử dụng kênh truyền hoàn hảo. Dĩ nhiên nó không có trong thực tế, nhưng ta chỉ quan tâm đến mã hóa nguồn. Lỗi gây ra do sự không hoàn hảo của kênh truyền có thể đươc giải quyết bằng mã hóa kênh hay là tìm kiếm một mã hóa chung cho nguông và kênh. Một mô hình thiết kế mức cao của bên phát chỉ ra ở hình 4.2, và bên thu hình 4.3.

Q S-W

X U Z

47 | Sinh viên thực hiện : Hoàng Thanh Tùng– Điện Tử 1-K54

DECODER S-W

Y

Ẑ Ẑ

Hình 4.3: Bên thu của hệ thống

4.2.1 Thực hiện mã Hamming

Đầu tiên, tạo 1 bộ mã nguồn phân tán với ma trận Hamming (7,4), xây dựng một ma trận kiển tra lỗi chẵn-lẻ H có 7 cột và 7 - 4 = 3 hàng.Bộ tạo ma trận được sử dụng ở bên phát là chuyển vị của ma trân H, G = HT. Ma trận kiểm tra lỗi chẵn-lẻ và chuyển vị của nó được mô tả ở hình 4.2.1a. Lưu ý rằng bộ tạo ma trận được dung ở đây không giống với bộ tạo ma trận của mã LDPC được sử dụng để sửa lỗi. Các mẫu đầu vào ECG được lượng tử hóa dung bộ lượng tử tối ưu PDF. Bộ lượng tử ở đây là tối ưu cho phân bố Gauss, mặc dù dữ liệu ECG không phải phân bố Gauss. Tuy nhiên, phân bố Gauss dường như là tốt hơn trong trường hợp này. Bộ lượng tử có thể được thiết kế cho bất kì tỉ lệ đạt được nào. Ở đây chúng ta lượng tử các mẫu đầu vào với bộ lượng tử 7 bit tương ứng với bộ mã phân tán.

1 0 0 1 1 1 0 0 1 0 1 1 0 1 0 0 1 0 1 1 1 H = HT = 1 0 0 0 1 0 0 0 1 1 1 0 1 1 1 1 0 1 0 1 1 (adsbygoogle = window.adsbygoogle || []).push({});

48 | Sinh viên thực hiện : Hoàng Thanh Tùng– Điện Tử 1-K54

Các từ mã tích cực (đã lượng tử hóa) được nhân với ma trân G và truyền đi đến bộ giải mã. Tập các giá trị đầu ra của các bit được mã hóa đại diện cho các coset của mã kênh. Nhiều từ mã thuộc cùng 1 coset như được trình bày ở chương trên. Trong mã Hamming (7, 4) có 27 từ mã và 23 coset khác nhau. Do vậy có 24 từ mã mà đầu ra cùng các bit mã hóa, thuộc cùng 1 coset. Mục đích là thiết kế một mã kênh chuẩn với khoảng cách tối thiểu giữa các từ mã trong coset là lớn.

Các từ mã của coset 000 được chỉ ra ở hình 4.2.1b.

0000000 0001011 0010111 0011100 0100110 0101101 0110001 0111010 1000101 1001110 1010010 1011001 1100011 1101000 1110100 1111111

Hình 4.2.1b: Các từ mã cuả coset 000 trong mã Hamming (7, 4) phân tán

Bộ giải mã của mã hamming là bộ giải mã có khả năng chính xác tối đa. Khi nó nhận được 1 chuỗi bit từ kênh truyền, nó sẽ tìm coset (được định nghĩa trước về tồn số bit) và các từ mã chứa trong nó. Sau đó sử dụng thông tin bên Y (liên quan đến từ mã tích cực X), bộ giải mã khả năng chính xác tối đa sẽ duyệt qua các từ mã trong coset nhận đựọc và tìm một cái gần đúng nhất (với một số điều kiện). Kết quả ước lượng X của X là đầu ra của bộ giải mã. Mục đích chung của hệ thống này là tối thiểu X - X gây ra bởi sự phức tạp và trễ của việc mã hóa (bộ mã hóa Slepian- Wolf), và một tiêu chí trung thực bên trong (bộ lượng tử hóa). Lỗi này cũng là thước đo tốt trong hệ thống của chúng ta.

49 | Sinh viên thực hiện : Hoàng Thanh Tùng– Điện Tử 1-K54

Hình 4.2.1 Kết quả sơ đồ tỷ lệ bít lỗi mã Hamming các trường hợp khác nhau

4.2.2 Thực hiện mã LDPC

Với việc mã hóa LDPC chúng ta tạo các ma trận kiểm tra lỗi chẵn-lẻ lớn hơn và mật độ thấp hơn. Theo định lý mã hóa nguồn của Shannon thì việc mã hóa trong trường hợp chiều dài khối lớn hơn cho hiệu năng tốt hơn, và tạo ra nhiều ma trận lớn hơn. Ma trận kiểm tra lỗi H được xây dựng ngẫu nhiên. Các từ mã đã lượng tử nhiều hơn trong chiều dài khối đạt được (ví dụ là103) và nhân với ma trận H như là trong ví dụ về mã Hamming. Các bít mã hóa đại diện cho 1 khối các chuỗi bít của coset và được gửi qua kênh truyền để giải mã và khôi phục dữ liệu.

Bộ giải mã sử dụng một phiên bản đáp thích hợp của thuật toán sum-product được miêu tả ở chương 4.2 trong đó sự quyết định không chỉ dựa trên chuỗi bít nhận được và rang buộc về kiểm tra chẵn lẻ trong biểu đồ Tanner mà còn quan tâm đến chuỗi các bít tương quan của thông tin biên Y. Do hạn chế về mặt thời gian nên nó không được thực hiện và kiểm tra.

1 2 3 4 5 6 7 8 9 10 11 12 10-10 10-8 10-6 10-4 10-2

BIT and BLOCK Detection for (7,4) Hamming Code

SNR(dB)

BER

Simulated BER(Hard Decoding) Simulated BER(Soft Decoding) Theoritical BER(Hard DEcoding) Theoritical BER(Soft Decoding)

50 | Sinh viên thực hiện : Hoàng Thanh Tùng– Điện Tử 1-K54

Hình 4.2.2 Kết quả tỷ lệ bít lỗi mã hóa LDPC qua kênh AWGN 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 10-2.69 10-2.67 10-2.65 10-2.63 10-2.61

51 | Sinh viên thực hiện : Hoàng Thanh Tùng– Điện Tử 1-K54 KẾT LUẬN CHUNG

Mục đích chính của việc nghiên cứu này là sử dụng một nền tảng mã hóa thông minh để tăng thời gian sống của sensor trong mạng cảm biến không dây. Các sensor này phải hoạt động mà không phải cấp thêm nguồn và quan trọng hơn cả là cần giảm khối lượng dữ liệu mà mỗi sensor sẽ phải truyền. Mã hóa nguồn phân tán cho thấy kết quả mong muốn nếu thực hiện chính xác. Chúng ta miêu tả cách nén dữ liệu dựa trên sự tương quan với các nguồn khác mà không cần thiết phải thành lập mạng liên kết cảm biến (intersensor).

Như việc thực hành chúng ta đã sử dụng mã LDPC để nén dữ liệu. Mã hóa LDPC được biết đến như là một dạng của mã hóa kênh và vẫn đang cải tiến và càng gần hơn với giói hạn Shannon. Khi sử dụng mã hóa nguồn phân tán cho thấy hiệu năng tốt hơn so với mã turbo và đạt được giới hạn Slepian-Wolf. Trong đò án này, chúng ta chỉ kiểm tra về mặt lý thuyết với một mã Hamming(7,4) như là bộ mã hóa phân tán. Nó cho thấy hiệu năng không được tốt lắm, nhưng ní như là một bức tranh tổng thể về kỹ thuật, triển khai, và sử dụng trong mô hình mã hóa nguồn phân tán.

Thử minh họa lý thuyết của đồ án trong môi trường thực tế, chúng ta sử dụng mã hóa nguồn phân tán trong mạng của các nút cảm biến y tế đo đạc các tín hiệu ECG trong cơ thể người. Đây chỉ là phần trong việc thực hiện nén dữ liệu dựa trên sự tương quan trong mạng cảm biến, nhưng có thể là một phần tất yếu trong việc làm giảm năng lượng tiêu thụ và vì thế sẽ tăng thời gian sống cho sensor.

Hướng phát triển đề tài :

Do khả năng còn hạn chế, cộng với việc thời gian không kịp đáp ứng, em mới chỉ dừng lại ở mức nghiên cứu và mô phỏng các thuật toán áp dụng vào Mã nguồn phân tán. Chính vì vậy, hướng nghiên cứu sắp tới của em sẽ là nghiên cứu cách đưa được các thuật toán này vào mạng cảm biến không dây như theo yêu cầu. Đồng thời có thể sử dụng mô phỏng này đưa vào phần cứng thực tế để kiểm chứng độ chính xác và góp phần ứng dụng vào thực tế.

52 | Sinh viên thực hiện : Hoàng Thanh Tùng– Điện Tử 1-K54 PHỤ LỤC

1. Thuyết biến dạng tốc độ

Khi xem xét các nguồn tương tự, không đủ để giải mã các tổn hao vì sự giới hạn công suất của một kênh thực. Thay vì có sự biến dạng không kiểm soát được từ các kênh chúng tôi có thể giới thiệu một sự suy thoái được kiểm soát nhất định hoặc biến dạng tín hiệu trước khi truyền. Tiếng ồn nhiều hơn trên các kênh có sẵn, chúng ta càng phải tăng biến dạng này, hay nói cách khác: giảm tỷ lệ nguồn. Một ví dụ đơn giản nhưng trực quan của kết quả này được thể hiện trong hình 1.

D

R

Hình 1 : Hình ảnh điển hình của chức năng bóp méo tỉ lệ (adsbygoogle = window.adsbygoogle || []).push({});

Chức năng bóp méo tỷ lệ cho chúng ta giới hạn lý thuyết cho tốt như thế nào chúng ta có thể làm tổn hao nén với số liệu biến dạng nói chung và nguồn chung. Tỷ lệ chung chức năng biến dạng méo dự kiến :

d ≤ D

53 | Sinh viên thực hiện : Hoàng Thanh Tùng– Điện Tử 1-K54

R(D) = { }

{ }

= { } ( )

= { } ( ) ⁄

Với yi là các đầu ra, p = p (xn, ym ) và P là ma trận kênh. Chức năng bóp méo tỷ lệ là khó có thể tìm ra cho các nguồn chung và các số liệu biến dạng, nhưng có thể được phân loại trường hợp đặc biệt. Cho một nguồn gaussian ít nhớ với kỳ vọng bình phương méo số liệu σ2N = D và công suất đầu vào σ2 X có chức năng méo tỉ lệ bằng R(D) = (σ ) Từ điều này ta có thể giải quyết và nhận được tính năng tốc độ biến dạng : D(R) = σ

Do đó lựa chọn tốc độ một sự đánh đổi- tắt trên một chấp nhận lượng biến dạng thành các tín hiệu hoặc do hạn chế nhất định (ví dụ như hạn chế công suất, tiếng ồn kênh).

Lý thuyết biến dạng tỷ lệ mô tả được sử dụng trong các ví dụ thực tế thông qua các hình thức khác nhau của lượng tử, một số phức tạp hơn so với những thành phần khác.

1.1. Sự lượng tử hóa vô hướng

Sự lượng tử hóa vô hướng được hoàn thành dựa trên một ví dụ về nguồn tại một thời điểm. Điều này có thể được ước lượng hay tối ưu cho sự phân tán của nguồn. Một cách để tối ưu là dựa vào thuật toán Lloy – Max tổng quát. Việc thiết kế lượng tử tối ưu đạt được thông qua việc tìm ra sự thay đổi lỗi lượng tử hóa nhỏ nhất

qua từng trạng thái.

54 | Sinh viên thực hiện : Hoàng Thanh Tùng– Điện Tử 1-K54

với n = 1, . . . , N – 1

Với rn là số mức đại diện, dn là số mức quyết định và N là số mức lượng tử

Một phần của tài liệu mã hóa nguồn phân tán sử dụng mã LDPC trong mạng cảm biến không dây (Trang 44 - 69)