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

I. 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. mô phỏng còn có những lợi ích khác. đồng thời cho phép chúng ta xem xét hệ thống trong trạng thái động. Việc nghiên cứu nó gặp khó khăn về mặt thời gian. Trong khi đó. . hàng năm. 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.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. Thông qua mô phỏng. 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 hiểu rõ hơn các hoạt động bên trong của một hệ thống. 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. 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ó.1. 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. cho đến khi hệ thống mô phỏng được kiểm nghiệm kỹ lưỡng. 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. Nếu chúng ta muốn thiết kế một hệ thống mới. Mô phỏng làm giảm các yêu cầu phân tích. 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ý.3. đặc biệt là trong trường hợp số liệu là ngẫu nhiên. và có thể cả làm giản lược hệ thống nữa.1. Lợi ích của mô phỏng Bên cạnh các mục đích đã nêu trên đây. Trong trường hợp này. đặc biệt là khi sự tương tác bên trong giữa các hệ thống con là động.2. chúng ta đã phải đặt thêm những giả thiết. Trước khi xây dựng một hệ thống vật lý mới. mô phỏng cho phép chúng ta thử nghiệm hệ thống mới này. làm xấp xỉ. 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. mô phỏng chỉ mất vài giây hay vài tiếng đồng hồ để kiểm nghiệm. 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ý. Trong trường hợp chúng ta muốn cải tiến một hệ thống đã có sẵn. 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ẻ. Trong trường hợp này. Mục đích của mô phỏng Trước hết. Đồng thời các hệ thống này chỉ được phân tích trong trạng thái tĩnh. 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. I. Có những quá trình xảy ra trong thực tế hàng tháng. Qua các quá trình trừu tượng hóa. chúng ta làm thí nghiệm trong “thời gian né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. Trong các bài học sau. 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.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. Vai trò và phương pháp luận của mô phỏng 3 I. và có bản chất định lượng. 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ế. chúng ta có thể phải đặt các giả thuyết. • Lựa chọn loại mô hình thích hợp. Như vậy. Trong khi đó. Vì vậy. Theo các bước cơ bản trên đây. Trong quá trình chuyển từ hệ thống vật lý đến mô hình mô phỏng. Sau đó. Trên đây. 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ế. được kích thích bởi một hay nhiều tín hiệu đầu vào. hoặc làm giản lược. Tương tự.5. 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 xem một hệ thống là một khối (block). Tuy nhiên. chúng ta cần thay số liệu mô phỏng bằng số liệu thực thông qua đo đạc. . chúng ta sẽ tìm hiểu chính xác thế nào là hệ thống.4. • 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ể. thì nếu số liệu đầu vào bị sai thì mô phỏng sẽ cho chúng ta kết quả sai.1. thế nào là tín hiệu. Thông thường. Cho dù việc mô hình hóa là chính xác. 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. 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. Tạm thời. phương pháp mô phỏng thích hợp. mô phỏng dựa trên mô hình mô phỏng. các công cụ tính toán phù hợp để giải quyết những bài toán nhỏ.1. I. Việc cần thiết là làm thế nào để làm giảm thiểu độ sai số đó. 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. Như chúng ta đã thấy. • Chia bài toántổng thể thành nhiều bài toán nhỏ. Qua đó. làm xấp xỉ. và các lợi ích của nó giúp ta giải quyết nhanh chóng hơn. chúng ta sử dụng từ hệ thống rất nhiều. 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. mô phỏng có những hạn chế của nó. và các bài toán được chia nhỏ là các hệ thống con hay các khối 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. chúng ta sẽ thấy một cửa sổ lệnh (Command Window) như trong hình vẽ sau.2.1. Lập trình mô phỏng trên MATLAB MATLAB. kết quả được hiển thị như sau: ans = 8 . phân tích số liệu. có nghĩa là Phòng Thí nghiệm (tính toán) Ma-trận. làm mô phỏng và xây dựng mô hình. tạo ra các hiển thị đồ họa và cung cấp các công cụ giao diện đồ họa. MATLAB là một phần mềm giúp chúng ta làm tính toán. Đánh lệnh >> 3+5 và bấm phím Enter.2.mathworks. Các lệnh của MATLAB được đánh vào sau dấu >>. phát triển các thuật toán. I.4 Chương 1: Mô phỏng và lập trình mô phỏng trên MATLAB I. viết tắt của Matrix Laboratory. Khởi động MATLAB Khi khởi động MATLAB. Chẳng hạn. chúng ta muốn tính tổng của 3 và 5.com.

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

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

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

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

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

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

I. chẳng hạn về xử lý tín hiệu.2. để tìm hiểu về các lệnh trong một hộp công cụ. 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 .

Sign up to vote on this title
UsefulNot useful