Tài liệu Thực hành Matlab
Lời mở đầu 1
1 Matlab cơ bản 5
1.1 Giới thiệu Matlab . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.2 Phép toán, biến, vector, ma trận . . . . . . . . . . . . . . . . 8
1.2.1 Biến . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.2.2 Phép toán . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.2.3 Vector . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
1.2.4 Ma trận . . . . . . . . . . . . . . . . . . . . . . . . . . 16
1.3 Biểu thức Logic . . . . . . . . . . . . . . . . . . . . . . . . . . 19
1.3.1 Các toán tử logic . . . . . . . . . . . . . . . . . . . . . 19
1.3.2 Vectơ và biểu thức logic . . . . . . . . . . . . . . . . . 20
1.3.3 Các hàm logic: All, Any và Find . . . . . . . . . . . . . 20
1.4 Lệnh điều kiện và vòng lặp . . . . . . . . . . . . . . . . . . . . 21
1.4.1 Lệnh IF . . . . . . . . . . . . . . . . . . . . . . . . . . 21
1.4.2 Lệnh FOR . . . . . . . . . . . . . . . . . . . . . . . . . 22
1.4.3 Lệnh WHILE . . . . . . . . . . . . . . . . . . . . . . . 23
1.4.4 Lệnh SWITCH . . . CASE . . . . . . . . . . . . . . . . . 24
1.4.5 Script và Hàm . . . . . . . . . . . . . . . . . . . . . . . 24
1.5 Vẽ đồ thị . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
1.5.1 Vẽ đồ thị trong 2-D . . . . . . . . . . . . . . . . . . . . 28
1.5.2 Vẽ đồ thị trong 3-D . . . . . . . . . . . . . . . . . . . . 33
2 Đại số tuyến tính 38
2.1 Các phép toán ma trận, các phép biến đổi sơ cấp . . . . . . . 38
2.1.1 Các phép toán ma trận . . . . . . . . . . . . . . . . . . 38
MỤC LỤC 3
2.1.2 Các phép biến đổi sơ cấp . . . . . . . . . . . . . . . . . 42
2.2 Ma trận nghịch đảo, Phương trình ma trận và Hệ phương trình
tuyến tính . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
2.2.1 Ma trận nghịch đảo . . . . . . . . . . . . . . . . . . . . 44
2.2.2 Ma trận giả nghịch đảo . . . . . . . . . . . . . . . . . . 46
2.2.3 Giải phương trình ma trận . . . . . . . . . . . . . . . . 49
2.3 Hệ phương trình tuyến tính . . . . . . . . . . . . . . . . . . . 51
2.3.1 Đưa về dạng ma trận . . . . . . . . . . . . . . . . . . . 51
2.3.2 Sử dụng tính toán symbolic . . . . . . . . . . . . . . . 52
2.4 Định thức, giải hệ phương trình tuyến tính bằng định thức . . 54
2.4.1 Định thức . . . . . . . . . . . . . . . . . . . . . . . . . 54
2.4.2 Giải hệ phương trình tuyến tính bằng định thức . . . . 55
2.5 Đa thức đặc trưng, trị riêng và vectơ riêng . . . . . . . . . . . 55
3 Giải tích hàm một biến 58
3.1 Các phép toán tập hợp . . . . . . . . . . . . . . . . . . . . . . 58
3.1.1 Định nghĩa tập hợp và cách khai báo tập hợp trong
Matlab . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
3.1.2 Các phép toán trong tập hợp . . . . . . . . . . . . . . 59
3.2 symbolic math cơ bản . . . . . . . . . . . . . . . . . . . . . . 66
3.2.1 Khái niệm chung . . . . . . . . . . . . . . . . . . . . . 66
3.2.2 Khởi động TOOLBOX . . . . . . . . . . . . . . . . . . 66
3.3 Các bài toán dãy số và chuỗi số . . . . . . . . . . . . . . . . . 71
3.3.1 Khái niệm về dãy số, chuỗi số và cách khai báo trong
matlab . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
3.3.2 Một số hàm về xử lí dãy số và chuỗi số trong Matlab . 72
3.4 Các bài toán giới hạn hàm số và tính liên tục của hàm số . . . 76
3.4.1 Giới hạn của hàm số . . . . . . . . . . . . . . . . . . . 76
3.4.2 Sự liên tục của hàm số . . . . . . . . . . . . . . . . . . 77
3.5 Các bài toán tích phân hàm một biến . . . . . . . . . . . . . . 80
3.5.1 Tích phân bất định . . . . . . . . . . . . . . . . . . . . 80
3.5.2 Tích phân xác định . . . . . . . . . . . . . . . . . . . . 80
3.5.3 Tích phân số . . . . . . . . . . . . . . . . . . . . . . . 81
3.5.4 Các hàm trong Matlab dùng cho bài toán vi phân hàm
một biến . . . . . . . . . . . . . . . . . . . . . . . . . . 83
4 MỤC LỤC
4 Cơ học và Xác suất - Thống kê 88
4.1 Cơ học . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
4.1.1 Động học chất điểm . . . . . . . . . . . . . . . . . . . 88
4.1.2 Sóng cơ học . . . . . . . . . . . . . . . . . . . . . . . . 93
4.2 Xác suất - Thống kê . . . . . . . . . . . . . . . . . . . . . . . 97
4.2.1 Tính toán xác suất cơ bản . . . . . . . . . . . . . . . . 97
4.2.2 Thống kê mô tả . . . . . . . . . . . . . . . . . . . . . . 99
4.2.3 Kiểm định giả thiết: z - test và t - test . . . . . . . . . 99
5 Giao diện đồ họa người dùng – GUI 102
5.1 Tổng quan về các tệp tin GUI . . . . . . . . . . . . . . . . . . 102
5.1.1 Tệp tin M và tệp tin FIG . . . . . . . . . . . . . . . . 102
5.1.2 Cấu trúc tệp tin M của GUI . . . . . . . . . . . . . . . 102
5.2 Ví dụ tạo một GUI đơn giản . . . . . . . . . . . . . . . . . . . 103
hà máy sản xuất thức ăn đóng hộp tuyên bố rằng trọng lượng trung bình các hộp thức ăn xuất xưởng là 140 (g). Lấy mẫu 12 hộp thức ăn 138, 125, 155, 130, 140, 150 130, 120, 125, 134, 160, 135 Dùng kiểm định z - test hoặc t- test để kiểm chứng khẳng định của nhà máy với mức ý nghĩa α = 5%. CHƯƠNG 5 Giao diện đồ họa người dùng – GUI 5.1 Tổng quan về các tệp tin GUI 5.1.1 Tệp tin M và tệp tin FIG Tạo tệp tin GUI bằng câu lệnh GUIDE. Một tệp tin GUI sẽ được tạo ra và lưu trữ trong hai tệp tin: • Tệp tin FIG, đuôi mở rộng .fig, chứa cách bố trí (layout) GUI và các thành phần của GUI như là: push buttons, axes, panels, menus v.v... • Tệp tin M, đuôi mở rộng .m, chứa các đoạn mã khởi tạo ban đầu và các thủ tục (template) cho các hàm gọi lại (callback). Ngoài ra, phải thêm các callback khi viết các thành phần của GUI. Tệp tin FIG và tệp tin M phải cùng tên và thường có chung đường dẫn. Thực thi: Tạo GUI → tổ chức GUI trong Layout Editor (công việc được lưu trong tệp tin FIG) → thực thi GUI (công việc được lưu trong tệp tin M). 5.1.2 Cấu trúc tệp tin M của GUI Tệp tin M của GUI được GUIDE tạo ra là một tệp tin hàm, tên hàm chính trùng với tên tệp tin. Các callback trong tệp tin là các hàm con của hàm chính. 5.2 Ví dụ tạo một GUI đơn giản 103 Hình 5.2.1: Tạo và đặt tên cho một GUI mới Khi lệnh GUIDE tạo ra tệp tin M, nó tự động đưa vào các thủ tục của các callback thường được sử dụng nhất. Tệp tin M chứa đoạn mã khởi tạo, và ta phải thêm các đoạn mã vào các callback thành phần trong GUI theo mục đích của công việc. 5.2 Ví dụ tạo một GUI đơn giản Ví dụ 5.2.1. Tạo một GUI có một nút bấm, khi bấm vào sẽ hiện giờ hiện hành • Bước 1: Tạo GUI bằng lệnh GUIDE, hình vẽ 5.2.1 • Bước 2: Chọn và đặt pushbutton, hình vẽ 5.2.3 • Bước 3: Chỉnh thuộc tính component, hình vẽ 5.2.4 – 5.2.8 • Đặt tên cho chương trình: Chọn Property Inspector → Chỉnh Name: Time, hình vẽ 5.2.9 Ví dụ 5.2.2. Tạo một GUI vẽ đồ thị. 5.3 Một số component trong GUI Push Button(Nút nhấn) Khi nhấp chuột vào một nút, thì hàm sau sẽ được gọi 104 Giao diện đồ họa người dùng – GUI Hình 5.2.2: Layout editor Hình 5.2.3: Chọn và đặt pushbutton Hình 5.2.4: Chỉnh thuộc tính component 5.3 Một số component trong GUI 105 Hình 5.2.5: Thay đổi giá trị thuộc tính Hình 5.2.6: Cài đặt Callback cho component Hình 5.2.7: Tệp tin M của GUI 106 Giao diện đồ họa người dùng – GUI Hình 5.2.8: Thêm đoạn mã xử lý Hình 5.2.9: Đặt tên cho chương trình là Time Hình 5.2.10: GUI vẽ đồ thị 5.3 Một số component trong GUI 107 Hình 5.2.11: Handle Visibility → callback Hình 5.2.12: Chọn và đặt Axes Hình 5.2.13: Handle Visibility của Axes → On 108 Giao diện đồ họa người dùng – GUI Hình 5.2.14: Thêm Button Plot Hình 5.2.15: Cài đặt Callback cho Button Plot Hình 5.2.16: Thêm các button grid on/off và clear 5.3 Một số component trong GUI 109 Hình 5.2.17: Cài đặt callback cho Grid on/off Hình 5.2.18: Cài đặt callback cho Clear 110 Giao diện đồ họa người dùng – GUI function pushbutton1_Callback(hObject, eventdata, handles) ... ... ... Ví dụ 5.3.1. Nhấn nút thì thay tên của nút (thuộc tính ‘String’ của nút) function pushbutton1_Callback(hObject, eventdata, handles) set(gcbo,’String’,‘ten gi do’); Một số thuộc tính quan trọng của Button: • Enable: cho phép nhấn (on/off) • String: chuỗi hiển thị trên nút • Tag: tên đối tượng nút phân biệt với các đối tượng khác trong chương trình • Value: giá trị của nút. Toggle Button, Radio Button và Check Box (Nút bật tắt, Nút chọn và Ô check) • Thuộc tính của Toogle Button: Thuộc tính Value sẽ bằng thuộc tính Max nếu nút được nhấn hoặc được chọn, ngược lại sẽ bằng thuộc tính Min. function togglebutton1_Callback(hObject, eventdata, handles) button_state = get(hObject,’Value’); if button_state == get(hObject,’Max’) % Toggle button được nhấn ... elseif button_state == get(hObject,’Min’) % Toggle button không được nhấn ... end • Mặc định Max=1, Min=0. Cũng có thể thay đổi trạng thái cho các Toggle Button, Radio Button và Check Box bằng cách đặt lại các thuộc tính Value, Max, Min. set(handles.togglebutton1,’Value’,get(handles.togglebutton1,’Max’)) 5.3 Một số component trong GUI 111 đặt nút togglebutton1 sang trạng thái được nhấn set(handles.radiobutton1,’Value’,get(handles.radiobutton1,’Min’)) đặt nút radiobutton1 sang trạng thái bỏ chọn Ô nhập văn bản: Edit Text • Thuộc tính String chứa chuỗi mà người dùng nhập vào function edittext1_Callback(hObject, eventdata, handles) user_string = get(hObject,’String’); ... • Nếu thuộc tính Max, Min được đặt sao cho Max–Min>1 thì người dùng có thể nhập nhiều hàng. • Callback được gọi khi đang thay đổi nội dung của Edit Text mà nhấp chuột ra bên ngoài (nhưng vẫn bên trong GUI), hoặc khi người dùng nhấn Enter (với Edit Text một hàng), Ctrl+Enter (với Edit Text nhiều hàng). • Thuộc tính String trả về một chuỗi. Muốn nhận dữ liệu số thì sử dụng hàm str2double. Nếu người dùng không nhập số thì str2double trả về NaN. function edittext1_Callback(hObject, eventdata, handles) user_entry = str2double(get(hObject,’string’)); if isnan(user_entry) errordlg(’You must enter a numeric value’,’Bad Input’,’modal’) return end % Proceed with callback... Thanh trượt (Slider) • Thuộc tính Value xác định trạng thái của Slider. • Thuộc tính Max và Min xác định cực đại và cực tiểu cho thuộc tính Value của Slider. 112 Giao diện đồ họa người dùng – GUI function slider1_Callback(hObject, eventdata, handles) slider_value = get(hObject,’Value’); % Proceed with callback... List box và Pop-up menu • Thuộc tính Value chứa chỉ số của mục được chọn. Chỉ số của mục đầu tiên là 1. • Thuộc tính String là mảng cell chứa danh sách các mục chọn của List Box và Pop-up Menu. • Ví dụ dưới đây cho phép lấy giá trị của chuỗi được chọn trong List Box. function listbox1_Callback(hObject, eventdata, handles) index_selected = get(hObject,’Value’); list = get(hObject,’String’); item_selected = list{index_selected}; % Convert from cell array to string • Callback của List Box được gọi sau sự kiện nhả chuột hoặc nhấn một số phím đặc biệt. • Khi các phím mũi tên thay đổi thuộc tính Value của List Box, callback Callback được gọi đồng thời đặt thuộc tính SelectionType của figure thành normal. • Phím Enter và Space không làm thay đổi thuộc tính Value của List Box, nhưng Callback vẫn được gọi, đồng thời đặt thuộc tính SelectionType của figure thành open. • Nếu người dùng nhấp đúp chuột thì Callback được gọi sau mỗi lấn nhấp. MatLab đặt thuộc tính SelectionType của figure thành normal ở lần thứ nhất và thành open ở lần thứ hai. • Do đó ta có thể biết được người dùng nhấp đúp chuột hay không dựa vào việc truy vấn thuộc tính SelectionType của figure. 5.3 Một số component trong GUI 113 Button Group • Button Group chứa các thành phần GUI, đồng thời giúp ta quản lý việc lựa chọn của Radio Button và Toggle Button. • Nếu Button Group chứa Radio Button, Toggle Button hoặc cả hai thì Button Group chỉ cho phép một trong số chúng được chọn. Nếu một cái được chọn thì những cái khác sẽ được bỏ chọn. • Callback SelectionChangeFcn của Button Group được gọi khi có sự thay đổi chọn. • Tham số đầu vào hObject trỏ tới Radio Button hoặc Toggle Button được chọn. • Các callback của các thành phần khác trong GUI có thể truy xuất tới đối tượng được chọn thông qua thuộc tính SelectedObject của Button Group. Axes (Hệ trục tọa độ) • Hệ trục tọa độ dùng để vẽ đồ thị hoặc hiển thị hình ảnh. • Muốn vẽ đồ thị lên một hệ trục tọa độ, ta thêm handles tới hệ trục tọa độ đó vào hàm muốn sử dụng. Ví dụ 5.3.2. vẽ đồ thị lên hệ trục axes1 [X,Y] = meshgrid(-3:.125:3); Z = peaks(X,Y); meshc(handles.axes1,X,Y,Z); axis([-3 3 -3 3 -10 5]); BÀI TẬP 1. Tạo một giao diện người dùng như hình vẽ 5.3.1. Chương trình mô phỏng máy tính bỏ túi dùng để tính các phép toán thông thường. Trong đó, nút dấu bằng là togglebutton , các nút còn lại đều là pushbutton. Các tag cụ thể: 114 Giao diện đồ họa người dùng – GUI Hình 5.3.1: Máy tính với các chức năng thông thường • Dấu bằng: togglebutton_bang. Nó ở trạng thái được nhấn khi người dùng nhập xong một chuỗi và nhấn vào nó. Nút này ở trạng thái không nhấn khi người dùng nhấn vào các nút khác để bắt đầu nhập chuỗi mới. • Màn hình hiển thị gồm: text_bieuthuc, hiển thị biểu thức người dùng nhập và kết quả biểu thức. Và text_canhbao, hiển thị thông báo khi nhập sai. • Nút Del và AC dùng để xóa: pushbutton_del, pushbutton_AC, nút Del xóa một ký tự cuối, nút AC xóa toàn bộ chuỗi. • Các nút nhập biểu thức: pushbutton_1, pushbutton_2, push- button_cong, . . . để nhập biểu thức cần tính. 2. Thiết kế GUI như hình vẽ 5.3.2. Chương trình sẽ vẽ đồ thì hàm số được chọn trong popupmenu1 lên hệ trục tọa độ khi nhấn vào nút push- button_Update với các tham số đường nét, màu sắc được chọn trong hai buttongroup, đó là uipanel_Color và uipanel_LineStyle. Ngoài ra đồ thị sẽ có thêm các ô lưới nếu checkbox Grid được chọn, ngược lại đồ thì sẽ không có các ô lưới. 3. Thiết kế GUI như hình vẽ 5.3.3. Bao gồm: • Hai hệ trục tọa độ axes1 và axes2 dùng để hiển thị đồ thị. • Các nút vẽ và ô check để hiển thị lưới trên đồ thị: pushbut- ton_Plot1, pushbutton_Plot2, checkbox_Grid1, và check- box_Grid2. 5.3 Một số component trong GUI 115 Hình 5.3.2: GUI vẽ đồ thị 2D Hình 5.3.3: GUI vẽ đồ thị 2D với các tính năng cập nhật các hàm cần vẽ 116 Giao diện đồ họa người dùng – GUI • Hai danh sách các hàm số cần vẽ và các nút thêm, xóa hàm số: list- box1, listbox2, pushbutton_Add1, pushbutton_Remove1. • Ô edit text dùng để nhập thêm hàm số và hai static text dùng để hiển thị thông báo lỗi: edit1, text1, text2. • Khi người dùng nhấn các nút Plot, đồ thị của hàm số được chọn trong list box sẽ được hiển thị trên các hệ trục tọa độ tương ứng. • Khi người dùng nhập hàm số vào text box và nhấn nút Add thì hàm số sẽ được thêm vào list box tương ứng. • Khi người dùng nhấn nút Remove thì hàm số được chọn sẽ bị xóa khỏi list box tương ứng.
File đính kèm:
- Tài liệu Thực hành Matlab.pdf