Chương 1 Mô phỏng và lập trình mô phỏng trên MATLAB

Mô phỏng (simulation) là một kỹ thuật dựa trên máy tính để nghiên cứu xây dựng một hệ thống (hay quá trình) thực mới hoặc cải tiến một hệ thống thực đã có để đạt được chất lượng tốt hơn, trước khi thiết kế chế tạo hệ thống được cải tiến này, nhằm giảm thiểu thời gian thiết kế hệ thống trong khi đồng thời hiểu rõ được hoạt động của hệ thống này. Với khả năng xử lý của máy tính ngày càng mạnh và với tốc độ cao, đồng thời với việc các hệ thống thực ngày nay ngày càng phức tạp, mô phỏng đã và đang là một công cụ thiết thực trong nhiều lĩnh vực khác nhau, đặc biệt là trong kỹ thuật. Đối với ngành Điện tử–Viễn thông nói chung và lĩnh vực xử lý tín hiệu nói riêng, mô phỏng được thực hiện phần lớn trên phần mềm lập trình MATLAB (Matrix Laboratory). Với nhiều công cụ tính toán kết quả hiệu quả và các chức năng hiển thị kết quả mạnh và nhanh hiệu quả, MATLAB cho phép chúng ta nhanh chóng xây dựng mô hình mô phỏng của một hệ thống để từ đó nghiên cứu tìm hiểu và cải tiến nó. Chương học này nhằm cung cấp khái niệm cơ bản về mô phỏng và giới thiệu đôi nét về phần mềm MATLAB. Trong các chương học tiếp theo, sinh viên sẽ có cơ hội thực hành mô phỏng một số vấn đề đơn giản liên quan đến kỹ thuật xử lý tín hiệu.

I.1.
I.1.1.

Vai trò và phương pháp luận của mô phỏng
Mô phỏng là gì?

Mô phỏng là một quá trình thiết lập và thí nghiệm trên máy tính mô hình toán học của một hệ thống vật lý. Trước hết, chúng ta mô hình hóa một hệ thống thực bằng một mô hình giải tích. Mô hình này được biểu diễn bởi các phương trình toán học. Từ mô hình giải tích này, chúng ta xây dựng một mô hình mô phỏng trên máy tính. Mô hình mô phỏng bao gồm các lệnh máy tính. Từ đó, chúng ta phân tích hệ thống vật lý dựa trên mô hình mô phỏng để đưa ra những giải pháp thiết kế hiệu quả, trước khi chế tạo hệ thống vật lý này. Như vậy, hệ thống vật lý đã 1

Có nghĩa là chúng ta không thể đơn thuần tắt hệ thống và xem xét các hệ thống con một cách riêng lẻ. đồng thời cho phép chúng ta xem xét hệ thống trong trạng thái động. đặc biệt là khi sự tương tác bên trong giữa các hệ thống con là động. Việc nghiên cứu nó gặp khó khăn về mặt thời gian. mô phỏng cho phép chúng ta thử nghiệm hệ thống mới này. Lợi ích của mô phỏng Bên cạnh các mục đích đã nêu trên đây.2. Nếu chúng ta muốn thiết kế một hệ thống mới. . Qua các quá trình trừu tượng hóa. Một số hệ thống có độ phức tạp cao gây khó khăn trong việc hiểu một cách thấu đáo các hoạt động bên trongcủa chúng. Có những hệ thống rất quan trọng hoặc rất nhạy cảm mà chúng ta không thể đơn thuần dừng sự hoạt động của nó để kiểm tra sửa đổi. Mục đích của mô phỏng Trước hết. Mô phỏng nhằm hỗ trợ đưa ra những giải pháp cải tiến để hệ thống hoạt động với chất lượng tốt hơn. mô phỏng giúp chúng ta xem xét một hệ thống kỹ lưỡng mà không phải động đến hệ thống vật lý. mô phỏng giúp chúng ta hiểu rõ hơn các hoạt động bên trong của một hệ thống. đặc biệt là trong trường hợp số liệu là ngẫu nhiên.1. Mô phỏng giúp chúng ta lấy được thông tin mà không phải động đến hệ thống vật lý. mô phỏng còn có những lợi ích khác. mô phỏng chỉ mất vài giây hay vài tiếng đồng hồ để kiểm nghiệm. chẳng hạn như hệ thống điều khiển không lưu hay hệ thống chuyển tiền qua máy tính của ngân hàng. I. Có những quá trình xảy ra trong thực tế hàng tháng. chúng ta có thể mô phỏng hệ thống này trên máy tính để tìm hiểu xem hệ thống như vậy có hoạt động tốt như ý muốn hay không trước khi chúng ta chế tạo nó.2 Chương 1: Mô phỏng và lập trình mô phỏng trên MATLAB được trừu tượng hóa hai lần thông qua mô hình giải tích và mô hình mô phỏng. Việc xây dựng mô hình giải tích của một hệ thống thông thường là phức tạp và đòi hỏi người nghiên cứu phải có năng lực toán học cao. và có thể cả làm giản lược hệ thống nữa. Trong trường hợp chúng ta muốn cải tiến một hệ thống đã có sẵn.3. Các công cụ mô phỏng ngày nay cho phép chúng ta có thể nghiên cứu thí nghiệm một hệ thống nào đó mà không cần biết thông suốt đến một lĩnh vực nào đó liên quan đến một phần của hệ thống. mô phỏng giúp chúng ta xây dựng mô hình động của hệ thống và tìm hiểu xem các hoạt động của hệ thống chung cũng như các hệ thống con trong sự tương tác qua lại giữa các hệ thống con này. Mô phỏng làm giảm các yêu cầu phân tích. làm xấp xỉ. Thông qua mô phỏng. hàng năm. việc sửa đổi cải tiến nó đòi hỏi chúng ta cần có nhiều thử nghiệm khác nhau trên hệ thống để đánh giá chất lượng. Trong trường hợp này. Trong trường hợp này. Đồng thời các hệ thống này chỉ được phân tích trong trạng thái tĩnh. chúng ta làm thí nghiệm trong “thời gian nén”.1. cho đến khi hệ thống mô phỏng được kiểm nghiệm kỹ lưỡng. I. chúng ta đã phải đặt thêm những giả thiết. Trong khi đó. Sử dụng mô phỏng không những tiết kiệm được thời gian và tiền bạc mà còn có thể giúp chúng ta thử nghiệm với nhiều số liệu khác nhau. Trước khi xây dựng một hệ thống vật lý mới.

mô phỏng dựa trên mô hình mô phỏng. Việc cần thiết là làm thế nào để làm giảm thiểu độ sai số đó. Như chúng ta đã thấy. Cho dù việc mô hình hóa là chính xác. thì nếu số liệu đầu vào bị sai thì mô phỏng sẽ cho chúng ta kết quả sai. Vì vậy. việc mô phỏng để giải quyết những bài toán nhỏ trên đây là những thuật toán đã được định nghĩa rõ và đã được giải quyết chặt chẽ. được kích thích bởi một hay nhiều tín hiệu đầu vào. chúng ta cần thay số liệu mô phỏng bằng số liệu thực thông qua đo đạc. Theo các bước cơ bản trên đây. Tạm thời. chúng ta sử dụng từ hệ thống rất nhiều.1. và các lợi ích của nó giúp ta giải quyết nhanh chóng hơn. Qua đó.5. mô phỏng có những hạn chế của nó. nếu việc mô hình hóa có sai sót thì việc đưa ra kết quả không chính xác với hệ thống thực là có thể xảy ra. Vai trò và phương pháp luận của mô phỏng 3 I. hệ thống chuyển đổi tín hiệu đầu vào và cho ta một hay nhiều tín hiệu đầu ra. I. bước thử nghiệm ban đầu có thể là mô phỏngchính số liệu đầu vào và sử dụng nó để thí nghiệm hệ thống cần thiết kế. Thông thường.1. Tương tự. chúng ta có thể phải đặt các giả thuyết. các công cụ tính toán phù hợp để giải quyết những bài toán nhỏ.1. chúng ta có xem bài toán tổng thể của chúng ta là một hệ thống cần thiết kế. Trong khi đó.I. • Lựa chọn loại mô hình thích hợp. thế nào là tín hiệu. Như vậy. . và các bài toán được chia nhỏ là các hệ thống con hay các khối nhỏ. hoặc làm giản lược. Tuy nhiên. Trên đây. • Chia bài toántổng thể thành nhiều bài toán nhỏ. chúng ta sẽ tìm hiểu chính xác thế nào là hệ thống.4. Trong quá trình chuyển từ hệ thống vật lý đến mô hình mô phỏng. công việc thu thập số liệu rất quan trọngvà cần được chú trọng nhiều. Hạn chế của mô phỏng Mặc dù mục đích của mô phỏng giúp chúng ta giải quyết được những vấn đề quan trọng. Phương pháp luận của mô phỏng Mô phỏng bao gồm các bước cơ bản sau đây: • Chuyển tải một bài toán quan tâm thành một mô hình mô phỏng. chúng ta xem một hệ thống là một khối (block). cũng như việc chọn lựa các kỹ thuật để giải áp dụng vào mô hình mô phỏng thường mang tính khám phá tìm tòi. và mô hình này lại dựa trên mô hình giải tích. Sau đó. • Tổng hợp các kết quả giải quyết được đối với những bài toán nhỏ để đưa đến giải pháp chung cho bài toán tổng thể. Trong các bài học sau. phương pháp mô phỏng thích hợp. làm xấp xỉ. phương pháp luận tổng thể sử dụng cho việc chuyển tải từ bài toán ban đầu thành mô hình mô phỏng thích hợp. và có bản chất định lượng.

kết quả được hiển thị như sau: ans = 8 . chúng ta muốn tính tổng của 3 và 5. MATLAB là một phần mềm giúp chúng ta làm tính toán. Chẳng hạn.com. phân tích số liệu. Khởi động MATLAB Khi khởi động MATLAB. phát triển các thuật toán. chúng ta sẽ thấy một cửa sổ lệnh (Command Window) như trong hình vẽ sau.2. có nghĩa là Phòng Thí nghiệm (tính toán) Ma-trận. I.4 Chương 1: Mô phỏng và lập trình mô phỏng trên MATLAB I.mathworks. Đánh lệnh >> 3+5 và bấm phím Enter. Các lệnh của MATLAB được đánh vào sau dấu >>. làm mô phỏng và xây dựng mô hình. Các thông tin về MATLAB cũng như nhiều tài liệu học và các trợ giúp khác có thể tìm thấy tại: http://www.1. viết tắt của Matrix Laboratory.2. tạo ra các hiển thị đồ họa và cung cấp các công cụ giao diện đồ họa. Lập trình mô phỏng trên MATLAB MATLAB.

chứa kết quả của dòng lệnh được thực hiện cuối cùng.w=a/b.6000 >> Lưu ý là chúng ta không cần khai báo dạng biến (interger.2.z=a*b. thì sử dụng dấu “:” như sau: >> a=[0:6] a = 0 1 2 3 4 5 6 . double. Chú ý nếu sau lệnh có dấu .y=a-b.z. nhân a với b và lấy a chia cho b. Lập trình mô phỏng trên MATLAB 5 ans là biến kết quả do MATLAB tự đặt. Chúng ta có thể hiển thị cùng một lúc các kết quả đã thực hiện trên đây như sau: >> x. thì kết quả của lệnh đó không được hiển thị (mặc dù MATLAB đã tính toán xong).. Nếu chúng ta đặt biến kết quả cho lệnh.x=a+b.w x = 8 y = -2 z = 15 w = 0. Một véc-tơ được khởi tạo như sau: >> a=[1 2 3] a = 1 2 3 Để khởi tạo nhanh một véc-tơ có giá trị tăng dần từ 0 đến 6 và cách nhau 1.y.I. Các phép toán trong MATLAB Các phép toán cộng trừ nhân chia thông thường được thực hiện như sau: >> a=3. cộng a với b.b=5.2. Trên đây là một dòng lệnh chứa nhiều lệnh: khởi tạo giá trị của a.2..) như trong một số ngôn ngữ lập trình khác. lấy a trừ b. thì kết quả sẽ hiển thị như sau: >> a=3+5 a = 8 I. khởi tạo giá trị của b. .

5000 Chú ý trong phép nhân và phép chia có dấu “. ta có các phép toán trừ (-). chẳng hạn 1. các véc-tơ cần có độ dài như nhau. Trong trường hợp này.0000 1. thì sử dụng hai dấu “:” như sau: >> a=[0:1.z=a*b ??? Error using ==> mtimes Inner matrix dimensions must agree. phép nhân ma trận sẽ không thực hiện được.z=a. nhân (. chẳng hạn a ∗ b. và MATLAB sẽ báo lỗi như sau: >> a=[1 2 3]. Tương tự.5000 6.5. thì chúng ta muốn thực hiện phép nhân ma trận./).*b.”.6 Chương 1: Mô phỏng và lập trình mô phỏng trên MATLAB Nếu chúng ta muốn các giá trị cách nhau khác 1./b y = -1 0 1 z = 2 4 6 w = 0. >> y=a-b.*) và chia (.5:6] a = 0 1.b=[2 2 2].5000 1.0000 Khi sử dụng các phép toán trên véc-tơ.x=a+b x = 3 4 5 Biến x được tính theo công thức: x = [a(1) + b(1) a(2) + b(2) a(3) + b(3)].w=a.5000 3. Một ma trận được khởi tạo như sau: >> a=[1 2 3. Nếu không có dấu chấm.b=[2 2 2]. ma trận a có 2 hàng và 3 cột. Kích thước của ma trận có thể được tìm thấy bởi .0000 4. Đối với phép cộng ta làm như sau: >> a=[1 2 3].1 1 1] a = 1 2 3 1 1 1 Như vậy. vì hai ma trận a và b đều có kích thước giống nhau là 1 × 3.

z=sin(pi) y = 0.2246e-016 Để biết có những hàm toán học nào MATLAB đã cung cấp.I. để tính giá trị của sin(x) ta làm như sau: >> y=sin(2)... Sine. cos. Các hàm toán học cơ sở MATLAB cung cấp một số các hàm toán học cơ sở: sin. 1 3. để hổ trợ tính toán toán học.. Lệnh help có thể được thực hiện để tìm hiểu cách sử dụng một lệnh nào đó.3) Khi điều kiện kích thước được tuân thủ. ta đánh >> help matlab\elfun Elementary math functions.x=a*b b = 1 2 1 3 2 2 x = 9 14 4 7 I. Trigonometric. .2.1 1 1]. Sine of argument in degrees. sin sind sinh asin .3. Hãy thử .. Inverse sine.2. phép nhân ma trận có thể được thực hiện như sau: >> a=[1 2 3. 2 2]. Hyperbolic sine.9093 z = 1.b=[1 2. Lập trình mô phỏng trên MATLAB 7 >> size(a) ans = 2 3 Để lấy giá trị của phần tử ở hàng 1 cột 3 của ma trận a ta làm >>a(1. Chẳng hạn.

2.2. ta làm như sau >> x=0:0. để hiểu rõ thêm về chúng hoặc biết thêm các phép toán khác trong MATLAB. chúng ta chỉ đánh >> help để hiển thị toàn bộ cấu trúc mà phiên bản MATLAB của chúng ta có.’b:’. dùng lệnh: >> help matlab\ops Hãy dùng lệnh help để tìm hiểu về lệnh more và lệnh lookfor.2 −0. chẳng hạn như cấu trúc các hàm toán học cơ sở matlab\elfun mà chúng ta đã làm trên đây. để xem thông tin về những lệnh MATLAB đã cung cấp cho cấu trúc đó. I. Chẳng hạn.’xsin(x)’) .2 0 −0. .8 0.01:4*pi.4 0. Quay trở lại với những phép toán chúng ta sử dụng trong phần I.y) 1 0.4 −0.’r-.y. Hiển thị đồ thị MATLAB cung cấp công cụ hiển thị đồ họa một cách nhanh chóng.plot(x.z.*y.y=sin(x). muốn vẽ đồ thị của hàm sin(x) trong đó x chạy từ 0 đến 4π.6 −0.6 0.plot(x.2.8 Chương 1: Mô phỏng và lập trình mô phỏng trên MATLAB >> help sin Ở mức tổng quát nhất.8 −1 0 2 4 6 8 10 12 14 Nếu chúng ta muốn vẽ hàm sin(x) và x sin(x) trong cùng một đồ thị thì làm như sau >> z=x.4. tìm đến một cấu trúc nhất định. Sau đó.’) >> legend(’sin(x)’.x.

end I.. elseif ..2. ta có thể viết các dòng lệnh cần thiết vào trong chương trình soạn thảo như sau để tính giá trị hàm số x sin(x) và vẽ đồ thị của nó nếu cần. Điều khiển luồng lệnh Như nhiều ngôn ngữ lập trình khác.6. Chương trình soạn thảo thảo được kích hoạt bằng lệnh: >>edit Sau đó.... end while . case . end switch . else . I.2.2. ..... end for .. otherwise .5.... Xây dựng một lệnh mới (function) Để viết một lệnh (chương trình).I. chúng ta dùng chương trình soạn thảo (Editor) của MATLAB. MATLAB cũng có các dạng điều khiển các luồng lệnh trong như: if . Lập trình mô phỏng trên MATLAB 9 8 6 4 2 0 −2 −4 −6 −8 −10 −12 0 2 4 6 8 10 12 14 sin(x) xsin(x) Hãy sử dụng lệnh help để tìm hiểu cách sử dụng lệnh plot và lệnh legend được sử dụng trên đây....

m) rồi chuyển sang Cửa sổ Lệnh và thực hiện các lệnh sau: >>x=10.01:10*pi.1). Trong mỗi hộp công cụ. Trong các môn học khác. hoặc về xử lý tín hiệu ngẫu nhiên như “Statistical Signal Processing Toolbox”. I.7. Để biết được trong MATLAB đã cài có các hộp công cụ nào. chúng ta sẽ tập trung vào hộp công cụ “Signal Processing Toolbox”. Đối với Xử Lý Tín Hiệu Số.m dùng điều khiển luồng lệnh for để thực hiện phép nhân hai ma trận A và B để được ma trận C theo công thức Cij = Aik Bkj thay vì sử dụng phép nhân ma trận trực tiếp (*). “SIMULINK”. ghi lại file đã soạn thảo (sẽ có tên là xsinx.y=xsinx(x. anh chị sẽ có dịp làm quen với các hộp công cụ khác về viễn thông như “Communications Toolbox”.10 Chương 1: Mô phỏng và lập trình mô phỏng trên MATLAB Bây giờ. Hộp công cụ (Toolboxes) Một trong những nét mạnh của MATLAB là có rất nhiều các hộp công cụ (thư viện) hổ trợ cho các ứng dụng khác nhau. chúng ta dùng lệnh . nhiều thuật toán thông dụng cho mỗi ứng dụng đã được cài đặt và tối ưu hóa để người sử dụng có thể nhanh chóng xây dựng mô hình mô phỏng.y=xsinx(x) >>x=0:0.2. hoặc về điều khiển học như “Control Toolbox”. >>help xsinx Hãy lập một lệnh nhanmatran.

I. để tìm hiểu về các lệnh trong một hộp công cụ.2. Lập trình mô phỏng trên MATLAB 11 >>ver Cuối cùng. chẳng hạn về xử lý tín hiệu. chúng ta dùng lệnh >>help signal\signal .