Bài giảng tóm tắt Matlab căn bản
MỤC LỤC
CHƯƠNG I. GIỚI THIỆU MATLAB . 4
1. Giới thiệu. 4
2. Khởi động và chuẩn bị thư m ục làm việc trong Matlab . 4
3. Quản lý không gian làm việc của Matlab . 5
4. Các thành phần của Mathlab . 6
5. Các phím tắt cơ bản trong Matlab. . 7
6. Các toán tử cơ bản của Matlab: . 8
CHƯƠNG 2. MATLAB CƠ BẢN . 11
1. Nhập xuất dữ liệu từ dòng lệnh . 11
2. Nhập xuất dữ liệu từ bàn phím: . 11
3. Nhập xuất dữ liệu từ file: . 12
4. Các hàm toán học: . 13
5. Các phép toán trên ma trận và vector: . 16
6. Tạo số ngẫu nhiên: . 18
7. Các lệnh dùng lập trình: . 19
CHƯƠNG 3. XỬ LÝ ĐỒ THỊ TRONG MATLAB . 22
1. Khái niệm chung . 22
2. Các lệnh vẽ . 22
3. Tạo hình vẽ . 22
4. Đặc tả kiểu đường vẽ . 23
5. Đặc tả màu và kích thước đường vẽ . 23
6. Thêm đường vẽ vào đồ thị đã có . 25
7. Chỉ vẽ các điểm số liệu . 25
8. Vẽ các điểm và đường . 26
9. Vẽ với hai trục y . 26
10. Vẽ đường cong với số liệu 3D . 27
11. Đặt các thông số cho trục . 27
12. Ghi nhãn lên các trục toạ độ . 28
13. Định vị văn bản trên hình vẽ. 29
14. Đồ hoạ đặc biệt . 30
15. Đồ hoạ 3D . 37
16. Vẽ các vectơ . 40
CHƯƠNG 4. LẬP TRÌNH GIAO DIỆN NGƯỜI DÙNG (GUI) . 44
1. Cách thực hiện . 44
2. Lập trình giao diện với Blank GUI . 45
3. Kéo thả và thiết lập thuộc tính cho các điều khiển . 46
4. Viết lệnh cho chương trình . 47
5. Các tính chất của các điều khiển trong GUIDE Matlab . 49
6. Tổng quan về hàm Callback trong lập trình GUI . 50
7. Chương trình Calculator . 52
CHƯƠNG 5. MỘT SỐ PHƯƠNG PHÁP XỬ LÝ TÍNH TOÁN TRÊN MATLAB . 55
1. Tính định thức của ma trận . 55
2. Nghịch đảo ma trận bằng cách dùng Minor. 59
3. Nghịch đảo ma trận bằng thuật toán gauss-Jordan. . 60
4. Lập trình giao diện: Giải phương trình bậc 2 . 61
PHỤ LỤC . 66
n ta nói αi làm một nghịch thế với αj nếu i αj. Ví dụ trong hoán vị 1432 số 4 làm với số 3 một nghịch thế, số 4 làm với số 2 một nghịch thế, số 3 làm với số 2 một nghịch thế. Một hoán vị gọi là chẵn nếu tổng số nghịch thế trong hoán vị đó là một số chẵn; một hoán vị gọi là lẻ trong trường hợp ngược lại. Như vậy 1432 là một hoán vị lẻ. Cho một dãy số, nếu ta tạo ra một dãy số mới bằng cách đổi chỗ các phần tử cho nhau thì ta đã thực hiện một phép thế. Ví dụ 3241 3412 p là phép thế biến 2 thành 1, 1 thành 4, 4 thành 2 và 3 thành 3. Một phép thế gọi là chẵn nếu tính chẵn lẻ của dòng trên và dòng dưới như nhau và lẻ trong trường hợp ngược lại. Phép thế trên là phép thể lẻ. Cho ma trận vuông [A] cấp n. Các phần tử của hàng thứ i là ai,1, ai,2,…,ai,n. Các phần tử của cột thứ j là a1,j, a2,j ,…, an,j. Ta xem hàng thứ i là một vector, kí hiệu là Ai* và cột thứ j cũng là một vec tơ, kí hiệu là A*j. Với mỗi phép thế: Giáo trình Matlab căn bản Thái Duy Quý Trang 56 n n jjj iii p ... ... 21 21 (1) ta lập tích: nn jijiji aaa ... 2211 (2) Trước mỗi tích (2) ta đặt dấu + nếu và dấu ‐ nếu phép thế (1) lẻ. Sau đó ta lập tổng của n! tích có dấu như vậy, nghĩa là tổng: p jijiji pt nn aaa ...)1( 2211 )( (3) trong đó: t(p) = 1 nếu phép thế p lẻ t(p) = 0 nếu phép thế p chẵn Tổng (4) được gọi là định thức của ma trận vuông [A], cấp n. Ta xây dựng hàm determinant() để tính định thức của ma trận theo định nghĩa: function d = determinant(A) % DETERMINANT tinh dinh thuc theo dinh nghia. [m, n] = size(A); if ( m ~= n ) fprintf ( ʹ\nʹ ); fprintf ( ʹ Chi ma tran vuong moi co dinh thuc!\nʹ ); return end p = zeros(1, n); nf = prod([1:n]); d = 0.0; for i = 1:nf p = nextperm(p); s = permsign(p); x = diag(A([1:n],p)); 91 d = d + s*prod(x); Giáo trình Matlab căn bản Thái Duy Quý Trang 57 end function psign = permsign(p) % PERMSIGN tra ve dau phep the . % +1, neu phep the chan, % ‐1, neu phep the le. n = length ( p ); psign = 1; for i = 1:n‐1 j = i; while (p(j) ~= i) j = j + 1; end if ( j ~= i ) temp = p(i); p(i) = p(j); p(j) = temp; psign = ‐ psign; end end function q = nextperm(p) n = length(p); q = p; if(n == 1) q = 1; elseif (q == 0) q = [1:n]; else i = n ‐ 1; Giáo trình Matlab căn bản Thái Duy Quý Trang 58 while (q(i) > q(i+1)) i = i ‐ 1; if (i == 0) break; 92 end end if (i == 0) q = [1:n]; else j = n; while (q(j) < q(i)) j = j ‐ 1; end t = q(j); q(j) = q(i); q(i) = t; q(i+1:n) = q(n:‐1:i+1); end end Để tính định thức ta dùng chương trình ctdeterminant.m: clear all, clc %a = [1 2; 3 5]; a = [1 3 5; 3 4 6; 4 6 3]; d = determinant(a) Giáo trình Matlab căn bản Thái Duy Quý Trang 59 2. Nghịch đảo ma trận bằng cách dùng Minor Cho ma trận [A], ta có: ]det[ )( ,, 1 A A a ijji Trong đó: (a-1)i,j là phần tử ở hàng i, cột j của ma trận [A]‐1 , Ai,j là phần bù đại số của phần tử ai,j của ma trận [A]. Ta xây dựng hàm minorinv() để thực hiện thuật toán trên: function c = minorinv(a) % Tim ma tran nghich dao bang thuat toan minor n = size(a, 1); ms = det(a); for i = 1:n for k = 1:n b = cofactor(a, i, k); c(i, k) = b/ms; end end c = transpose(c); Để tìm ma trận nghịch đảo ta dùng chương trình ctminorinv.m: clear all, clc; a = [1 3 5; 3 4 9; 5 9 6]; b = minorinv(a) Giáo trình Matlab căn bản Thái Duy Quý Trang 60 3. Nghịch đảo ma trận bằng thuật toán gauss-Jordan. Cho ma trận [A] và ma trận đơn vị [E] tương ứng. Dạng của ma trận [E] cấp 4, là: 1000 0100 0010 0001 E Như vậy, vấn đề là ta cần tìm ma trận [A]‐1. Phương pháp loại trừ để nhận được ma trận nghịch đảo [A]‐1 được thực hiện qua n giai đoạn, mỗi một giai đoạn gồm hai bước. Đối với giai đoạn thứ k: - Chuẩn hoá phần tử akk bằng cách nhân hàng với nghịch đảo của nó. - Làm cho bằng không các phần tử phía trên và phía dưới đường chéo cho đến cột thứ k. Khi k = n thì [A](k) sẽ trở thành ma trận đơn vị và [E] trở thành [A]‐1 Ta xây dựng một hàm nghịch đảo invmat(): function x = invmat(a) % Nghich dao ma tran a 102 %Cu phap: x = invmat(a) k = size(a, 1); n = k; b = eye(n); a = [a, b]; i = 1; while i<=n if a(i, i) ~= 0 c = a(i, i); a(i, i:2*n) = a(i, i:2*n)/c; end for k = 1:n if k~=i Giáo trình Matlab căn bản Thái Duy Quý Trang 61 c = a(k, i); a(k, i:2*n) = a(k, i:2*n)‐ a(i, i:2*n)*c; end end i = i+1; end x(:, 1:k) = a(:, (1+k):(2*k)); Để nghịch đảo ma trận: 211 121 112 ][A ta dùng chương trình ctinvmat.m: clear all, clc a = [ 2 1 1; 1 2 1; 1 1 2]; b = invmat(a) 4. Lập trình giao diện: Giải phương trình bậc 2 Chạy Matlab, vào Menu File\New\GUI sẽ thấy hiện ra hộp thoại sau: Chọn Blank GUI, nhấn OK. Giáo trình Matlab căn bản Thái Duy Quý Trang 62 Trong hộp thoại hiện ra, kéo thả các điều khiển Push button, Edit Text và Static Text vào figure như giao diện sau: Mỗi điều khiển đều có nhiều thuộc tính, có 2 thuộc tính quan trọng nhất là: Tag, String. Tag là thuộc tính chỉ địa chỉ của điều khiển (dùng để gọi khi cần). String là thuộc tính chứa nội dung (sẽ được hiển thị ra ngoài) của điều khiển. Sau đây ta đặt các thuộc tính này: - Push button 1: + Tag : start + String : Bat dau - Push button 2: + Tag : close + String : Close - Edit Text 1: + Tag : heso_a + String : (xóa trắng) - Edit Text 2: + Tag : heso_b Giáo trình Matlab căn bản Thái Duy Quý Trang 63 + String : (xóa trắng) - Edit Text 3: + Tag : heso_c + String : (xóa trắng) - Edit Text 4: + Tag : nghiem_x1 + String : (xóa trắng) - Edit Text 5: + Tag : nghiem_x2 + String : (xóa trắng) - Static Text 1: (Đối với các Static Text thuộc tính Tag không quan trọng, trừ các trường hợp đặc biệt) + String : Giai phương trinh bac 2: ax2 + bx + c = 0 - Static Text 2: + String : a = - Static Text 3: + String : b = - Static Text 4: + String : c = - Static Text 5: + String : Ket luan - Static Text 6: + Tag : kl + String : (xóa trắng) - Static Text 7: + String : x1 = - Static Text 8: Giáo trình Matlab căn bản Thái Duy Quý Trang 64 + String : x2 = - figure: (click đúp vào nền của figure): + Tag : fig1 + Name : Giai phương trinh bac 2 Sau khi đặt các thuộc tính, căn chỉnh (sử dụng chuột hoặc công cụ Align Objecs) được figure có dạng như sau: Lưu lại figure (Menu File\Save) dưới tên GPTB2.fig. Sau đó Matlab tự sinh file GPTB2.m; trong file này tìm hàm start_callback và đánh vào các dòng lệnh sau: Giáo trình Matlab căn bản Thái Duy Quý Trang 65 Hàm set là hàm đặt thuộc tính cho điều khiển. Hàm get là hàm lấy giá trị thuộc tính của điều khiển Hàm str2double là hàm biến chuỗi thành số Cuối cùng ghi lại file m (GPTB2.m) và chạy chương trình (nhấn F5 hoặc nút run hình tam giác màu xanh). Nhập vào các hệ số a, b, c và click nút Bat dau để xem kết quả. 5. Kết chương Trong chương này, sinh viên đã làm quen với một số phương pháp lập trình phức tạp trên Matlab. Thông qua các ví dụ, sinh viên sẽ có điều kiển hiểu rõ hơn các phương pháp xử lý lập trình trên Matlab hiện nay. Giáo trình Matlab căn bản Thái Duy Quý Trang 66 PHỤ LỤC Hướng dẫn sử dụng công cụ Simulink Simulink là một công cụ trong Matlab dùng để mô hình, mô phỏng và phân tích các hệ thống động với môi trường giao diện sử dụng bằng đồ họa. Việc xây dựng mô hình được đơn giản hóa bằng các hoạt động nhấp chuột và kéo thả. Simulink bao gồm một bộ thư viện khối với các hộp công cụ toàn diện cho cả việc phân tích tuyến tính và phi tuyến. Simulink là một phần quan trọng của Matlab và có thể dễ dàng chuyển đổi qua lại trong quá trình phân tích, và vì vậy người dùng có thể tận dụng được ưu thế của cả hai môi trường. Có thể mở Simulink bằng 2 cách: - Click vào biểu tượng như hình dưới (Simulink icon) - Từ cửa sổ lệnh, đánh lệnh simulink và enter Cửa sổ thư viện Simulink sẽ hiển thị: Giáo trình Matlab căn bản Thái Duy Quý Trang 67 Tạo một mô hình mới bằng cách: - Click vào icon New model hoặc gõ Ctrl-N - Menu File\New\Model Cửa sổ xây dựng mô hình xuất hiện: Giáo trình Matlab căn bản Thái Duy Quý Trang 68 Tạo các khối: từ thư viện Simulink chọn khối cần dùng, nhấp chuột vào và kéo ra ra cửa sổ mô hình: Lưu trữ mô hình bằng lệnh Save (File\Save) hoặc nhấp vào icon Save. Dịch chuyển các khối đơn giản bằng cách nhấp vào khối đó và kéo thả: Giáo trình Matlab căn bản Thái Duy Quý Trang 69 Nối tín hiệu: Đưa con chuột tới ngõ ra của khối (dấu “>”), khi đó con chuột sẽ có dạng “+”. Kéo rê chuột tới ngõ vào của một khối khác và thả ra để kết nối tín hiệu. Mô phỏng mô hình: Dùng lệnh Start (Menu Simulation\Start) hoặc nhấp chuột vào icon Start Xem tín hiệu từ Scope: nhấp đôi vào khối Scope: Giáo trình Matlab căn bản Thái Duy Quý Trang 70 Chỉnh thông số của một khối bằng cách nhấp đôi vào khối cần chỉnh Trước khi mô phỏng mô hình Simulink, chúng ta cần đặt các thông số mô phỏng bằng cách chọn menu Simulation Configuration Parameters Ở cửa sổ Configuration Parameters, chúng ta có thể đặt một số thông số như Start time, Stop time (second – giây), và phương pháp giải Solver, Solver options,.. sau đó nhấn nút OK Giáo trình Matlab căn bản Thái Duy Quý Trang 71 TÀI LIỆU THAM KHẢO [1].Phan Thanh Tao, Giáo trình Matlab, Đại học Đà Nẵng, 2004 [2].Trần Văn Chính, Matlab toàn tập, Đại học Bách Khoa hà Nội, 2005. [3].Ebook, The Student Edition of Matlab, Mathworks, Inc; [4].Brian R. Hunt Ronald L. Lipsman JonathanM. Rosenberg, A Guide to MATLAB for Beginners and Experienced Users, Cambridge University Press, 2001. [5]. Và một số tài liệu tham khảo khác trên Internet.
File đính kèm:
- Bài giảng tóm tắt Matlab căn bản.pdf