1.1 Khởi động và Giao Diện của Matlab Để khởi động Matlab ta nháy đúp chuột vào biểu tượng của Matlab, trên màn hình sẽ hiện ra cửa sổ giao diện của Matlab Hình 1: Giao diện Matlap ✻ Tr
Trang 1BỘ LAO ĐỘNG - THƯƠNG BINH & XÃ HỘI
TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT VĨNH LONG
ĐỒ ÁN MÔN HỌC
Hướng dẫn sử dụng MATLAB & Simulink và ứng dụng điều khiển
các hệ thống tự động
Họ và tên: MAI LÊ THÀNH NHÂN MSSV: 18007023
Giáo viên hướng dẫn: LÊ MINH THÀNH
Vĩnh Long, tháng 12 năm 2021
Trang 2LỜI CÁM ƠN
Trong những lời đâu tiên báo cáo đồ án học phần này, em muốn gửi nhũng lời cám ơn và biết ơn trân thành nhất của mình tới tất cả những người đã hỗ trợ và giúp đỡ em cả về kiến thức và tinh thần trong quá trình thực hiện đồ án.
Trước hết, em xin chân thành cám ơn thầy Lê Minh Thành, người đã trực tiếp hướng dẫn, nhận xét, tận tình chỉ bảo, giúp đỡ em trong suốt quá trình làm đồ án, để em có thể hoàn thiện đồ án một cách tốt nhất.
Xin chân thành cảm ơn tới tất cả các thầy cô đã nhiệt tình dạy bảo, truyền đạt kiến thức cho chúng em trong suốt thời gian học tập dưới máy trường Đại Học Sư Phạm Kỹ Thuật Vĩnh Long, đặc biệt với các thầy cô tại Khoa Điện- Điện tử, các thầy cô đã luôn quan tâm , định hướng và tạo điều khiện thuận lợi cho em học tập, nghiên cứu và thực hiện đồ án.
Em đã cố gắng để hoàn thiện Đồ án 2 một cách tốt nhất, nhưng do
sự hạn chế về thơi gian và kiến thức nên không thể tránh khỏi những thiếu sót, rất mong sự đóng góp của thầy cô và các bạn.
Xin chân thành cám ơn!
Vĩnh Long, Ngày … Tháng … Năm 2021 Sinh Viên
(Người thực hiện đồ án)
MAI LÊ THÀNH NHÂN
Trang 3MỤC LỤC
Trang
NHẬN XÉT VÀ ĐÁNH GIÁ CỦA GIÁO VIÊN
LỜI CÁM ƠN
MỤC LỤC
LỜI NÓI ĐẦU
PHẦN 1: SƠ LƯỢC VỀ MATLAB ………
I Phần mềm Matlab ………
II Phạm vi ứng dụng ………
III Cài đặt phần mềm Matlab ………
PHẦN 2: GIỚI THIỆU VỀ MATLAB VÀ PHẠM VI ỨNG DỤNG………
CHƯƠNG 1 GIỚI THIỆU CHUNG VỀ MATLAB………
I Giới thiệu về Matlab.………
1.1 Khởi động và Giao Diện của Matlab………
1.2 Cách thức sử dụng phần mềm Matlab ………
1.3 Các thức viết biểu thức, sử dụng biến, các phím chức năng ………
II Thao tác với các tệp trong Matlab ………
2.1 Các loại tệp được dùng trong Matlab………
2.2 Các lệnh xử lý tệp mat ………
2.3 Đường dẫn ………
2.4 Các lệnh xử lý m file………
CHƯƠNG 2 XỬ LÝ DỮ LIỆU DẠNG MẢNG (MA TRẬN) TRONG MATLAB………
I Các phương pháp tạo mảng dữ liệu ………
1.1 Phương pháp nhập trực tiếp từ bàn phím………
1.2 Dùng toán tử " : "………
1.3 Dùng hàm linspace và logspace:………
1.4 Sử dụng các mảng chuẩn………
1.5 Mảng tạo từ tệp………
Trang 4II Tham chiếu tới các phần tử của mảng, tạo các mảng con………
2.1 Nguyên tắc tham chiếu tới các phần tử của mảng………
2.2 Các ứng dụng của việc truy cập các phần tử của mảng………
III Các phép tính thực hiện trên mảng………
3.1 Các phép toán thông thường………
3.2 Sử dụng các toán tử với dấu "."………
3.3 Các hàm dùng trên mảng………
CHƯƠNG 3 ĐỒ HỌA TRONG MATLAB………
3.1 Những vấn đề chung………
3.2 Đường cong biểu diễn mỗi quan hệ của các giá trị ………
3.2.1 Đồ thị 2 chiều………
3.2.2 Đồ thị 3 chiều (dạng lưới và bề mặt)………
3.2 Tên của đồ thị………
3.3 Các trục toạ độ………
3.3.1 Điều khiển các trục toạ độ………
3.3.2 Các chú thích trên trục toạ độ………
3.4 Các chú thích khác trên đồ thị………
3.5 Các thuộc tính của văn bản đồ hoạ………
3.5.1 Các thuộc tính của văn bản………
3.5.2 Các ký tự đặc biệt………
3.5.3 Một số ví dụ………
3.5.4 Các tuỳ chọn của lệnh plot………
3.6 Một số lệnh viết chữ khác………
3.6.1 Lệnh gtext………
3.6.2: Lệnh ginput………
3.7 In ấn đồ thị ………
CHƯƠNG 4 LẬP TRÌNH ỨNG DỤNG TRONG MATLAB………
I Các loại dữ liệu dùng trong Matlab………
1 Dữ liệu số………
Trang 52 Các phép tính trên số phức………
2.1 Nhập dữ liệu………
2.2 các phép tính thực hiện trên số phức………
2.3 Các hàm xử lý số phức………
3 Dữ liệu dạng chuỗi………
3.1 Phép gán và tham chiếu đến dữ liệu dạng chuỗi………
3.2 Tạo các mảng với phần tử là chuỗi………
3.2.1 Tạo véc tơ cột các chuỗi:………
3.2.2 Tạo mảng hoặc véc tơ hàng các chuỗi………
3.3 Các hàm dùng trên chuỗi………
3.3.1 Hàm chuyển đổi từ dữ liệu số sang chuỗi và ngược lại………
II Nhập, xuất dữ liệu………
1 Các lệnh nhập dữ liệu………
1.1 Nhập từ bàn phím: Lệnh input………
1.2 Nhập từ hộp thoại: Lệnh inputdlg………
1.3 Nhập dữ liệu từ tệp: Lệnh fread………
1.4 Lệnh fopen: ………
1.5 Lệnh đóng tệp, fclose………
1.6 Lệnh fscanf: ………
2 Các lệnh xuất dữ liệu………
2.1 lệnh disp………
2.2 Lệnh fprintf………
2.3 Lệnh fwrite………
III Các lệnh phân nhánh………
1 Lệnh if………
1.1 Cú pháp: Lệnh If………
1.2 Các toán tử logic………
1.3 Các hàm logíc………
2 Lệnh switch………
Trang 6IV Các vòng lặp………
1 Vòng lặp xác định: for………
2 Vòng lặp không xác định: while………
V Các chương trình con………
1.Phương pháp xây dựng các hàm và chương trình con………
2 Các đối số vào, ra………
CHƯƠNG 5 MÔ PHỎNG CÁC HỆ THỐNG ĐỘNG LỰC BẰNG SIMULINK………
I Giới thiệu về mô phỏng số ………
1 Ý nghĩa và tầm quan trọng của mô phỏng số………
2 Giới thiệu về các phần mềm mô phỏng ………
II Trình tự thực hiện một quá trình mô phỏng.………
1 Xây dựng cấu trúc mô phỏng: Sơ đồ khối………
2 Xác lập giá trị các thông số của mô hình………
3 Xác lập các điều kiện đầu………
4 Các kích động đưa vào hệ thống………
5 Lựa chọn cách thức xuất kết quả………
6 Điểu khiển việc thực thi quá trình mô phỏng.………
III Sử dụng SIMULINK trong mô phỏng các hệ động lực………
1 Các thao tác cơ bản………
2 Chức năng và thao tác trên các khối thông dụng………
2.1 Nhóm các khối xử lý tín hiệu liên tục………
2.2 Nhóm các khối thực hiện việc gọi hàm từ Matlab và hàm truyền…………
2.3 Nhóm các khối thực hiện thao tác toán học (Math)………
2.4 Nhóm các khối xử lý tín hiệu………
2.5 Nhóm các khối thực hiện chức năng xuất kết quả (Sinks)………
2.6 Nhóm các khối thực hiện chức năng nhập dữ liệu (Sources)…………
PHẦN 3: ỨNG DỤNG………
ỨNG DỤNG SIMULINK ĐIỀU KHIỂN HỆ THỐNG LÒ NHIỆT………
1.ỨNG DỤNG SIMULINK ĐIỀU KHIỂN HỆ THỐNG LÒ NHIỆT ………
Trang 71.1 Mục đích ………
1.2 Giới thiệu Simulink ………
1.2.1 Các khối sử dụng trong bài thí nghiệm ………
1.2.2 Các bước để xây dựng ứng dụng mới………
2.Hàm truyền lò điện và mô hình của Ziegler-Nichols………
2.1 Hàm truyền lò điện ………
2.2 Mô hình của Ziegler-Nichols ………
2.3 Thí nghiệm ………
2.3.1 Chuẩn bị thí nghiệm ………
2.3.2 Khảo sát hệ hở lò nhiệt, nhận dạng hệ thống theo mô hình Ziegler – Nichols …
2.3.3 Khảo sát mô hình điều khiển nhiệt độ ON – OFF ………
2.4 Khảo sát mô hình điều khiển nhiệt độ PID (phương pháp Ziegler – Nichols). ………
KIỂM SOÁT MỰC NƯỚC HỆ BỒN ĐƠN DÙNG BỘ ĐIỀU KHIỂN PID SỐ………
1.Giới Thiệu………
2.Nội dung………
2.1 Mô hình toán của hệ bồn đơn ………
2.2 Hệ thống điều khiển rời rạc………
2.3 Mô phỏng ………
2.4 Điều khiển hệ bồn đơn dùng bộ điều khiển PID………
2.5 Kết quả thực tế ………
3 Kết luận………
Trang 8PHẦN 1: SƠ LƯỢC VỀ
MATLAB
I Phần mềm Matlab
MATLAB là phần mềm ứng dụng của
tập đoàn Mathworks (Mỹ). Đây là phần mềm
xử lý toán học rất mạnh, thông qua việc thực
hiện các phép toán trên ma trận (MAT - Matrix),
được các chuyên gia toán học và máy tính đã
lập trình các thuật giải thông qua các thư viện
công cụ xử lý toán học (LAB - Laboratory).
Phần mềm cũng cung cấp nhiều modulee khác
nhau, phục vụ cho các lĩnh vực, các chuyên
ngành cụ thể
- Định hướng của phần mềm Matlab là dùng
cho những cán bộ nghiên cứu, thiết kế và lập
trình
- Đối với ngôn ngữ lập trình thông thường để
giải bài toán cơ học người ta phải thực hiện
qua các bước sau:
+Xây dựng mô hình cơ học Xây dựng mô→
hình toán học áp dụng phương pháp toán →
+Xây dựng thuật toán Lập trình →
- Trong Matlab ta không cần quan tâm nhiều
đến việc sử dụng phương pháp toán
II Phạm vi ứng dụng
Matlab đóng vai trò như một công cụ tính
toán mạnh cho phép nhanh chóng tính ra trị số
của biểu thức phức tạp và lưu giữ trị số của
biểu thức vào bộ nhớ của máy tính
Malab cung cấp các công cụ xử lý các mảng
dữ liệu: véc tơ và ma trận, cho phép tính toán
ra kết quả của các biểu thức với dữ liệu đầuvào là các véc tơ
Matlab cung cấp các hàm để giải quyết cácvấn đề thường gặp trong kỹ thuật như: +Xử lý các đa thức (nhân, chia, tìm điểm 0(nghiệm) của đa thức)
+ Giải các phương trình tổng quát + Giải hệ phương trình tuyến tính + Giải hệ phương trình vi phân
+ Xử lý các tín hiệu đo bằng phép khai triểnfurier nhanh
+ Các phép nội suy để xử lý dữ liệu trongbảng
+ Thuật giải bài toán tối ưu
+ Phép tích phân vi phân
+ Công cụ đồ hoạ Mat lab cung cấp công cụ lập trình để xâydựng các chương trình ứng dụng
Ngoài ra còn có các module ứng dụng riêngphục vụ cho nghiên cứu sâu như:
+ Giải các phương trình vi phân đạo hàmriêng phục vụ để giải quyết các bàitoán bền dùng phương pháp phần tử hữu hạn + Simulink cho phép mô phỏng các cơ cấumáy
+ Stateflow: để nghiên cứu các dòng chảykhí hay chất lỏng
+ Fuzzy logic: nghiên cứu lôgic mờ + …v.v
III Cài đặt phần mềm Matlab
Trang 9Sau khi tải về, bạn tiến hành giải nén
tệp tin với WinRAR phiên bản mới nhất
Với MATLAB 2021, quy trình cài đặt
tương tự như MATLAB 2020, bạn tiến hành thực
hiện các bước sau đây
Bước 1: Gán File iso
MATLABv9.10R2021a_Win64.iso vào ổ đĩa ảo
(nhấn chuột phải vào file > Mount (Gán))
Bước 2: Chạy setup.exe > Advanced Options
> I have a File Installation Key
Bước 3: Nhập Enter File Installation Key
09806-07443-53955-64350-21751-41297
Bước 4:Select License File license.lic :
hoặc license_standalone.lic trong thư mục
“MATLAB Licenses” đã tải về
Chọn các thành phần bạn cần cài đặt: Select products, bạn cần
- 32GB ổ cứng để cài toàn bộ các thành phần
- 3GB nếu chỉ cài “MATLAB”
Bước 5: Chọn Add shortcut to desktop để thêm
lõi tắt MATLAB ra Desktop
Bước 6: Chờ cho quá trình cài đặt hoàn tất.Bước 7: Sau khi cài đặt thành công, bạn copy file “libmwlmgrimpl.dll” trong “MATLAB Licenses” tới thư mục cài đặt
MATLAB <matlabfolder>\bin\win64\matlab_st
artup_plugins\lmgrimpl thay thế file cũ để
hoàn tất kích hoạt
Trang 10PHẦN 2:
GIỚI THIỆU VỀ MATLAB
VÀ PHẠM VI ỨNG DỤNG
Trang 11CHƯƠNG 1 GIỚI THIỆU CHUNG VỀ MATLAB
I Giới thiệu về Matlab
1.1 Khởi động và Giao Diện của Matlab
Để khởi động Matlab ta nháy đúp chuột
vào biểu tượng của Matlab, trên màn hình sẽ
hiện ra cửa sổ giao diện của Matlab
( Hình 1: Giao diện Matlap)
✻ Trên cửa sổ giao diện chính có một số menu,
toolbar, cũng như một số cửa sổ nhỏ hơn:
Menu bar: Chứa các cây thư mục chính,
tương tự như một số phần mềm khác chạy
trong môi trường Windows, ngoài ra có một số
lệnh thực hiện riêng của Matlab
Toolbar (thanh công cụ): chứa các biểu tượng
(icon) thực hiện một số chức năng thông thường
(Open, New, Save, Cut, Paste ) và riêng biệt
(Simulink, Guide, Help )
Cửa sổ lệnh (Command window): đây là cửa
sổ quan trọng nhất, có thể cho phép thực hiện
ngay các phép toán, hoặc liên kết với các cửa
sổ khác
Một số cửa sổ phụ thực hiện các chức năngriêng (thông báo thư mục hiện thời, thông báocác dòng lệnh đã thực hiện, tên biến đang có, )
✻ Cửa sổ lệnh:
Cửa sổ lệnh là nơi cho phép nhập các lệnhthực hiện từng phép toán, các chương trình con,cũng như kết nối với các module ứng dụngtrong Matlab
Trên cửa sổ giao diện chính luôn có dấu nhắc
">>": người sử dụng có thể nhập trực tiếp tênlệnh vào đó, kết thúc gõ Enter () để thực lệnh
Nếu 1 câu lệnh dài, để xuống dòng thì sử dụng
3 dấu chấm " " trước khi gõ Enter
Lệnh clc cho phép xóa toàn bộ các lệnh đãthực hiện trước đó, trả về 1 trang cửa sổ trắng
Lệnh clear all cho phép xóa toàn bộ lưu trữcác biến có trong bộ nhớ hiện thời của máy tính
Gõ help <tên lệnh>, trên cửa sổ sẽ hiện chocách thức sử dụng lệnh đó
Đưa các câu lệnh, biểu thức vào trong tệp vănbản script file (ghi dưới dạng mã ASCII) tệp này
cần có phần mở rộng là.m (nên còn được gọi là
m file) khi cần thực hiện việc tính toán ta chỉ
cần gọi tệp này vào Matlab
Menu Bar
C a s l nh) ử ổ ệ
Trang 12b Lập trình ứng dụng
Chương trình cần được ghi vào trong tệp
m.file khi cần chạy chương trình ta gọi vào môi
trường Matlab
Để kiểm nghiệm từng dòng lệnh có thể đưa
thử trực tiếp trong cửa sổ của Matlab
Để biên tập các tệp chương trình ta có thể
dùng một trình biên tập bất kỳ hoặc dùng trực
tiếp chương trình Matlab-Editor của Matlab với
các tiện ích hỗ trợ cho lập trinh
1.3 Các thức viết biểu thức, sử dụng biến,
các phím chức năng
a Tính toán biểu thức số:
Các biểu thức số có thể nhập trực tiếp vào cửa
sổ lệnh của Matlab, sau khi ấn Enter kết quả
của biểu thức sẽ hiện ra màn hình
Các phép tính: Cộng +, Trừ -, Nhân *, Chia /,
Luỹ thừa ^ và dấu ngoặc ưu tiên phép tinh
Các dòng lệnh dài có thể được phân ra nhiều
dòng (bằng các ấn Enter),tuy nhiên cuối mỗi
dòng (trừ dòng cuối cùng) ta phải thêm dấu
b Sử dụng các hàm, hằng và biến
Các hàm: abs, sqrt, sin, cos, tan, cot, exp,
log, log10, asin, acos, atan, acot
Các hằng số đã định nghĩa: realmax,
eps,realmin, pi, inf
Khi viết biểu thức, kết quả tính toán sẽ được
lưu trữ vào trong biến có tên mặc định là ans
Thông thường để lưu kết quả tính ta thường
ở cú pháp 1: kết quả tính của biểu thức sẽ
hiện ra màn hình và lưu trữ dưới tên biến
ở cú pháp 2: kết quả không hiện ra màn hình
Để kiểm tra giá trị hiện thời của biến ta chỉ cần
File\Show Work Space
Để xoá biến khỏi mô trường ta có thể dùng các
lệnh: clear, clear , <tên biến 1>,<tên biến 2>
c Các phím chức năng
Để biên tập các dòng lệnh ta dùng các phímmũi tên hoặc dùng chức năng cắt dán
Phím xoá lùi, phím del, end, pageup, pagedown
Các phím tắt thông thường khác như ở các
phần mềm ứng dụng trong Windows: Ctrl + C; Ctrl + V; Ctrl + N, Ctrl + O, Ctrl + X,
d Quy định việc hiển thị kết quả số ra màn hình
Dùng lệnh format:
Các chế độ chính sau đây:
FORMAT Chế độ mặc định có ý nghĩa như
FORMAT SHORT
FORMAT SHORT Ghi chế độ thập phân với 5
chữ số sau dấu phẩy
FORMAT LONG Ghi chế độ thập phân với 15
chữ số sau dấu phẩy
FORMAT SHORT E Chế độ ghi số e với 5 chữ
số thập phân
Trang 13FORMAT LONG E Chế độ ghi số e với 15 chữ
số thập phân
FORMAT + Sử dụng dấu +, - ghi trước số
II
Thao tác với các tệp trong Matlab
2.1 Các loại tệp được dùng trong Matlab
Trong Matlab, ta thường dùng một số loại tệp
chính:
a Tệp *.m (m file):
Tệp này có nhiều chức năng:
Có thể chứa các biểu thức của Matlab (script
file) để gọi vào môi trường của Matlab khi cần
thiết
Là chương trình ứng dụng dùng ngôn ngữ lập
trình của Matlab
Là một hàm mới của Matlab do người dùng
định nghĩa M file được lưu trữ dưới mã ASCII
b Tệp *.mat
(có phần mở rộng là mat) dùng để ghi lại các
biến có trong môi trường làm việc của
Matlab.Tệp này được ghi dưới mã nhị phân
c Một số dạng tệp khác:
các dạng tệp đặc biệt, riêng cho các module
ứng dụng trong Matlab (VD: *.fig: đồ thị trong
Matlab; *.mdl: file mô phỏng trong Simulink )
2.2 Các lệnh xử lý tệp mat
a.Lệnh Save hoặc File/Save Work Space As
Cú pháp:
Save('filename'): ghi các biến có trong môi
trường làm việc của Matlab vào tệp
Save('filename', 'biến 1', 'biến 2', ): ghi các ,
, vào tệp
Nếu dùng menu lệnh: File/Save Work Space
as máy sẽ cho hiện ra bảng chọn Save as cho
phép ta đặt tên tệp, vị trí thư mục sẽ lưu trữ tệp
ghi các biến trong môi trường làm việc củaMatlab
b Lệnh Load hoặc File\Load Work Space
Lệnh Load('Filename') sẽ tải các biến lưu trữtrong tệp <Filename> vào môi trường làm việccủa Matlab
File\Load Work Space: Sẽ hiện ra hộp thoạiOpen cho phép ta tìm kiếm và mở tệp để tải cácbiến lưu trữ trong nó vào môi trường làm việccủa Matlab
2.3 Đường dẫn
Thông thường để làm việc với các tệp (ghi hoặctải các tệp) ta cần chỉ rõ đường dẫn đến tệp cầnthao tác
Trong môi trường làm việc của Matlab đã quyđịnh trước một số đường dẫn đến thư mục củaMatlab, nếu các tệp đưa ra không có đườngdẫn, máy sẽ tự tìm kiếm trong các thư mục này,
các thư mục này được gọi là "thư mục mặc định".
Để thao tác với các thư mục mặc định của
Matlab ta dùng lệnh: path, addpath, rmpath hoặc dùng menu lệnh File\Set Path
2', ): Thêm các đường dẫn thường trực vào
môi trường của Matlab
c Lệnh rmpath
Cú pháp rmpath('đường dẫn 1', 'đường dẫn
2' ): Loại bỏ các đường dẫn chỉ định khỏi môi
trường của Matlab
d Sử dụng menu lệnh: File\Set Path
Trang 14Lệnh File\Set Path Cho hiện ra hộp
thoại thể hiện danh sách các đường dẫn thường
trực đồng thời giúp người dùng thực hiện việc
thêm vào, bớt đi các đường dẫn thường trực
một cách trực quan
*Để thêm vào đường dẫn thường trực ta
thực hiện các thao tác sau:
Nháy chuột vào Path/ Add to Path,
Nháy chuột vào nút trong hộp thoại vừa mở
ra để tìm đến thư mục lựa chọn
Nháy vào OK
Vào Menu File\Save Path
Vào Menu File\Exit Browser để thoát khỏi hộp
thoại
*Để loại bỏ một đường dẫn thường trực ta
thực hiện các bước sau:
Nháy chuột vào thư mục cần loại bỏ trong
danh sách các thư mục mặc định của Matlab
Nháy chuột vào Path\Remove From path
Vào Menu File\Exit Browser để thoát khỏi hộp
thoại Với các phiên bản Matlab đời cao (từ 6.5
trở lên) thì nếu khi chạy m file từ một thư mục(đường dẫn mới) thì Matlab sẽ hỏi trực tiếpngười sử dụng có đưa đường dẫnnày vào hiệnthời hay không, do đó giảm bớt công việc đưađường dẫn vào cụ thể như trên trong mỗi lần sửdụng (khi thoát khỏi Matlab, đường dẫn cũng tựđộng được xóa khỏi bộ nhớ)
2.4 Các lệnh xử lý m file
Để tạo ra, biên tập và sửa chữa các tệp
m file ta có thể sử dụng bất kỳ một trình biêntập nào có thể tạo ra tệp mã ASCII, tuy nhiênMatlab cung cấp một trình soạn thảo hết sứctiện lợi đó là chương trình Matlab Editor Để tạo file mới từ cửa sổ của Matlab ta gọi:
File/New/M.file, Hoặc nháy vào biểu tượng New trên thanh công cụ
Để mở tệp đã có ra để hiệu chỉnh, ta nháychuột vào biểu tượng Open hoặc chọn
File/Open, Máy sẽ hiện ra hộp thoại Open cho
ta tìm đến tệp cần mở và gọi Matlab Editor ra đểđưa tệp cần mở vào biên tập
Trang 15CHƯƠNG 2 XỬ LÝ DỮ LIỆU DẠNG
MẢNG (MA TRẬN) TRONG MATLAB
*Một số khái niệm cơ bản:
Chú ý: Các phần tử trong mỗi hàng khi nhập
vào phải như nhau
1.2 Dùng toán tử " : "
Cú pháp:
<Tên biến>=<Begin>: <Step>: <Limit>
Sẽ tạo ra véc tơ hàng có phần tử đầu tiên là giá trị <Begin>, gia số giữa các phần tử là
<Step>, giá trị phần tử cuối cùng không vượt quá <Limit>
Chú ý: Nếu bỏ qua trị số của <Step>, máy sẽ
Trang 16tử đầu tiên có giá trị bằng MinVal, phần tử cuối
Ứng dụng: Hàm linspace rất tiện dụng trong
việc xác định véc tơ các giá trị trên trục hoành
khi vẽ đồ thị
Hàm logspace
Có cú pháp tương tự như hàm linspace, tuy
nhiên các phần tử biến thiên theo quy luật hàm
số mũ với gia số của các số mũ tăng đều và
Dùng làm ma trận mồi trong phép tính tíchcác phần tử tương ứng của nhiều ma trận(dùng vòng lặp)
Dùng để tạo ma trận có các phần tử bằngnhau (dùng khi thực hiện phép tính cộng hoặctrừ từng phần tử của ma trận với cùng một số)
Trang 170 0 1 0
0 0 0 1
1.4.4 Tạo các mảng đường chéo ứng dụng
Mảng đường chéo thường gặp ở các ma trận
độ cứng và ma trận khối lượng trong tính toán
Nếu V là một véc tơ, hàm sẽ cho kết quả là
ma trận vuông có các phần tử trên đường chéo
chỉ định là các phần tử của véc tơ V
Nếu V là một ma trận, sẽ trả kết quả là véc tơ
cột của các phần tử nằm trên đường chéo của
ma trận V
Nếu không chỉ ra n, các phần tử của V sẽ nằm
trên đường chéo chính
1.4.5 Mảng các số ngẫu nhiên ứng dụng:
Mảng các số ngẫu nhiên dùng nhiềutrong đồ hoạ hoặc tạo các nhiễu trong môphỏng và sử lý số liêụ thực nghiệm
Sử dụng lệnh rand:
<tên biến>= rand(số hàng, số cột)
Tạo ra mảng các số ngẫu nhiên với số hàng, cột chỉ định
1.5 Mảng tạo từ tệp
Nếu ta ghi các mảng trong một tệpdạng m.file (theo đúng quy cách tạo mảngtrong Matlab như trình bày ở trên), ta hoàntoàn có thể gọi mảng vào môi trường làm việccủa Matlab bằng cách nhập tên của m.file saudấu nhắc của Matlab và ấn Enter
Điều này rất thuận tiện khi ta dữ liệudạng mảng được xuất ra từ một chương trìnhtính toán khác
II Tham chiếu tới các phần tử của mảng, tạo các mảng con
2.1 Nguyên tắc tham chiếu tới các phần tử của mảng
Để tham chiếu đến một phần tử của mảng, tacần chỉ ra chỉ số hàng và cột của phần tử (đặt
Để tham chiếu đến một nhóm các phần tử củamảng, thay cho việc chỉ ra chính xác chỉ số củaphần tử như trên ta phải chỉ ra được mảng cácchỉ số của các phần tử cần tham chiếu tới
Dấu: để chỉ toàn bộ các chỉ số của hàng và cột
Từ khoá end là chỉ số cuối cùng của hànghoặc cột của mảng
Ví dụ: để tham chiếu đến phần tử nằm ở hàng
số 2 và cột số 3 của ma trận M ta viết M(2,3) M1= M([1 2],[3 2])
sẽ cho ta một ma trận mới:
M1 = M1,3 M2,3
M1,2 M2,2
Trang 18ta thực hiện theo các bước sau:
- Tạo ma trận với các phần tử 0: M=zeros(3,3);
- Sau đó gán lại các phần tử khác 0 của ma
Để tạo ra véc tơ mới bằng cách bỏ đi phần tử
đầu tiên của véc tơ V, ta dùng lệnh:
V1=V(2:end);
2.2.4 Loại bỏ bớt các phần tử của mảng:
Để loại bỏ các phần tử khỏi mảng ta chỉ cầngán giá trị của các phần tử cần loại trị số rỗng:
Để tạo mảng từ các mảng thành phần ta dùngdấu "[ ]" bên trong cần chỉ rõ các phần tử đưavào mảng, nếu các phần tử nằm trên 1 hàng,chúng cách nhau bằn dấu cách (bước trống),
Cú pháp: M=M1 + M2 + M3+
Ý nghĩa: tạo ra mảng mới M có cùng kích
thước với mảng M1, M2 , các phần tử củamảng mới sẽ bằng tổng từng phần tử tươngứng của các mảng thành phần
Trang 19trong đó n là số nguyên dương
Có kết quả như là phép nhân n ma trận A với
nhau:
Điều kiện: Các ma trận A phải là ma trận vuông
3.1.5 Phép chia hai ma trận
Cú pháp: M=A/B
ý nghĩa: Phép chia ma trận hoàn toàn giống
như phép nhân với ma trận nghịch đảo:
Các toán tử có dấu "." (xem bảng dưới ) sẽ cho
phép thao thác trên từng phần tử của mảng
ở đây ta sử dụng biểu thức véc tơ:
nghiệm của hệ được xác định bằng biểu thức:
X=eye(3,3)/M*Y
X =3.0000-0.20001.0000
3.3 Các hàm dùng trên mảng 3.3.1 Các hàm dùng chung:
Tất cả các hàm tính toán trên dữ liệu sốđều có thể thực hiện trên dữ liệu mảng, và quả
Trang 20 S=size(A): đưa ra véc tơ hàng chỉ số lượng
Nếu A là một véc tơ, hàm sẽ trả kết quả là giá
trị min (max) của các phần tử trong véctơ
Nếu A là một ma trận, hàm sẽ trả kết quả là
một véc tơ hàng với các phần tử là min (max)
của các phần tử trong mỗi cột trong ma trận A
sẽ tính dọc theo các cột, cumsum(A,2) sẽ tínhdọc theo các hàng
nhau của véc tơ X
*Nếu X là véc tơ kết quả đưa ra là véc tơ ít hơn
Trang 21CHƯƠNG 3 ĐỒ HỌA TRONG MATLAB
Sau đây chúng ta xem xét từng thành phần
trong môi trường làm việc của Matlab
3.2 Đường cong biểu diễn mỗi quan hệ của
các giá trị
Thông thường chúng ta đã biết các loại đồ thị 2
chiều và 3chiều Trong bài này chúng ta chỉ
nghiên cứu đến loại đồ thị phẳng (2chiều) còn
chỉ giới thiệu về đồ thị 3 chiều
- Nếu Y là một véc tơ, hàm plot(y) sẽ in ra đồ thị
Y phụ thuộc vào chỉ số của nó trong véc tơ
- Nếu X, Y là hai véc tơ cùng độ lớn hàm
plot(X,Y) sẽ in ra đồ thị hàm Y(X)
- Nếu đối số trong hàm bao gồm nhiều bộ X, Y,
Hàm sẽ đưa ra được nhiều đồ thị trên màn hình
và Matlab sẽ tự động hiển thị các đồ thị với các
Giải thích: Cú pháp 2 cho phép vẽ các đường
cong Y1(X1), Y2(X2), Y3(X3) trên cùng 1 hệ
trục tọa độ Yêu cầu: các cặp véc tơ (X1,Y1),
(X2,Y2), (X3,Y3) phải có cùng kích thước
Ví dụ: Vẽ nhiều đường cong trên cùng một hệ trục
Nếu ta có: y1= sin(x); y2=sin(x-0.25); 0.5)
y3=sin(x-Để có thể so sánh đồ thị pha y1(x), y2(x), y3(x)trên cùng một hệ trục ta cũng dùng lệnh plotHàm: plot(x, y,x,y2,x,y3) sẽ đưa ra bộ đồ thịnhư hình vẽ
Để làm nổi bật hay để phân biệt các đườngcong cho tiện theo dõi hay trình bày, ta cũng cóthể chỉ định kiểu đường nét, màu sắc và kiểuđánh dấu các điểm nút
Cú pháp 3: plot(x,y,'color_style_marker')
- Giải thích: trong lệnh trên, color_style_marker
là một bộ qui định màu sắc, kiểu đường và kiểuđánh dấu các điểm nút Chúng được phân cáchtrong dấu nháy đơn
- Một số chữ cái qui định kiểu màu: 'c', 'm', 'y','r', 'g', 'b', 'w' và 'k' Chúng tương ứng với cácmàu xanh da trời, tím đỏ, vàng, đỏ, xanh lá cây,xanh nước biển, trắng và đen
- Các ký tự chỉ kiểu đường bao gồm '-' đối vớinét liền, '- -' đối với đường gạnh, ':' đườngchấm, '-.' đường chấm gạch, và 'none' khikhông vẽ đường
- Các ký tự để đánh dấu điểm bao gồm: '+', 'o','*', và 'x'
Ví dụ: câu lệnh plot(x,y,'y:+') vẽ ra đồ thị làđường chấm chấm màu vàng có dấu + đanhdấu các điểm nút
Một số chú ý:
- Lệnh plot sẽ tự động mở ra một cửa sổ đồhoạ mới Nếu cửa sổ này đã tồn tại lệnh plotmặc định sẽ sử dụng cửa sổ này Để mở mộtcửa sổ mới và đưa nó thành hiện thời ta dùnglệnh figure
- Để đưa một cửa sổ đã mở thành hiện thời tadùng câu lệnh figure(n), trong đó n là số trênthanh tiêu đề của cửa sổ
Trang 22- Vẽ thêm đường cong mới vào một đồ thị đã
có: Lệnh hold cho phép bạn thêm đường cong
vào đồ thị đã có Nếu bạn đặt chế độ hold on
Matlab sẽ không xoá đồ thị đã có và vẽ thêm
đường cong mới khi gọi lệnh vẽ
Ví dụ: Để vẽ 3 đường cong y1, y2, y3 như ví
dụ ở trên ta cũng có thể viết bằng 3 lệnh plot
riêng biệt, chỉ cần thêm lệnh hold on:
Hàm subplot sẽ chia cửa sổ đồ hoạ ra
nhiều phần để hiển thị nhiều đồ thị trên cùng
một cửa sổ
Cú pháp: subplot(m,n,p)
Trong đó m,n,p là các số nguyên, sẽ
chia cửa sổ đồ hoạ ra m hàng và n cột và đưa
phần cửa sổ thứ p thành hiện thời Chỉ số các
cửa sổ con được xác định từ phải qua trái và
từ trên xuống dưới
Ví dụ: Để vẽ 3 đường cong y1, y2, y3 ở ví dụ
trên nhưng trên 3 đồ thị trong cùng một cửa sổ
Matlab định nghĩa một bề mặt lưới bởi
các toạ độ Z trên lưới của mặt xy Dùng các
đường thẳng để nối các điểm kề nhau Hàm
mesh và surf hiển thị các bề mặt ở dạng 3
chiều Mesh cung cấp các bề mặt dạng khung
dây trong đó chỉ thể hiện màu ở các đường nối
Surf hiển thị màu cả đường nối và bề mặt
b) Trực quan hoá các hàm hai biến
Để hiển thị hàm 2 biến z=f(x,y), hãy tạocác ma trận x và y chứa đựng các hàng và cộtlặp
Sau đó sử dụng các ma trận này để tính ra đồthị của hàm
* Hàm meshgrid chuyển phạm vi đượcđịnh nghĩa bằng một véc tơ hoặc hai véc tơ x, ythành các ma trận X, Y dùng để tính ra giá trịcủa hàm Các hàng của X là các bản sao củavéc tơ x, các cột của Y là copy của véc tơ y
Cú pháp:
[X,Y] = meshgrid(x,y)[X,Y] = meshgrid(x)[X,Y,Z] = meshgrid(x,y,z)Thí dụ:
Hàm[X,Y] = meshgrid(1:3,10:14)Tạo hai mảng x và y sau
3.2 Tên của đồ thị
Một đồ thị hoàn chỉnh bao giờ cũng phải
có tên của đồ thị Ta dùng hàm title
Cú pháp:
title('String')
Trang 23Giải thích:
- 'string': Là tên của đồ thị mà chúng ta cần
(Nhập từ bàn phím)
- 'PropertyName': Tên của thuộc tính
- PropertyValue: Giá trị của thuộc tính
Tên và giá trị của thuộc tính sẽ được giới thiệu
axis equal: tạo ra các khoảng chia trên trục x và
y có chiều dài như nhau
axis auto: trả lại chế độ mặc định
axis on: Viết ra tên của trục và đánh dấu các
điểm chia trên trục
axis off: Huỷ bỏ việc viết ra tên của trục và
đánh dấu các điểm chia trên trục
Bật/tắt các đường lưới trên đồ thị
Cú pháp:
grid on: Vẽ ra các đường lưới
grid off: Không vẽ các đường lưới
grid: Chuyển chế độ bật hoặc tắt
3.3.2 Các chú thích trên trục toạ độ
Các hàm để viết chú thích trên trục toạ độ
xlabel, ylabel, zlabel
Cú pháp:
xlabel('string')
xlabel( ,'PropertyName',PropertyValue, )
Giải thích: Mỗi trục của đồ thị đều có thể có
nhãn riêng được tạo bằng các lệnh xlabel,
ylabel, zlabel.
- xlabel('string'): Tên của trục x là chuỗi ký tự
trong 'string'
- 'PropertyName': Tên của thuộc tính
- PropertyValue: Giá trị của thuộc tính
Tên và giá trị của thuộc tính sẽ được giới thiệu
Giải thích: Trong lệnh text ở trên: x,y, z là tọa
độ vị trí ghi dòng chú thích
- string: Tên của dòng chú thích là chuỗi ký tựtrong 'string'
- 'PropertyName': Tên của thuộc tính
- PropertyValue: Giá trị của thuộc tính
Tên và giá trị của thuộc tính sẽ được giới thiệu
<câu lệnh>( , 'Property Name',<property value> ).
- <property value> là giá trị của thuộc tính có
thể là chuỗi hoặc số nguyên, số thực
3.5.1 Các thuộc tính của văn bản
3.5.2 Các ký tự đặc biệt
Trang 24Trong các chuỗi của đối số của các
hàm viết chữ trong chế độ đồ hoạ ta có thể
đưa vào các ký tự điều khiển để xuất ra các
chữ cái hy lạp, ký hiệu toán học, và kiểu font
Các mã điều khiển được đặt sau dấu '\'
Chúng ta có thể điều khiển trực tiếp
kiểu font chữ bằng các ký tự điều
khiển:\fontname
Trong trường hợp này tên font chữ sẽ
phải đặt trong dấu {} kế tiếp phần điều khiển
font chữ, chúng ta có thể thêm các mã điều
title('Graph of the sine function')
text(1,-1/3,'\it{Note the odd symmetry.}')
Đưa ra đồ thị như hình vẽ:
3.5.4 Các tuỳ chọn của lệnh plot
Trong lệnh plot ta có thể đưa vào các tuỳ chọn
ở dạng:
plot( ,'PropertyName',PropertyValue, )Trong đó 'PropertyName' là tên các thuộc tính,PropertyValue là giá trị của thuộc tính mà ta muốn gán:
Dưới đây là bảng liệt kê các thuộc tính của đồ thị:
3.6 Một số lệnh viết chữ khác 3.6.1 Lệnh gtext
[x,y] = ginput(n) Cho phép bạn chọn n điểmbằng chuột và trả kết quả là toạ độ x và y củacác điểm chọn cho các véc tơ x và y Có thểkết thúc việc chọn điểm ngay cả khi chưa nhập
đủ n điểm bằng cách ấn Enter
Tên thuộc
'LineWidth' điều khiển bề dầycủa nét vẽ đồ thị số nguyên'MarkerE
dgeColor'
Điều khiển màu của nét vẽ biểu tượng đánh dấu điểm
các ký tự chỉ màu
ví dụ:'g','y' 'MarkerSi
ze'
Kích thước của biểu tượng đánh
'MarkerFaceColor'
Điều khiển màu của biểu tượng đánh dấu điểm
các ký tự chỉ màu
ví dụ:'g','y'
Trang 25[x,y] = ginput Cho phép chọn số điểm không
hạn chế
3.7 In ấn đồ thị
Tuỳ chọn Print của menu FILE và lệnh
print đều dùng để in đồ thị Tuỳ chọn Print sẽ
gọi ra hộp thoại cho phép người dùng chọn các
tuỳ chọn về in ấn giống như ở các phần mềm
khác, còn lệnh print cung cấp chúng ta các khả
năng mềm dẻo hơn và cho phép điều khiển
việc in đồ thị từ m file Kết quả có thể gửi trực
tiếp ra máy in hoặc được xếp xắp trong một tệp
xác định Các định dạng đầu ra hết sức khác
nhau được cung cấp ở đây (kể cả PostScript)
Thí dụ: câu lệnh sau đây ghi hình ảnh của màn
hình đồ hoạ ra tệp Postscript cấp 2 có tên là
magicsquare.eps:
print -depsc2 magicsquare.eps
Một điều hết sức quan trọng là cần phảibiết trước khả năng của máy in trước khi dùnglệnh print Ví dụ như tệp Postscript cấp 2thường là gọn hơn và tô bóng nhanh hơn khi in
so với tệp Postscript cấp 1 Tuy nhiên khôngphải tất cả các máy in đều có khả năng làmviệc với tệp Postscript cấp 2
CHƯƠNG 4 LẬP TRÌNH ỨNG DỤNG TRONG MATLAB
I Các loại dữ liệu dùng trong Matlab
1 Dữ liệu số:
- Matlab sử dụng các chế độ ghi dữ liệu sốthập phân thông thường
Trang 26- Có kiểu ghi dùng chữ cái e để xác định số mũ
cơ số 10 Ví dụ: 1.60210e-20 =1.60210*
1020
- Các số được lưu trữ trong bộ nhớ có giới hạn
là 16 chữ số sau dấu phẩy và giá trị giới hạn
nằm trong khoảng −10308
đến 10308 Một số hằng số thường dùng trong Matlab
pi = 3.14169265
i,j = các đơn vị của số ảo
esp = độ chính xác tương đối của số thực,
Lấy ra giá trị phần thực của số phức
Ví dụ: Nếu ta có X=3 +4i, real(X) sẽ cho giá trị
3
b Hàm imag
Lấy ra phần ảo của số phức Ví dụ: với X lấy
giá trị như trên, imag(X) sẽ cho giá trị 4
c Hàm conj
Tìm số phức liên hợp của số phức đã cho
Ví dụ: với X lấy giá trị như trên, conj(X) sẽ cho giá trị 3-4i
3 Dữ liệu dạng chuỗi 3.1 Phép gán và tham chiếu đến dữ liệu dạng chuỗi
Các ví dụ: nếu gán x='String Mat'Khi gọi x(1), ta nhận được ans = Snếu gọi x(1:6), ta sẽ nhận được ans = String
3.2 Tạo các mảng với phần tử là chuỗi 3.2.1 Tạo véc tơ cột các chuỗi:
* Nhập trực tiếp: nhập theo nguyên tắc giốngmảng với các phần tử là số, tuy nhiên yêu cầucác chuỗi có chiều dài như nhau, trong trườnghợp các chuỗi có chiều dài khác nhau, ta phảithêm bước trống vào cuối chuỗi
Ví dụ:
x=['first ''second''third ']
x =firstsecondthird
* Dùng hàm: char
Cú pháp: char('chuỗi 1', 'chuỗi 2', )Chú ý: hàm char sẽ chèn cả các chuỗi rỗng vàomảng
Ví dụ: x=char('first','second', '', 'third') sẽ cho kếtquả là véc tơ cột có 4 phần tử
x =firstsecondthird
3.2.2 Tạo mảng hoặc véc tơ hàng các chuỗi
Trang 27Dùng mảng khối:
-Mảng khối được nhập như mảng thông
thường, chỉ khác là mảng được bao bằng dấu {
'first' 'second' 'third'
Nếu gọi: x(1), ta nhận được
ans =
'first'
3.3 Các hàm dùng trên chuỗi
3.3.1 Hàm chuyển đổi từ dữ liệu số sang
chuỗi và ngược lại
a Chuyển từ số sang chuỗi: Các hàm
int2str, num2str, mat2str
* Hàm int2str: chuyển số nguyên sang chuỗi
Cú pháp: str = int2str(N)
Mô tả:
str = int2str(N) Chuyển số nguyên sang chuỗi
với định dạng của số nguyên N có thể là một
số nguyên riêng lẻ hoặc mảng các số nguyên
Các giá trị thực sẽ được làm tròn trước khi
Hàm num2str chuyển đổi các số thực sang
chuỗi Hàm này được dùng nhiều khi cần đưa
vào đồ thị các nhãn hoặc tiêu đề bằng các giá
trị số thực
str = num2str(a) chuyển đổi mảng A thành chuỗi
str với 4 chữ số sau dấu phảy và số mũ nếu
cần thiết
str = num2str(a,precision) chuyển đổi mảng Athành chuỗi str với độ chính xác được quyđịnh bằng 'precision' đối số precision quy định
số chữ số sau dấu phảy, mặc định là 4.str = num2str(A,format) chuyển đổi mảng A sửdụng định dạng quy định bằng 'format'.(xem lệnh fprint)
num2str(pi) là 3.142
num2str([1/3 3/6]) là 0.33333 0.5num2str(3/7,5) cho kết quả là: 0.42857
* Hàm mat2str
Cú pháp:
str = mat2str(A)str = mat2str(A,n)
Mô tảstr = mat2str(A) Chuyển ma trận A thành chuỗi,phù hợp với dữ liệu đầu vào của hàm eval, sửdụng độ chính xác cao nhất
str = mat2str(A,n) Chuyển đổi ma trận A thànhchuỗi với n chữ số sau dấu phảy
Chú ý: Hàm mat2str chỉ được thực hiện trêncác giá trị số, véc tơ hoặc mảng chữ nhật.Thí dụ:
Xét ma trận:
A =
1 2
3 4Câu lệnh
b = mat2str(A)cho kết quả:
Trang 28[a1,a2,a3, ] = eval('Chuỗi') thực thi biểu thức
trong 'chuỗi' và đưa ra các kết quả trong các
biến đầu ra chỉ định
Thí dụ:
y=eval('5+6-7'), cho kết quả y =4
Nếu ta có x='5+6-sin(pi)', hàm y=eval(x) sẽ cho
trong ma trận A, trên cơ sở của chuỗi quy định
mẫu định dạng 'format' và trả kết quả cho biến
dạng chuỗi s Câu lệnh sprintf cũng có ý nghĩa
tương tự như fprint, điểm khác chỉ ở chỗ câu
lệnh fprint thường dùng để xuất dữ liệu ra tệp
Chuỗi format quy định các ghi chú, căn
chỉnh, số chữ số, bề rộng của trường Nó có
thể chứa các dữ liệu số, chữ và các ký tự điều
khiển theo cấu trúc sau:
Bảng dưới đây sẽ mô tả các ký tự không nhìn
thấy được sử dụng trong định dạng của
vị trí giữa % và ký tự điều khiển
Dấu (-) Left-justifies the converted argument in its field %-5.2dDấu
(+) Luôn in dấu (+ hoặc -) trước số xuất ra %+5.2d
Số (0)
Đưa vào các số 0 thay cho các khoảng trống %05.2d
Số nguy
ên
Quy định số lượng chữ số ít
Số với dấuchấmđộng)
Số với dấu xác định số lượng chữ số được in sangphải dấu chấm phân cách %6.2f
Thí dụ
sprintf('%0.5g',(1+sqrt(5))/2) 1.618sprintf('%0.5g',1/eps) 4.5036e+15sprintf('%15.5f',1/eps) 4503599627370496.00000sprintf('%d',round(pi)) 3
sprintf('%s','hello') hellosprintf('The array is
%dx%d.',2,3) The array is 2x3sprintf('\n') Xuống dòng
Trang 29định trong format và trả ra kết quả cho ma trận
a
A = sscanf(s,format,size) Đọc số phần tử quy
định trong size và chuyển đổi nó phù hợp với
định dạng quy định trong format size có thể lấy
các giá trị sau:
n Đọc n phần tử và trả véc tơ
cột
inf Đọc đến cuối tệp và trả kết quả ra véc tơ cột.
[m,n] Đọc đủ số phần tử để điền vào ma trân m x n phần tử.
Nếu ma trận A là kết quả chỉ của việc sử dụng
các ma trận chuyển đổi, và size không ở dạng
<tên biến>=input('lời nhắc') Sẽ hiển thị lời nhắc
và chờ người dùng nhập dữ liệu, các dữ liệu
này sẽ được gán cho <tên biến>
<tên biến>=Input('lời nhắc', 's') thường dùng
khi nhập chuỗi: nếu dùng cú pháp thứ nhất để
nhập chuỗi thì ta cần đặt chuỗi trong dấu ' ',
Mô tả:
Prompt: là các dòng nhắc trên các trường dữliệu, được nhập ở dạng mảng khối các chuỗilời nhắc
Title: là tiêu đề của hộp thoại, nhập vào ở dạngchuỗi
LineNo: là số nguyên quy định số dòng cho mỗitrường nhập dữ liệu
DefAns: là một mảng khối các chuỗi gán giá trị mặc định
Các dữ liệu nhập vào được gán cho answer dưới dạng mảng khối các chuỗi
Ví dụ prompt = {'Nhập số hàng ma trận:','Nhập số cột
Trang 30Kết quả nhập vào được gán cho biến ở dạng
mảng khối các chuỗi, chính vì vậy để có thể sử
dụng được các giá trị này ta phải dùng hàm
char để chuyển đổi về mảng thông thường, sau
đó dùng các hàm sscanf hoặc eval để chuyển
dữ liệu về dạng số
1.3 Nhập dữ liệu từ tệp: Lệnh fread
Cú pháp:
[A,count] = fread(fid,size,precision Dữ liệu đọc
được sẽ ghi vào mảng A, count sẽ ghi lại số
phần tử được đọc Fid là chỉ số của tệp được
m x n, các phần tử điền vào theo trật tự các
cột, nếu không đủ số phần tử điền, máy thêm
vào phần tử 0
Preciscion: Dạng của phần tử
'char' Character; 8 bits
'schar' Signed character; 8 bits
'uchar' bitsUnsigned character; 8
'int8' Integer; 8 bits
'int16' Integer; 16 bits
'int32' Integer; 32 bits
'int64' Integer; 64 bits
'uint8' Unsigned integer; 8 bits
'uint16' bitsUnsigned integer; 16
'uint32' bitsUnsigned integer; 32
'a': mở ra để ghi thêmFilename: là tên của tệp sẽ mở được đặt trongdấu ' '
Kết quả sẽ trả ra chỉ số của tệp được mở (contrỏ tham chiếu đến tệp) và gán cho biến fid
1.5 Lệnh đóng tệp, fclose
Cú pháp:
status = fclose(fid), đóng tệp chỉ địnhstatus = fclose('all'), đóng tất cả các tệp đang mở
1.6 Lệnh fscanf:
Nhập dữ liệu từ tệp định dạng mã ascci
Cú pháp:
A = fscanf(fid,format)[A,count] = fscanf(fid,format,size)
ở cú pháp thứ nhất, fscanf sẽ đọc dữ liệu từtệp có con trỏ fid theo định dạng quy định bằngchuỗi format
Số phần tử được đọc thành công sẽ được trảcho biến count
Ví dụ:
Ta có tệp dữ liệu có tên là 'd:\data\dl.dat' có các
số liệu sau:
1.345 4.123 4.567 2.4562.675 6.876 4.576 3.456Đoạn chương trình sau sẽ đọc dữ liệu từ tệpxếp thành ma trận (4,2) và gán cho biến Mf=fopen('d:\data\dl.dat','r');
M=fscanf(f,'%f',[4,2]);
fclose(f);
2 Các lệnh xuất dữ liệu 2.1 lệnh disp: Hiển thị văn bản hoặc mảng
cú pháp: disp(A)
Mô tảdisp(X) Hiển thị giá trị các mảng mà không đưa
ra tên mảng, nếu x chứa chuỗi, chuỗi sẽ được
in ra màn hình
2.2 Lệnh fprintf: Ghi lại dữ liệu
Cú pháp:
Trang 31count = fprintf(fid,format,A, )
fprintf(format,A, )
Mô tả:
count = fprintf(fid,format,A, ) định dạng các
dữ liệu ở phần thực của ma trận A dưới sự
điều khiển của chuỗi định dạng 'format' và ghi
vào tệp tham chiếu bằng con trỏ 'fid' Hàm
fprintf trả số lượng byte được ghi ra
fid là chỉ số của tệp được mở ra để ghi dữ liệu,
nhận được từ lệnh fopen Nếu bỏ qua fid, kết
count = fwrite(fid,A,precision) ghi các phần tử
của ma trận A vào tệp tham chiếu bởi 'fid'
Chuyển đổi các giá trị của MATLAB với độ
chính xác được quy định trong 'precision' Dữ
liệu được ghi theo trật tự cột, count sẽ đếm số
phần tử được ghi thành công vào tệp đối số
'fid' là con trỏ tệp nhận được từ lệnh fopen
Trong các cú pháp đưa ra ở trên:
- Các biểu thức lô gíc viết theo quy tắc được trình bày ở dưới đây
- Các biểu thức tính chứa các dòng lệnh của Matlab
Trong cú pháp 1: Máy sẽ kiểm tra biểu thứclogic: nếu biểu thức lôgic đúng, máy sẽ thựchiện các lệnh trong if (nằm giữa if và end), cònnếu biểu thức lô gíc sai máy sẽ bỏ qua các câulệnh trong if và thực hiện các câu lệnh kế tiếpcâu lệnh if
Trong cú pháp 2: nếu biểu thức lôgic đúng máy
sẽ thực hiện các câu lệnh trong Các biểu thứctính 1, còn nếu biểu thức lôgic sai máy sẽ thựchiện các câu lệnh Các biểu thức tính 2.Trong cú pháp 3: Nếu biểu thức lôgíc 1 đúng,máy sẽ thực hiện Các biểu thức tính 1 Nếubiểu thức lôgíc 1 sai, máy sẽ kiểm tra biểu thứclôgíc 2: nếu biểu thức lôgic này đúng, máy sẽthực hiện các biểu thức tính 2, còn các trườnghợp khác máy sẽ thực hiện các biểu thức tính3
1.2 Các toán tử logic
Mat lab cho phép sử dụng các toán tử lôgic sau:
STT
4 <= Nhỏ hơn hoặc bằng A<=B
5 >= Lớn hơn hoặc bằng A>=B
Trang 327 & Và lôgic A&B
1.3 Các hàm logíc
Kiểm tra liệu mảng X có rỗng không, cho giá trị
đúng (1) khi X rỗng nguợc lại cho kết quả sai
(0)
b Hàm isequal(a,b )
k = isequal(A,B, ) sẽ trả giá trị đúng lôgic(1),
nếu các mảng đối số có cùng dạng, cùng kích
cỡ và có cùng nội dung Hàm này thường dùng
khi so sánh hai hay nhiều mảng, nó sẽ không
gây lỗi khi 2 mảng có kích thước khác nhau
c Hàm ischar(x)
Cho kết quả đúng nếu x là dữ liệu dạng chuỗi
d Các hàm strcmp(s1,s2), strcmp(s1, s2, n)
Hàm strcmp(s1,s2) so sánh hai chuỗi s1, s2
Nếu hai chuỗi giống nhau sẽ trả kết quả đúng
Hàm strcmp(s1,s2,n) cho kết quả đúng nếu n
ký tự đầu tiên của hai chuỗi như nhau
Chú ý:
Trong trường hợp đối số trong các hàm lôgic là
ma trận, máy sẽ thử từng cặp phần tử trong
ma trận, nếu đúng trả giá trị 1, nếu sai trả giá trị
0 và kết quả nhận được là ma trận các giá trị 1
và 0 Để so sánh được hai ma trận phải có
cùng kích thước
2 Lệnh switch
Cú pháp:
switch Biểu thức switch
case Biểu thức case 1
Nếu tất cả các biểu thức case đềukhông phù hợp với giá trị của biểu thức switch.Nhóm lệnh dưới otherwise sẽ được thực hiện
Vòng lặp for sẽ thực hiện các câu lệnh lặp với
số lần bằng số cột của mảng, trong mỗi lần lặp
<biến> sẽ mang giá trị là một véc tơ hàngtương ứng của mảng
Thí dụ: Tạo mảng có các phần tử a(i,j)=1/(i+j-1)
a = zeros(n,n) % Preallocate matrixfor i = 1:n
for j = 1:na(i,j) = 1/(i+j -1);
endend
Nếu giá trị của biểu thức lô gíc là sai, vòng lặp
sẽ kết thúc
Thí dụ: Tìm nghiệm của phương trình x3 - 2x - 5
= 0 trong khoảng [0,3] theo phương pháp dâycung
3 Lệnh break:
Thoát khỏi vòng lặp một cách cưỡng bức
Cú pháp:
Trang 33Mô tả:
break
Dừng việc thực thi vòng lặp for hoặc while Khi
có nhiều vòng lặp lồng vào nhau, break sẽ chỉ
- Dòng trên cùng của hàm m file phải chứa từ
khoá function và viết theo đúng quy cách quy
định trong Matlab.function [biến ra1, biến ra 2 ]
= <Tên hàm>(biến vào 1, biến vào 2 )
- Tên của m file phải trùng với <tên hàm>
Ví dụ: tệp stat.m chứa nội dung sau tính ra độ
lệch chuẩn của véc tơ x = [x1 x2 xn]
function [mean,stdev] = stat(x)
n = length(x);
mean = sum(x)/n;
stdev = sqrt(sum((x-mean).^2/n));
Chúng ta có thể định nghĩa một hàm
con trong hàm khác bằng cách gọi ra từ khoá
function bên dưới thân của hàm chính Ví dụ
dưới đây sẽ định nghĩa hàm con avg bên trong
tệp stat.m:
function [mean,stdev] = stat(x)
n = length(x);
mean = avg(x,n);
stdev = sqrt(sum((x- avg(x,n)).^2)/n);
function mean = avg(x,n)
mean = sum(x)/n;
Khi Matlab không nhận ra một tên hàm,
nó sẽ tìm kiếm tên tệp trùng với tên hàm, nếu
tìm ra nó sẽ dịch và đưa vào bộ nhớ Trong
trường hợp tổng quát nếu ta nhập một tên vào
Matlab, nó sẽ kiểm tra theo trình tự sau:
1 Kiểm tra xem đó có phải là tên biến
2 Kiểm tra xem đó có phải là tên hàm nội trútrong Matlab
3 Kiểm tra xem đó có phải là hàm m file Khi gọi một m.file từ dòng nhắc hoặc trong m.filekhác đưa hàm vào bộ nhớ, và nó sẽ lưu lại ở đócho tới khi ta thoát khỏi Matlab hoặc dùng lệnhclear
2 Các đối số vào, ra
Chú ý
- Hàm m-file có thể không chứa đối số nào
- Hàm có thể được gọi với số đối số ra hoặc vào
ít hơn số đối số được khai báo trong hàm
- Khi hàm được gọi ra các biến sử dụng tronghàm chỉ tồn tại tạm thời trong vùng bộ nhớ dànhcho hàm
- Hàm trong Matlab có thể chứa không hạn chếthông số đầu vào, khi đó biến đầu vào cuối cùngcủa hàm phải được khai báo là varargin, khi đóbiến đầu vào được coi như một mảng khối có vô
số phần tử Tương tự hàm cũng có thể chứa vôhạn các thông số ra khi ta khai báo bằngvarargout
- Câu lệnh varagin và varagoutCho phép định nghĩa vô số biến vào và ra của hàm trong Matlab
Các câu lệnh varargin và varargout chỉđược sử dụng bên trong hàm m.file để chứabiến tuỳ chọn vào hoặc ra của hàm Chúng phảiđược định nghĩa như là một biến cuối cùngtrong danh sách các biến khai báo ở câu lệnhfunction
CHƯƠNG 5 MÔ PHỎNG CÁC HỆ THỐNG ĐỘNG
LỰC BẰNG SIMULINK