You are on page 1of 98

ĐẠI 

HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN
KHOA HÓA HỌC

MATLAB ỨNG DỤNG


CHO NGÀNH HÓA HỌC
VÀ CÔNG NGHỆ HÓA HỌC
2

HÀ NỘI-2003

Lời giới thiệu

MATLAB integrates mathematical computing, visualization, and a powerful language to


provide a flexible environment for technical computing. MATLAB includes tools for:
Data acquisition
Data analysis and exploration
Visualization and image processing
Algorithm prototyping and development
Modeling and simulation
Programming and application development
3

Mục lục
1. Cài đặt và giao diện của matlab....................................................................................8
1.1. Cấu hình yêu cầu với Matlab 6.0, 6.5 ...................................................................8
1.2. Cài đặt phần mềm..................................................................................................9
1.3. Giao diện.................................................................................................................9
2. Những khái niệm cơ sở...............................................................................................10
2.1. Các phím tắt..........................................................................................................10
2.2. Lập trình với Matlab.............................................................................................10
2.2.1. Biến trong matlab..........................................................................................12
2.2.2. Nhập dữ liệu.................................................................................................13
2.2.3. Làm việc với workspace................................................................................14
2.2.4. Làm việc với command history.....................................................................15
2.2.5. Làm việc với current directory, quản lý tệp.................................................17
3. Các dạng hiển thị số và các hàm toán học thông dụng..............................................18
3.1. Các dạng hiển thị số.............................................................................................18
3.2. Số phức.................................................................................................................18
3.3. Các hàm toán học thông dụng..............................................................................19
4. Quản lý ma trận dữ liệu..............................................................................................20
4.1. Ma trận 1 chiều....................................................................................................20
4.1.1. Ma trận hàng..................................................................................................20
4

4.1.2. Ma trận cột....................................................................................................21


4.2. Ma trận nhiều chiều.............................................................................................22
4.3. Các phép toán trong ma trận.................................................................................23
4.5. Địa chỉ dữ liệu trong ma trận...............................................................................24
4.6. Các hàm thông dụng.............................................................................................25
6. Quản lý văn bản..........................................................................................................27
7. Quản lý thời gian.........................................................................................................29
7.1 Các hàm thời gian..................................................................................................29
7.2. Lập lịch các tháng ................................................................................................29
7.3. Hiển thị ngày giờ hiện tại....................................................................................29
7.3. Tính khoảng thời gian ..........................................................................................31
8. Cấu trúc vòng lặp và điều kiện .................................................................................31
8.1. Vòng lặp for .........................................................................................................31
8.2. Vòng lặp while......................................................................................................32
8.3. Cấu trúc điều kiện if-else-end.............................................................................33
8.4. Cấu trúc switch-case.............................................................................................33
9. Phân tích dữ liệu và các hàm chuyển đổi Fourier......................................................34
10. Tạo và giải hệ phương trình tuyến tính...................................................................38
11. Đa thức và các hàm nội suy.......................................................................................40
11.1. Các phép toán đối với đa thức............................................................................40
11.1.1. Cộng, trừ hai đa thức...................................................................................40
11.1.2. Nhân, chia hai đa thức..................................................................................41
11.1.3. Tính giá trị đa thức.......................................................................................41
11.1.4. Đạo hàm và tích phân .................................................................................42
11.1.5. Nghiệm của phương trình đa thức..............................................................42
11.2. Các phép nội suy dữ liệu...................................................................................43
12. Hàm số ......................................................................................................................49
12.1. Khảo sát hàm số.................................................................................................49
* Vẽ đồ thị hàm số: ................................................................................................49
* Xác định các cực trị trong lân cận hẹp................................................................49
12.2. Tìm giao điểm của đồ thị hàm số với trục hoành và với đồ thị hàm số khác.50
12.3. Đạo hàm.............................................................................................................50
12.4. Tích phân............................................................................................................50
13. Hộp công cụ...............................................................................................................51
13.1. Giới thiệu các hộp công cụ...............................................................................51
13.2. Hộp công cụ toán học.........................................................................................52
13.1.1. Biến tượng trưng ........................................................................................52
* Khái niệm..............................................................................................................52
* Đổi tên biến..........................................................................................................53
* Hàm double chuyển một hằng tượng trưng thành kiểu số ...............................53
13.1.2. Các phép toán trên biểu thức tượng trưng..................................................54
* Các hàm số, ma trận sử dụng ký tự +, -, *, /, ^ để thực hiện các phép toán cộng
trừ, nhân, chia, mũ hóa.................................................................................................54
5

* Hàm compose(f,g)=f(g(x)) kết hợp hai hàm số và finverse(g) xác định hàm
ngược của g.................................................................................................................55
13.1.3. Đạo hàm và tích phân..................................................................................55
13.1.4. Giải các phương trình tượng trưng............................................................57
14. Đồ họa trong matlab..................................................................................................60
14.1. Đồ họa trong không gian hai chiều....................................................................61
14.1.1. Các hàm vẽ đồ thị........................................................................................61
14.1.2. Các tùy chọn ...............................................................................................62
14.1.3. Hệ trục tọa độ, nhãn, lưới, hộp chứa trục, chú thích................................63
14.2. Đồ họa trong không gian 3 chiều.......................................................................67
14.2.1. Đồ thị bề mặt và lưới.................................................................................67
14.2.3. Các tùy chọn, hệ trục tọa độ, nhãn, lưới, hộp chứa trục, chú thích.........71
14.2.4. Điều khiển màu và ánh sáng.......................................................................74
Các khối lệnh cơ bản......................................................................................................76
Các lệnh đa năng..............................................................................................................76
Quản lý hàm và lệnh ..................................................................................................76
Quản lý biến và không gian làm việc.........................................................................77
Kiểm soát command window......................................................................................77
Làm việc với file và môi trường hoạt động...............................................................77
Khởi động và thoát chương trình MATLAB..............................................................78
Các ký tự đặc biệt và toán tử .........................................................................................78
Các hàm logic...................................................................................................................79
Xây dựng và gỡ rối ngôn ngữ lập trình..........................................................................79
MATLAB là một ngôn ngữ lập trình..........................................................................79
Điều khiển luồng (Control Flow)...............................................................................79
Nhập dữ liệu (Interactive Input).................................................................................79
Lập trình hướng đối tượng (Object-Oriented Programming)....................................80
Gỡ rối...........................................................................................................................80
Các ma trận cơ sở và thao tác với ma trận (Elementary Matrices and Matrix
Manipulation)........................................................................................................................80
Ma trận cơ sở và mảng (Elementary Matrices and Arrays)........................................80
Hằng số và biến đặc biệt (Special Variables and Constants)....................................81
Ngày tháng và thời gian (Time and Dates)..................................................................81
Thao tác với ma trận (Matrix Manipulation)...............................................................81
Các hàm vector (Vector Functions)..............................................................................82
Các ma trận chuyên dụng (pecialized Matrices).........................................................82
Các hàm toán học cơ sở (Elementary Math Functions)..............................................82
Các hàm toán học chuyên dụng (Specialized Math Functions)...................................83
Chuyển đổi hệ trục tọa độ (Coordinate System Conversion)........................................83
Hàm ma trận và đại số học tuyến tính (Matrix Functions - Numerical Linear Algebra )
..............................................................................................................................................83
Phân tích ma trận (Matrix Analysis)............................................................................83
Các phương trình tuyến tính (Linear Equations).........................................................84
6

Giá trị duy nhất và giá trị riêng (Eigenvalues and Singular Values)...........................84
Các hàm ma trận (Matrix Functions)...........................................................................84
Các hàm cấp dưới (Low Level Functions)..................................................................84
Phân tích dữ liệu và hàm chuyển đổi Fourier (Data Analysis and Fourier Transform
Functions).............................................................................................................................84
Sai phân hữu hạn (Finite Differences).........................................................................85
Sự tương quan (Correlation)........................................................................................85
Lọc và xếp trật tự (Filtering and Convolution)..........................................................85
Các hàm nội suy và đa thức (Polynomial and Interpolation Functions)..........................86
Đa thức (Polynomials).................................................................................................86
Nội suy dữ liệu (Data Interpolation)...........................................................................86
Các phương pháp toán học không tuyến tính và các hàm chức năng (Function
Functions - Nonlinear Numerical Methods).........................................................................87
Hàm ma trận rời rạc (Sparse Matrix Functions).............................................................87
Các ma trận rời rạc cơ sở (Elementary Sparse Matrices)...........................................87
Chuyển đổi giữa ma trận rời rạc và ma trận đầy đủ (Full to Sparse Conversion)...87
Làm việc với dữ liệu khác 0 của ma trận rời rạc (Working with Nonzero Entries of
Sparse Matrices)................................................................................................................87
Hình ảnh ma trận rời rạc ...........................................................................................88
Thuật toán xắp xếp (Reordering Algorithms)............................................................88
Quy tắc, Số điều kiện, Thứ tự (Norm, Condition Number, and Rank).....................88
Phương thức rời rạc của các phương trình tuyến tính (Sparse Systems of Linear
Equations).........................................................................................................................88
Giá trị duy nhất và giá trị riêng rời rạc (Sparse Eigenvalues and Singular Values)...88
Các hàm tạo âm thanh (Sound Processing Functions).....................................................89
Các hàm âm thanh chung (General Sound Functions).................................................89
Các hàm âm thanh chuyên dụng (SPARC station-Specific Sound Functions)............89
Hàm âm thanh với format wav (.WAV Sound Functions)...........................................89
Các hàm xâu ký tự (Character String Functions).............................................................89
Chung (General)...........................................................................................................89
Chuyển đổi giữa xâu và hàm (String to Function Handle Conversion)......................89
Thao tác với xâu (String Manipulation).......................................................................89
Chuyển đổi giữa xâu và số (String to Number Conversion)......................................90
Chuyển đổi cơ số (Radix Conversion).......................................................................90
Các hàm vào/ra file (File I/O Functions)..........................................................................90
File Opening and Closing.............................................................................................90
Dữ liệu ngôn ngữ máy (Unformatted I/O)..................................................................90
Dữ liệu đã format (Formatted I/O)..............................................................................90
Vị trí file (File Positioning)..........................................................................................90
Chuyển đổi xâu (String Conversion)...........................................................................90
Vào ra file chuyên dụng (Specialized File I/O)...........................................................91
Các hàm bitwise (Bitwise Functions)...............................................................................91
Các hàm cấu truc (Structure Functions)...........................................................................91
7

Các hàm đối tượng Matlab (MATLAB Object Functions0.............................................91


Giao diện Malab với Java (MATLAB Interface to Java)................................................91
Các hàm mảng tế bào (Cell Array Functions).................................................................92
Các hàm mảng nhiều chiều (Multidimensional Array Functions)..................................92
Đồ thị và hình ảnh dữ liệu (Plotting and Data Visualization)........................................92
Đồ thị và biểu đồ cơ bản (Basic Plots and Graphs)...................................................92
Vẽ đồ thị 3 chiều (Three-Dimensional Plotting)........................................................92
Đồ thị cắt lớp thể tích (Volumetric slice plot)............................................................93
Chú thích và đường lưới hệ trục đồ thị (Plot Annotation and Grids)........................93
Đồ thị bề mặt, lưới, đường đồng mức (Surface, Mesh, and Contour Plots).............93
Hình ảnh khối (Volume Visualization).......................................................................93
Thiết lập phạm vi (Domain Generation)....................................................................94
Điều khiển góc nhìn (View Control)...........................................................................95
Ánh sáng (Lighting).....................................................................................................95
Tính trong suốt (Transparency)....................................................................................95
Cách tạo màu (Color Operations)................................................................................96
Bản đồ màu (Colormaps)............................................................................................96
In ấn (Printing).............................................................................................................96
Kênh điều khiển chung và đồ họa (Handle Graphics, General).................................96
Làm việc với dữ liệu ứng dụng (Working with Application Data)...........................97
Tạo kênh điều khiển đối tượng và đồ họa (Handle Graphics, Object Creation)......97
Điều khiển cửa sổ hình ảnh và đồ họa......................................................................97
Điều khiển đồ họa và hệ trục....................................................................................97
Thao tác với đối tượng................................................................................................97
Tác động người sử dụng đưa vào (Interactive User Input)........................................98
Miền quan tâm (Region of Interest).............................................................................98
Giao diện đồ họa (raphical User Interfaces)...................................................................98
Hộp thoại (Dialog Boxes)............................................................................................98
Phát triển giao diện người sử dụng (User Interface Development)...........................98
Vào ra cổng nối tiếp (Serial Port I/O).............................................................................98
Tạo một đối tượng cổng nối tiếp..............................................................................98
Viết và đọc dữ liệu (Writing and Reading Data)........................................................98
Định hình và trả lại thuộc tính (Configuring and Returning Properties)....................99
Thay đổi trạng thái (State Change)..............................................................................99
Lệnh đa năng (General Purpose).................................................................................99
8

1. Cài đặt và giao diện của matlab


1.1. Cấu hình yêu cầu với Matlab 6.0, 6.5
Để có thông tin mới nhất về yêu cầu của hệ thống chúng ta có thể vào MathWorks
Web site (www.mathworks.com), system requirements page.
Matlab là một phần mềm có yêu cầu khá cao với hệ thống máy tính, để chạy phần
mềm này máy tính cần đảm bảo những yếu tố tối thiểu sau:
Bộ xử lý:
Pentium, Pentium Pro, Pentium II, Pentium III, Pentium IV, or AMD Athlon
Hệ điều hành:
Microsoft Windows 95, Windows 98 (original and Second Edition), Windows NT 4.0
(with Service Pack 5 for Y2K compliancy) or Windows 2000
Ổ CD-ROM để cài đặt.
Tối thiểu 64 MB RAM đối với Windows 98, NT 4.0 và 2000; nên có 128
MB RAM. Đối với Window XP nên có 256 MB RAM
Không gian ổ cứng đòi hỏi tùy thuộc kích thước partition và lựa chọn của bạn. Cài
đặt đầy đủ các lựa chọn phần mềm Matlab 6.5 chiếm khoảng 900 MB ổ cứng
Card hình tối thiểu 8 bit và màn hình hiển thị tối thiểu 256 màu
Những phần bổ trợ nên có
Card tăng tốc độ đồ họa
Printer
Microsoft Word 7.0 (Office 95), 8.0 (Office 97), or Office 2000 is
required to run the MATLAB Notebook.
Để tạo các MEX-files của riêng bạn cần có:
9

Compaq Visual Fortran 5.0 or 6.1, Microsoft Visual C/C++ version 5.0 or 6.0, Borland
C/C++ version 5.0, 5.02, Borland C++Builder version 3.0, 4.0, or 5.0, Lcc 2.4 (bundled
with MATLAB)
Adobe Acrobat Reader để in các tài liệu do Matlab cung cấp trên mạng.

1.2. Cài đặt phần mềm

1.3. Giao diện


Sau khi cài đặt Matlab lần đầu
tiên chạy chương trình, phần mền
hiển thị giao diện mặc định như hình
1. (Desktop layout default)
Trên của sổ chính có tiêu đề
MATLAB chứa 3 cử sổ nhỏ ở trạng
thái gắn dính (dock) với cửa sổ
chính. Nếu chúng ta muốn di chuyển
tự do các cửa sổ này chúng bấm vào
nút trên thanh tiêu đề các cửa sổ Hình 1: Giao diện mặc định của Matlab
nhỏ hoặc bấm giữ chuột trái vào
thanh tiêu đề và kéo thả. Khi các cửa sổ tự do chúng có thêm thanh menu (hình 2) để các
cửa sổ trở về trạng thái như cũ chúng ta vào ViewDock (Workspace hoặc current
directory...).
Matlab có 6 kiểu giao diện khác nhau: Default, Command Window Only, Single, Short
History, Tail History, Five Panel (Hinh 3).

Hình 2: Cửa sổ workspace tự


do
Hình 3: Các kiểu giao diện của
Matlab
10

2. Những khái niệm cơ sở


2.1. Các phím tắt
↑ hoặc Ctrl+p Gọi lại lệnh vừa thực hiện trước đó
ESC hoặc ↓ Xóa lệnh vừa gọi

→ hoặc Ctrl+f Chuyển con trỏ sang phải một ký tự


← hoặc Ctrl+b Chuyển con trỏ sang trái một ký tự
Ctrl+l hoặc Ctrl+← Chuyển con trỏ sang trái một từ
Ctrl+r hoặc Ctrl+→ Chuyển con trỏ sang phải một từ
Ctrl+a hoặc Home Chuyển con trỏ về đầu dòng
Ctrl+k Xóa từ vị trí con trỏ đến cuối dòng
Ctrl+break Kết thúc vòng lặp
Shift+→ hoặc ← Để chọn đoạn văn bản cần xóa hay copy
Lệnh hệ thống
clc Xóa cửa sổ dòng lệnh
clf Xóa cửa sổ đồ họa
computer Đưa ra tên loại máy tính
Ctr-c Dừng chương trình khi máy ở tình trạng
vòng lặp không kết thúc
demo Xem các chương trình mô tả khả năng của
matlab
exit, quit Thoát Matlab
help Lệnh nhận trợ giúp
input Nhập dữ liệu từ bàn phím
load Tải các biến đã lưu trong 1 file vào không
gian làm việc
Pause Tạm ngừng chương trình
save Lưu giữ không gian làm việc

2.2. Lập trình với Matlab


Matlab là phần mềm hỗ trợ tính toán và hiển thị mạnh với các bộ lệnh thuộc nhiều
lĩnh vực: toán học, công nghệ thông tin, công nghệ hóa học, thống kê kế toán, kinh
tế...và không ngừng được cập nhật. Matlab giải quyết các vấn đề toán học từ đơn giản
tới phức tạp nhất.
Sau khi khởi động chương trình trong cửa sổ chính gồm 3cửa sổ nhỏ: Workspace,
Command History, Command Window.
* Các phép tính thông dụng và các ký hiệu trong Matlab
Ký Phép tính Ví dụ
hiệu
+ Cộng 2+3
11

- Trừ 23-56
* Nhân số, ma trận 12*67
^ Lũy thừa 2^2=4
\ Chia ngược 45\23=0,5111
/ Chia thuận 23/45=0,5111
: Dấu hai chấm
( ) [ ] {} Các dấu ngoặc sử dụng trong phép toán
. Chấm thập phân
... Sự tiếp tục
, Dấu phẩy
; Chấm phẩy
% Viết chú thích sau dấu %
! Chấm than
' Chuyển vị và nháy đơn
.' Chuyển vị liên hợp
= Chuyển đổi
== Dấu bằng
< Toán tử quan hệ nhỏ hơn
> Lớn hơn
>= lớn hơn hoặc bằng
<= Nhỏ hơn hoặc bằng
~= Không bằng
& Phép toán logic và 0&4=0, 4&4=1, 0&0=0
| Phép toán logic hoặc 0|0=0, 0|1=1, 1|1=1
~ Phép toán logic không ~0=1, ~4=0
xor Phép toán logic hoặc tuyệt đối xor(0,4)=1, xor(4,4)=0,
xor(0,0)=0

Tại Command Window chúng ta đánh


các lệnh sau dấu nhắc lệnh >>
VD1: Tính trung bình các bình phương
của: 12, 17, 23
Tại Command Window ta viết các lệnh
như sau:
>> a=12 Hình 4
a=
12
>> b=17
b=
17
>> c=23
c=

Hình 5
12

23
>> kq=(a^2+b^2+c^2)/3
kq =
320.6667
>>
Tại cửa sổ Workspace và Commad History ta thu được kết quả như Hình 4 và Hình 5
Cửa sổ Workspace được gọi là không gian làm việc của Matlab, nó chứa các biến
đang sử dụng (a, b, c, kq). Cửa sổ history ghi lại toàn bộ quá trình thao tác của chúng ta.

2.2.1. Biến trong matlab


* Các phiên bản trước 6.5 các biến, tên hàm và hàm con, tên trường cấu trúc (structure
field), M-file, MEX-file và MDL-file giới hạn 31 ký tự. Từ phiên bản Matlab 6.5 các tên
này có tối đa 63 ký tự. Chúng ta có thể kiểm tra bằng hàm:
>>namelengthmax
ans =
63
Nếu chúng ta đặt biến lớn hơn 63 ký tự Malab tự động bỏ các ký tự từ 64 trở đi.
* Các quy định trong đặt tên biến
Quy định Ví dụ
Tên biến phân biệt chữ hoa và chữ X, x là hai biến khác nhau
thường
Tên biến phải bắt đầu là chữ sau đó có a23_er4 đúng
thể là số hoặc gạch dưới và không sử 1233smds sai
dụng các ký tự đặc biệt khác a#sf23 sai
Tên biến phải viết liên tục Qwer12 đúng
qwqe 45dr sai
* Ngoài các biến trong quá trình quá trình lập trình chúng ta đưa vào, Matlab còn có các
biến đặc biệt. Nếu chúng ta đặt tên biến trùng với biến đặc biệt thì khi Matlab sử dụng
đến biến đó giá trị biến của chúng ta sẽ bị thay đổi hoặc giá trị của biến đặc biệt không
được sử dụng, tới khi chúng ta xóa biến do chúng ta đặt trùng.

Tên biến đặc biệt Giá trị


ans Kết quả phép toán
eps Chỉ độ chính xác của các phép tính toán (2.2204e-016 đơn vị)
flops Số của phép toán số thực
i và j i = j = (-1)^(1/2)
inf Để chỉ số vô cùng lớn (a/0, a khác 0)
NaN hoặc nan Chỉ số không xác định (0/0)
nargin Số các đối số được đưa vào hàm đang sử dụng
narout Số các đối số hàm đưa ra
pi 3.1416
realmax Số lớn nhất của số thực (1.7977e+308)
13

realmin Số nhỏ nhất của số thực (2.2251e-308)


Các lệnh đối với các biến trong workspace
clear, clear variables, Xóa toàn bộ biến trong không gian làm việc
clear global Xóa biến toàn bộ
clear functions xóa các M-, MEX- function
clear biến Xóa từng biến riêng biệt
clear biến1 biến2 biến3... Xóa các biến chọn
clear all Xóa tất cả các biến, hàm, liên kết MEX....
who Hiển thị các biến định trong workspace
whos Hiển thị các biến cùng các thông tin kích thước, số
byte, kiểu mảng
exist (‘a’) Kiểm tra xem ‘a’ là biến được định nghĩa hay hàm
được định nghĩa, cho kết quả từ 0-8.
Để có thêm thông tin chúng ta thực hiện lệnh:
>> help clear
>> help who

2.2.2. Nhập dữ liệu


Để nhập giữ liệu cho một chương trình chúng ta có thể nhập trực tiếp trong quá trình
viết chương trình. Tuy nhiên, điều đó có thể gây khó khăn trong lưu trữ và quản lý dữ
liệu. Matlab cho phép nhập dữ liệu từ một file văn bản format dạng *.txt. Matlab quản
lý và xử lý dữ liệu dạng ma trận. Khi dùng phần mềm notepad, wordpad, ... để lập file
dữ liệu chúng ta chú ý giữa các số của cột cách nhau ít nhất 1 dấu cách (chúng ta cũng có
thể thay bằng dấu ‘,’ hoặc Tab hoặc theo kiểu tự chọn, dùng enter để phân cách giữa
các hàng.
Ví dụ chúng ta vào File Import data và nhập file dữ liệu 5bien.txt được soạn thảo
như sau:
abcde
12 23 234 34 345
23 23 34 23
12 23
123 234 234
23
Matlab xắp xếp lại như hình 6
14

Hình 6

Trên Hình 6 chúng ta chọn next từ đó có hai cách đặt biến cho dữ liệu
Dạng 1: có 3 biến, biến data là ma trận 5x5 và 2 biến còn lại là textdata = [a b c d e]và
colheaders=[a b c d e] dạng matran hàng 1x5.
Dạng 2: có 5 biến cột a=[12;23;12;123;23], b=[23;23;23;234;0], c=[234;34;0;234;0],
d=[34;24;0;0;0], e=[345;0;0;0;0] dạng ma trận cột 5x1

2.2.3. Làm việc với workspace


Nhấp chuột phải vào 1 biến trong workspace ta nhận được menu như hình 7

Hình 7

* Open... dùng để biết và thay đổi các thuộc tính của biến
Ví dụ biến data khi mở ta có các thuộc tính sau

Biến data là một ma trận 5 hàng năm cột ta có thể thay đổi số hàng (ô size), số cột (ô
by) và thay đổi giá trị các số trong ma trận. Kiểu format các số trong ma trận trên dạng
shotG, chúng ta sẽ tìm hiểu các dạng format số trong phần sau.
* Trong mục Graph là các dạng biểu diễn đồ thị 2D, 3D, ... của biến data.
15

* Import data... mở thêm các biến lưu trong file dữ liệu *.mat. Chúng ta lưu ý các biến
mới mở cùng tên sẽ ghi đè lên các biến hiện thời trong cửa sổ workspace.
* Workspace có thể được save lại dưới dạng file *.mat của 1 số biến lựa chọn hoặc
tất cả các biến trong workspace. Khi cần sử dụng, từ menu của workspace chúng ta chọn
import data... và mở lại file này.

2.2.4. Làm việc với command history


Cửa sổ command history lưu trữ các lệnh được thực hiện ở command window. Để
thực hiện lại một lệnh hay nhóm lệnh trước đó chúng ta có thể kéo thả 1 lệnh hay một
nhóm lệnh từ command history vào trong command
window. Chúng ta cũng có thể kéo 1 lệnh hay một
nhóm lệnh trong command window vào dòng lệnh
hiện thời để thực hiện lại các lệnh đó.
Từ command history nếu một nhóm lệnh nào đó
phải sử dụng nhiều lần chúng ta có thể save chúng
dưới dạng M-file (Create M-File). Khi cần thực hiện
lại nhóm lệnh này chúng ta chỉ việc đánh tên M-file
và dấu nhắc lệnh và bấm enter.
Giả sử trong trong command window chúng ta Hình 8
thực hiện các lệnh
>> a=1:10
a=
Columns 1 through 10
1 2 3 4 5 6 7 8 9 10
>> a(1)=[ ]
a=
Columns 1 through 9
2 3 4 5 6 7 8 9 10
>> a(3)=[ ]
a=
Columns 1 Column 8
2 3 5 6 7 8 9 10
>> b=a*3+5
b=
Columns 1 through 8
11 14 20 23 26 29 32 35
Khi đó trong cửa sổ command history các lệnh được lưu như sau
a=1:10
a(1)=[ ]
a(3)=[ ]
b=a*3+5
Khi 4 lệnh này được save thành M-File có tên là “nhomlenh.m”, để thực hiện lại 4
lệnh này ta chỉ việc đánh lệnh:
16

>>nhomlenh
a=
Columns 1 through 10
1 2 3 4 5 6 7 8 9 10
>> a(1)=[ ]
a=
Columns 1 through 9
2 3 4 5 6 7 8 9 10
>> a(3)=[ ]
a=
Columns 1 Column 8
2 3 5 6 7 8 9 10
>> b=a*3+5
b=
Columns 1 through 8
11 14 20 23 26 29 32 35

Như vậy chúng ta có thể sử dụng M-File như một chương trình con hay hàm con, M-
file phải có phần mở rộng là “m”. Matlab đưa vào một số hàm ứng dụng trong M-File
để có giao tiếp tốt hơn với người lập trình:

Hàm Chức năng


disp (ans) Hiển thị các kết quả mà không hiển thị tên
biến
echo on, echo off, echo file on, Điều khiển cửa sổ lệnh lặp lại các lệnh của
echo file off, echo on all, echo off all M-File
Input M-File nhận dữ liệu từ bàn phím
Keyboard Trao quyền điều khiển tạm thời cho bàn phím
>>return
dừng lệnh keaboard, M-File tiếp tục chạy các
lệnh
Pause Dừng chương trình tới khi phím bất kỳ được
bấm
pause(n) Dừng n giây
waitforbuttonpress Dừng tới khi phím chuột hoặc bàn phím được
bấm

Hình 9
17

2.2.5. Làm việc với current directory, quản lý tệp


Current directory là nơi lưu trữ các file dữ liệu và M-File mà Malab xử dụng như địa
chỉ đầu tiên khi tìm kiếm các M-File trong các thư mục có trong đường dẫn của Matlab.
Bấm chuột phải ta được menu như hình 9, với M-File ta có thể chọn Open để mở,
sửa chữa, với các file *.mat khi ta chọn open các biến của file được đưa vào không gian
làm việc hiện thời của Matlab.
Trong quá trình làm việc các file dữ liệu của chúng ta có thể nằm ở thư mục bất kỳ
để đưa về Current directory chúng ta bấm vào nút để chọn thư mục chứa file cần sử
dụng.
Một chú ý đó là khi chúng ta sử dụng một
hàm, thủ tục tự tạo dạng M-File như một lệnh
trong command history Matlab chỉ tìm kiếm file
chứa lệnh trong đường dẫn đã được đặt sẵn.
Vì vậy, file của chúng ta có thể đang tồn tại
nhưng Matlab không nhận ra nếu như nó không
nằm trong đường dẫn đã đặt. Để đặt đường
dẫn cho thư mục chứa file cần sử dụng, chúng
ta vào file Set Path... Matlab sẽ hiển thị cửa
sổ Set Part (Hình 10) trong đó hiển thị đầy đủ
các folder đã được đặt đường dẫn. Chúng ta
chọn Add Folder..., sau đó chọn folder chứa
các file cần sử dụng rồi chọn Save Close. Hình 10
Bài tập:
1. Viết bảng dữ liệu sau dưới dạng file *.txt
Nguyelieu Sanpham Thơigianluu
A(mol/L) (Amol/L) (s)
2.00 0.65 300
2.00 0.92 240
2.00 1.00 250
1.00 0.56 110
1.00 0.37 360
0.48 0.42 24
0.48 0.28 200
0.48 0.20 560
a) Nhập dữ liệu theo hai dạng, 8x3 và 3 vec tơ cột, lưu giá trị các biến.
b) Tính tổng theo hàng theo cột.
c) Lưu các lệnh dưới dạng M-file và thực lại các tính toán theo mục b.
2. Viết M-file tính cho phép nhập mảng 1 chiều x để tính các giá trị y=
a*x^3+b*x^2+c*x+d với điều kiện a,b,c,d,x nhập từ bàn phím. Đặt tên M-file là tgtrb3
18

3. Cut trtrb3 tử thư mục work trong matlab ra ngoài ổ C và đặt đường dẫn cho
matlab truy cập tới địa chỉ đó.

3. Các dạng hiển thị số và các hàm toán học thông dụng
3.1. Các dạng hiển thị số
Trước hết chúng ta xét một số vô hạn không tuần hoàn 2^(1/2), theo mặc định Matlab
hiển thị dạng shortG:
a=2^(1/2)
a=1.4142

Để hiển thị giá trị của a Matlab có một số khuôn dạng sau:
Định Lệnh Hiển thị a Hiển thị số 3-2i
dạng
short format short 1.4142 3.0000 - 2.0000i
shortG format short g 1.4142 3 - 2i
shortE format short e 1.4142e+000 3.0000e+000 -2.0000e+000i
long format long 1.41421319796954 3.00000000000000 -
2.00000000000000i
longG format long g 1.41421319796954 3 - 2i
longE format long e 1.414213197969543e+000 3.000000000000000e+000
-2.000000000000000e+000i
hex format hex 3ff6a09e04ad9cb8 4008000000000000
c000000000000000i
bank format bank 1.41 3.00
+ format + + +
rational format 1393/985 3 - 2i
rational

Chúng ta phải hiểu rằng Matlab luôn tính toán với cấp độ chính xác nhất có thể, khi
biến a hiển thị dạng shortG: a=2^(1/2)= 1.4142 không có nghĩa là giá trị của a dừng lại ở
4 số sau dấu phẩy, theo ngầm định matlab tính toán với hàng trăm số sau dấu phẩy của
a.
Để thay đổi dạng hiển thị số mặc định chúng ta vào File Preferences...  Array
Editor sau đó lựa chọn dạng format phù hợp. Ngoài ra Preferences là mục cho phép
chúng ta thay đổi nhiều giao diện giữa người lập trình và phần mềm.

3.2. Số phức
Malab có hai biến đặc biệt đó là i=j= − 1 dùng cho phần ảo của số thực, vai trò của i
và j là tương tự nhau. Ưu điểm đặc biệt của Matlab đó là tính toán với số phức tương tự
như số thực.
Trong toán học số phức có thể biểu diễn dưới dạng sau:
19

A,θ=A.eiθ=a+bi
Trong đó A,θ và A.eiθ là các dạng biểu diễn ở tọa độ cực.
A= a + b , θ = arc[tan(b/a)], a=A cosθ, b=A sinθ
2 2

* Các lệnh chuyển hệ trục tọa


>> c=3-2i
c=
3.0000 - 2.0000i
Lệnh Kết quả Ý nghĩa
real(c) 3 Xác định phần thực
imag(c) -2 Xác định phần ảo
abs(c) 3.6056 Tính argument
angle(c) -0.5880 Tính góc số phức theo radian
conj(c) 3.0000 + 2.0000i Số phức liên hợp

3.3. Các hàm toán học thông dụng


acos(x) Hàm ngược của hàm cosin
acosh(x) Hàm ngược của hàm hypecbolcosin
asin(x) Hàm ngược của hàm sin
asinh(x) Hàm ngược của hàm hypecbolsin
atan(x) Hàm ngược của hàm tang
atan2(x,y) Hàm ngược tang của thương số phần thực
x chia cho phần thực y
atanh(x) Hàm ngược của hàm hypepoltang
cos(x), sin(x), tan(x), cosh(x), sinh(x),
tanh(x)
log(x) Logarit tự nhiên
log10(x) Logarit cơ số 10
exp(x) e^x
sqrt(x) Căn bậc 2 của x
fix(x) Xấp xỉ 0
ceil(x) Xấp xỉ dương vô cùng
floor(x) Xấp xỉ âm vô cùng
gdc(x,y) Ước số chung lớn nhất của 2 số nguyên x,y
lcm(x,y) Bội số chung nhỏ nhất của hai số nguyên
x,y
rem(x,y) Phần dư của phép chia x cho y
round(x) Phần nguyên của x
sign(x) Trả về dấu của x

Bài tập
1. Nhập dữ liệu từ file *.txt có nội dung như bảng sau:
20

a. Tính các giá trị:


1000 − C A 1
xA = a = 2 ln − xA
1000 + C A 1− X A V CA
b) Viết M-file chuyển mảng v và CA thành 1 mảng số phức
‘c’ với các phần tử cột v là phần thực, các phần tử tương ứng
phần CA là phần ảo 1,5 10
c) Thực hiện các lệnh
real(c)
imag(c) 2,5 50
abs(c)
angle(c) 4,0 100

6,5 200
4. Quản lý ma trận dữ liệu
Matlab làm việc với các đại lượng vô hướng, vectơ, và ma 20 500
trận. Đại lượng vô hướng chỉ đơn giản là ma trận 1x1, và
vectơ chính là ma trận 1 cột hoặc 1 dòng. Tất cả các dạng dữ liệu này Matlab kiểm soát
dưới dạng ma trận.
Phần này sẽ giới thiệu các thao tác và các hàm cơ bản với ma trận.

4.1. Ma trận 1 chiều

4.1.1. Ma trận hàng


Để tìm hiểu cách thiết lập và xử lý dữ liệu ma trận 1 chiều chúng ta xét ví dụ:
VD2: Trong quá trình phân tích Amoni theo phương pháp quang học chúng ta thu được
dữ liệu về đường chuẩn như sau:
Nồng độ (ppm) 0.4 0.8 1.2 1.6 2
Độ hấp thụ 0.125 0.220 0.309 0.399 0.497
Hãy vẽ đồ thị.
Chúng ta cần 2 biến dưới dạng 2 ma trận hàng để quản lý dữ liệu của nồng độ và độ
hấp thụ. Dữ liệu nồng độ là dữ liệu có quy luật do đó chúng ta sử dụng lệnh sau:
>>nd=linspace(0.4,2,5)
nd =
0.4000 0.8000 1.2000 1.6000
2.0000
>>ht=[0.125 0.220 0.309 0.399 0.497]
ht =
0.1250 0.2200 0.3090 0.3990
0.4970
>>plot(ht,nd)
>>xlabel(‘do hap thu’)
>>ylabel(‘nong do’)
21

linspace là câu lệnh tạo ma trận hàng cú pháp như sau linspace(a,b,c) trong đó a là giá
trị đầu, b là giá trị cuối và c là số giá trị nằm trong đoạn [a, b]
Dữ liệu về độ hấp thụ không có quy luật do đó chúng ta phải nhập từng giá trị, khi
chúng ta nhập dữ liệu phải chú ý giữa các giá trị phải cách nhau một dấu cách hoặc dấu
‘,’, các giá trị phải nằm trong dấu ngoặc vuông [ ]:
Ngoài 2 cách tạo ma trận hàng như trên chúng ta có thể tạo các cách sau:
* Tạo ma trận hàng mà các phần tử liên tiếp cách nhau 1 đơn vị
>>x=0.4:6
x=
0.4000 1.4000 2.4000 3.4000 4.4000 5.4000
* Tạo ma trận hàng mà các phần tử liên tiếp cách nhau một giá trị xác định
>> x=0.1:0.4:2
x=
0.1000 0.5000 0.9000 1.3000 1.7000
* Chúng ta có thể sử dụng các phép toán trong tạo ma trận
>> x=(0.1:0.4:2)*sin(pi/4)
x=
0.0707 0.3536 0.6364 0.9192 1.2021
* Tạo ma trận hàng theo hàm logarit
>> x=logspace(1, 3, 3)
x=
10 100 1000
Tạo ma trận hàng từ 101 đến 103 chứa 3 giá trị.

4.1.2. Ma trận cột


Khi nhập một ma trận hang giữa các dữ liệu trong ma trận ta sử dụng dấu cách hoặc
dấu phẩy, để nhập 1 ma trận cột chúng ta phân cách dữ liệu bằng dấu ‘;’ ví dụ:
>> b=[1;2;3]
b=
1
2
3
Ngoài ra chúng ta có thể dùng toán tử chuyển vị để chuyển từ ma trận hàng thành ma
trận cột:
>>c=x’
c=
10
100
1000
>>c=x.’
c=
10
22

100
1000
Chúng ta có hai phép toán chuyển vị là (’) và (.’) hai phép chuyển vị này chỉ khác nhau
khi dữ liệu là số phức. Toán tử (.’) chỉ đơn giản là chuyển vị ma trận, còn toán tử (‘)
chuyển cả các số phức trong ma trận nguồn thành số phức liên hợp:
>>d=c+b*i
d=
10 + 1i
100 + 2i
1000 + 3i
>> e=d'
e=
10 - 1i 100 - 2i 1000 - 3i

>> e=d.'
f=
10 + 1i 100 + 2i 1000 + 3i

4.2. Ma trận nhiều chiều


Khi nhập một ma trận nhiều chiều ngoài việc nhập dữ liệu từ file chúng ta có thể
nhập dữ liệu từ bàn phím. Trong chúng ta phải chú ý giữa các dữ liệu trong một hàng
phải cách nhau một dấu ‘,’ hoặc dấu cách, giữa các hàng phải cách nhau bởi dấu ‘;’
hoặc enter.
>>g=[1 2 3;4 5 6; 7 8 9]
g=
1 2 3
4 5 6
7 8 9
>>g=[1 2 3
456
7 8 9]
g=
1 2 3
4 5 6
7 8 9
Matlab cung cấp 2 hàm cho phép gọi ma trận chỉ gồm các phần tử 0 hoặc 1:
>>h=ones(3,2)
h=
1 1
1 1
1 1
>> k=zeros(3,4)
k=
23

0 0 0 0
0 0 0 0
0 0 0 0
Ta cũng có thể tạo ma trận 0 hay 1 theo kích thước ma trận khác:
>>m=ones(size(g))
m=
1 1 1
1 1 1
1 1 1
Về mặt cú pháp khi ta viết ones(n) hay zeros(n) nghĩa là tạo ma trận vuông n chiều
còn khi viết ones(n,m) hay zeros(n,m) nghĩa là tạo ma trận n hàng m cột.

4.3. Các phép toán trong ma trận


* Nhân ma trận
.* Nhân ma trận theo từng vị trí tương ứng hai ma trận
^ Lũy thừa ma trận
.^ Lũy thừ ma trận theo từng vị trí tương ứng hai ma trận
\ Chia trái ma trận
/ Chia phải ma trận
./ and .\ Chia ma trận theo từng vị trí tương ứng hai ma trận
' Chuyển vị chuyển liên hợp
.' Chuyển vị không chuyển liên hợp
Để hiểu rõ hơn giữa phép toán sử dụng dấu (.) và không sử dụng ta hãy xét ví dụ sau
>> n
n=
2 2 2
2 2 2
2 2 2
>> g
g=
1 2 3
4 5 6
7 8 9
>> h=n.*g
h=
2 4 6
8 10 12
14 16 18
>>k=n*g
k=
24 30 36
24 30 36
24 30 36
24

Các phép toán sử dụng dấu ‘.’ thực hiện trên các vị trí tương ứng của hai ma trận
h(i,j)=n(i,j)*g(i,j) trong đó i chỉ vị trí hàng, j chỉ vị trí cột.
Các phép toán không sử dụng dấu ‘.’ tuân theo quy định toán học về định thức ma
trận.
h(i, j) = ∑ n(i, x) * g(x, j)
x =1:3

4.5. Địa chỉ dữ liệu trong ma trận


Khi truy xuất tới một phần tử trong ma trận chúng ta sử dụng chỉ số hàng và chỉ số
cột:
>>h(2,2)
ans=
10
>>h(2,3)=10 % gán dữ liệu ở hàng 2 cột 3 của ma trận h bằng 10
h=
2 4 6
8 10 10
14 16 18
>>h(3,:)=10 % gán tất cả các giá trị hàng thứ 3 bằng 10, dấu ‘:’ chỉ tất cả các
hàng hoặc cột
h=
2 4 6
8 10 10
10 10 10
>>h(:,4)=0 % tăng thêm cột thứ 4 bằng 0
h=
2 4 6 0
8 10 10 0
10 10 10 0
>> h(:,3)=[] % bớt cột thứ 3 của ma trận h
h=
2 4 0
8 10 0
10 10 0
>> x
x=
10 100 1000
>> h(2,:)=x % thay hàng 2 bằng ma trận hàng x
h=
2 4 0
10 100 1000
10 10 0
25

Chúng ta có quy định chung về địa chỉ của ma trận như sau:
h(m,n) Ma trận con 1 phần tử ở hàng m cột n của ma trận h
h(:,n) Ma trận con là ma trận cột chứa các phần tử ở cột n của ma
trận h
h(m,:) Ma trận con là ma trận hàng chứa các phần tử ở hàng m của
ma trận h
h(:) Ma trận cột chứa tất cả các phần tử trong ma trận h bằng cách nối liên tiếp các
cột lại với nhau
h(m) Chỉ phần tử thứ m trong ma trận h theo cách đếm liên tiếp từ trên xuống
dưới, từ trái qua phải
>>h(8) 1 4 7
ans = 2 5 8
1000 Hình: 12: Thứ tự trong ma
trận 3 6 9
4.6. Các hàm thông dụng

p=find(h) Cho kết quả là ma trận cột các chỉ số của dữ liệu lớn hơn 1
trong ma trận h
[m,n]=find(h) Cho kết quả là hai ma trận cột m chứa các chỉ số hàng, n chứa
các chỉ số cột của các phần tử lớn hơn 1 trong ma trận h. Ta có
thể đưa thêm các hàm toán vào các dữ liệu trong ma trận h như :
find(h>34), find(sin(h)>0.5)...
isequal(g,h) Cho giá trị là 1 nếu hai ma trận giống nhau, là 0 nếu số hàng, số
cột hay có 1 phần tử khác nhau
ismember(g,h) Cho kết quả là ma trận có kích thước bằng ma trận g. Với mỗi
phần tử trong ma trận g Malab tìm kiếm trong ma trận h nếu có
phần tử có giá trị bằng thì trả kết quả 1, nếu không có thì trả giá
trị 0.
intersect(g(:),h(:)) Trả kết quả là ma trận cột các phần tử bằng nhau được sắp
xếp từ nhỏ đến lớn
setdiff(g(:),h(:)) Trả kết quả là ma trận cột các phần tử có trong g mà không có
trong h, xắp xếp từ nhỏ đến lớn
setxor(g(:),h(:)) Trả kết quả là ma trận cột các phần tử không phải là phần tử
chung của g và h
union(g(:),h(:)) Trả kết quả là ma trận cột tất cả các phần tử có trong g hoặc h
size(g) Trả kết quả là ma trận hàng với hai dữ liệu là số hàng và số
cột ma trận g
size(g,1) Trả kết quả là số hang
size(g,2) Trả kết quả là số cột
length(g) Trả kết quả là số chiều lớn hơn
26

>> h=[23 54 0;7 -13 54; -98 345 12]


h=
23 54 0
7 -13 54
-98 345 12
>> p=find(h)
p=
1
2
3
4
5
6
8
9
>> [m,n]=find(h)
m=
1
2
3
1
2
3
2
3
n=
1
1
1
2
2
2
3
3
>> find(sin(h)>0.5)
ans =
2
3
Bài tập:
1. Viết chương trình nhập hai số từ bàn phím, sử dụng lệnh factor để tác các số thành
các thừa số nguyên tố. Tìm các thừa số chung và các thừa số khác nhau của hai mảng 1
chiều đó từ đó tính USCLN, BSCNN.
27

2. Theo dõi nhiệt độ tại các vị trí khác nhau của một thùng phản ứng tĩnh thu được
kết quả như sau
Thoi gian Trung tam 10 cm 20cm Thành
1 20.3 20.3 20.4 21.0
2 53.4 54.4 47.5 22.3
3 60.2 59.6 54.3 25.6
4 59.7 59.4 55.8 27.8
5 54.4 55.3 47.5 20.1
6 45.6 43.7 39.6 22.4
7 33.6 32.8 30.3 26.4
8 29.3 28.7 25.4 20.1
9 26.4 26.4 26.5 23.6
10 26.7 26.5 23.5 21.4
a) Nhập dữ liệu từ file *.txt dạng ma trận 10x5
b) Gán cột 1 bằng biến a, xóa cột 1 khỏi ma trận
c) Sử dụng hàm plot vẽ đồ thị với trục hoành là a
c) Tìm nhiệt độ cao nhất, nhỏ nhất

6. Quản lý văn bản


Matlab quản lý các ký tự văn bản theo bảng mã ASCII. Dữ liệu nằm giữa hai dấu
nháy đơn ‘’ được hiểu là văn bản.
Ví dụ
>> a='Khoa Hoa hoc, truong DHKHTN'
a=
Khoa Hoa hoc, truong DHKHTN
>> size(a)
ans =
1 27
>> abs(a)
ans =
Columns 1 through 13
75 104 111 97 32 72 111 97 32 104 111 99 44
Columns 14 through 26
32 116 114 117 111 110 103 32 68 72 75 72 84
Column 27
78
>> b=double(a)
b=
Columns 1 through 13
75 104 111 97 32 72 111 97 32 104 111 99 44
Columns 14 through 26
32 116 114 117 111 110 103 32 68 72 75 72 84
28

Column 27
78
>> char(b)
ans =
Khoa Hoa hoc, truong DHKHTN
Các hàm double và abs chuyển về dạng số của các ký tự hàm char là hàm ngược lại
chuyển số về dạng ký tự, hàm size cho biết số ký tự trong xâu. Chúng ta cũng có thể
trích dẫn đoạn văn bản trong xâu theo chiều thuận hay nghịch.
>> c=a(6:12) % lấy các ký tự theo thứ tự 6 tới 12
c=
Hoa hoc
>> c=a(6:2:12) % cứ hai ký tự lấy 1
c=
Hahc
>> c=a(12:-1:6) % đảo ngược các ký tự từ 12 tới 6
c=
coh aoH
>> d=c' % chuyen vị hang sang cot
d=
c
o
h

a
o
H
Các lệnh trên chúng ta thấy rằng khi hiển thị dữ liệu luôn có tên biến đi cùng ví dụ ‘c
=’ .... Khi muốu hiển thị xâu văn bản mà không hiển thị biến chúng ta dùng hàm disp.
>>disp(c)
coh aoH
Trong qúa trình làm 1 bài toán chúng ta cần viết dữ liệu dạng số vào trong xâu văn
bản khi đó chúng ta phải chuyển đổi dữ liệu dạng số sang xâu, ta dùng lệnh num2str.
x=
12
>> y
y=
8
>> kq=['gia tri bien y bang ' num2str(y) ' ung voi bien x bang ' num2str(x)]
kq =
gia tri bien y bang 8 ung voi bien x bang 12
29

7. Quản lý thời gian


Matlab lấy mốc thời gian là năm 0 theo dương lịch từ đó tính thời gian như trên trục
số trước năm không các năm mang dấu âm sau năm 0 các năm mang dấu dương. Đơn vị
thời gian sử dụng trong Matlab là ngày, chương trình không quản lý thời gian theo ngày
tháng năm mà theo các con số ví dụ ngày 19 tháng 07 năm 2003 ứng với con số 732135
ngày (tính từ ngày dầu tiên của năm 0). Số tính ngày của Matlab chính xác hàng trăm số
sau dấu phẩy, để chính xác đến giây chúng ta cần lấy tối thiểu năm số sau dấu phẩy.

7.1 Các hàm thời gian


calendar Lịch
clock Hiển thị thời gian hiện tại dưới dạng vector (number)
cputime Thời gian Matlab đang hoạt động (giây)
date Ngày hiện thời, hiển thị dạng xâu (Text)
datenum Tính số ngày
datestr Hiển thị ngày dạng xâu với nhiều kiểu mặc định khác nhau
datevec Chuyển xâu ký tự dạng ngày sang dữ liệu dạng ma trận 1 chiều
eomday Tìm ngày cuối tháng
etime Tính thời gian giữa hai thời điểm
now Hiển thị thời gian hiện tại
tic, toc Tính thời thực hiện lệnh...
weekday Tìm thứ mấy trong tuần từ ngày tháng năm

7.2. Lập lịch các tháng


Hàm clendar được sử dụng để hiện thị lịch một tháng của năm bất kỳ với cấu trúc
câu lệnh: calendar(năm,tháng).
>> calendar (2004,1)
Jan 2004
S M Tu W Th F S
0 0 0 0 1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
0 0 0 0 0 0 0

7.3. Hiển thị ngày giờ hiện tại


>> clock % hiển thị thời gian lúc thực hiện lệnh dưới dạng ma trận hàng
%(năm, tháng, ngày, giờ, phút, giây) các phần tử format dạng số
ans =
Columns 1 through 3
2003 7 19
Columns 4 through 6
17 0 44.023
30

>> n=date
n=
19-Jul-2003
Hàm now cũng đưa ra thời gian hiện tại hiển thị dưới dạng số ngày tính từ ngày thứ
nhất năm 0.
>> n=datestr(1)
n=
01-Jan-0000
>> n=datestr(800000,1) % ngày thứ 800000
n=
28-Apr-2190
Hàm datetstr hiển thị ngày dạng xâu có 31 kiểu hiển thị ngày:
Số kiểu hiển thị Dạng xâu Ví dụ
0 'dd-mmm-yyyy HH:MM:SS' 01-Mar-2000 5:45:17
1 'dd-mmm-yyyy' 01-Mar-2000
2 'mm/dd/yy' 03/01/00
3 'mmm' Mar
4 'm' M
5 'mm' 03
6 'mm/dd' 03/01
7 'dd' 01
8 'ddd' Wed
9 'd' W
10 'yyyy' 2000
11 'yy' 00
12 'mmmyy' Mar00
13 'HH:MM:SS' 15:45:17
14 'HH:MM:SS PM' 3:45:17 PM
15 'HH:MM' 15:45
16 'HH:MM PM' 3:45 PM
17 'QQ-YY' Q1-96
18 'QQ' Q1
19 'dd/mm' 01/03
20 'dd/mm/yy' 01/03/00
21 'mmm.dd,yyyy HH:MM:SS' Mar.01,2000 15:45:17
22 'mmm.dd,yyyy' Mar.01,2000
23 'mm/dd/yyyy' 03/01/2000
24 'dd/mm/yyyy' 01/03/2000
25 'yy/mm/dd' 00/03/01
26 'yyyy/mm/dd' 2000/03/01
27 'QQ-YYYY' Q1-1996
28 'mmmyyyy' Mar2000
29 (ISO 8601) 'yyyy-mm-dd' 2000-03-01
31

30 (ISO 8601) 'yyyymmddTHHMMSS' 20000301T154517


31 'yyyy-mm-dd HH:MM:SS' 2000-03-01 15:45:17
Ngược lại với hàm datestr hàm datevec chuyển ngày tháng dạng xâu (text) sang dạng
ma trận 1 chiều (các phần tử format dạng số)
>> datevec('28-Apr-2190')
ans =
2190 4 28 0 0 0
>> eomday(2003,2) % tìm ngày cuối cùng của tháng
ans =
28

7.3. Tính khoảng thời gian


* Tính số ngày
>> n=date
n=
19-Jul-2003
>> datenum(n)
ans =
731781
ans bằng tổng số ngày từ ngày đầu tiên của năm 0 tới ngày 19 tháng 7 năm 2003
* Hàm etime tính khoảng thời gian giữa hai thời điểm (tính bằng giây), hai thời điểm
này phải biểu diễn dưới dạng vectơ gồm 6 phần tử dạng số (năm, tháng, ngày, giờ, phút
, giây).
>> t1=datevec('08-Feb-1978')
t1 =
1978 2 8 0 0 0
>> t2=datevec('19-Jun-2003')
t2 =
2003 6 19 0 0 0
>> sogiay=etime(t2,t1)
sogiay =
80023680
Ngoài ra chúng ta còn gặp hàm tic, toc để tính thời gian thực hiện lệnh.
Bài tập
1 Lập lịch các tháng năm sau?
2 Tìm xem ngày 1 tháng 1 năm 3000 là thứ mấy, tính số giây từ thời điểm hiện tại tới
giây, phút, giờ thứ nhất ngày 1 tháng 1 năm 3000

8. Cấu trúc vòng lặp và điều kiện


8.1. Vòng lặp for
Vòng lặp for cho phép lặp lại một nhóm lệnh với số lần xác định, với cú pháp như
sau
32

for n= ma trận % dữ liệu dạng ma trận, được hiểu dưới dạng vectơ hàng có
thể là nhiều hàng hay 1 hàng
Nhóm lệnh
end

VD: Tính hiệu bình phương từng cặp số trong hai dãy số 23, 445, 23 và 234, 23, 234
>> hbp=zeros(1,3) % (1)
hbp =
0 0 0
>> n=0
n=
0
>> dulieu=[23 445 23;234 23 234]
dulieu =
23 445 23 % dãy 1
234 23 234 % dãy 2
>> for x=dulieu
n=n+1;
hbp(n)=x(1)^2-x(2)^2
end
hbp =
-54227 0 0

hbp =
-54227 197496 0

hbp =
-54227 197496 -54227 % giá tương ứng của 23^2-234^2; 445^2-23^2;
23^2-234^2

Khi không khởi tạo hbp giá trị của ma trận hàng hbp được lấp đầy dần, quá trình
khởi tạo (1) thực hiện lệnh cấp bộ nhớ 1 lần cho biến hbp để thúc đẩy nhanh quá trình
tính toán thay vì mỗi khi n tăng 1 đơn vị matlab lại phải cấp thêm bộ nhớ cho biến hbp.
Do n thuộc dạng ma trận dữ liệu số nên ta có thể khởi tạo n giống như khởi tạo ma
trận ví dụ như n=1:10, n=10,-1,1...

8.2. Vòng lặp while


Khác với vòng lặp for vòng lặp while thực hiện số vòng lặp không xác định tới khi
biểu thức điều kiện bị vi phạm thì dừng lại. Cú pháp vòng lặp while như sau:
>>while biểu thức điều kiện
nhóm lệnh
end
Ví dụ tìm ước số chung lớn nhất và bội số chung nhỏ nhất của 174 và 36
33

>> m=174
m1=m
>> n=36
n1=n
>> While m~=n
if m>n m=m-n else n=n-m
usc=m bsc=m1*n1/usc
end

8.3. Cấu trúc điều kiện if-else-end


Cấu trúc này được áp dụng khi chúng ta muốn một nhóm lệnh được thực hiện chỉ khi
một điều kiện nào đó được thỏa mãn.
Cú pháp câu lệnh:
>> if biểu thức điều kiện
khối các lệnh
end
Cấu trúc này có thể được rẽ nhánh gồm nhiều biểu thức điều kiện với từ khóa elseif
>> if biểu thức điều kiện
khối các lệnh
elseif biểu thức điều kiện
khối các lệnh
elseif biểu thức điều kiện
khối các lệnh
...
else
khối các lệnh
end
Ví dụ:
>> j=0
for x=1:1000
if round(sqrt(x))^2==x
j=j+1
y(j)=x
end
end % tìm các số chính phương từ 1 tới 1000

8.4. Cấu trúc switch-case


Cấu trúc áp dụng khi chúng ta cần biết đặc tính của dữ liệu để thực hiện các phép
toán cho phù hợp, nó có cấu trúc
>>switch biểu thức điều kiện
case kiểm tra đặc tính 1
nhóm lệnh
case kiểm tra đặc tính 1
34

nhóm lệnh
...
otherwise
nhóm lệnh
end
* Chúng ta chú ý rằng khi thực hiện các lệnh trực tiếp trên command window bấm
phím enter thay cho dấu thực hiện câu lệnh, trong các M-file chỉ có dòng lệnh cuối cùng
là có thể kết thúc được bằng phím enter do đó tất cả các câu lệnh phải có dấu ‘;’ để
thực hiện lệnh.

Bài tập
1. Từ năm 2000 tới năm 3000 hãy tìm các năm mà tháng 2 có 29 ngày? (sử dụng vòng
lặp for, cấu trúc if và hàm eoday)
2. Tìm các số nguyên tố từ 1 tới 1000 (có thể áp dụng hàm factor, size, câu lệnh for)

9. Phân tích dữ liệu và các hàm chuyển đổi Fourier


Matlab quản lý dữ liệu dạng ma trận nên chúng ta dễ dàng xử lý, truy xuất từng dữ
liệu riêng lẻ cũng như theo các hàng hay theo các cột.
Ví dụ: Kết quả thí nghiệm với các hệ phản ứng loại bỏ nitơ trong nước thải rác
bằng 1 loại cỏ, đánh giá bằng khối lượng nitơ (kg) và sự chuyển hóa giữa các dạng. Dữ
liệu được ghi trong file kqtnito.txt như sau.
Thietbi Bandau Cuoicung NH3_N NO2_N NO3_N
AT1 0.1422 0.0263 88 7 5
AT2 0.1422 0.0291 88 8 4
BT1 0.0293 0.0073 104 5 -9
BT2 0.0334 0.0107 103 6 -9
BT3 0.0925 0.0105 94 5 2
B1T4 0.0852 0.0268 88 6 6
CT1 0.1342 0.0341 84 17 -2
CT2 0.1351 0.0392 87 17 -4
CT3 0.1401 0.0606 89 15 -4
DP2 1.5870 0.0111 83 17 0
DP6 1.6310 0.0512 83 19 -2
DP9 1.5379 0.0441 81 10 -1
EP2 1.5668 0.0409 33 65 2
EP4 1.7058 0.3877 41 55 4
EP6 1.7699 0.5063 53 45 2
EP9 1.5096 0.2408 42 55 3

Để nhập dữ liệu ta vào File import data...


>> a=data
a=
0.1422 0.0263 88.0000 7.0000 5.0000
35

0.1422 0.0291 88.0000 8.0000 4.0000


0.0293 0.0073 104.0000 5.0000 -9.0000
0.0334 0.0107 103.0000 6.0000 -9.0000
0.0925 0.0105 94.0000 5.0000 2.0000
0.0852 0.0268 88.0000 6.0000 6.0000
0.1342 0.0341 84.0000 17.0000 -2.0000
0.1351 0.0392 87.0000 17.0000 -4.0000
0.1401 0.0606 89.0000 15.0000 -4.0000
1.5870 0.0111 83.0000 17.0000 0
1.6310 0.0512 83.0000 19.0000 -2.0000
1.5379 0.0441 81.0000 0 -1.0000
1.5668 0.0409 33.0000 65.0000 2.0000
1.7058 0.3877 41.0000 55.0000 4.0000
1.7699 0.5063 53.0000 45.0000 2.0000
1.5096 0.2408 42.0000 55.0000 3.0000
>> ptxl=a(:,2)./a(:,1)*100 % tính phần trăm giá trị tương ứng ở cột 2 so với cột 1
(phần trăm còn lại sau xử lý)
ptxl =
18.4951
20.4641
24.9147
32.0359
11.3514
31.4554
25.4098
29.0155
43.2548
0.6994
3.1392
2.8675
2.6104
22.7283
28.6061
15.9512
>> gttb=mean(a) % giá trị trung bình theo cột
gttb =
0.7651 0.0954 77.5625 21.3750 -0.1875
>> gttb1=mean(a,1) % giá trị trung bình theo cột
gttb1 =
0.7651 0.0954 77.5625 21.3750 -0.1875
>> gttb2=mean(a,2) % giá trị trung bình theo hàng
gttb2 =
20.0337
36

20.0343
20.0073
20.0088
20.2206
20.0224
19.8337
20.0349
20.0401
20.3196
20.3364
16.3164
20.3215
20.4187
20.4552
20.3501
>> xltn=min(ptxl)% tìm giá trị nhỏ nhất trong ma trận cột ptxl (xử lý tốt nhất)
xltn =
0.6994
>> tb=find(ptxl==xltn) % tìm địa chỉ phần tử trong cột có giá trị bằng xltn
tb =
10
>> xlkn=max(ptxl) % tìm giá trị lớn nhất
xlkn =
43.2548
>> tbkn=find(ptxl==xlkn) % tìm địa chỉ
tbkn =
9
>> tentb=1:16
tentb =
Columns 1 through 13
1 2 3 4 5 6 7 8 9 10 11 12 13
Columns 14 through 16
14 15 16
>> plot(tentb,a(:,1:2)) % vẽ đồ thị cột 1 và 2
>> xlabel('thu tu thiet bi')
>> ylabel('khoi luong nito (kg)')
>> plot(tentb,a(:,3:5))
>> xlabel('thiet bi')
>> ylabel('phan tram')
>> b=diff(a) % độ chênh lệch giữa hai phần tử
kề nhau trong mảng
b=
0 0.0028 0 1.0000 -1.0000
37

-0.1129 -0.0218 16.0000 -3.0000 -13.0000


0.0041 0.0034 -1.0000 1.0000 0
0.0591 -0.0002 -9.0000 -1.0000 11.0000
-0.0073 0.0163 -6.0000 1.0000 4.0000
0.0490 0.0073 -4.0000 11.0000 -8.0000
0.0009 0.0051 3.0000 0 -2.0000
0.0050 0.0214 2.0000 -2.0000 0
1.4469 -0.0495 -6.0000 2.0000 4.0000
0.0440 0.0401 0 2.0000 -2.0000
-0.0931 -0.0071 -2.0000 -19.0000 1.0000
0.0289 -0.0032 -48.0000 65.0000 3.0000
0.1390 0.3468 8.0000 -10.0000 2.0000
0.0641 0.1186 12.0000 -10.0000 -2.0000
-0.2603 -0.2655 -11.0000 10.0000 1.0000

Phép toán cơ bản (Basic Operations)


cumprod cumprod(b,n), n=1 tích lũy theo cột, n=2 tích lũy theo hàng
cumsum Tổng tích lũy
cumtrapz Tổng tích lũy của giá trị trung bình 2 số liên tiếp (n=1 tính theo cột, n=2
tính theo hàng)
factor Tách số thành các thừa số nguyên tố
inpolygon Tìm các điểm trong vùng đa giác
max Xác định giá trị lớn nhất theo 1 chiều
mean Xác định giá trị trung bình theo 1 chiều
median Giá trị trung gian trong mảng
min Xác định giá trị nhỏ nhất theo 1 chiều
perms Tất cả khả năng có thể xảy ra của phép hoán vị 1 tập số
polyarea Diện tích của đa giác
primes Tạo ra danh sách các số nguyên tố
prod Tích số 1 chiếu các phần tử trong ma trận
sort Xếp các phần tử theo chiều tăng dần
sortrows Xếp các dòng theo chiều tăng dần
std Độ lệch chuẩn
sum Tổng các phần tử theo 1 chiều ma trận
trapz Hàng hay cột cuối cùng của lệnh cumtrapz
var Sự thay đổi

Sai phân hữu hạn (Finite Differences)


del2 Toán tử rời rạc Laplacian
diff Tính độ chênh lệch giữa các phần tử và đạo hàm gần đúng
gradient Gradient vi phân

Biến đổi Fourier (FourierTransforms)


38

abs Giá trị tuyệt đối và agument số phức


angle Góc pha
cplxpair Xắp xếp các số phức thành các cặp liên hợp phức
fft Biến đổi Fourier rời rạc 1 chiều
fft2 Biến đổi Fourier rời rạc 2 chiều
fftshift Shift DC component of fast Fourier transform to center of spectrum
ifft Biến đổi Fourier rời rạc ngược 1 chiều
ifft2 Biến đổi Fourier rời rạc ngược 2 chiều
ifftn Biến đổi Fourier rời rạc ngược n chiều

10. Tạo và giải hệ phương trình tuyến tính


Matlab cung cấp các hàm xác định ma trận nghịch đảo, định thức, nhân, chia ma trận...
do đó chúng ta có thể ứng dụng giải các hệ phương trình tuyến tính.
VD: Giải hệ phương trình
2x1 + 5x2 + 7x3 = 12
5x1 + 8x2 + 34x3 = 45
34x1 + 65x2 + 12x3 = 157
Biểu diến dưới dạng ma trận ta có thể viết lại như sau

2 5 7 x1 12
5 8 34 . x2 = 45
34 65 12 x3 157

a . x = b
Khi giải với matlab ta chỉ cần nhập hai ma trận a và b
>> a=[2 5 7;5 8 34; 34 65 12]
a=
2 5 7
5 8 34
34 65 12
>> b=[12; 45; 157]
b=
12
45
157
Đây là hệ 3 biến 3 phương trình nếu nếu det(a) khác không hệ có bộ nghiệm duy
nhất.
>> det(a)
ans =
1623
Do đó ta có thể sử dụng hai phép toán để tính nghiệm hệ phương trình.
39

* Như đã giới thiệu phần 4 matlab cung cấp các hàm nhân, chia ma trận do đó ta có
thể tính nghiệm trực tiếp bằng phép chia ma trận (không sử dụng dấu ‘.’):
>> x=a\b % phép chia trái
x=
6.3494
-1.0222
0.6303
* Hệ phuơng trình a.x=b ↔ x=a-1.b, lệnh inv(a) cho phép tính a-1
>> c=inv(a)
c=
-1.3025 0.2434 0.0702
0.6753 -0.1319 -0.0203
0.0327 0.0246 -0.0055
>> x=c*b
x=
6.3494
-1.0222
0.6303
Đối với các hệ mà số phương trình độc lập tuyến tính lớn hơn số biến thì hệ vô
nghiệm song matlab sử dụng phuơng pháp bình phương tối thiểu để thực hiện phép chia
a\b nên vẫn đưa ra kết quả của x (cho sai lệch nhỏ nhất khi thay x vào các phương
trình).
Với các hệ có số biến lớn hơn số phương trình thì hệ có vô số nghiệm. Khi thực hiện
phép toán a\b matlab lựa chọn giải pháp số phần tử 0 cực đại để đưa ra 1 bộ nghiệm
của hệ.

Bài tập
1. Giải hệ phương trình
a) b)
2x – y – z – t = -1 3x1 - 2x2 - 5x3 + x4 = 3
x - 2y + z + t = -2 2x1 - 3x2 + x3 + 5x4 = -3
x + y -2z + t = 4 x1 + 2x2 - 4x4 = -3
x + y + z – 2t = -8 x1 - x2 - 4x3 + 9x4 = 22

2. a) Phù hợp hóa đường cong theo mô hình: y=co + c1e3x + c2e-3x với các số liệu như
sau
xi 0 1 2 3
yi 1 2 2 1
b) co=0. tìm c1, c2
c) y=ae-bx , tìm a, b
Thể hiện trên màn hình đồ họa.
3) Phù hợp hóa dữ liệu theo đường cong y=co + c1x + c2x2 + c3x3, vẽ đồ thị dữ liệu và
đường cong.
40

x 0.5 1.0 2.1 3.4


y 0.6 1.4 2.0 3.6

11. Đa thức và các hàm nội suy


11.1. Các phép toán đối với đa thức
Matlab quản lý các đa thức dưới dạng các vectơ hàng là các hệ số của biến (hàm số
với biến đặc trưng mục 12) do đó ta dễ dàng thực hiện các phép toán cộng trừ, nhân
chia, đạo hàm.
VD: Ta có hai hàm số dạng đa thức:
g(x) = x2+ 3x -5 và h(x) = 2x3+7x2+12x-15
Ta nhập vào chương trình tương tự như nhập ma trận hàng và thực hiện các phép
toán như sau:
>> g=[1 3 -5]
g=
1 3 -5
>> h=[2 7 12 -15]
h=
2 7 12 -15

11.1.1. Cộng, trừ hai đa thức


Trước hết chúng ta phải nắm được rằng với một đa thức viết dưới dạng ma trận
hàng tính từ phải sang trái bậc của biến tăng từng bậc từ 0 tới bậc cao nhất do đó nếu
giả sử 0x3 có hệ số bằng 0 ta vẫn phải nhập giá trị 0 ở vị trí thứ 4 từ phải qua trái.
Cộng hai đa thức cũng tương tự như cộng ma trận hàng.
Số phần tử trong hàng phải tương đương
Các vị trí thiếu phải được thêm phần tử 0
Tính tổng g và h ta viết
>> f=h+[0 g]
f=
2 8 15 -20
tương ứng với phương trình: f(x)=2x3 + 8x2 +15x – 20

11.1.2. Nhân, chia hai đa thức


Matlab sử dụng hàm conv để nhân hai đa thức và sử dụng hàm deconv để chia hai đa
thức.
>> tich=conv(h,g)% nhân hai đa thức, = conv(g,h) = 2x5+13x4+23x3-14x2-105x+75
tich =
2 13 23 -14 -105 75
>> [thuong,sodu]=deconv(h,g) % nếu vế trái chỉ có một phần tử thì phép chia chỉ thu
được đa thức thương
thuong =
2 1
41

sodu =
0 0 19 -10
Như vậy phép chia này ta được hàm thương là: 2x + 1, số dư là: 19x – 10
* Khi ta xem xét phép chia hai đa thức dạng như một phân thức matlab cung cấp hàm
residue để biến đổi phân thức thành đa thức cộng với các phân thức có tử thức là đa
thức bậc 0 còn mẫu thức là đa thức bậc 1.
x3 x − 0.5 − 0.5
=x− 2 =x+ +
x +1
2
x +1 x − (0 + i ) x − ( 0 − i )
>> a=[1 0 0 0]
a=
1 0 0 0
>> b=[1 0 1]
b=
1 0 1
>> [tu mau th]=residue(a,b)
tu =
-0.5000
-0.5000
m=
0 + 1.0000i
0 - 1.0000i
th =
1 0
residue là hàm hai chiều [a,b]=residue(tu m th) trả lại tử thức và mẫu thức.

11.1.3. Tính giá trị đa thức


Với đa thức bậc cao như đa thức y=2x5+13x4+23x3-14x2-105x+75 việc vẽ đồ thị và
tính giá hàm số ở một số điểm xác định sẽ tương đối phức tạp nếu không có các hàm
hỗ trợ.
>>x=linspace(-100,100,101) % lấy 101 điểm trong đoạn [-100,100]
>>giatriham=polyval(y,x) % tính giá trị hàm y=2x5+13x4+23x3-14x2-105x+75
tại 101 điểm có hoành độ là ma trận hàng x các giá trị
tính được ghi trong ma trận hàng giatriham
>>plot(x,giatriham) % vẽ đồ thị các điểm tương ứng trong hai ma trận x và
giatriham

11.1.4. Đạo hàm và tích phân


Matlab sử dụng hàm polyder để tính đạo hàm
va polyint để tính tích phân đa thức
>> h
h=
2 7 12 -15
>> dh=polyder(h)
42

dh =
6 14 12
Kết quả được hiểu là: dh=6x2+14x+12
>> tp=polyint(h)
tp =
0.5000 2.3333 6.0000 -15.0000 0
Kết quả được hiểu là:
tp=0.5x4+2.3333x3+6x2-15x
* Chú ý với các phân thức có tử thức và mẫu thức là các đa thức ta cũng có thể tính
đạo hàm bằng hàm polyder. Ví dụ xét phân thức 1/x
>> a=[1] % tử thức 1
a=
1
>> b=[1 0 ] % mẫu thức x + 0
b=
1 0
>> [t,m]=polyder(a,b) % đạo hàm phân thức được tử/mẫu = -1/(x2 +0x+0)
t=
-1
m=
1 0 0

11.1.5. Nghiệm của phương trình đa thức


Hàm roots được sử dụng để tính nghiệm của phương trình đa thức, các nghiệm được
biểu diễn dưới dạng số thực và số phức.
>> h
h=
2 7 12 -15
>> nghiem=roots(h)
nghiem =
-2.1481 + 2.1923i
-2.1481 - 2.1923i
0.7961

11.2. Các phép nội suy dữ liệu


Bài toán đặt ra là trong thí nghiệm chúng ta thu được hai thông số phụ thuộc lẫn nhau
và cần tìm một phương trình dạng đa thức mô tả sự phụ thuộc của thông số này vào
thông số kia, đồng thời nội suy các điểm trung gian.
VD: Xem xét ảnh hưởng của pH tới tốc độ nitrat hóa amoni bằng bùn hoạt tính
pH 7.20 7.45 7.60 7.80 8.25 8.50 8.70 9.00
rv(mN/l.min) 0.04 0.08 0.20 0.21 0.19 0.17 0.13 0.06
43

>> pH=[7.20 7.45 7.60 7.80 8.25 8.50 8.70 9.00]


pH =
Columns 1 through 7
7.2000 7.4500 7.6000 7.8000 8.2500 8.5000
8.7000
Column 8
9.0000
>> rv=[0.04 0.08 0.20 0.21 0.19 0.17 0.13 0.06]
rv =
Columns 1 through 7
0.0400 0.0800 0.2000 0.2100 0.1900 0.1700 0.1300
Column 8
0.0600
>> plot(pH,rv,'b-',pH,rv,'r*') % nối các điểm (x,y)
>> xlabel('pH')
>> ylabel('r (mgN/l.min)')
Bây giờ chúng ta xác định mối liên hệ giữa pH và rv bằng phương trình bậc n=4
>> f=polyfit(pH,rv,4)
f=
0.0839 -2.6504 31.1149 -160.6671 307.7544
>> hold on
>> x=linspace(7,9,100)
>> y=polyval(f,x) % thay x vào hàm f để tính y
>> plot(x,y)
>> ylabel('r (mgN/l.min)')
>> xlabel('pH')
Matlab sử dụng phương pháp bình
phương tối thiểu để xác định hàm số phù
hợp mô tả sự biến thiên của dữ liệu. Như
vậy khi sử dụng lệnh polyfit bậc của hàm
số do chúng ta lựa chọn. Khi bậc càng cao
thì hệ số tương quan hồi quy R càng gần
1 hay đường cong đi sát các điểm thực
nghiệm hơn như kết quả nội suy có thể
sai số lớn hơn nếu nó không mô tả đúng
xu thế của sự biến đổi do đó chúng ta cần
chọn hàm số phù hợp theo kinh nghiệm.
Khi có 1 tập dữ liệu chúng ta cũng có thể nội suy dữ liệu mà không cần thiết phải
thiết lập phương trình khi sử dụng hàm interft, interp1 cho hàm số 1 biến, interp2 cho
hàm số hai biến, interp3, interpn. Đồng thời chúng ta có thể sử dụng các hàm này để
thêm điểm vào tập dữ liệu để được đồ thị mịn hơn.
>> pH
44

pH =
Columns 1 through 7
7.2000 7.4500 7.6000 7.8000 8.2500 8.5000 8.7000
Column 8
9.0000
>> rv
rv =
Columns 1 through 7
0.0400 0.0800 0.2000 0.2100 0.1900 0.1700 0.1300
Column 8
0.6000
>> pH1=7.5
pH1 =
7.5000
>> rv1=interp1(pH,rv,pH1,'linear') % tương tự lệnh rv1=interp1(pH,rv,pH1)
rv1 =
0.1200
Điểm (pH,rv)=(7.5,0.12) nằm trên đường thẳng nối hai điểm (7.45;0.08) và (7.6;0.2)
>> rv1=interp1(pH,rv,pH1,'cubic') % nội suy theo đường cong phù hợp nhất
rv1 =
0.1163
Để thấy rõ hơn khả năng làm mịn hóa đường cong chúng ta thêm nhiều điểm vào
giữa các giá trị dữ liệu:
>> pHmr=linspace(7.2,9,100) % mở rộng số
điểm pH, lấy 100 điểm từ 7.2 tới 9
>> rvmr=interp1(pH,rv,pHmr,'cubic')
>> hold on
>> plot(pHmr,rvmr)
Lệnh rvmr=interp1(pH,rv,pHmr,'cubic') nội suy
rvmr từ pHmr theo đường cong đi qua các điểm
(pH,rv).
Hình bên chúng ta thấy 3 kiểu nội suy dữ liệu:
theo hàm số, theo đường nối thẳng, và theo đường
nối cong.
Đối với lệnh interp2 chúng ta
hãy xem xét các mô phỏng bền
mặt đáy hồ, chiều ngang chia
thành 10 đường, chiều dọc chia
thành 17 đường và đo độ sâu ở
các vị trí giao nhau và thu được
mảng dữ liệu như sau:
bm=[0 0 0 0 0 0 0 0 0 0;
0 0 0 0 0 0 0 0 0 0;
45

0 0 0 0 -0.1 0 0 0 0 0;
0 0 0 -1 -2 0.1 -1 0 0 0;
0 0 -0.5 -2 -1 1 1 -1 0 0;
0 0 -0.1 -1 -1.2 -1 -0.1 -1 0 0;
0 0 -0.1 -1 -2.5 -2.8 -2.5 -1 0 0;
0 0 -0.1 -1 -2.5 -2.6 -2.5 -1 0 0;
0 0 -0.1 -1 -1.5 -2 -1.5 -1 0 0;
0 0 -0.1 -1 1 -0.5 -2 -0.5 0 0;
0 0 0 -2 1 -0.1 -2.5 -1 0 0;
0 0 0 -1 -2 -4 -2.7 -1 0 0;
0 0 0 -0.7 -2 -2 -1 -0.1 0 0;
0 0 0 -0.1 -0.5 -1 -0.3 0 0 0;
0 0 0 0 0 -0.1 0 0 0 0;
0 0 0 0 0 0 0 0 0 0;
0 0 0 0 0 0 0 0 0 0]
>>x=0:9
>>y=0:16
>>mesh(x,y,bm)
Thực hiện nội suy dữ liệu theo đường
cong:
>>x1=linspace(0,9,50)
>>y1=linspace(0,16,100)
>>[x2,y2]=meshgrid(x1,y1)
>>bmmr=interp2(x,y,bm,x2,y2,'cubic')
>>mesh(x2,y2,bmmr)
Khi x1,y1 là hai ma trận hàng thì nhất
thiết phải sử dụng lệnh meshgrid để nó tạo nên hai ma trận x2, y2 có số chiều như nhau
để thỏa mãn câu lệnh interp2.
Ta không cần sử dụng lệnh meshgrid nếu y1 là ma trận cột.
>> saunhat=min(min(bmmr)) % giá trị min thứ nhất cho ra kết quả theo cột
saunhat =
-3.9959

Bài tập

1. Tìm điểm trên đồ thị f=2x2+3x+1 gần gốc tọa độ nhất với độ chính xác tự chọn?
2. Một thiết bị hình hộp không có nắp, thể tích 1000cm3, tìm kích thước để tốn ít
nguyên liệu chế tạo nhất (không đề cập tới độ dày)?
3. Một hỗn hợp gồm benzen và toluen chứa bf% mol benzen được dự định tách với
sản phẩm đầu cột chứa bd% mol benzen và sản phẩm cuối cột chứa không quá bw%
mol benzen. Hỗn hợp này được cung cấp nhiệt và được dẫn vào cột tách tại điểm sôi
của nó, hơi đi ra khỏi cột tách được ngưng tụ nhưng không được làm lạnh và được chia
làm hai phần; một phần hồi lưu trở lại cột tách còn một phần được lấy ra làm sản
46

phẩm đầu cột của quá trình tách. Người ta dự định vận hành cột tách với tỉ số hồi lưu hl
kmol/kmol sản phẩm.
Bằng phương pháp nội suy vẽ đồ thị đường cân bằng lỏng hơi. Nhập các thông số bf,
bd, bw từ bàn phím tính số đĩa lí thuyết, áp dụng với bf=40%, bd=10%, bw=90%,
hl=3mol/L
Biết nồng độ cấu tử nhẹ trong pha lỏng và pha hơi nằm cân bằng như sau:
x 0.00 0.20 0.40 0.60 0.80 1.00
y 0.00 0.37 0.60 0.80 0.90 1.00
Phương trình đường làm việc cột trên

Ln D
yn = xn + 1 + xd ( 1.13)
Vn Vn

Phương trình đường làm việc cột dưới


Lm W
ym = x m +1 − xW (1.14)
Vm Vm

4. Một cột chưng cất phân đoạn liên tục được sử dụng để tách một hỗn hợp chứa
0,695 phần mol n-heptan (C7H16) và 0,305 phần mol n-octan (C8H18) để cho sản phẩm
tinh khiết đến 99% mol. Cột này được vận hành ở áp suất 101,3 kN/m2 với tốc độ hơi là
0,6 m/s. Nguyên liệu ở trạng thái lỏng ở tại điểm sôi của nó và được nạp với tốc độ
1,25 kg/s. Nhiệt độ sôi ở đỉnh cột là 372 K.

Dữ liệu cân bằng lỏng-hơi:

y 0,96 0,91 0,83 0,74 0,65 0,50 0,37 0,24


x 0,92 0,82 0,69 0,57 0,46 0,32 0,22 0,13

a/ Xác định Rmin


b/ Xác định đường kính cột khi ν = 2Rmin.
* Đường làm việc đi qua xf,yf, lấy tốc độ hơi = 0.6m/s

5. Người ta dự định tiến hành một phản ứng A → R trong một thiết bị phản ứng lí
tưởng gián đoạn. Tốc độ phản ứng ở các nồng độ tương ứng xác định được như sau:

CA (mol/lít) 0,1 0,2 0,3 0,4 0,5 0,6 0,7 0,8 1,0 1,3 2,0
0,1 0,3 0,5 0,6 0,5 0,25 0,10 0,06 0,05 0,045 0,042
-rA (mol/lit

Vẽ đồ thị (CA, 1/-rA)


47

Nếu nồng độ của nguyên liệu ban đầu CA0 = 1,3 mol/lít thì thời gian lưu của phản
ứng sẽ là bao nhiêu nếu nồng độ chất A trong sản phẩm là 0,3 mol/lít.

6. Một phản ứng đồng thể trong pha lỏng có phương trình phản ứng và phương
trình tốc độ như sau:
A → R ,( − rA ) = kC A2
Khi phản ứng tiến hành trong một thiết bị IMR có thể tích V thì độ chuyển hoá của
phản ứng là 50%.

a) Độ chuyển hoá của phản ứng sẽ là bao nhiêu nếu phản ứng được tiến hành trong
một thiết bị phản ứng IMR có thể tích bằng 6 lần thiết bị IMR ban đầu?
b) Độ chuyển hoá của phản ứng sẽ là bao nhiêu nếu phản ứng được tiến hành trong
một thiết bị phản ứng PFR có thể tích bằng thể tích thiết bị IMR ban đầu?
C −C
Thiết bị IMR τ = A 0 2 Af
kC Af

C Af
dC A
Thiết bị PFR τ= − ∫
CA 0 kC 2A
=

7.. Một phản ứng phân huỷ chất A trong pha khí A → R có dữ liệu động học như sau:

CA(mol/lít) 1 2 4 6 8 10
-rA(mol/lít giây) 0,01 0,02 0,04 0,09 0,16 0,25

Người ta dự định tiến hành phản ứng này trong một thiết bị phản ứng PFR để đạt
được độ chuyển hoá là 80% khi nguyên liệu đầu chứa chất A tinh khiết có nồng độ là
10 mol/lít.
Xây dựng đồ thị (CA, 1/-rA), tính thời gian lưu của thiết bị phản ứng này trong trường
hợp trên.
C
V A
dC A
τ = =− ∫
V
CA 0
( − rA )

8. Phản ứng phân huỷ một chất lỏng A được tiến hành trong phòng thí nghiệm bằng
một thiết bị IMR. Tại trạng thái dừng xác định được các số liệu động học như sau:
Nồng độ chất A (mol/lít)
Thời gian lưu
(s)
Nguyên liệu Sản phẩm
2,00 0,65 300
2,00 0,92 240
48

2,00 1,00 250


1,00 0,56 110
1,00 0,37 360
0,48 0,42 24
0,48 0,28 200
0,48 0,20 560

Để phản ứng đạt được độ chuyển hoá là 75% khi nồng độ chất A trong nguyên liệu
đầu CA0 = 0,8 mol/lít thì thời gian lưu cần thiết là bao nhiêu nếu:
Dựng đồ thị (CA,-rA) và CA,1/-rA)
a) Phản ứng được tiến hành trong thiết bị PFR
b) Phản ứng được tiến hành trong thiết bị IMR

Thời gian lưu thiết bị IMR:


C − CA
τ = A0
( − rA )
Thời gian lưu thiết bị PFR:
CA
dC A
τ =−
CA 0
∫ (− r )
A

9. Một phản ứng trong pha khí A → 3R được thực hiện trong thiết bị IMR có thể
tích V = 1 lit. Nồng độ ban đầu của khí A là CAo= 120 mmol/lit.
Người ta đưa khí này vào thiết bị phản ứng ở áp suất 30 atm và nhiệt độ 30 oC với các
tốc độ nạp liệu khác nhau, sau đó tiến hành xác định nồng độ của khí ở lối ra thu được
bảng dữ liệu sau:

V ( lÝt/phót) 0,06 0,48 1,5 8,1


CA, mmol/lit 30 60 80 105

Phương trình tốc độ phản ứng phân hủy A có dạng: -rA= k (CA)n
Vẽ đồ thị và xác định n theo phương pháp bình phương tối thiểu, viết phương trình
động học của phản ứng phân huỷ chất A.

Hệ số thay đổi thể tích


VX A =1 − VX A = 0
εA = V: Thể tích hỗn hợp
VXA = 0
V = V0 (1+ ε A x A ) xA: Hệ số chuyển hóa
Thiết bị IMR
49

V CA0X A
τ= =

V − rA

12. Hàm số
12.1. Khảo sát hàm số

* Vẽ đồ thị hàm số:


>> y='(x^3+2)/(x^2+1)'
>> fplot(y,[-3,3])

* Xác định các cực trị trong lân cận hẹp


>> xmin=fminbnd(y,0,2)
xmin =
1.0000
>> x=xmin
x=
1.0000
>> ymin=eval(y)
ymin =
1.5000
Để xác định cực đại của hàm số chúng ta không có hàm xác định trực tiếp giá trị cực
đại do đó chúng ta dựa vào hàm fmin. Chúng ta biết rằng hoành độ cực đại trong khoảng
-0.5 tới 0.5 của hàm (x^3+2)/(x^2+1) chính là hoành độ cực tiểu của hàm -(x^3+2)/
(x^2+1).
>> xmax=fminbnd(yn,-0.5,0.5)
xmax =
-3.2016e-006
>> x=xmax
x=
-3.2016e-006
>> ymax=eval(y)
ymax =
2.0000

12.2. Tìm giao điểm của đồ thị hàm số với trục hoành và với đồ thị hàm số khác
Việc tìm giao điểm đồ thị hai hàm số Matlab sử dụng hàm fzero, ví dụ (xo,yo) là giao
điểm đồ thị hai hàm số g(x) và h(x) như vậy xo chính là nghiệm phương trình f(x)=g(x)-
h(x)=0.
>> xnghiem=fzero(y,-3) % Nghiệm pt f(x) = 0 gần -3 nhất
xnghiem =
-1.2599
50

12.3. Đạo hàm


Ở mục trước chúng ta đã sử dụng hàm diff để tính chênh lệch giữa các giá trị trong
cột hay hàng, ngoài ra hàm diff có vai trò rất hữu dụng trong việc tìm đạo hàm:
>> y='(x^3+2)/(x^2+1)'
y=
(x^3+2)/(x^2+1)
>> g=diff(y)
g=
3*x^2/(x^2+1)-2*(x^3+2)/(x^2+1)^2*x

12.4. Tích phân


Matlab sử dụng 3 hàm quad, quadl, trapz, dblquad, triplequad để tính tích phân.
>> F = inline('1./(x.^3-2*x-5)')
F=
Inline function:
F(x) = 1./(x.^3-2*x-5)
>> Q = quad(F,0,2)
Q=
-0.4605
Hàm quad sử dụng phép cầu phương Simson, với khoảng chia 10-6 , trả kết quả dạng
số. Hàm lấy tích phân phải sử dụng các phép toán cho mảng (không sử dụng các phép
toán cho ma trận): .*, ./, +, -, .^
Dạng đầy đủ của hàm quad quad(fun,a,b,tol,trace,p1,p2,...) trong đó fun, a, b bắt buộc
phải có. tol theo mặc định là 10-6 chúng ta có thể thay đổi giá trị này.
Hàm quadl sử dụng phép cầu phương Lobatto. Cách sử dụng tương tự hàm quad
Để tính tích phân có cận một hàm số ta phải xử lý hàm đó bằng lệnh inline, lệnh này
cấu trúc ngầm lại hàm số cho phù hợp với cách tính toán trong matlab. dblquad,
triplequad là các hàm tính tích phân 2 lớp, 3 lớp với các thực hiện tương tự.
Hàm trapz tính tích phân theo phương
pháp hình thang. Lệnh trapz(y) với y là
ma trận hàng tính diện tích các cột với
các bước 1 đơn vị (hình bên), lệnh
trapz(x,y) (trong đó x, y là hai mảng 1
chiều cùng kích thước) tính diện tích
hình nằm dưới đường nối các điểm có
hoành độ x, tung độ y.
>> trapz(y)
ans =
17.3500
51

13. Hộp công cụ


13.1. Giới thiệu các hộp công cụ
Hộp công cụ toán học cung cấp các hàm chuyên dụng là kết quả làm việc của các nhà
nghiên cứu hàng đầu thế giới trong các lĩnh vực như: điều khiển, xử lý tín hiệu, thống
kê, ....
Hộp công cụ Chức năng
Communications Thiết kế phân tích các hệ thống thông tin liên lạc
Control System Thiết kết phân tích hệ thống điều khiển phản hồi
Curve Fitting Thực hiện chọn kiểu mô tả và phân tích
Data Acquisition Thu tập và gửi dữ liệu từ nguồn liệu đưa vào
Cơ sở dữ liệu Biển đổi dữ liệu với cơ sở dữ liệu liên quan
Thiết kế bộ lọc hiết kế và phân tích nâng cao bộ lọc các điểm cố và biến đổi.
Tài chính Mô hình hóa dữ liệu tài chính và phát triển thuật toán phân tích tài chính.
Fuzzy Logic Thiết kế và mô phòng hệ thống fuzzy logic
Image Processing Phát triển thuật toán, phân tích, xử lý ảnh
Instrument Control Điều khiển và liên kết với thiêt bị đo và kiểm tra
LMI Control Thiết kế các bộ điều khiển sơ cấp sử dụng kỹ thuật tối ưu
hóa lồi
MATLAB Link for Code Composer Studio Sử dụng MATLAB với bộ xử lý tín hiệu
số RTDX-enabled Texas Instruments
Mapping Phân tích và hiển thị đồ họa thông tin địa lý
Model Predictive Control Điều khiển định sẵn các quá trình lớn, nhiều biến
Mu-Analysis and Synthesis Thiết kế bộ điều khiển phản hồi nhiều biến cho các
hệ thống với mô hình không ổn định.
Neural Network Thiết kế mô phỏng các hệ thần kinh
Optimization Giải quyết các vấn đề về tối ưu hóa ở quy mô lớn và tiêu chuẩn
Partial Differential Equation Giải và phân tích các phương trìn vi phân từng phần
Robust Control Thiết kế các bộ điều khiển phản hồi không tinh vi
Signal Processing Thực hiện việc phát triển các thuật toán, phân tích, xử lý tín
hiệu
Statistics Cung cấp các mô hình gần đúng và thuật toán thống kê
Symbolic Math Thực hiện các tính toán số học chính xác và tính toán trên biến
tượng trưng.
System Identification Tạo các mô hình động lực tuyến tính từ dữ liệu vào
/ra
Virtual Reality Tạovà điều khiển hiện thực ảo từ MATLAB và Simulink
Wavelet Phân tích, nén, loại nhiễu tín hiệu, ảnh sử dụng kỹ thuật wavelet
52

13.2. Hộp công cụ toán học

13.1.1. Biến tượng trưng

* Khái niệm
Như đã trình bày trong phần trước để biểu diễn một đa thức chúng có hai phương
pháp: biểu diễn hệ số và biểu diễn dưới dạng xâu kí tự. Với các hàm số phức tạp chúng
ta mới biết một phương đó là biểu diễn dưới dạng xâu ký tự. Mỗi phương pháp đều có
các phép toán, các hàm tìm nghiệm, cực trị,... riêng.
Hàm số biểu diễn qua biến đặc trưng có giao diện tương tự như ngôn ngữ viết thông
dụng. Matlab sử dụng hàm sym để tạo biến đặc trưng, các biểu thức toán học sử dụng
biến đó là các hàm đặc trưng.
Ví dụ:
>> x = sym('x');
Chúng ta cũng có thể viết nhiều lệnh để tạo nhiều biến tượng trưng
>> a = sym('a'); t = sym('t'); x = sym('x'); y = sym('y')
hoặc
>> syms a t x y
Các biến đặc trưng này được sử dụng như các đối số trong nhiều biểu thức khác
nhau.
>> r = x^2 + y^2
r=
x^2+y^2
Nếu các hàm số sử dụng các biến đặc trưng quá phức tạp ta có thể đơn giản hóa
bằnd lệnh "simple" hay "simplify"
>> f = cos(x)^2 + sin(x)^2
f=
cos(x)^2+sin(x)^2
>> f = simple(f)
f=
1
Chúng ta cũng có thể tạo các hằng số đặc trưng với hàm sym
>> pi = sym('pi')
pi =
pi
>> s = sym('sqrt(2)')
s=
sqrt(2)
Các vectơ và ma trận sử dụng các biến tượng trưng
>> n = 4
>> x=sym(‘x’)
>> A = x.^((0:n)'*(0:n))
A=
53

[ 1, 1, 1, 1, 1]
[ 1, x, x^2, x^3, x^4]
[ 1, x^2, x^4, x^6, x^8]
[ 1, x^3, x^6, x^9, x^12]
[ 1, x^4, x^8, x^12, x^16]
>> D = diff(log(A))
D=
[ 0, 0, 0, 0, 0]
[ 0, 1/x, 2/x, 3/x, 4/x]
[ 0, 2/x, 4/x, 6/x, 8/x]
[ 0, 3/x, 6/x, 9/x, 12/x]
[ 0, 4/x, 8/x, 12/x, 16/x]

Biểu diễn độ chính xác số học biến tượng trưng, VD tính chính xác 15/37 tới 100 số
sau dấu phẩy
>> vpa 15/39 100
ans =
.
3846153846153846153846153846153846153846153846153846153846153846153846153
846153846153846153846153846

* Đổi tên biến


Để đổi ta sử dụng hàm subs(hàm số, biến cũ, biến mới)
>> x=sym(‘x’)
x=
x
>> y=sym('y')
y=
y
>> f=(2*x^2+3*x)
f=
2*x^2+3*x+1
>> f1=subs(f,x,y)
f1 =
2*y^2+3*y+1

* Hàm double chuyển một hằng tượng trưng thành kiểu số


>> a=sym('sin(5)')
a=
sin(5)
>> b=double(a)
b=
-0.9589
54

13.1.2. Các phép toán trên biểu thức tượng trưng

* Các hàm số, ma trận sử dụng ký tự +, -, *, /, ^ để thực hiện các phép toán cộng
trừ, nhân, chia, mũ hóa
Ví dụ:
>> x=sym('x')
x=
x
>> f=(2*x^2+3*x+1)
f=
2*x^2+3*x+1
>> g=(sin(x^2))
g=
sin(x^2)
>> h=f/g
h=
(2*x^2+3*x+1)/sin(x^2)
>> k=h^x
k=
((2*x^2+3*x+1)/sin(x^2))^x

Tạo biến tượng trưng t


t = sym('t')
t=
t
Tạo ma trận tượng trưng 2 chiều với góc t
G = [ cos(t) sin(t); -sin(t) cos(t)]
G=
[ cos(t), sin(t)]
[ -sin(t), cos(t)]
Phép nhân hai ma trận
G*G
ans =
[ cos(t)^2-sin(t)^2, 2*cos(t)*sin(t)]
[ -2*cos(t)*sin(t), cos(t)^2-sin(t)^2]
ma trận này đơn giản hóa bằng cách biểu diễn qua góc 2*t
ans = simple(ans)
ans =
[ cos(2*t), sin(2*t)]
[ -sin(2*t), cos(2*t)]

G là ma trận trực giao, chuyển vị chính là nghịch đảo


>> G.'*G
55

ans =
[ cos(t)^2+sin(t)^2, 0]
[ 0, cos(t)^2+sin(t)^2]
ans = simple(ans)
ans =
[ 1, 0]
[ 0, 1]

* Hàm compose(f,g)=f(g(x)) kết hợp hai hàm số và finverse(g) xác định hàm ngược
của g
>> l=compose(f,g)
l=
2*sin(x^2)^2+3*sin(x^2)+1
>> m=finverse(f)
m=
-3/4+1/4*(1+8*x)^(1/2)
>> m=finverse(g)
m=
asin(x)^(1/2)
% hàm finverse chỉ đưa ra một kết quả mặc dù có thể tồn tại nhiều hơn một kết quả.

13.1.3. Đạo hàm và tích phân


Đạo hàm và tích phân tính bởi hàm "diff" and "int"
>> diff(x^3)
ans =
3*x^2
>> int(x^3)
ans =
1/4*x^4
>> int(exp(-t^2))
ans =
1/2*pi^(1/2)*erf(t)
Với các hàm số có nhiều đối số matlab đạo hàm biến gần x nhất theo thứ tự abc, trừ
khi đối số được xác định. Sau đây là các biểu thức tích phân, hai biểu thức đầu đối số tự
chọn lầ x, hai biểu thức sau đối số được chon là a.
>> [int(x^a), int(a^x), int(x^a,a), int(a^x,a)]
ans =
[ x^(a+1)/(a+1), 1/log(a)*a^x, 1/log(x)*x^a, a^(x+1)/(x+1)]
Biến đổi vi phân và tích phân dữ liệu
>> x = sym('x')
x=
x
56

% Khi đã thiết lập biến tượng trưng hàm EZPLOT cho phép vẽ đồ thị các hàm số với
biến tượng trưng.
>> f = 1/(5+4*cos(x))
>> ezplot(f)
f=
1/(5+4*cos(x))
% Có rất nhiều các hàm sử dụng được với
biến tượng trưng ví dụ với hamd “diff”.
>> f1 = diff(f)
ezplot(f1)
f1 =
4/(5+4*cos(x))^2*sin(x)

% hàm DIFF có thể xác định được đạo hàm cấp n ví dụ với đạo hàm cấp hai
>> f2 = diff(f,2)
ezplot(f2)
f2 =
32/(5+4*cos(x))^3*sin(x)^2+4/(5+4*cos(x))^2*cos(x)

% hàm “int “ cho phép lấy tích phân của hàm


số chứa biến tượng trưng, ví dụ với tích phân
hai lần:
>> g = int(int(f2))
>> ezplot(g)
g=
-8/(tan(1/2*x)^2+9)

Mới nhìn ta thấy ràng đồ thị của f và g như


nhau nhưng quan sát kỹ chúng ta thấy rằng chúng
khác nhau về hàm số và giá trị y.
>> subplot(1,2,1)
>> ezplot(f)
57

>> subplot(1,2,2)
>> ezplot(g)

% ta hãy xét e là sự khác nhua giữa f và g. Đó lad một biểu thức phức tạp nhưng nhìn
đồ thị thì như là hằng số.
>> e = f - g
>> subplot(1,1,1)
>> ezplot(e)
e=
1/(5+4*cos(x))+8/(tan(1/2*x)^2+9)

Đồ thị chỉ ra rằng sự khác nhau thực


sự là một hằng số.
>> e = simple(e)
ezplot(e)
e=
1

13.1.4. Giải các phương trình tượng trưng


Ví dụ với phương trình bậc 2
% Chúng ta có thể xác định nghiệm mà không cần chú thích
syms a b c x
>> x = solve(a*x^2 + b*x + c);
% Chúng ta cũng có thể tìm nghiệm phương trình và sử dụng chú thích
>> x = solve('a*x^2 + b*x + c = 0');
% Cả hai trường hợp trên đều choc hung một kết quả
x=
58

[ 1/2/a*(-b+(b^2-4*a*c)^(1/2))]
[ 1/2/a*(-b-(b^2-4*a*c)^(1/2))]
% Giải pháp cho đường bậc ba là
>> x = solve('a*x^3 + b*x^2 + c*x + d')
% lệnh này thường cho kết quả phức tạp, ta có thể đơn giản hóa bằng lệnh
>> pretty(x)
% Dạng phương trình khác
>> x = solve('p*sin(x) = r')

% lệnh này chọn x làm ẩn số và cho kết quả tính theo r, p.


x=
asin(r/p)
% Với phương trình hai ẩn số hàm solve cho kết quả là một véc tơ
>> [x,y] = solve('x^2 + x*y + y = 3','x^2 - 4*x + 3 = 0')
x=
[ 1]
[ 3]
y=
[ 1]
[ -3/2]
% Giải pháp này cũng đưa ra kết quả với câu lệnh phức hợp
>> S = solve('x^2 + x*y + y = 3','x^2 - 4*x + 3 = 0')
S=
x: [2x1 sym]
y: [2x1 sym]
>> S.x
ans =
[ 1]
[ 3]
>> S.y
ans =
[ 1]
[ -3/2]
% Ví dụ sau coi a là hằng số và giải hai phương trình để tìm u và vu and v.
>> [u,v] = solve('a*u^2 + v^2 = 0','u - v = 1')
u=
[ 1/2/(a+1)*(-2*a+2*(-a)^(1/2))+1]
[ 1/2/(a+1)*(-2*a-2*(-a)^(1/2))+1]
v=
[ 1/2/(a+1)*(-2*a+2*(-a)^(1/2))]
[ 1/2/(a+1)*(-2*a-2*(-a)^(1/2))]
% thêm phương trình thứ 3 để tính giá trị 3 biến
[a,u,v] = solve('a*u^2 + v^2','u - v = 1','a^2 - 5*a + 6')
59

a=
[ 2]
[ 2]
[ 3]
[ 3]
u=
[ 1/3+1/3*i*2^(1/2)]
[ 1/3-1/3*i*2^(1/2)]
[ 1/4+1/4*i*3^(1/2)]
[ 1/4-1/4*i*3^(1/2)]
v=
[ -2/3+1/3*i*2^(1/2)]
[ -2/3-1/3*i*2^(1/2)]
[ -3/4+1/4*i*3^(1/2)]
[ -3/4-1/4*i*3^(1/2)]
% Nếu khi tìm ẩn số mà hàm solve không tìm ra giải pháp phân tích nó sẽ cho kết
quả dạng 32 số
>> [x,y] = solve('sin(x+y)-exp(x)*y = 0','x^2-y = 2')
x=
-6.0173272500593065641097297117905
y=
34.208227234306296508646214438330
% Tương tự, với chú thích “D” có nghĩa là đạo hàm để giải các phương trình vi
%phân đơn giản bằng hàm “dsolve”
>> y = dsolve('Dy = -a*y')
y=
C1*exp(-a*t)
% chỉ định điều kiện thêm vào
>> y = dsolve('Dy = -a*y','y(0) = 1')
y=
exp(-a*t)
% Đạo hàm cấp 2 định nghĩa bởi "D2”.
>> y = dsolve('D2y = -a^2*y', 'y(0) = 1, Dy(pi/a) = 0')
y=
cos(a*t)
% một phương trình không tuyến tính tạo ra hai đáp án trong 1 véc tơ
>> y = dsolve('(Dy)^2 + y^2 = 1','y(0) = 0')
y=
[ sin(t)]
[ -sin(t)]

Bài tập
60

1. Tìm mô hình động học cho phản ứng: 2A + B → A 2B

Biết biểu thức xác định tốc độ phản ứng như sau:

0,72C A2 C B
rA B =
2
1 + 2C A

Cơ chế nào của phản ứng là phù hợp với phương trình tốc độ của phản ứng nếu
như về mặt hoá học phản ứng chỉ ra rằng hợp chất trung gian chứa một tổ hợp các phân
tử phản ứng và không xảy ra phản ứng liên tục? (Thiết lập các phương trình với biến
tượng trưng và thực hiện các phép toán.)

2. Phản ứng phân huỷ đinitơ oxit:


1
N 2 O → N 2 + O2
2
Biểu thức tính vận tốc của phản ứng tìm được như sau:
k1 [ N 2 O]
2

− rN 2 O =
1 + k 2 [ N 2 O]
Hãy đưa ra một cơ chế phản ứng để giải thích cho biểu thức tính vận tốc tìm
được ở trên. (Thiết lập các phương trình với biến tượng trưng và thực hiện các phép
toán.)

3. Tìm mô hình động học cho phản ứng:


H2 + Br2 2HBr

Biết rằng biểu thức xác định vận tốc của phản ứng suy ra từ thực nghiệm như sau:

k [ H ][ Br2 ] 2
1

rHBr = 1 2
k2 +
[ HBr ]
[ Br2 ]
(Thiết lập các phương trình với biến tượng trưng và thực hiện các phép toán.)

14. Đồ họa trong matlab


Matlab ứng dụng đồ họa trong các công việc tài chính, thống kê, phân tích tín hiệu, kỹ
thuệt phân tử, động lực học chất lỏng, khoa học khí quyển, ...

14.1. Đồ họa trong không gian hai chiều

14.1.1. Các hàm vẽ đồ thị


Trong tọa độ phẳng đồ thị có thể biểu diễn đạt dưới dạng đường, cột, bậc thang,
đường với khoảng sai số, dạng cây, dạng tọa độ cực.
61

* Đồ thị dạng đường


>> x=0:0.05:5
>> y=sin(x.^2)
>> plot(x,y)
Hàm plot vẽ đồ thị ứng
với các cặp điểm của hai ma
trận hàng x và y.
Khi ta chỉ sử dụng 1 biến
y thì lệnh plot(y) mặc định
giá trị của x là số thứ tự các
phần tử trong ma trận hàng
y.
Trong trường hợp y là số phức Matlab vẽ đồ thị phần thực và phần ảo:
plot(y)=plot(real(y), imag(y))

% đồ thị cột hình chuông


>> x = -2.9:0.2:2.9;
>> bar(x,exp(-x.*x));

% đồ thị bậc thang sóng


hình sin
>> x=0:0.25:10
>> stairs(x,sin(x))
62

% đồ thị thể hiện sai số


>> x=-2:0.1:2
>> y=erf(x)
>> e = rand(size(x))/10
>> errorbar(x,y,e)

% Đồ thị tọa độ cực


>> t=0:.01:2*pi
>> polar(t,abs(sin(2*t).*cos(2*t)))

% đồ thị dạng cây


x = 0:0.1:4;
y = sin(x.^2).*exp(-x);
stem(x,y)

14.1.2. Các tùy chọn


Trên một đồ thị của hàm số Matlab
cung cấp 4 tùy chọn cho người sử
dụng
Kiểu đường - (đường liền) -- (đường gạch đứt)
: (đường chấm) -. (đường chấm gạch)
Kiểu dấu tọa độ các điểm vẽ ‘marker’ o x + * . s(s )
d(d) <,>,^(Δ)
p() h(h)
Độ dày đường nối các điểm ‘linewidth’ Mặc định 0.5 pt
Kích thước điểm đánh dấu ‘MarkerSize’ Mặc định 6pt
Màu vẽ cyan hoặc c (lục lam), red hoặc r (đỏ),
green hoặc g (xanh lá cây), blue hoặc b
(xanh da trời), magenta hoặc m (tím),
63

yellow hoặc y (vàng), black hoặc b (đen),


white hoặc w (trắng), black hoặc k (đen)...

>> x=0:0.1:8
>> hndl=plot(x,sin(x))
set(hndl,'Marker','x')
set(hndl,'LineWidth',1)
set(hndl,'MarkerSize',6)
set(hndl,'Color','black')

Ngoài việc sử dụng hàm set để tùy chọn màu sắc, kích thước đồ thị chúng ta có thể
thiết lập các tùy chọn này ngay trong hàm plot, các tùy chọn này được viết dưới dạng
chuỗi ký tự.

>> y=sin(x)
>> z=cos(x)
>> plot(x,y,'b-->',x,z,'mp')
% vẽ đồ thị y=sin(x) màu blue,
đường gạch đứt, điểm vẽ hình tam
giác hướng phải và đồ thị z=cos(x)
màu magenta, điểm vẽ hình sao

14.1.3. Hệ trục tọa độ, nhãn, lưới,


hộp chứa trục, chú thích
* Các thay đổi với hệ trục tọa độ
axis([xmin xmax ymin ymax]) Thiết lập giới hạn x, y trên các trục tọa
độ
v=axis lập véc tơ v lấy các trị [xmin xmax ymin
ymax] trên các trục tọa độ
axis auto trả lại thang chia mặc định
axis manual Giữ thang chia ở giới hạn hiện tại, nếu
hold on đồ vẽ sau giữ cùng giới hạn
axis tight đặt giới hạn hệ trục theo khoảng dữ
liệu
axis ij chuyển sang chế độ hệ tọa độ ma trận,
gốc tọa độ ở góc trên bên trái. Trục i theo
chiều thẳng dứng, đánh số từ trên xuống
64

dưới, trục j theo chiều ngang đánh số từ


trái qua phải
axis xy trở về hệ trục tọa độ đề cac
axis equal thiết lập thang chia giống nhau cho cả
các trục tọa độ
axis image tương tự axis equal nhưng khung hệ
trục vừa chứa vùng giữ liệu
axis square lập khung hệ trục hình vuông
axis normal trả lại kích thước đầy đủ của khung hệ
tọa độ
axis on, axis off bật tắt chế độ hiển thị trục tọa độ, nhãn
trục, đánh dấu diểm và nền
* Lưới, khung trong hệ trục tọa độ
Lệnh grid on, grid off bật tắt chế độ vẽ lưới trên hệ tọa độ. Lệnh box on, box off
bật tắt chế độ vẽ khung hệ tọa độ
* Nhãn, chú thích
Nhãn chú thích các trục tọa độ được hiển thị bằng lệnh xlabel(‘xâu kí tự’),
ylabel(‘xâu ký tự’). Lệnh title(‘chuỗi ký
tự’) cho phép hiển thị tiêu đề trên đỉnh
cho đồ thị. Để hiển thị chuỗi ký tự tại tọa
độ (x,y) bất kỳ trên đồ thị ta sử dụng lệnh
text(x,y,’xâu ký tự’), lệnh gtext(‘xâu ký
tự’) có chức năng tương tự nhưng cho
phép chúng ta chọn vị trí đặt xâu ký tự.
Ví dụ:
>> x=-6:0.4:6
>> y=(sqrt(x.^2+3.*x+4))./(x+4)+x.^3
>> plot(x,y,'-kx')
% đồ thị có điểm ngắt quãng đó là x=-4 trong trường hợp này lệnh plot vẽ đồ thị theo
điểm dó đó không thể hiện rõ tiệm cận. Ta có thể dùng lệnh fplot đêt thấy rõ hơn tiệm
cận.
>> f='(sqrt(x.^2+3.*x+4))./(x+4)+x.^3'
f=
(sqrt(x.^2+3.*x+4))./(x+4)+x.^3
>> fplot(f,[-6,6])
65

Trở lại với lệnh plot(x,y) bây giờ chúng ta thêm các chú thích vào đồ thị.
>> xlabel('Bien doc lap x')
>> ylabel('Bien phu thuoc y')
>> title('Do thi ham so y=(sqrt(x.^2+3.*x+4))./(x+4)+x.^3')
>> text(-4,-100,'x=-4 ham so khong xac dinh')

Theo mặc định khi chúng ta vẽ một đồ thị khác Matlab sẽ xóa hình vẽ trước đi và vẽ
hình và mới trên cửa sổ đó, để giữ đồ thị này chúng ta mở cửa sổ mới bằng lệnh
figure(n) trong đó n là chỉ số cửa sổ chúng ta tự chọn.
Muốn vẽ nhiều đồ thị trên hệ trục tọa độ trên ta sử dụng lệnh hold on để giữ đồ thị
vừa vẽ lại và lệnh hold off có chức năng ngược lại. Để biết đồ họa đang ở trạng thái
hold on hay hold off chúng ta sử dụng lệnh ishold.

Ngoài phương pháp dùng các câu lệnh như trên (chỉ phù hợp khi chúng ta thiết lập
một M-file) trong trường hợp thao tác trực tiếp với dữ liệu, trong cửa sổ đồ họa chúng
ta có đầy đủ các lựa chọn để thay đổi các thuộc tính giao diện của đồ thị.
66

Mục edit

Nhóm lệnh Cut, Copy, paste, clear được sử dụng cắt, copy, chèn, xóa các mục được
chọn.
Lệnh copy figure: Cho phép copy toàn bộ đồ thị và chú thích để có thể chèn vào
các tài liệu khác như word hay exel....
Lệnh copy option: Thay đổi các thuộc tính màu sắc, kích thước, kiểu format ảnh
copy.
Figure Properties: Thay đổi hầu hết các thuộc tính của chuỗi ký tự và đường
vẽ đồ thị.
Axes Properties: Thay đổi thuộc tính của hệ tọa độ...
Mục insert: Thêm và thay đổi nhãn, chú thích, trục tọa độ, mũi tên, đường
thẳng....
Tuy nhiên cũng như nhiều các phần mềm được viết gần đây chúng ta
chỉ cần nháy đúp vào các mục cần thay đổi hoặc nháy chuột phải vào
các mục đó là có thể thay đổi các tùy chọn theo ý muốn.
67

14.2. Đồ họa trong không gian 3 chiều

14.2.1. Đồ thị bề mặt và lưới


Đồ thị bề mặt và lưới được
xây dựng dựa trên nguyên tắc
nối các điểm có cùng tọa độ x
và các điểm có cùng tạo độ y.
Cũng có thể nói đồ thị bề mặt
và lưới hình học hóa các ma
trận hai chiều.
Chúng ta hãy xét ví dụ với
ma trận hai chiều thiết lập bởi
hàm peaks. Đây là một hàm
mẫu hai biến trong matlab.
* Vẽ đồ thị lưới
>> z=peaks(25) % lập ma trận z gồm 25 hàng, 25 cột.
>> mesh(z); % vẽ đồ thị lưới x,y ngầm định là chỉ số phần tử hàng và
phần tử cột.
Lệnh đầy đủ vẽ đồ thị lưới MESH(X,Y,Z,C) trong đó x, y, z là các thông số phương
ngang, phương dọc và phương thẳng đứng, C là thông số hệ màu. Lệnh MESH(X,Y,Z)
sử dụng C = Z, màu sắc của lưới thể hiện chiều cao (độ lớn) của z.

* Vẽ đồ thị bề mặt
>> z=peaks(25)
>> surf(z) % đồ thị bề mặt
>> colormap(jet)
Lệnh colormap dùng màu sắc
để mô tả độ cao thấp của biến
z.

* Vẽ đồ thị bề mặt với bóng


>> z=peaks(25)
>> surfl(z)
68

>> shading interp % tạo bóng


>> colormap(pink) % chọn màu

Ngoài các hàm mesh, surf matlab cung cấp một số hàm khác với cấu trúc câu lệnh
tương tự như meshz, waterfall

* Biểu diễn độ cao qua các đường


đồng mức
>> z=peaks(25)
>> contour(z,16) % biểu diễn độ
cao z qua 16 đường đồng mức. Ngoài
ra chúng ta có thể sử dụng hàm
pcolor(z) để thể hiện độ cao theo màu
sắc.

* Đồ thị biểu diễn sự biến thiên


>> [x,y] = meshgrid(-2:.2:2, -2:.2:2)
z = x .* exp(-x.^2 - y.^2)
[px,py] = gradient(z,.2,.2)
>> contour(x,y,z), hold on
>> a=quiver(x,y,px,py)
>> set(a,'Color','black')
>> hold off

Đồ thị quiver biểu diễn sự biến thiên


giá trị dưới dạng các mũi tên với hai
phần (px,py) tại điểm có tọa độ (x,y).
Trong đó px tương ứng với dz/dx, py tương ứng với dz/dy tương ứng với các khoảng
chia 0.2 theo truc ox và 0.2 theo trục oy.

* Đồ thị cắt lớp


>> [x,y,z] = meshgrid(-2:.2:2,-
2:.2:2,-2:.2:2)
69

v = x .* exp(-x.^2 - y.^2 - z.^2) slice(v,[5 15 21],21,[1 10])


axis([0 21 0 21 0 21])
colormap(jet)
Hàm slice vẽ đồ thị lớp của các hình khối. tại mặt x=5; 15; 21, y=21, z=1; 10
14.2.2. Đồ thị đường, điểm trong không gian 3D
PLOT3(x,y,z), trong đó x, y, z là 3 vectơ có cùng độ dài, vẽ đồ thị đường trong
không gian 3 chiều đi qua các điểm có tọa độ tương ứng là các phần tử trong 3 vectơ x,
y, z.
PLOT3(X,Y,Z), khi X, Y và Z là các ma trận 3 chiều cùng kích thước, vẽ nhiều
đường thẳng theo các dữ liệu cột của X, Y, Z
Để thay đổi kiểu đường, kiểu đánh dấu điểm, màu sắc chúng ta đưa vào thông số s
PLOT3(X,Y,Z,s) trong đó s là 1, 2 hay 3 ký tự xâu mô tả đặc tính (14.1)
PLOT3(x1,y1,z1,s1,x2,y2,z2,s2,x3,y3,z3,s3,...) vẽ nhiều đồ thị trên hệ trục.

Ví dụ đường helix:
>> t = 0:pi/50:10*pi
plot3(sin(t),cos(t),t)

14.2.3. Các tùy chọn, hệ trục


tọa độ, nhãn, lưới, hộp
chứa trục, chú thích
Đồ thị trong không gian 3
chiều cũng xử dụng các hàm
chú thích đồ thị như nhãn, tiêu
đề, các hàm về hệ trục tọa độ
và tạo lưới... tương tự đồ thị
hai chiều.
Do có 3 trục tọa độ nên chúng ta có 3 hàm nhãn trục xlabel, ylabel, zlabel, chú thích đồ
thị text(x,y,z,’chu thich’).
Cửa sổ đồ thị 3D cũng giữ nguyên các nguyên tắc thay đổi giao diện như đồ thị 2D
tuy nhiên các công cụ rotate 3D và camera toolbar hữu ích hơn.
70

rotate
3D

camera
toolbar

Khi chọn biểu tượng rotate 3D chúng ta có thể quan sát đồ thị dưới mọi góc độ. Công
cụ trong camera toolbar được sử dụng để di chuyển, phóng to thu nhỏ, quay, thay đổi
ánh sáng của đồ thị.
>> [x,y] = meshgrid(-2:.2:2, -2:.2:2)
z = x .* exp(-x.^2 - y.^2)
[px,py] = gradient(z,.2,.2)
>> a=mesh(x,y,z)
a=
101.0045
Chúng ta hãy xem xét tính chất của
đồ thị từ menu Edit  Figure
Properties (tính chất của Axes, Curent
Object cũng ở cùng cửa sổ)
* Edit Properties for: cho phép chúng
ta lựa chọn thay đổi đồ thị và các giao
diện của nó như trục số, bề mặt.
a) Khi “figure:1” được chọn lập
tức các thông số có thể sửa đổi được
xuất hiện tiếp sau:
71

Do đồ thị 2 không được chọn nên khi nháy phím chọn các yếu tố có thể thay đổi
được của figure không hiện ra. Cửa sổ lựa chọn figure cho phép những thay đổi giao
diện ngoài đồ thị.
Color: Thay đổi màu nền cửa sổ đồ thị, chúng ta có thể nhập dạng số hoặc chon
màu (chú ý các số phải ≥0 và ≤1 chúng ta sẽ tìm hiểu về phối màu của matlab trong mục
sau)
Menu bar: Tắt bật thanh menu
Figure number: Tắt bật hiển thị số thứ tự của hình được vẽ
Window name: Đặt tên cửa sổ đồ họa
Renderer mode: Theo mặc định là openGL, openGL là phương thức được Matlab
sử dụng để truy cập phần cứng đồ họa của hệ thống máy tính, thông thường nhanh hơn
Painters và Z-buffer.
b) Khi axes được chọn
Cửa sổ giao diện như hình bên, chúng
ta có thể thay đổi các thuộc tính của các
trục Ox, Oy, Oz, kiểu đường, tương quan
đồ thị và trục số, ánh sáng, góc nhìn...

Mỗi trục số (ví dụ Ox) chúng ta có thay


đổi các thông số:
Label: Chú thích trục số
Color: Thay đổi màu sắc trục số
Grid: Hiển thị lưới đồ thị
Limit: Giới hạn trục số
Ticks: Vị trí vạch chia chia trục số
Lable: Hiển thị số cho các vị trí chia
Scale: Cho phép chon hệ trục dạng
tuyến tính hoặc dạng logarit, Normal và
Reverse là hai hướng ngược chiều của
trục tọa độ.
Set axes auto shape: Tự động vẽ trục
tọa độ
Set tight limits: Vẽ hệ trục tọa độ có giới hạn vừa bằng vungd giữ liệu.
72

Cửa sổ style
Title: Chú thích đồ thị
Properties: Thay đổi màu sắc, font
chữ
Axes box: Bật tắt khung hệ trục tọa
độ
Background: Đặt nền mặt phẳng tạo
bởi các trục số
Axes line width: Độ rộng đoạn thẳng
vẽ trục số (pt)
Các lựa chọn tiếp theo để thy đổi
font chữ.
* Cửa sổ Aspect cho phép thay đổi
tương kích thước giữa đồ thị và hệ trục
tọa độ.
* Lights: Chiếu sáng đồ thị từ nguồn
sáng tại vị trí khác nhau. Nếu ta đặt
nguồn sáng phía dưới đồ thị ngược
chiều nhìn ta sẽ được đồ thị tối, ngược
lại ta sẽ được đồ thị sáng thể hiện rõ
các màu sắc.
* Viewpoint: Thay đổi góc quan sát
đồ thị. Chúng có thể thay đổi góc trông để nhìn đồ thị theo phương ngang, từ dưới lên....
c) Khi surf được chọn
>> [x,y] = meshgrid(-2:.2:2, -2:.2:2)
z = x .* exp(-x.^2 - y.^2)
a=mesh(x,y,z)
Trên cửa sổ Property Editor – Surface –
Data chúng ta có thể chọn các phím Edit
data để thay đối dữ liệu nguồn.
Colormaps: Lựa chọn các hệ màu tô bề
mặt lưới (14.2.4).
Cửa sổ Face
Color: Tô màu bề mặt phía dưới lưới,
nếu chúng ta chọn none lúc đó bề mặt
trong suốt chúng ta có thể thấy các đường lưới chia trục tọa độ. Lệnh Faceted CData
(flat) nội suy dữ liệu tuyến tính nên màu trong một ô lưới là giống nhau. Mapped CData
(texturemap) mịn hóa bề mặt đồ thị. Blended CData (interp) nội suy dữ liệu theo phương
pháp đường cong nên sự chuyển màu mịn hơn.
Lighting: Cung cấp một số kiểu ánh mặc định
Alpha: Bao hàm một số lệnh như: clear(0.0) tắt chế độ bề mặt dưới lưới, transparent
(0.5) độ trong suốt là 0.5, opaque (1.0) hoàn toàn không nhìn thấy đường vẽ phía sau.
Ngoài ra còn một số phím cung cấp các dạng dao diện khác nhau của đồ thị.
73

Color(none)

14.2.4. Điều khiển màu và ánh sáng


Mô hình màu RGB (red-green-blue) được sử dụng để hiển thị đồ họa trên màn hình
màu CRT (màn hình sử dụng ống phóng điện tử). Từ ba màu gốc khi phối trộn cho ta các
màu sắc khác nhau, với quy ước thang màu từ 0 tới 1. Chúng ta có thể sử dụng các các
số từ 0 tới 1 cho mỗi màu đề phối tạo màu cho nền cửa cửa sổ, trục số....
Đối với đồ thị chúng có thể sử dụng các bản đồ màu để chứa thông tin.
>> colormap(M)
Thông thường khi ta vẽ đồ thị lưới hay mặt Matlab tự động đặt chế độ màu jet
Ngoài việc tác động vào đồ họa từ cửa sổ đồ họa chúng ta có thể sử dụng các hàm
trong Command Window.
Các hàm kiểm soát ánh sáng và màu sắc
Điều khiển màu sắc
colormap - Bảng màu
caxis - Khoảng giá trị thanh màu hiện thời
shading - Color shading mode.
hidden - Tắt bật chức năng nhìn qua lưới đồ thị
brighten - Thay đổi độ sáng tối của bảng màu
colordef - Mặc định màu sắc
graymon - Mặc định đồ họa đối với màn hình đen trắng
Ánh sáng
surfl - Vẽ và tạo bóng 3D đồ thị bằng chiếu sáng
lighting - Sử dụng chức năng chiếu sáng surface và patch
material - Điểu khiển tính chất phản xạ của bền mặt tạo bởi các hàm
SURF, MESH, PCOLOR, FILL, and FILL3
specular - Điều khiển tính phản chiếu
diffuse - R = DIFFUSE(Nx,Ny,Nz,S) trả lại hệ số phản xạ của bề mặt với
các vec tơ trực giao [Nx,Ny,Nz]. S là 3 vec tơ xác định hướng
nguồn sáng. S cũng có thể là hai vec tơ
surfnorm - Trả lại trạng thái thông thường
74

Các thang màu sử dụng với lệnh colormap


hsv - Bão hòa màu sắc
hot - Đen - đỏ - vàng - trắng
gray - Thang màu xám tuyến tính
bone - Thang màu xám pha xanh lơ nhẹ
copper - Thanh màu đồng tuyến tính
pink - Chuyển màu tùng lam của màu hồng
white - Trắng hoàn toàn
flag - Xen kẽ đỏ, trắng, xanh da trời, đen
lines - Màu nét vẽ
colorcube - Hình khối màu được làm nổi bật
vga - Sử dụng 16 màu
jet - Sự biến thiên màu sắc bão hòa.
prism - Bản đồ màu kiểu lăng kính tán sắc
cool - Chuyển màu giữa lục lam và tím.
autumn - Chuyển màu giữa đỏ và vàng.
spring - Chuyển màu giữa tím và vàng
winter - Chuyển màu giữa xanh lam và xanh lá cây
summer - Chuyển màu giữa xanh lá cây và vàng

Các khối lệnh cơ bản


Các lệnh đa năng
Quản lý hàm và lệnh
addpath Thêm thư mục và đường dẫn của MATLAB
doc Hiển thị tài liệu HTML trong Help browser
docopt Hiển thị vị trí thư mục help file nền UNIX platforms
genpath Tạo đường dẫn dạng xâu
help Hiển thị các file help dạng M-file cho các hàm của MATLAB trong the
Command Window
helpbrowser Hiển thị Help browser truy cập tất cả MathWorks trợ giúp trực tuyến
helpdesk Hiển thị Help browser
75

helpwin Hiển thị M-file help và cung cấp truy cập tới M-file help cho tất cảc các
hàm
lasterr Thông báo lỗi cuối cùng
lastwarn Thông báo cảnh báo cuối cùng
license Đưa ra số đăng ký sản phẩm
lookfor Tìm kiếm theo từ khóa trong tất cả mục từ của help
partialpath Một phần tên đường dẫn
path Kiểm soát thư mục của MATLAB tìm kiếm đường dẫn
pathtool Mở GUI để nhìn và thay đổi đường dẫn của MATLAB
profile Khởi động M-file profiler, công cụ gỡ rối và tối ưu mã
profreport Tạo 1 báo cáo hiện trạng
rehash Khởi tạo lại caches (vùng nhớ lưu trữ) hàm và file hệ thống
rmpath Loại bỏ thư mục từ đường dẫn tìm kiếm của MATLAB
support Mơ trang wed trợ giúp công nghệ MathWorks
type Danh sách file
ver Hiển thị thông tin phiên bản của MATLAB, Simulink, and toolboxes
version Số phiên bản MATLAB
web Dẫn đến Help browser hoặc Web browser tại file hoặc Web site
what Danh sách các file đặc trưng của MATLABở thư mục hiện tại
whatsnew Hiển thị README file của MATLAB và toolboxes
which Vị trí các hàm và file

Quản lý biến và không gian làm việc


clear Xóa các dữ liệu trong workspace
disp Hiển thị văn bản hoặc mảng
length Chiều dài của vec tơ
load Lấy lại các biến từ đĩa
memory Trợ giúp vì sự giới hạn bộ nhớ
mlock Chống xóa M-file
munlock CHo phép xóa tất cả M-file
openvar Thay đổi đặc tính biến trong Array Editor
pack Hợp nhất bộ nhớ không gian làm việc
save Lưu các biến trong workspace và đĩa
saveas Lưu hình ảnh hoặc model sử dụng các format đặc biệt
size Cho chiều của mảng
who, whos Danh sách các biến trong không gian làm việc
workspace Hiển thị Workspace Browser, giao diện đồ họa để quản lý workspace

Kiểm soát command window


clc Xóa chữ trong Command Window
echo Lấy lại lệnh trong quá trình thực hiện M-file
format Điều khiển hiển thị format cho đầu ra
home Di chuyển con trỏ lên góc trên bên trái của Command Window
more Quản lý các trang đưa ra đối với Command Window
76

Làm việc với file và môi trường hoạt động


beep Tạo âm thanh bíp
cd Thay đổi thư mục làm việc
checkin Kiểm tra file trong hệ thống điều khiển nguồn
checkout Kiểm tra file ngoài hệ thống điều khiển nguồn
cmopts Lấy tên hệ thống điều khiển nguồn, và các file kế hoạch PVCS
copyfile Copy file
customverctrl Cho phép người sử dụng tác động vào hệ thống nguồn
delete Xóa file và đồ thị
diary Lưu công việc trong command window vào đĩa
dir Hiển thị danh sách thư mục
dos Thực hiện 1 lệnh DOS và trả lại kết quả
edit Sửa chữa, soạn thảo 1 M-file
fileparts Lấy đường dẫn tên file
filebrowser Hiển thị trình duyệt Current Directory, để xem file
fullfile Xây dựng tên file đầy đủ từ đường dẫn
info Hiển thị thông tin liên hệ hoặc các file Readme của hộp công cụ
inmem Các hàm trong bộ nhớ
ls Hiển thị các thư mục trên HĐH UNIX
matlabroot Lấy thư mục gốc cài đặt matlab
mkdir Tạo thư mục mới
open Mở các file dựa trên phần mở rộng
pwd Hiển thị thư mục hiện tại
tempdir Trả lại tên của thư mục tạm thời của hệ thông
tempname Tên duy nhất cho file lưu tạm thời
undocheckout Trả lại kiểm tra trước từ hệ thống điều khiển nguồn
unix Thực hiện lệnh UNIX và trả lại kết quả
! Thực hiện lệnh hệ điều hành

Khởi động và thoát chương trình MATLAB


finish MATLAB kết thúc M-file
exit Kết thúc MATLAB
matlab Khởi động MATLAB (Hệ thồng UNIX)
matlabrc MATLAB khởi động M-file
quit Kết thúc MATLAB
startup MATLAB khởi động M-file

Các ký tự đặc biệt và toán tử


+ Cộng
- Trừ
* Nhân ma trận
.* Nhân mảng
^ Lũy thừa ma trận
.^ Lũy thừa mảng
kron Tích cơ Kronecker
\ Chia trái
77

/ Chai phải
./ and .\ Chia mảng trái và phải
: hai chấm
() Ngoặc tròn
[] Ngoặc vuông
{} Ngoặc xoắn
. Dấu chấm thập phân
... Sự tiếp tục
, Dấu phẩn
; Dấu chấm phẩy
% Chú thích
! Chấm than
' Chuyển vị và nháy trên
.' Chuyển vị không liên hợp
= Gán
== Bằng
<> Dấu quan hệ lớn nhỏ
& Logic và
| Logic hoặc
~ Logic không
xor Logic hoặc tuyệt đối

Các hàm logic


all Kiểm tra xác định xem tất cả các phẩn tử có phải là khác không hay không
any Kiểm tra xen có bất cứ phần tử nào khác không không
exist Kiểm tra xem có 1 biến hay file nào đang tồn tại hay không
find Tìm các chỉ số và các giá trị các thành phần khác không
is* Dò tìm trạng thái
isa Dò tìm thành phần của 1 lớp cho sẵn
iskeyword Kiểm tra xem 1 xâu có là từ khóa của MATLAB hay không
isvarname Kiểm tra xem 1 xâu có là tên 1 biến có hiệu lực của Matlab hay không
logical Biến đổi giá trị dạng số sang logic
mislocked True nếu M-file không thể xóa

Xây dựng và gỡ rối ngôn ngữ lập trình


MATLAB là một ngôn ngữ lập trình
builtin Thực hiện các hàm thiết lập từ phương pháp xếp chồng
eval Giải thích các xâu có trong biểu thức của MATLAB
evalc Đánh giá biểu thức của MATLAB với sự sao chép
evalin Đánh giá câu lệnh trong không gian làm việc
feval Đánh giá hàm
function Các hàm M-file
global Định nghĩa biến toàn bộ
nargchk Kiểm tra số của các đối số đưa vào
persistent Xác định biến cục bộ
78

script Tập lệnh M-files

Điều khiển luồng (Control Flow)


break Thoát việc thực hiện vòng lặp for hay while
case Câu lệnh chuyển
catch Khởi động việc bắt giữ các khối thông tin
continue Bỏ qua sự kiểm soát tới vòng lặp tiếp theo của vòng lặp for hay while
else Điều kiện thực hiện câu lệnh
elseif Điều kiện thực hiện câu lệnh
end Thoát for, while, switch, try và if ở cuối câu lệnh
error Hiển thị thông báo lỗi
for Lặp lại câu lệnh với số lần xác định
if Thực hiện các câu lệnh điều kiện
otherwise Mặc định đường dẫn của câu lệnh switch
return Trả về hàm gọi
switch Lựa chọn trong số nhiều trường hợp dựa trên biểu thức
try Bắt đầu kiểm tra khối dữ liệu
warning Hiển thị cảnh báo
while Lặp lại các biểu thức với số lần không xác định

Nhập dữ liệu (Interactive Input)


input Đòi hỏi người sử dụng nhập dữ liệu
keyboard Gọi bàn phím trong M-file
menu Tạo ra 1 danh sách cho người sử dụng chọn nhập dữ liệu
pause Tạm dừng thực hiện lưu thông tin và file tạm thời

Lập trình hướng đối tượng (Object-Oriented Programming)


class Tạo đối tượng hoặc trả lại lớp của đối tượng
double Chuyển sang độ chính xác theo kiểu double
inferiorto Quan hệ lớp dưới
inline Xây dựng đối tượng nội tuyến
int8, int16, int32 Chuyển sang số nguyên có dấu
isa Dò tìm đối tượng của một lớp đã cho
loadobj Mở rộng hàm nhập cho các đối tượng sử dụng
saveobj Lưu bộ lọc cho các đối tượng
single Chuyển sang độ chính xác kiểu single
superiorto Liên hệ lớp cao hơn
uint8, uint16,uint32 Chuyển sang số nguyên không dấu

Gỡ rối
dbclear Xóa điểm ngắt
dbcont Trở lại quá trình thực hiện
dbdown Chuyển ngữ cảnh không gian làm việc địa phương
dbmex Gỡ rối MEX-file có hiệu lực
dbquit Thoát chức năng gỡ rối
dbstack Hiển thị hàm gọi ngăn xếp
79

dbstatus Danh sách tất cả các điểm ngắt


dbstep Thực hiện 1 hay nhiều dòng từ điểm ngắt
dbstop Đặt điểm ngắt trong 1 hàm M-file
dbtype Danh sách M-file với số dòng
dbup Chuyển ngữ cảnh không gian làm việc địa phương
Các kênh điều khiển hàm
function_handle Kiểu dữ liệu MATLAB là 1 kênh điều khiển tới 1 hàm
functions Trả lại thông tin về 1 kênh điều khiển hàm
func2str Xây dựng 1 xâu tên hàm từ 1 kênh điều khiển hàm
str2func Xây dựng 1 kênh điều khiển hàm từ 1 xâu tên hàm

Các ma trận cơ sở và thao tác với ma trận (Elementary Matrices and Matrix
Manipulation)
Ma trận cơ sở và mảng (Elementary Matrices and Arrays)
blkdiag Xây dựng 1 ma trận đường chéo khối từ các đối số đưa vào
eye Ma trận đơn vị
linspace Tạo vec tơ tuyến tính cách đều
logspace Tạo vec tơ cách đều theo logarit
numel Số các phần tử trong ma trận hay các tế bào trong mảng
ones Tạo mảng tất cả các phần tử bằng 1
rand Tạo các số hay mảng bất kỳ phân bố đều
randn Tạo các số hay mảng bất kỳ phân bố thông thường
zeros Tạo mảng không
: (colon) Vec tơ cách đều

Hằng số và biến đặc biệt (Special Variables and Constants)


ans Cho kết phép toán gần nhất
computer Xác định các máy tính mà MATLAB đang chạy
eps Dấu chấm động liên quan tới độ chính xác
i Thành phần ảo
Inf Vô cực
inputname Tên đối số nhập
j Thành phần ảo
NaN Phủ định số
nargin, nargout Số của các đối số hàm số
nargoutchk Số hợp lệ của các đối số đưa ra
pi Tỷ số giữa chu vi và đường kính vòng tròn
realmax Số lớn nhất chương trình có thể tính toán được
realmin Số nhỏ nhất chương trình có thể tính toán được
varargin,varargout Bỏ qua hoặc trả lại các số thay đổi của các đối số

Ngày tháng và thời gian (Time and Dates)


calendar Lịch
clock Thời gian hiện tại, vec tơ ngày tháng
cputime Thời gian sử dụng CPU
80

date Xâu ngày tháng hiện tại


datenum Dãy số ngày tháng
datestr Format xâu ngày tháng
datevec Các thành phần ngày tháng
eomday Ngày cuối của tháng
etime Thời gian trôi qua
now Ngày tháng và thời gian hiện tại
tic, toc Theo dõi thời gian
weekday Ngày của tuần

Thao tác với ma trận (Matrix Manipulation)


cat Mảng phụ thuộc
diag Ma trận đường chéo và đường chéo của ma trận
fliplr Lật ma trận từ trái sang phải
flipud Lật ma trận từ trân xuống dưới
repmat Tái tạo và xếp kề 1 mảng
reshape Phục hồi hình dạng 1 mảng
rot90 Quay ma trận 90 độ
tril Tách phần tam giác dưới của ma trận
triu Tách phần tam giác trên của ma trận
: (colon) Chỉ số mảng và xắp xếp lại mảng

Các hàm vector (Vector Functions)


cross Nhân chéo vec tơ
dot Nhân điểm vec tơ
intersect Tập hợp giao nhau của hai vec tơ
ismember Dò tìm thành phần của tập hợp
setdiff Trả lại tập hợp các phần tử khác nhau của hai vec tơ
setxor Tập hợp phần không giao nhau của 1 trong hai vec tơ
union Tập hợp của hai vec tơ
unique Các thành phần độc nhất của 1 vec tơ

Các ma trận chuyên dụng (pecialized Matrices)


compan Ma trận Companion
gallery Các ma trận thử
hadamard Hadamard
hankel Hankel
hilb Hilbert
invhilb Nghịch đảo của ma trận Hilbert
magic Magic square
pascal Pascal
toeplitz Toeplitz
wilkinson Ma trận kiểm tra Wilkinson's eigenvalue

Các hàm toán học cơ sở (Elementary Math Functions)


abs Giá trị tuyệt đối và agumen của số phức
81

acos,acosh Hàm ngược cosine và cosine hyperbol


acot,acoth Ihàm ngược cotangvà cotang hyperbol
acsc,acsch Hàm ngược cosec và cosec hyperbol
angle Góc pha
asec,asech ÀHm ngược sec và sec hyperbol
asin, asinh Hàm ngược sin và sin hyperbol
atan,atanh Hàm ngược tang và tang hyperbol
atan2 Hàm ngược tang góc phần tư
ceil Làm tròn tới vô cùng
complex Xây dựng dữ liệu phức từ phần thực và phần ảo
conj Liên hợp phức
cos, cosh Cosin và cosin hyperbol
cot, coth Cotang và cotang hyperbol
csc, csch Cosec và cosec hyperbol
exp Theo quy luật mũ
fix Làm tròn tới không
floor Làm tròn tới âm vô cùng
gcd Ước số chung lớn nhất
imag Phần ảo của số phức
lcm Bội só chung lớn nhất
log Logarit tự nhiên
log2 Logarit cơ số 2 và tách số dấu chấm động thành phần mũ và phần giá trị
log10 Logarit cơ số 10
mod Dấu số dư
nchoosek Hệ số nhị thức hoặc tất cả tổ hợp
real Real part of complex number
rem Số dư
round Làm tròn tới số nguyên gần nhất
sec, sech Sec và sec hyperbol
sign Hàm dấu
sin, sinh Sin và sin hyperbol
sqrt Căn bậc 2
tan, tanh Tang và tang hyperbol

Các hàm toán học chuyên dụng (Specialized Math Functions)


airy Các hàm Airy
besselh Cá hàm Bessel lọa 3 (Hàm Hankel)
besseli, besselk Các biến thể hàm Bessel
besselj, bessely Hàm Bessel
beta, betainc, betaln Các hàm Beta
ellipj Các hàm elip Jacobi
ellipke Các số nguyên thuộc elip loại 1 và loại 2
erf, erfc, erfcx, erfinv Hàm sai số
expint Số nguyên thuộc mũ
factorial Hàm giai thừa
gamma, gammainc,gammaln Các hàm Gamma
legendre Các hàm Legendre kết hợp
82

pow2 Lũy thừa cơ số 2 và thang số dấu chấm động


rat, rats Xấp xỉ phân số hữu tỷ

Chuyển đổi hệ trục tọa độ (Coordinate System Conversion)


cart2pol Chuyển hệ tọa độ đề các sang hệ tọa độ cực hoặc trụ
cart2sph Chuyển hệ tọa độ đề các sang hệ tọa độ cầu
pol2cart Chuyển hệ tọa độ cực hoặc trụ sang hệ tọa độ đề các
sph2cart Chuyển hệ tọa độ cầu sang hệ tọa độ đề các

Hàm ma trận và đại số học tuyến tính (Matrix Functions - Numerical Linear
Algebra )
Phân tích ma trận (Matrix Analysis)
cond Số điều kiện đối với phép nghịch đảo
condeig Số điều với các giá trị riêng
det Định thức
norm Các tiêu chuẩn ma trận, vec tơ
null Không gian trống của 1 ma trận
orth Tính trực giao (ange space of a matrix)
rank Hạng của một ma trận
rcond Ức lượng số điều kiện đảo ma trận
rref,rrefmovie Reduced row echelon form
subspace Angle between two subspaces
trace Tổng các phần tử đường chéo

Các phương trình tuyến tính (Linear Equations)


chol Thừa số Cholesky
inv Ma trận nghịch đảo
lscov Phương pháp bình phương tối thiểu với sự đồng biến đã biết
lu Thừa số ma trận LU
lsqnonneg Bình phươg tối thiểu không phủ định
minres Phương pháp dư tối thiểu
pinv Giả đảo ma trận Moore-Penrose
qr Phân tích 3 mặt trực giao
symmlq Phương pháp LQ đối xứng

Giá trị duy nhất và giá trị riêng (Eigenvalues and Singular Values)
balance Tăng độ chính xác trong tính toán giá trị riêng
cdf2rdf Chuyển dạng đường chéo phức sang dạng đường chéo thực
eig Giá trị riêng và vec tơ riêng
gsvd Phân tích giá trị riêng chung
hess Dạng Hessenberg của 1 ma trận
poly Đa thức với nghiệm đặc biệt
qz Tìm thừ số QZ cho giá trị kế thừ chung
rsf2csf Chuyển dạng Schur thực sang dạng Schur phức
schur Sự phân tích Schur
83

svd Phân tích giá trị riêng

Các hàm ma trận (Matrix Functions)


expm Ma trận mũ
funm Đánh giá hàm ma trận chung
logm Ma trận logarit
sqrtm Căn bậc 2 ma trận

Các hàm cấp dưới (Low Level Functions)


qrdelete Xóa cột từ sự tìm thừa số QR
qrinsert Chén cột bằng sự tìm thừa số QR

Phân tích dữ liệu và hàm chuyển đổi Fourier (Data Analysis and Fourier
Transform Functions)
Phép toán cơ bản (Basic Operations)
cumprod cumprod(b,n), n=1 tích lũy theo cột, n=2 tích lũy theo hàng
cumsum Tổng tích lũy
cumtrapz Tổng tích lũy của giá trị trung bình 2 số liên tiếp (n=1 tính theo cột, n=2
tính theo hàng)
factor Tách số thành các thừa số nguyên tố
inpolygon Tìm các điểm trong vùng đa giác
max Xác định giá trị lớn nhất theo 1 chiều
mean Xác định giá trị trung bình theo 1 chiều
median Giá trị trung gian trong mảng
min Xác định giá trị nhỏ nhất theo 1 chiều
perms Tất cả khả năng có thể xảy ra của phép hoán vị 1 tập số
polyarea Diện tích của đa giác
primes Tạo ra danh sách các số nguyên tố
prod Tích số 1 chiếu các phần tử trong ma trận
sort Xếp các phần tử theo chiều tăng dần
sortrows Xếp các dòng theo chiều tăng dần
std Độ lệch chuẩn
sum Tổng các phần tử theo 1 chiều ma trận
trapz Hàng hay cột cuối cùng của lệnh cumtrapz
var Sự thay đổi

Sai phân hữu hạn (Finite Differences)


del2 Toán tử rời rạc Laplacian
diff Tính độ chênh lệch giữa các phần tử và đạo hàm gần đúng
gradient Gradient vi phân

Sự tương quan (Correlation)


corrcoef Hệ số tuuwong quan
84

cov Ma trận đồng biến

Lọc và xếp trật tự (Filtering and Convolution)


conv Nhân đa thức và xếp trật tự bậc
conv2 Trậu tự 2 chiều
deconv Chia đa thức
filter Lọc dữ liệu đáp ứng xung vô hạn (IIR) và đáp ứng xung hữu hạn
filter2 Lọc kỹ thuật số hai chiều

Biến đổi Fourier (FourierTransforms)


abs Giá trị tuyệt đối và agument số phức
angle Góc pha
cplxpair Sort complex numbers into complex conjugate pairs
fft Biến đổi Fourier rời rạc 1 chiều
fft2 Biến đổi Fourier rời rạc 2 chiều
fftshift Shift DC component of fast Fourier transform to center of spectrum
ifft Biến đổi Fourier rời rạc ngược 1 chiều
ifft2 Biến đổi Fourier rời rạc ngược 2 chiều
ifftn Biến đổi Fourier rời rạc ngược n chiều
nextpow2 Next power of two
unwrap Hiệu chỉnh góc pha

Các hàm nội suy và đa thức (Polynomial and Interpolation Functions)


Đa thức (Polynomials)
conv Nhân đa thức và xếp trật tự
deconv Chia đa thức
poly Đa thức với nghiệm đặc biệt
polyder Đạo hàm đa thức
polyeig Vấn đề giá trị riêng đa thức
polyfit Phù hợp đường cong đa thức
polyint Tích phân đa thức
polyval Tính giá trị đa thức
polyvalm Tính giá trị đa thức ma trận
residue Chuyển đổi phân thức thành đa thức và các phân thức đơn giản bậc 0/ bậc 1
roots Nghiệm đa thức

Nội suy dữ liệu (Data Interpolation)


convhull Convex hull
convhulln Multidimensional convex hull
delaunay Delaunay triangulation
delaunay3 Three-dimensional Delaunay tessellation
delaunayn Multidimensional Delaunay tessellation
dsearch Tìm điểm gần nhất
dsearchn Tìm điểm gần nhất nhiều chiếu
85

griddata Thang lưới dữ liệu


griddata3 Thanh lưới dữ liệu và và điều chỉnh tăng bề mặt ở không gian 3 chiều
griddatan Thang lưới và điều chỉnh tăng bề mặt (số chiều >= 2)
interp1 Nội suy dữ liệu 1 chiều
interp2 Nội suy dữ liệu hai chiều
interp3 Nội suy dữ liệu 3 chiều
interpft Nội suy dữ liệu 1 chiều sử dụng phương pháp FFT
interpn Nội suy dữ liệu nhiều chiều
meshgrid Tạo ma trận X và Y cho đồ thị 3 chiều
ndgrid Tạo mảng cho phép nội suy và các hàm nhiều chiều
pchip Piecewise Cubic Hermite Interpolating Polynomial (PCHIP)
ppval Tính giá trih đa thức Piecewise
spline Cubic spline data interpolation
tsearch Search for enclosing Delaunay triangle
tsearchn Multidimensional closest simplex search
voronoi Biểu đồ Voronoi
voronoin Biểu đồ Voronoi nhiều chiều

Các phương pháp toán học không tuyến tính và các hàm chức năng
(Function Functions - Nonlinear Numerical Methods)
bvp4c Giải quyết các vấn đề về giá trị biên hai điểm (BVPs) cho các phương trình vi
phân thường (OGEs)
bvpget Tạo thông số từ cấu trúc lựa chọn BVP
bvpinit Dạng đoán ban đầu cho bvp4c
bvpset Tạo/sử đổi cấu trúc lựa chọn BVP
bvpval Đánh giá kết quả tính toán bởi bvp4c
dblquad Giá trị số của các số nguyên kiểu double
fminbnd Giá trị cực tiểu của hàm 1 biến
fminsearch Giá trị cực tiểu của hàm nhiểu biến
fzero Tìm điểm 0 của hàm 1 biến
ode45, ode23, ode113,
ode15s, ode23s,
ode23t, ode23tb Giải các vấn đề về giá trị ban đầu của ODEs
odeget Tạo thông số từ cấu trúc lựa chọn ODE
odeset Tạo/thay đổi cấu trúc lựa chọn ODE
optimget Tìm các giá trị thông số cấu trúc lựa chọn tối ưu
optimset Tạo và thay đổi cấu trúc thông số các lựa chọn tối ưu
pdepe Giải quyết các vấn đề về giá trị biên ban đầu
pdeval Đánh giá giải pháp tính toán bởi pdepe
quad Trả giá trị số của tích phân, phép cầu phương Simson thích ứng
quadl Trả giá trị số của tích phân, phép cầu phương Lobatto thích ứng
vectorize Biểu thức vec tơ
86

Hàm ma trận rời rạc (Sparse Matrix Functions)


Các ma trận rời rạc cơ sở (Elementary Sparse Matrices)
spdiags Tách và tạo các vùng rời rạc và các ma trận đường chéo
speye Ma trận đơn vị rời rạc
sprand Ma trận ngẫu nhiên phân bố rời rạc đều
sprandn Ma trận ngẫu nhiên phân bố rời rạc thường
sprandsym Ma trận ngẫu nhiên rời rạc đối xứng

Chuyển đổi giữa ma trận rời rạc và ma trận đầy đủ (Full to Sparse Conversion)
find Tìm chỉ số và giá trị của các thành phần khác không
full Chuyển ma trận rời rạc thành ma trận đầy đủ
sparse Tạo ma trận rời rạc
spconvert Nhập ma trận từ format ngoài ma trận rời rạc

Làm việc với dữ liệu khác 0 của ma trận rời rạc (Working with Nonzero Entries of
Sparse Matrices)
nnz Số các thành phần khác không
nonzeros Các thành phần ma trận khác không
nzmax Lượng lưu trữ chia cho các phần tử ma trận khac không
spalloc Định phần không gian cho ma trận rời rạc
spfun Sử dụng hàm cho các phần tử ma trận rời rạc khác không
spones Thay các phần tử ma trận rời rạc khác không bằng 1

Hình ảnh ma trận rời rạc


spy Biểu thị kiểu rời rạc

Thuật toán xắp xếp (Reordering Algorithms)


colamd Hoán vị giảm dần
colmmd Hoán vị giảm dần rời rạc
colperm Hoán vị cột rời rạc dựa trên đếm thành phần khác không
dmperm Phân tích Dulmage-Mendelsohn
randperm Thuật toán ngẫu nhiên
symamd Hoán vị giảm đối xứng
symmmd Thư tự giảm đối xứng rời rạc
symrcm Thứ tự Cuthill-McKee đảo rời rạc

Quy tắc, Số điều kiện, Thứ tự (Norm, Condition Number, and Rank)
condest Ước lượng số điều kiện ma trận tiêu chuẩn -1
normest Ước lượng tiêu chuẩn 2

Phương thức rời rạc của các phương trình tuyến tính (Sparse Systems of Linear
Equations)
bicg Phương pháp gradient liên hợp kép
bicgstab Phương pháp ổn định Građien liên hợp kép
cgs Phương pháp bình phương gradient liên hợp
87

cholinc Các thừa số Cholesky and Cholesky vô cực không đầy đủ rời rạc
cholupdate Hàng 1 chuyển thành thừa số Cholesky
gmres Phương pháo dư nhỏ nhất suy rộng
lsqr Sự bổ sung LSQR của các gradient liên hợp dựa trên các phương trình trực giao
luinc Tìm thừ số ma trận LU không đầy đủ
pcg Phương pháp gradient liên hợp tiền điều kiện
qmr Pjương pháp thặng dư gần nhỏ nhất
qr Phân tích 3 mặt trực giao
qrdelete Xóa cột từ sự tìm thừ số QR
qrinsert Chèn cột trong khi tìm thừ số QR
qrupdate Hàng 1 trở thành sự tìm thừ số QR

Giá trị duy nhất và giá trị riêng rời rạc (Sparse Eigenvalues and Singular Values)
eigs Tìm vec tơ riêng và giá trị riêng
svds Tìm giá trị duy nhất

Hỗ hợp
spparms Đặt thông số cho thường trình ma trận rời rạc

Các hàm tạo âm thanh (Sound Processing Functions)


Các hàm âm thanh chung (General Sound Functions)
lin2mu Chuyển đổi tín hiệu audio tuyến tính thành mu-law
mu2lin Chuyển đổi tín hiệu audio mu-law thành tuyến tính
sound Chuyển vec tơ thành âm thanh
soundsc chuẩn háo dữ liệu và chơi âm thanh

Các hàm âm thanh chuyên dụng (SPARC station-Specific Sound Functions)


auread Đọc file âm thanh NeXT/SUN (.au)
auwrite Ghi file âm thanh NeXT/SUN (.au)

Hàm âm thanh với format wav (.WAV Sound Functions)


wavplay Ghi âm thanh trên một thiết bị đầu ra âm thanh trên PC
wavread Đọc file âm thanh Microsoft WAVE (.wav)
wavrecord Ghi âm thanh sử dụng thiết bị đàu vào âm thanh trên PC
wavwrite Ghi file âm thanh Microsoft WAVE (.wav)

Các hàm xâu ký tự (Character String Functions)


Chung (General)
abs Giá trị tuyệt đối và agumen số phức
eval Giải thích các xâu chứa trong các biểu thức MATLAB
real Phần thực số phức
strings Kênh điều khiển xâu MATLA
88

Chuyển đổi giữa xâu và hàm (String to Function Handle Conversion)


func2str Chuyển đổi hàm thành xâu
str2func Chuyển đổi xâu thành hàm

Thao tác với xâu (String Manipulation)


deblank Loại bỏ ký tự trống cuối của xâu
findstr Tìm 1 xâu trong xâu khác
lower Chuyển xâu thành dạng chữ thường
strcat Nối xâu kí tự
strcmp So sánh xâu
strcmpi So sánh xâu, bỏ qua kiểu chữ hoa, chữ thường
strjust Sắp đều mảng kí tự
strmatch Tìm kiếm phù hợp có thể được cho một xâu
strncmp So sánh n kí tự đầu tiên của các xâu
strncmpi So sánh n kí tự đầu tiên của các xâu, bỏ qua chứ hoa chữ thường
strrep Tìm kiếm và thay đổi xâu
strtok Mã thông báo đầu tiên trong xâu
strvcat Nối dọc các xâu ký tự
symvar Xácđịnh các biến tượng trưng trong một biểu thức
texlabel Tạo format TeX từ 1 xâu kí tự
upper Chuyển đổi xâu chữ thường thành chữ hoa

Chuyển đổi giữa xâu và số (String to Number Conversion)


char Tạo mảng ký tự (string)
int2str Chuyển dạng số nguyên thành xâu
mat2str Chuyển một ma trận thành xâu
num2str Chuyển số thành xâu
sprintf Ghi và format dữ liệu dạng xâu
sscanf Đọc xâu dưới sự kiểm soát format
str2double Chuyển đổi xâu thành giá trị chính xác kiểu double
str2mat Chuyển đổi xâu thành ma trận
str2num Chuyển đổi xâu thành số

Chuyển đổi cơ số (Radix Conversion)


bin2dec Chuyển đổi hệ nhị phân sang dạng thập phân
dec2bin Chuyển đổi hệ thập phân sang hệ nhị phân
dec2hex Chuyển đổi hệ thập phân sang hệ 18
hex2dec Chuyển đổi hệ 16 sang hệ thập phân
hex2num Chuyển đổi hệ 16 thành số kiểu double

Các hàm vào/ra file (File I/O Functions)


File Opening and Closing
fclose Đóng 1 hoặc nhiều file
fopen Mở 1 file hoặc lấy thông tin từ file mở
89

Dữ liệu ngôn ngữ máy (Unformatted I/O)


fread Đọc dữ liệu nhị phân từ file
fwrite Ghi dữ liệu nhị phân vào file

Dữ liệu đã format (Formatted I/O)


fgetl Trả lại dòng tiếp theo của 1 file dạng xâu mà không kết thúc dòng
fgets Trả lại dòng tiếp theo của 1 file dạng xâu và kết thúc dòng
fprintf Viết dữ liệu đã format vào file
fscanf Đọc dữ liệu đã fomat từ file

Vị trí file (File Positioning)


feof Kiểm tra kết thúc 1 file
ferror truy vấn MATLAB về lỗi trong file nhập và xuất
frewind Trả lùi 1 file mở
fseek Đặt chỉ báo vị trí file
ftell Lấy chỉ báo 1 file

Chuyển đổi xâu (String Conversion)


sprintf Ghi dữ liệu đã format thành 1 xâu
sscanf Đọc xâu dưới sự kiểm soát format

Vào ra file chuyên dụng (Specialized File I/O)


dlmread Đọc 1 file định dạng ASCII thành 1 ma trận
dlmwrite Viết 1 ma trận thành 1 file định dạng ASCII
hdf Giao diện HDF
imfinfo Trả lại thông tin về 1 file đồ họa
imread Đọc ảnh và file đồ họa
imwrite Viết ảnh thành 1 file đồ họa
strread Đọc dữ liệu đã format từ 1 xâu
textread Đọc dữ liệu đã format từ 1 file *.txt
wk1read Đọc 1 file bảng tính Lotus123 WK1 thành 1 ma trận
wk1write Viết 1 mang trận thành 1 file bảng tính Lotus123 WK1

Các hàm bitwise (Bitwise Functions)


bitand Bit-wise AND
bitcmp Các bit bổ sung
bitor Bit-wise OR
bitmax Số nguyên dấu chấm động lớn nhất
bitset Đặt bit
bitshift Dịch chuyển Bit-wise
bitget Lấy bit
bitxor Bit-wise XOR

Các hàm cấu truc (Structure Functions)


fieldnames Tên trường của 1 cấu trúc
getfield Lấy trường của 1 mảng cấu trúc
90

rmfield Loại bỏ trường cấu trúc


setfield Đặt trường của 1 mảng cấu trúc
struct Tạo mảng cấu trúc
struct2cell Chuyển đổi dạng cấu trúc sang dạng mảng tế bào

Các hàm đối tượng Matlab (MATLAB Object Functions0


class Tạo 1 đối tượng hoặc trả lại lớp của đối tượng
isa Dò tìm đối tượng của 1 lớp cho sẵn
methods Hiển thị tên phương pháp
methodsview Hiển thị tất cả các phương pháp thực hiện bởi 1 lớp
subsasgn Phương pháp ghi đè cho A(I)=B, A{I}=B, và A.field=B
subsindex Phương pháp ghi đè cho X(A)
subsref Phương pháp ghi đè cho A(I), A{I} and A.field

Giao diện Malab với Java (MATLAB Interface to Java)


class Tạo 1 đối tượng hoặc trả lại lớp của đối tượng
import Thêm 1 gói hoặc 1lớp tới danh sách nhập Java hiện tại
isa Dò tìm 1 đối tượng của 1 lớp cho sẵn
isjava Kiểm tra xem 1 đối tượng có phải là 1 đối tượng java không
javaArray Xây dựng 1 mảng java
javaMethod Gọi 1 phương pháp java
javaObject Xây dựng 1 đối tượng java
methods Hiển thị các tên phương pháp
methodsview Hiển thị thông tin tất cả phương pháp thực hiện bởi 1 lớp

Các hàm mảng tế bào (Cell Array Functions)


cell Tạo 1 mảng tế bào
cellfun Áp dụng 1 hàm vào tất cả các phần tử trong 1 mảng tế bào
cellstr Tạo mảng tế bào gồm các xâu từ mảng ký tự
cell2struct Chuyển mảng tế bào thành mảng cấu trúc
celldisp Hiển thị nội dung một mảng tế bào
cellplot Hiển thị biểu đồ cấu trúc mảng tế bào
num2cell Chuyển một mảng số thành 1 mảng tế bào

Các hàm mảng nhiều chiều (Multidimensional Array Functions)


cat Nối các mảng
flipdim Lật mảng theo 1 chiều xác định
ind2sub Chỉ số dưới từ chỉ mục tuyến tính
ipermute Hoán vị nghịch đảo các chiều của 1 mảng nhiều chiều
ndgrid Tạo các mảng cho hàm nhiều chiều và nội suy
ndims Số chiều của mảng
permute Sắp xếp lại các chiều của 1 mảng nhiều chiều
reshape Phục hồi mảng
shiftdim Thay đổi chiều
squeeze Loại bỏ chiều singleton (singleton là 1 chiều ví dụ như size(A,dim)==1)
sub2ind Trả lại chỉ mục tuyến tính từ chỉ số dưới
91

Đồ thị và hình ảnh dữ liệu (Plotting and Data Visualization)


Đồ thị và biểu đồ cơ bản (Basic Plots and Graphs)
bar Đồ thị cột thẳng đứng
barh Đồ thị cột ngang
hist Hoành đồ
histc Hoàng đồ tồng
hold Giữ đồ thị hiện tại
loglog Đồ thị sử dụng hệ trục logarit
pie Đồ thị bánh
plot Đồ thị vec tơ hay ma trận
polar Đồ thị cực
semilogx Đồ thị bán logarit trục x
semilogy Đồ thị bán logarit trục y
subplot Tạo hệ trục kế tiếp, để vẽ nhiều đồ thị trên 1 cửa sổ đồ họa

Vẽ đồ thị 3 chiều (Three-Dimensional Plotting)


bar3 Đồ thị cột dọc 3 chiều
bar3h Đồ thị cột ngang 3 chiều
comet3 Đồ thị hoạt hình 3 chiều
cylinder Tạo hình trụ
fill3 Vẽ và tô đa giác 3 không gian chiều
plot3 Vã đường và điểm trong không gian 3 chiều
quiver3 Đồ thị mũi tên 3 chiều
slice Đồ thị cắt lớp

Đồ thị cắt lớp thể tích (Volumetric slice plot)


sphere Hình cầu
stem3 Đồ thị dữ liệu bề mặt rời rạc
waterfall Đồ thị kiểu thác nước

Chú thích và đường lưới hệ trục đồ thị (Plot Annotation and Grids)
clabel Thêm các nhãn đồng mức vào đồ thị đồng mức
datetick Chú thích dữ liệu
grid Lưới hệ trục cho đồ thị 2D và 3D
gtext Viết văn bản trong đồ thị 2D sử dụng chuột
legend Chú thích cho các đường và hiệu chỉnh
plotyy Vẽ đồ thị với chú thích y bên trái và phải
title Đầu đề đồ thị 2D, 3D
xlabel Nhãn trục X cho đồ thị 2D và 3D
ylabel Nhãn trục Y cho đồ thị 2D và 3D
zlabel Nhãn trục Z cho đồ thị 3D

Đồ thị bề mặt, lưới, đường đồng mức (Surface, Mesh, and Contour Plots)
contour Đồ thị đường đồng mức
92

contourc Sự tính toán đường đồng mức


contourf Tô đồ thị đường đồng mức
hidden Tắt bật chức năng nhìn qua lưới đồ thị
meshc Kết hợp đồ thị lưới và đường đồng mức
mesh Lưới 3D với mặt tham chiếu
peaks Hàm mẫu 2 biến
surf Đồ thị bề mặt bóng 3D
surface Create surface low-level objects
surfc Kết hợp đồ thị mặt và đường đồng mức
surfl Bề mặt bóng 3D và chiếu sáng
trimesh Đồ thị mắt lưới tam giác
trisurf Đồ thị mặt tam giác

Hình ảnh khối (Volume Visualization)


coneplot Đồ thị các vec tơ tốc độ dạng nón trong trường 3D
contourslice Vẽ đường đồng mức trong mặt cắt hình khối
curl Tính toán tốc độ xoắn và góc của trường vec tơ
divergence Tính toán sự phân kỳ của 1 trường vec tơ
flow Tạo ra một dư liệu thể tích vô hướng
interpstreamspeed Nội suy đỉnh dòng từ các cường độ trường vec tơ
isocaps Tính toán đồng mặt hình học đỉnh cuối
isocolors Tính toán các màu của các đỉnh đồng mặt
isonormals Tính toán các pháp tuyến của các đỉnh đồng mặt
isosurface Tách dữ liệu đỉnh đồng mặt từ dữ liệu thể tích
reducepatch Giảm số các bề mặt hiệu chỉnh
reducevolume Giảm số các thành phần trong tập hợp dữ liệu thể tích
shrinkfaces Giảm kích thước các mặt hiệu chỉnh
slice Vẽ các mặt cắt khối
smooth3 Min hóa dữ liệu 3D
stream2 Tính toán dư liệu đường dòng 2D
stream3 Tính toán dư liệu đường dòng 3D
streamline Vẽ các đường dòng từ vec tơ dữ liệu 2D hay 3D
streamparticles Vẽ dòng chảy chứa các tiểu phân từ vectơ dữ liệu thể tích
streamribbon Vẽ dòng kiểu ruy băng từ vectơ dữ liệu thể tích
streamslice Vẽ các đường dòng từ vectơ dữ liệu thể tích
streamtube Vẽ các dòng dạng ống từ vectơ dữ liệu thể tích
surf2patch chuyển dữ liệu bề măth thành dư liệu hiệu chỉnh
subvolume Tách tập con từ tập dữ liệu hình khối
volumebounds Trả lại màu và tọa độ cho hình khối (vô hướng và vec tơ)

Thiết lập phạm vi (Domain Generation)


griddata Lưới dữ liệu và phù hợp bề mặt
meshgrid Tạo các mảng X, Y cho đồ thị 3D
plots Đồ thị chuyên dụng
area Vẽ vùng
box Vẽ khung cho hệ trục 2D và 3D
93

comet Vẽ hoạt hình


compass Vẽ mũi tên khởi tạo từ gốc chỉ ra phần thực,
phần ảo của các số trong ma trận số ảo
errorbar Vẽ đồ thị với thanh sai số
ezcontour Dễ dàng sử dụng thiết bị vẽ đường đồng mức
ezcontourf Dễ dàng sử dụng thiết bị tô đường đồng mức
ezmesh Dễ dàng sử dụng thiết bị vẽ lưới 3D
ezmeshc Dễ dàng sử dụng thiết bị vẽ kết hợp lưới và đường đồng mức
ezplot Dễ dàng sử dụng thiết bị vẽ hàm
ezplot3 Dễ dàng sử dụng thiết bị vẽ đường cong tham số 3D
ezpolar Dễ dàng sử dụng thiết bị vẽ tạo độ cực
ezsurf Dễ dàng sử dụng thiết bị vẽ bề mặt màu 3D
ezsurfc Dễ dàng sử dụng thiết bị vẽ bề mặt và đường đồng mức
feather Vẽ mũi tên chỉ ra phần thực phần ảo của số hoặc ma trận số ảo
fill Vẽ tô đa giác 2D
fplot Vẽ hàm số
pareto Pareto char
pie3 Đồ thị bánh 3D
plotmatrix Ma trận đồ thị điểm
pcolor Đô thị giả màu
rose Biểu tròn thể hiện tần suất đối số vec tơ
quiver Đồ thị mũi tên (tốc độ)
ribbon Đồ thị dải
stairs Đồ thị bậc thang
scatter Đồ thị điểm
scatter3 Đồ thị điểm 3D
stem Đồ thị dữ liệu trình tự rời rạc (hình cây)
convhull Convex hull
delaunay Tam giác đạc Delaunay
dsearch Tìm kiếm phép đạc tam giác Delaunay cho điểm gần nhất
inpolygon Đúng đối với những điểm trong 1 vùng đa giác
polyarea Diện tích đa giác
tsearch Tìm kiếm với tam giác Delaunay
voronoi Biểu đồ Voronoi

Điều khiển góc nhìn (View Control)


camdolly Di chuyển vị trí camera và mục tiêu
camlookat Xem các đối tượng riêng
camorbit Quỹ đạo quanh mục tiêu camera
campan Quay mục tiêu camera quang vị trí camera
campos Đặt hoặc lấy vị trí camera
camproj Đặt hoặc lấy kiểu chiếu
camroll Quay camera quanh trục quan sát
camtarget Đặt hoặc lấy mục tiêu camera
camup Đặt hoặc lấy vec tơ trên camera
camva Đặt hoặc lấy góc trông của camera
camzoom Thu, phóng camera vào ra
94

daspect Đặt hoặc lấy tỷ số dữ liệu tương quan


pbaspect Đặt hoặc lấy tỷ số tương quan hộp đồ thị
view Chỉ định điểm nhìn đồ thị 3D
viewmtx Tạo hình ảnh ma trận biến đổi
xlim Đặt hoặc lấy giới hạn trục X
ylim Đặt hoặc lấy giới hạn trục Y
zlim Đặt hoặc lấy giới hạn trục Z

Ánh sáng (Lighting)


camlight Tạo hoặc đặt vị trí nguồn sáng
light Hàm tạo đối tượng chiếu sáng
lighting Chế độ chiếu sáng
lightangle Vị trí chiếu sáng trong hệ tọa độ cầu
material Chức năng hệ số phản xạ vật chất

Tính trong suốt (Transparency)


alpha Đặt hoặc xem xét tính trong suốt đối với đối tượng trong hệ trục
alphamap Định rõ hình ảnh bản đồ alpha
alim Đặt hoặc xem xét giới hạn alpha hệ trục

Cách tạo màu (Color Operations)


brighten Sáng hơn hoặc tối hơn bản đồ màu
caxis Thang màu giả
colorbar Hiển thị thang màu (color scale)
colordef Đặt màu mặc định
colormap Đặt bảng màu (list of colormaps)
graymon Đặt hình ảnh đồ họa mặc định cho màn hình đen trắng
hsv2rgb Chuyển hên màu HSV sang RGB
rgb2hsv RGB sang HSV
rgbplot Vẽ bản đồ màu
shading Chức năng tạo bóng màu
spinmap Quay bản đồ màu
surfnorm Trả về trạng thái tiêu chuẩn 3-D
whitebg Đổi nền màu hệ trục cho đồ thị

Bản đồ màu (Colormaps)


autumn Chuyển màu giữa đỏ và vàng
bone Thang màu xám pha xanh lơ nhẹ
contrast Thang màu xám, tăng tính tương phản hình ảnh
cool Chuyển màu giữa lục lam và tím
copper Thang màu đồng tuyến tính
flag Xen kẽ đỏ, trắng, xanh da trời, đen
gray Thang màu xám tuyến tính
hot Đen - đỏ - vàng - trắng
hsv Bão hòa màu sắc
jet Sự biến thiên màu sắc bão hòa
95

lines Màu nét vẽ


prism Bản đồ màu kiểu lăng kính tán sắc
spring Chuyển màu giữa tím và vàng
summer Chuyển màu giữa xanh lá cây và vàng
winter Chuyển màu giữa xanh lam và xanh lá cây

In ấn (Printing)
orient Hướng giấy
pagesetupdlg Hộp thoại vị trí trang
print In đồ thị hoặc lưu vào file
printdlg Hộp thoại in
printopt Đặt cấu hình mặc định cho máy in
saveas Lưu hình ảnh vào file đồ họa

Kênh điều khiển chung và đồ họa (Handle Graphics, General)


allchild Tìm tất cả đối tượng con của các đối tượng danh nghĩa
copyobj Tạo 1 bản copy của đối tượng đồ họa và các đối tượng con của nó
findall Tìm tất cả các đối tượng đồ họa
findobj Tìm các đối tượng và các trị số đặc tính danh nghĩa
gcbo Trả lại đối tượng thao tác hiện thời
gco Trả lại kêng điều khiển cho đối tượng hiện thời
get Xem các tính chất của đối tượng
rotate Quay các đối tượng
ishandle Đúng đối với các đối tượng đồ họa
set Đặt các tính chất đối tượng

Làm việc với dữ liệu ứng dụng (Working with Application Data)
getappdata Lấy giá trị dữ liệu ứng dụng
isappdata Đúng nếu tồn tại dữ liệu ứng dụng
rmappdata Remove application data
setappdata Định rõ dữ liệu ứng dụng

Tạo kênh điều khiển đối tượng và đồ họa (Handle Graphics, Object Creation)
axes Tạo đối tượng trục số
figure Tạo cửa sổ đồ họa
image Tạo ảnh 2D
light Tạo đối tượng chiếu sáng
line Tạo đối tượng là đường thẳng
patch Tạo đối tượng là đa giác
rectangle Tạo hình chữ nhật (2D)
surface Tạo bề mặt
text Tạo đối tượng văn bản
uicontextmenu Tạo bảng chọn ngữ cảnh

Điều khiển cửa sổ hình ảnh và đồ họa


capture Chụp màn hình của hình ảnh hiện thời
96

clc Xóa cửa sổ đồ họa


clf Xóa đồ họa
close Close specified window
closereq Đóng mặc định các hàm gọi
gcf Điều khiển hình ảnh hiện thời
newplot Chữ viết mở đầu M-file cho riêng đồ thị tiếp theo
refresh Làm mới hìng ảnh
saveas Lưu hình ảnh và mô hình theo định dạng mong muốn

Điều khiển đồ họa và hệ trục


axis Vẽ hệ trục và thang chia
cla Xóa hệ trục
gca Điều khiển hệ truch hiện thời

Thao tác với đối tượng


reset Xác lập lại trục số và hình ảnh
rotate3d Tương tức quay quan sát đồ thị 3D
selectmoveresize Tương tác chọn, di chuyển, thay đổi kích thước các đối tượng

Tác động người sử dụng đưa vào (Interactive User Input)


ginput Nhập đồ họa từ chuột và con trỏ
zoom Phóng to thu nhỏ đồ thị 2D

Miền quan tâm (Region of Interest)


dragrect Kéo hình các chữ nhật XOR bằng chuột
drawnow Hoàn thành các họa tiết đang chờ
rbbox Rubberband box

Giao diện đồ họa (raphical User Interfaces)


Hộp thoại (Dialog Boxes)
dialog Tạo 1 hộp thoại
errordlg Tạo hộp thoại lỗi
helpdlg Hiển thị hộp thoại trợ giúp
inputdlg Tạo 1 hộp thoại nhập dữ liệu vào
listdlg Tạo hộp lựa chọn danh sách
msgbox Tạo 1 hộp thoại thông báo
pagedlg Hiển thị dàn trang trên hộp thoại
printdlg Hiển thị hộp thoại in
questdlg Tạo hộp thoại yêu cầu
uigetfile Hiển thị hộp thoại lấy tên của file để đọc
uiputfile Hiển thị hộp thoại lất tên của file để ghi
uisetcolor Đặt tương tác màu sử dụng trong hộp thoại
uisetfont Đặt tương tác font sử dụng trong hộp thoại
warndlg Tạo 1 hộp thoại cảnh báo
97

Phát triển giao diện người sử dụng (User Interface Development)


guidata Lưu trữ và lấy lại dữ liệu ứng dụng
guihandles Tạo 1 cấu trúc điều khiển
movegui Di chuyển hình ảnh giao diện trên màn hình
openfig Mở và xây dựng hình ảnh giao diện
guide Mở giao diện trình soạn thảo
inspect Hiển thị kiểm tra tính chất

Vào ra cổng nối tiếp (Serial Port I/O)


Tạo một đối tượng cổng nối tiếp
serial Tạo một đối tượng cổng nối tiếp

Viết và đọc dữ liệu (Writing and Reading Data)


fgetl Đọc 1 dòng văn bản từ thiết bị và không giới hạn
fgets Đọc 1 dòng văn bản từ thiết bị và giới hạn
fprintf Ghi văn bản vào thiết bị
fread Đọc dữ liệu nhị phân từ thiết bị
fscanf Đọc dữ liệu từ thiế bị và format dạng text
fwrite Ghi dữ liệu nhị phân vôaf thiêt bị
readasync Read data asynchronously from the device
stopasync Stop asynchronous read and write operations

Định hình và trả lại thuộc tính (Configuring and Returning Properties)
get Trả lại các tính chất đối tượng cổng nối tiếp
set Đặt cấu hình hoặc hiển thị các tính chất đối tượng cổng nối tiếp

Thay đổi trạng thái (State Change)


fclose Ngắt một đối tượng cổng nối tiếp khỏi thiết bị
fopen Nối đối tượng cổng nối tiếp với thiết bị
record Ghi dữ liệu và thông tin sự kiện vào 1 file

Lệnh đa năng (General Purpose)


clear Loại bỏ đối tượng cổng nối tiếp khỏi không gian làm việc của MATLAB
delete Loại bỏ đối tượng cổng nối tiếp khỏi bộ nhớ
disp Hiển thị thông tin tóm tắt đối tượng cổng nối tiếp
instraction Hiển thị thông tin sự kiện một sự kiện xảy ra
instrfind Trả lại các đối tượng tờ bộ nhớ tới không gian làm việc MATLAB
isvalid Xác định xem các đối tượng cổng nối tiếp có hiệu lực không
length Độ dài mảng đối tượng cổng nối tiếp
load Nhập các biến và các đối tượng từ cổng nối tiếp vào không gian làm việc của
MATLAB
save Lưu các biến và các đối tượng cổng nối tiếp vào MAT-file
serialbreak Gửi tín hiệu dừng tới thiết bị nối với cổng song song
size Cỡ mảng đối tượng cổng nối tiếp
98

You might also like