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

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 chúng ta muốn cải tiến một hệ thống đã có sẵn. 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. hàng năm. mô phỏng chỉ mất vài giây hay vài tiếng đồng hồ để kiểm nghiệm. Trong trường hợp này. Trong khi đó. . Nếu chúng ta muốn thiết kế một hệ thống mới. làm xấp xỉ. Trước khi xây dựng một hệ thống vật lý mới. mô phỏng còn có những lợi ích khác. Có những quá trình xảy ra trong thực tế hàng tháng. cho đến khi hệ thống mô phỏng được kiểm nghiệm kỹ lưỡng. 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.1. Trong trường hợp này. 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ó. Lợi ích của mô phỏng Bên cạnh các mục đích đã nêu trên đây. 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à khi sự tương tác bên trong giữa các hệ thống con là động. đồng thời cho phép chúng ta xem xét hệ thống trong trạng thái động. Mục đích của mô phỏng Trước hết. Mô phỏng làm giảm các yêu cầu phân tích. chúng ta làm thí nghiệm trong “thời gian nén”. chúng ta đã phải đặt thêm những giả thiế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. 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. Việc nghiên cứu nó gặp khó khăn về mặt thời gian. 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.3.1. 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. I. 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ẻ. 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 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ộ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.2. I. đặc biệt là trong trường hợp số liệu là ngẫu nhiên. 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ý. và có thể cả làm giản lược hệ thống nữa. Đồng thời các hệ thống này chỉ được phân tích trong trạng thái tĩnh. Thông qua mô phỏng. mô phỏng cho phép chúng ta thử nghiệm hệ thống mới này. Qua các quá trình trừu tượng hóa.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.

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

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

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.w=a/b. thì kết quả của lệnh đó không được hiển thị (mặc dù MATLAB đã tính toán xong)..I. 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.2. lấy a trừ b. thì sử dụng dấu “:” như sau: >> a=[0:6] a = 0 1 2 3 4 5 6 .2. thì kết quả sẽ hiển thị như sau: >> a=3+5 a = 8 I. double.6000 >> Lưu ý là chúng ta không cần khai báo dạng biến (interger. 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.y=a-b. cộng a với b. Chú ý nếu sau lệnh có dấu . 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. chứa kết quả của dòng lệnh được thực hiện cuối cùng. Nếu chúng ta đặt biến kết quả cho lệnh.w x = 8 y = -2 z = 15 w = 0.2.z.) như trong một số ngôn ngữ lập trình khác.b=5.y.x=a+b.z=a*b. . khởi tạo giá trị của b. 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..

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

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

*y.x. 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ó. 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. Chẳng hạn.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. 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.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.plot(x.’xsin(x)’) . Quay trở lại với những phép toán chúng ta sử dụng trong phần I.2.z.4 0.2 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.’b:’.2.y.8 0. Sau đó.2 −0. ta làm như sau >> x=0:0. Hiển thị đồ thị MATLAB cung cấp công cụ hiển thị đồ họa một cách nhanh chóng.4 −0.2.y) 1 0.01:4*pi.6 0. I.’r-. muốn vẽ đồ thị của hàm sin(x) trong đó x chạy từ 0 đến 4π. .’) >> legend(’sin(x)’. tìm đến một cấu trúc nhất định.4. để xem thông tin về những lệnh MATLAB đã cung cấp cho cấu trúc đó.6 −0.plot(x.y=sin(x).

2. 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.. Điều khiển luồng lệnh Như nhiều ngôn ngữ lập trình khác.2. ........ end for .. elseif . MATLAB cũng có các dạng điều khiển các luồng lệnh trong như: if ... I. end I.. case . end switch . Chương trình soạn thảo thảo được kích hoạt bằng lệnh: >>edit Sau đó...5. Xây dựng một lệnh mới (function) Để viết một lệnh (chương trình).6. end while . 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.2. else ..I.. chúng ta dùng chương trình soạn thảo (Editor) của MATLAB. otherwise .

“SIMULINK”. hoặc về điều khiển học như “Control Toolbox”. Đối với Xử Lý Tín Hiệu Số.m) rồi chuyển sang Cửa sổ Lệnh và thực hiện các lệnh sau: >>x=10. 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. 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”. Trong các môn học khác. >>help xsinx Hãy lập một lệnh nhanmatran. hoặc về xử lý tín hiệu ngẫu nhiên như “Statistical Signal Processing Toolbox”. Để biết được trong MATLAB đã cài có các hộp công cụ nào. ghi lại file đã soạn thảo (sẽ có tên là xsinx. chúng ta sẽ tập trung vào hộp công cụ “Signal Processing Toolbox”. I. Trong mỗi hộp công cụ.1).2. 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.10 Chương 1: Mô phỏng và lập trình mô phỏng trên MATLAB Bây giờ.y=xsinx(x) >>x=0:0.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 (*).7. chúng ta dùng lệnh .01:10*pi.

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

Sign up to vote on this title
UsefulNot useful