Tải bản đầy đủ (.doc) (174 trang)

bài giảng MATLAB simulink

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (3.24 MB, 174 trang )

CHƯƠNG 1: MATLAB CƠ BẢN
MATLAB viết tắt cho "Matrix Laboratory" - Phòng thí nghiệm ma trận. Ban đầu
Matlab được thiết kế bởi Cleve Moler vào những năm 1970 để sử dụng như một công cụ
dạy học. Từ đó đến nay nó đã được phát triển thành một bộ phần mềm thương mại rất
thành công.
Hiện nay MATLAB R14 là một bộ phần mềm cho công việc tính toán trong các
ngành kỹ thuật, trong khoa học và trong lĩnh vực toán học ứng dụng. Matlab cho ta mộ t
ngôn ngữ lập trình mạnh, giao diện đồ họa xuất sắc, và một phạm vi rất rộng các kiến thức
chuyên môn. Matlab là một thương hiệu đã được thương mại hóa của tập đoàn
MathWorks, Massachusetts, USA (hiện là nhà cung cấp hàng đầu thế giới cho các phần
mềm tính toán kỹ thuật và thiết kế dựa trên mô hình).
Có lẽ cách dễ nhất để hìng dung về MATLAB là nó có đầy đủ các đặc điểm của máy
tính cá nhân: giống như các máy tính cơ bản, nó làm tất cả các phép tính toán học cơ bản
như cộng, trừ, nhân, chia; giống như máy tính kỹ thuật, nó bao gồm: số phức, căn thức, số
mũ, logarithm, các phép toán lượng giác như sine, cosine, tang; nó cũng giống như máy
tính có khả năng lập trình, có thể lưu trữ, tìm kiếm lại dữ liệu, cũng có thể tạo, bảo vệ và ghi
trình tự các lệnh để tự động phép toán khi giải quyết các vấn đề, bạn có thể so sánh logic,
điều khiển thực hiên lệnh để đảm bảo tính đúng đắn của phép toán. Giống như các máy tính
hiện đại nhất, nó cho phép bạn biểu diễn dữ liệu dới nhiều dạng như: biểu diễn thông thường,
ma trân đại số, các hàm tổ hợp và có thể thao tác với dữ liệu thường cũng như đối với ma
trận.
Trong thực tế MATLAB còn ứng dụng rất rộng rãi trong nhiều lĩnh vực và nó cũng
sử dụng rất nhiều các phép tính toán học. Với những đặc điểm đó và khả năng thân thiện với
người sử dụng nên nó dễ dàng sử dụng hơn các ngôn ngữ khác như Basic, Pascal, C.
Nó cung cấp một môi trường phong phú cho biểu diễn dữ liệu, và có khả năng mạnh
mẽ về đồ hoạ, bạn có thể tạo các giao diện riêng cho người sử dụng(GUIs) để gải quyết
những vấn đề riêng cho mình. Thêm vào đó MATLAB đưa ra những công cụ để giải quyết
những vấn đề đặc biệt, gọi là Toolbox (hộp công cụ). Ví dụ Student Edition của MATLAB
bao gồm cả Toolbox điều khiển hệ thống, Toolbox xử lí tín hiệu, Toolbox biểu tượng toán
học. Ngoài ra bạn có thể tạo Toolbox cho riêng mình.
1


Trong quá trình học, Matlab sẽ được giới thiệu một số các chức năng sau:
“Matrix laboratory”
Hệ thống tính toán khoa học kỹ thuật
Ngôn ngữ lập trình cấp cao
Thư viện hàm phong phú
Mô phỏng, vẽ đồ thị, biểu đồ
Phân tích dữ liệu
Phát triển phần mềm kỹ thuật
Phiên bản mới nhất: Matlab 2008.
1.1. Cài đặt chương trình Matlab
Matlab là một chương trình ứng dụng tương thích với các bộ vi xử lý intel với bộ
đồng xử lý 487, pentium hoặc pentium professor. Chương trình này có thể chạy tốt trên
các hệ điều hành như Window98, Window xp, Window NT, Window Vita.
Yêu cầu tối thiểu cho một hệ thống khi cài đặt Matlab 7.0 như sau:
- Windows 2000, XP, NT, Vita đều có thể chạy được Matab
- Card đồ họa tối thiểu 8 bit (256 màu)
- Ram tối thiểu 128Mb
- CD-ROM
- HDD từ 25Mb đến hơn 1Gb tùy thuộc vào cách chọn cấu hình cài đặt cho
Matlab, và tới 2.1Gb nếu cài Matlab và Simulink
1.2. Không gian làm việc của Matlab
Khi bạn chạy chương trình MATLAB, nó sẽ tạo một hoặc nhiều cửa sổ trên màn hình.
Về cơ bản, không gian làm việc của Matlab bao gồm các phần sau:
- Cửa sổ trợ giúp (Help Window)
- Cửa sổ lệnh (Command Window)
- Cửa sổ không gian làm việc (Workspace Window)
2
- Cửa sổ quá trình lệnh (Command History Window)
- Cửa sổ biến (Array Editor Window)
- Cửa sổ địa chỉ thư mục hiện thời (Current Directory Window)

Hình 1.1. Không gian làm việc trong Matlab
Không gian làm việc trong Matlab chia làm nhiều cửa sổ khác nhau nhưng chủ yêu
là 3 của sổ chính. Đó là của sổ lệnh (Command Window) là nơi giao tiếp trực tiếp với
người viết chương trình. Các lệnh được gõ vào Matlab được thực hiện sau dâu “>>” của
của sổ này. Của sổ History Window lưu trữ lại các lệnh mà người thực hiện đã sử dụng,
cho phép sử dụng lại bất kỳ thời điểm nào khi thực hiện chương trình. Việc này làm cho
quá trình thao tác và thực hiện công việc trở nên nhanh chóng hơn. Cửa sổ thứ 3 là cửa sổ
biến (Variable Window) là nơi lưu trữ lại các biến hiện hành của chương trình. Giúp dễ
dàng giám sát và gỡ rối khi tiến hành mô phỏng.
Bên cạnh các không giam làm việc chính, Matlab còn cho phép mở rộng và xây
dựng các bài mô phỏng với các không gian làm việc khác như M-file, simulink, các thư
viện mở rộng với các thư viện liên kết có sẵn giúp dễ dàng mô phỏng và thiết kế dự án.
3
Hình 1.2. Không gian làm việc với M-file
Một trong các thế mạnh của Matlab chính là các thư viện mô tả toán học có sắn, là
giao diện đồ họa với người sử dụng. Giao diện quen thuộc được sử dụng nhiều đối với các
kỹ sư điều khiển tự động là giao diện làm việc mới Simulink như hình dưới đây.
Hình 1.3. Một số thư viện có sẵn trong Simulink
Hình 1.4. Không gian làm việc với Simulink
4
1.3. Biến trong Matlab
1.3.1. Tạo biến trong Matlab
Giống như những ngôn ngữ lập trình khác, MATLAB có những quy định riêng về
tên
biến. Trước tiên tên biến phải là một từ, không chứa dấu cách, và tên biến phải có
những quy tuân thủ những quy tắc sau:
- Tên biến có phân biệt chữ hoa chữ thường. Ví dụ: Iterms, iterms, itErms, và
ITERMS là các biến khác nhau.
- Tên biến có thể chứa nhiều nhất 31 kí tự, còn các kí tự sau kí tự thứ 31 bị lờ đi.
- Tên biến bắt đầu phải là chữ cái, tiếp theo có thể là chữ số, số gạch dưới.

- Kí tự chấm câu không được phép dùng vì nó có những ý nghĩa đặc biệt .
Bảng 1: Các biến đặc biệt
Các biến đặc biệt Giá trị
ans Tên biến mặc định trả về kết quả
pi = 3.1425… Số pi
Eps Số nhỏ nhất, được cộng với 1 để được số nhỏ nhất
lớn hơn 1
floors Số của phép toán số thực
inf Để chỉ số vô cùng hoặc kết quả 1/0
NaN Dùng để chỉ số không xác định như kết quả 0/0
i và j Chỉ các số thuộc trục ảo
nargin Số các đói số đa vào hàm được sử dụng
narout Số các sối số hàm đa ra
realmin Số nhỏ nhất có thể được của số thực
realmax Số lớn nhất có thể được của số thực
Cùng với những quy định trên, MATLAB có những biến đặc biệt trong bảng sau:
Ví dụ:
>> erases = 4;
>> pads = 6;
>> tape = 2;
>> iterms = eases + pads + tape
iterms=
12
5
>> erases = 6
erases=
6
>>iterms
iterms=
12

Như ví dụ trên, khi biến erases thay đổi thì giá trị của biến iterms vẫn không thây đổi.
Đó là do khi MATLAB thực hiện một phép tính, nó lấy giá trị của các biến hiện thời, nên
nếu muốn tính giá trị mới của iterms, cost, average_cost, ta phải gọi lại các lệnh tính các
giá trị đó.
Đối với các biến đặc biệt như đã chỉ ra ở trên, nó có sẵn giá trị, như vậy khi bạn khởi
động MATLAB; nếu bạn thay đổi giá trị của nó thì những giá trị đặc biệt ban đầu sẽ bị mất
cho đến khi bạn xoá biến đó đi hoặc khởi động lại MATLAB. Do đó bạn không nên thay
đổi giá trị của biến đặc biệt, trừ khi nó thực sự cần thiết.
1.3.2. Các lệnh kiểm soát biến
* Kiểm tra các biến hiện có trong không gian làm việc
Các dữ liệu và biến được tạo lên trong cửa sổ lệnh, được lưu trong một phần gọi là
không gian làm việc của MATLAB. Muốn xem tên biến trong không gian làm việc của
MATLAB ta dùng lệnh who:
>> who
Your variables are:
D h
buiding_height theta
Mỗi biến được liệt kê với kích cỡ của nó, số bytes sử dụng, và các lớp của chúng
(class),
trong ví dụ đặc biệt này, các biến đều là số đơn, có độ chính xác hai số sau dấu phẩy.
Lệnh whos đặc biệt có ích khi nghiên cứu đến phần mảng và các kiểu dữ liệu khác.
>> whos
Name Size Bytes Class
a 1x1 8 double array
b 1x1 8 double array
Ngoài các hàm này, trong mục Show Workspace trong bảng chọn file tạo ra cửa sổ
6
Workspace Browser, nó chứa các thông tin tương tự như lệnh whos. Thêm nữa nó tạo
cho bạn khả năng xoá, làm sạch các biến mà bạn chọn
* Xóa biến trong không gian làm việc

Ngoài ra ta có thể dùng lệnh clear để xoá biến từ không gian làm việc của
MATLAB
Ví dụ:
>> clear h D % Xoá các biến h và D
>> who
Your variables are:
buiding_height theta
* Lưu và phục hồi dữ liệu
Để nhớ các biến, Matlab có thể ghi lại dữ liệu từ file trong máy trình bằng cách
chọn File\Save workspace as… để ghi lại tất cả các biến hiện tại
Tương tự, ta có thể lấy lại tất cả các biến đã ghi từ trước bằng cách lựa chọn
File\Load work space với Matlab 6.0 và 6.5; hay File\Import data với matlab 7.0, 7.5.
Ngoài ra, Matlab còn sử dụng hai lệnh Save và Load để thực hiện lưu và lấy lại các
biến trong không gian làm việc
>> Save Lưu tất cả các biến với tên file là matlab.mat
>> Save dulieu Lưu tất cả các biến trong file dulieu.mat
>> Save dulieu A B C D Lưu các biến A, B, C, D trong file dulieu.mat
1.4. Quản lý tệp
7
Hình 1.5. Cửa sổ thư mục hiện thời của Matlab
Matlab cung cấp cho ta một hệ thống các lệnh cho phép bạn xem, xóa M_file, hiển
thị và thay đổi các thư mục chứa của nó. Để thực hiện được việc này cách đơn giản nhất là
vào của sổ thư mục hiện thời (current directory) của Matlab. Khi đó các biến, chương trình
được tạo ra sẽ được lưu lại trong cửa sổ hiện thời này.
Khi gọi lên một biến, hàm hoặc một chương trình con thì Matlab sẽ thực hiện kiểm
tra các biến, hàm, chương trình con này trong đường dẫn thư mục hiện thời và các đường
dẫn đã được thiết lập trước. Khi tìm thấy các hàm, chương trình con thì Matlab sẽ tiến
hành thực hiện chương trình tương ứng. Nếu không tìm thấy Matlab sẽ báo lỗi chương
trình. Trong trường hợp đó ta phải thêm đường dẫn cho Matlab bằng cách chọn File/set
path và thêm các đường dẫn trong của sổ Set path của Matlab.


Hình 1.6. Cửa sổ Set path quản lý đường dẫn
8
1.5. Các kiểu dữ liệu
Có 15 kiểu dữ liệu chính trong Matlab, các kiểu dữ liệu này đều được định dạng trong
một ma trận hoặc một mảng. Các mảng hay ma trận này có kích thước nhỏ nhất là 0x0 và độ
lớn chỉ phụ thuộc vào bộ nhớ của máy. Các kiểu dữ liệu được chỉ ra như hình dưới đây
Hình 2. Các kiểu dữ liệu trong matlab
Các kiểu dữ liệu User classes và Java classes là các kiểu do người dùng tự định nghĩa,
kiểu dữ liệu hướng đối tượng được sử dụng với giao diện Java của Matlab (gọi là Java from
Matlab).
Kiểu dữ liệu Ví dụ Giải thích
Int8, uint8,
Int16, uint16,
Int32, uint32,
Int64, uint64
Uint16 (65000) Là các số nguyên (interger) có dấu (int) và các
số nguyên không dấu (uint). Một số loại yêu
cầu không gian lưu trữ ít hơn so với số single
và double. Tất cả các kiểu số nguyên trừ int64
và uint64 đều được sử dụng trong các hàm
toán học của Matlab
Single Single (3*10^38) Là kiểu số thực. Kiểu này có không gian lưu
trữ nhỏ hơn kiểu double nhưng độ chính xác
cũng nhỏ hơn kiểu double.
Double 3*10^300
5 + 6i
Là kiểu số thực có giá trị lớn nhất trong
Matlab. Đây là kiểu dữ liệu mặc định trong
matlab

Logical 4>10 Kiểu dữ liệu này chỉ có giá trị 1 và 0 đại diện
cho đúng (true) và sai (false).
9
Char ‘Hello’ Kiểu ký tự.
Cell array A{1,1} = 12;
A{1,2} = ‘red’
Kiểu cell. Kiểu này dữ liệu được cất trong các
ô nhớ có chỉ số xác định, các ô nhớ có thể chứa
các kiểu dữ liệu khác nhau
Function handle @sin Con trỏ chức năng. (pointer to a function, you
can pas function handles to other function)
User class Polymom ([0 -2
-5]
Đối tượng được cấu trúc từ các lớp do người
sử dụng định nghĩa
Java class Java.awt.frame Kiểu đối tượng được thành lập từ java class
1.5.1. Kiểu Integer
Kiểu dữ liệu Dải giá trị Hàm
Integer 8 bit có dấu -2
7
– (2
7
-1) Int8
Integer 16 bit có dấu -2
15
– (2
15
-1) Int16
Integer 32 bit có dấu -2
31

– (2
31
-1) Int32
Integer 64 bit có dấu -2
63
– (2
63
-1) Int64
Integer 8 bit không dấu 0 – (2
8
-1) Uint8
Integer 16 bit không dấu 0 – (2
16
-1) Uint16
Integer 32 bit không dấu 0 – (2
32
-1) Uint32
Integer 64 bit không dấu 0 – (2
64
-1) Uint64
VD: tạo số 325 là kiểu số nguyên 16 bít có dấu cho biến x như sau:
>>x = int16(325)
Nếu số được chuyển sang dạng số nguyên thì số đó sẽ được làm tròn tới số nguyên
gần nhất.
>>x = 325.499
>>int16(x);
Ans =
325
1.5.2. Kiểu số thực
Matlab sử dụng cách mã hõa số thực theo chuẩn IEEE 754 cho số thực. Bất kỳ số thực

nào cũng được mã hóa bởi 64 bít định dạng như sau:
Bít Sử dụng
Double Single
63 31 Dấu (0 = dấu âm; 1 = dấu dương)
62 – 52 30-33 Biểu diễn số mũ
51 – 0 22-0 Biểu diễn số thực dấu phẩy động 1.f
Số thực dấu phẩu động có giá trị nằm trong dải -3.4 x 10
38
– 3.4 x10
38
. Với các số nằm
trong giới hạn này ta có thể sử dụng cả hai loại là double hay single.
10
>> y = 28362517.63
y =
2.8363e+007
>> z = double (1234564566)
z =
1.2346e+009
* Các lỗi thường xẩy ra với sô các phép toán số thực dấu phẩu động.
Hầu hết các phép tính trong Matlab được thực hiện với số thực thực kiểu double. Do
máy tính chỉ có một độ chính xác nhất định (với số thực double thì phần định giá trị là 52
bits). Việc tính toán bằng máy tính đôi lúc đưa ra các kết quả không đúng với toán học, tuy
nhiên đây không phải là lỗi của chương trình Matlab.
Làm tròn xuống (round off) hay kết quả thu được không chính xác
Số thập phân 4/3 là một số không thể biểu diễn chính xác được bằng các số binary. Vì
lý do này, việc tính toán như ví dụ sau đây sẽ không cho kết quả là 0
>> e = 1 - 3*(4/3 - 1)
e =
2.2204e-016

Tương tự như vậy, số 0.1 cũng không thể biểu diễn một cách chính xác khi sử dụng
các số binary. Do đó, phép toán sau đây không thu được kết quả như mong muốn:
>> a = 0.0;
for i = 1:10
a = a + 0.1;
end
a==1
ans =
0
Cần lưu ý là thứ tự tính toán cũng là nguyên nhân gây ra sai sót trong việc tính toán
bằng máy tính.
>> b = 1e-16 + 1 - 1e-16;
c = 1e-16 - 1e-16 + 1;
b==c
11
ans =
0
Việc biểu diễn các số này là không liên tục, giữa các số luôn có “khoảng cách”, khi
các số được biểu diễn lớn lên thì “khoảng cách” giữa chúng cũng lớn lên. Ta có thể xem xét
ví dụ sau đây:
>> (2^53 + 1) - 2^53
ans =
0
Cũng như vậy, số pi cũng không phải là số pi thực, do đó không có gì ngạc nhiên khi
phép tính sin(pi) không cho kết quả là 0
>> sin(pi)
ans =
1.2246e-016
Mất dấu âm
Khi phép trừ được thực hiện với các toán hạng có giá trị gần như nhau, đôi lúc có thể

gây ra các kết quả không mong muốn. Như ví dụ sau:
>> sqrt(1e-16 + 1) - 1
ans =
0
Số phức
Một trong những đặc điểm mạnh mẽ nhất của MATLAB là làm việc với số phức. Số
phức trong MATLAB được định nghĩa theo nhiều cách, ví dụ như sau:
>> c1 = 1 - 2i % Chèn thêm kí tự i vào phần ảo.
c1=
1.0000 - 2.0000i
>> c1 = 1 - 2j % j ở đây tương tự như i ở trên.
c1=
1.0000 - 2.0000i
>> c2 = 3*(2-sqrt(-1)*3)
6.0000 - 9.0000i
>> c3 = sqrt(-2)
12
c3=
0 + 1.4142i
>> c4 = 6 + sin(.5)*i
c4=
6.0000 + 0.4794i
>> c5 = 6 + sin(.5)*j
c5=
6.0000 + 0.4794i
Trong hai ví dụ cuối, MATLAB mặc định giá trị của i, j dùng cho phần ảo. Nhân với
i
hoặc j được yêu cầu trong trường hợp này, sin(.5)i và sin(.5)j không có ý nghĩa đối
với
MATLAB. Cuối cùng với các kí tự i và j, như ở trong hai ví dụ đầu ở trên chỉ làm việc

với số cố định, không làm việc được với biểu thức.
1.5.3. Các kiểu ký tự, chuỗi và văn bản
Khả năng tính toán rất hữu ích cho việc xuất/nhập kết quả từ/tới màn hình và file
lưu trên đĩa. Để có thể quản lý được văn bản, một loại dữ liệu “character” được sử dụng
trong Matlab, một văn bản đơn giản là một chuỗi (vector) hya một mảng ký tư.
>> t1 = ‘A’
>> t2 = ‘bcde’
Các chuỗi có thể được cộng với nhau bằng thao tác trên mảng
>> t3 = [t1, t2]
1.5.4. Kiểu logic
Kiểu dữ liệu logic được đại diện cho giá trị logic đúng hoặc sai bằng các số 1 (đúng)
và 0 (sai). Các hàm của Matlab trả về giá trị đúng hoặc sai tương ứng với các biểu thức
điều kiện của nó, ví dụ như phép toán (5*10)>40 sẽ trả về giá trị đúng.
Khi làm việc với mảng, Matlab sẽ trả về một vecto các giá trị logic tương ứng với
các giá trị đúng và sai trong mảng đó. Ví dụ như sau:
>> [30 40 50 60 70 80]>45
13
ans = 0 0 1 1 1 1
* Tạo ra một mảng logic
Các phép toán với kiểu dữ liệu logic
1.6. Các hàm toán học thông thường trong Matlab
Các hàm toán học của MATLAB được liệt kê trong bảng dưới đây:

Các phép toán làm việc với Matlab
Phép toán Biểu tượng
a + b +
a – b -
a*b *
a/b; a\b / hoặc \
a

b
^
Các phép toán so sánh và làm việc với toán tử logic
Toán tử Cú phá Mô tả
< A<B Nhỏ hơn
<= A<=B Nhỏ hơn hoặc bằng
> A>B Lớn hơn
>= A>=B Lớn hơn hoặc bằng
== A == B Bằng
~= A~=B Khác
& A & B Và (and)
| A | B Hoặc (or)
~ ~A Đảo
Các hàm toán học thông thường
Hàm Ý nghĩa
abs(x) Lấy giá trị tuyệt đối (argument) của x
acos(x) Tính arccos(x)
angle(x) Tính góc số phức x
asin(x) Tính acrsin(x)
atan(x) Tính arctg(x)
conj(x) Tính số phức liên hợp
cos(x) Tính cos(x)
exp(x) Tính e
x
fix(x), floor(x) Làm tròn xuống
gdc(x, y) Ước số chung lớn nhất của x, y
imag(x) Trả về phần ảo của số x
Log10(x) Tính logarit cơ số 10 của x
14
log(x) Tính logarit cơ só tự nhiên

Real(x) Trả về phần thực của x
rem(x, y) Trả về phần dư của phép chia x/y
round(x) Làm tròn x
sign(x) Tả về dầu của x
sin(x) Tính sin (x)
sqrt(x) Tính căn bậc hai của x
tan(x) Tính tan
Chúng đều có chung một cách gọi hàm như ví dụ sau:
>> x = sqrt(2)/2
x=
0.7071
>> y = sin(x)
y=
0.7854
>> y_deg = y*180/pi
y_deg=
45.0000
>> y=sqrt(3^2+4^2)
y =
5
Ví dụ 1: Tính chiều cao của ngôi nhà khi biết chiều dài bóng của ngôi nhà là 100m và góc
giữa tia nắng mặt trời với mặt đất là 60
0
.
Ví dụ 2: Sự phân rã của phân tử polonium có chu kỳ phân rã là 140 ngày. Tức là sau 140
ngày thì lượng polonium còn lại ½ lượng ban đầu. Hỏi nếu có 10g polonium thì nó còn lại
bao nhiêu sau 250 ngày?
Ví dụ 3: Bạn mua một o tô mới với giá là 18.500$. Người bán hàng đưa ra hai giải pháp về
tài chính là: thứ nhất, trả lãi của số tiền trên là 2.9% trong vòng 4 năm. Thứ 2 là trả lãi
8.9% số tiền trên trong vòng 4 năm và giá bán được giảm đi một khoản là 1500$. Hỏi giải

pháp nào bạn mua được ô tô với giá rẻ hơn.
2. Định dạng hiển thị số cho Matlab
15
Khi Matlab hiển thị kết quả, nó thường dùng cách hiển thị mặc định. Nếu kết quả là
số nguyên thì nó hiển thị là số nguyên, khi kết quả là số thực thì Matlab hiển thị số xấp xỉ
với bốn chữ số sau dấu phẩy, còn khi là số dạng khoa học thì Matlab hiển thị giống như số
trong các máy tính khoa học.
Tuy nhiên chúng ta có thể định lại cách hiển thị bằng cách chọn File/Preferences…
hoặc sử dụng lệnh trong bảng sau:
Lệnh của Matlab Giá trị hiển thị Ghi chú
format short 50.333 5 số
format long 50.33333333333333 16 số
format short e 5.0333e+1 5 số với mũ
format long e 5.033333333333333e+1 16 số với số mũ
format short g 50.333 Chính xác hơn format
short hoặc format short e
format long g 50.33333333333333 Chính xác hơn format
long hoặc format long e
format hex 40492a9fbe76c8b4 Hệ cơ số 16
1.2. Làm việc với mảng
1.2.1. Giới thiệu chung
Thực tế, Matlab là chữ viết tắt của “matrix laboratory”, vì vậy hơn bất kỳ ngôn ngữ
nào khác, Matlab khuyến khích bạn tận dụng mọi khả năng các mảng, vecto và ma trận.
Mảng (array): là một tập hợp các số, được gọi là các phần tử.
Số chiều: là các chỉ số cần thiết để định nghĩa một phần tử trong mảng. Chảng hạn
mảng 2 chiều sẽ cần 2 chỉ số để đặc trưng cho một phần tử của mảng.
Kích thước: là một danh sách các kích thước của các tập hợp chỉ số
Ma trận: là một mảng hai chiều (có kích thước m x n với các quy luật đặc biệt cho
phép cộng, nhân và các tính toán khác. Nó đặc trưng cho sự biến đổi tuyến tính về toán
học. Hai chiều ma trận là hàng và cột.

Vector: là một ma trận một chiều, có thể là ma trận hàng hoặc ma trận cột.
16
1.2.2. Vector hàng
Ma trận hàng là một ma trận mà chỉ chứa một hàng và nhiều cột. ví dụ như ma trận:
X = [1 2 3 4 5 6 7 8 9]
Là một mâ trận hàng có 9 phần tử, các phần tử có thể được phần biệt với nhau bởi
dấu “,” hoặc dấu cách. Cú pháp cơ bản để nhập 1 ma trận hàng là một chuỗi các giá trị
được bao trong cặp dấu ngoặc vuông [ ].
>> X = [1 2 3 4 5 6 7 8 9]
X =
1 2 3 4 5 6 7 8 9
Việc thực hiện nhập trực tiếp chỉ khả thi khi số lượng phần tử trng mảng còn ít, với
những mảng có kích thước lớn thì ta có thể dùng các lệnh được liệt kê trong bảng sau:
Lệnh Giải thích
X = first : last Tạo véc tơ hàng x bắt đầu tại first, phần tử sau
được tính bằng phần tử trước cộng với 1, kết thúc
là phần tử last
X = first : increment : last Tạo vec tơ hàng x bắt đầu tại first, phần tử sau
được tính bằng phần tử trước cộng với increment
và kết thúc là phần tử last
X = linspace(fist, last, n) Tạo vec tơ hàng x có n phần tử bắt đầu tại first và
kết thúc tại last
X = logspace (first, last, n) Tạo vec tơ hàng có n phần tử bắt đầu tại 10
first

kết thúc tại 10
last
.
+ Tạo mảng với dấu “:”
>> y = 1 : 9

y =
1 2 3 4 5 6 7 8 9
>> x = 3:-1:1
x =
17
3 2 1
+ Tạo mảng với lệnh linspace:
>> z = linspace(0,pi,8)
z =
0 0.4488 0.8976 1.3464 2952 2.2440 2.6928 3.1416
1.2.3. Vector cột (ma trận cột)
Ma trận cột là một ma trận chứa một cột và nhiều hàng. Để tạo ma trận cột có một
số cách sau đây:
+ Nhập trực tiếp ma trận cột: các giá trị của ma trận cột được nhập trực tiếp vào Matlab,
các giá trị này được ngăn cách nhau bởi dấu “;” và toàn bộ các phần tử nằm trong dấu [ ].
Ví dụ:
>> c = [1;2;3;4;5]
c =
1
2
3
4
5
+ Tạo ma trận cột bằng toán tử chuyển vị (‘) : Đây là cách thường được dùng nhất để tạo
các ma trận cột. Đầu tiên là tạo ra một ma trận hàng giống như ma trận cột mong muốn
bằng toán tử “:”, các lệnh linspace, logspace sau đó chuyển vị thành ma trận cột. Ví dụ:
>> a = 1:5
a =
1 2 3 4 5
18

>> b = a'
b =
1
2
3
4
5
Ngoài ra, việc tạo ra các ma trạn hàng, cột có thể thực hiện được bằng các ghép các
ma trận hàng, cột với nhau hoặc tách các phần tử hàng, cột từ các ma trận đã có sẵn.
1.2.4. Các phép toán với mảng đơn
Các phép toán với mảng đơn được trình bầy như trong bảng sau:
Dữ liệu minh họa a = [a
1
a
2
… a
n
]; b = [b
1
b
2
… b
3
]; c : hằng số
Cộng cố với mảng đơn a + c = [a
1
+c a
2
+c … a
n

+c]
Nhân số với mảng đơn a*c = [a
1
*c a
2
*c … a
n
*c]
Cộng mảng a + b = [a
1
+b
1
a
2
+b
2
… a
n
+b
n
]
Chia phải mảng a./b = [a
1
/b
1
a
2
/b
2
… a

n
/b
n
]
Chia trái mảng a.\b = [a
1
\b
1
a
2
\b
2
… a
n
\b
n
]
Lũy thừa mảng a.^c = [a
1
^c a
2
^c … a
n
^c]
c.^a = [c^a
1
c^a
2
… c^a
n

];
a.^b = [a
1
^b
1
a
2
^b
2
… a
n
^b
n
]
Khai báo các mảng a, b và hằng số c như sau:
>> a = 1:5
a =
1 2 3 4 5
>> b = linspace(0,8,5)
b =
0 2 4 6 8
19
>> c = 3
c =
3
Thực hiện các phép toán:
>> a + c
ans =
4 5 6 7 8
>> c*a

ans =
3 6 9 12 15
>> a.^c
ans =
1 8 27 64 125
>> c.^a
ans =
3 9 27 81 243
>> a+b
ans =
1 4 7 10 13
>> a.^b
ans =
1 4 81 4096 390625
20
1.2.5. Ma trận
Như đã đề cập ở trước, ma trận là một cấu rúc dữ liệu cơ bản của Matlab gồm các
hàng và cột, các vecto chẳng qua chỉ là các ma trận đặc biệt có kích thước (1 x n) hoặc (m
x 1).
Từ dấu nhắc của cửa sổ lệnh, đánh lệnh “help elmat” và “help matfun” để có được
các danh sách hàm và lệnh làm việc với ma trận trong Matlab.
Việc tạo ra một ma trận có thể thực hiện bằng cách nhập vào các phần tử tương tự
như với các vec tơ. Khoảng trống (hoặc dấu , ) phân cách các phần tử trong hàng còn dấu
“;” phân cách các hàng với nhau. Ví dụ:
>> a= [1 2 3; 4 5 6; 7 8 9]
a =
1 2 3
4 5 6
7 8 9
Trong ma trận, việc truy cập đến các phần tử của mảng được thông qua các chỉ số.

Với ma trận có thể truy cập bằng cách sử dụng chỉ số của ma trận hoặc sử dụng chỉ số
hàng và cột. Ví dụ, gán phần tử ở hàng 3 cột 3 của ma trận a = 0 như sau:
>> a(3,3) = 0 % Truy cập qua chỉ số hàng và cột
a =
1 2 3
4 5 6
7 8 0
Gán phần tử ở hàng 2, cột 2 ma trận a = -1
21
Đôi khi, để tiện lợi hơn ta chỉ dùng chỉ số đơn để truy nhập đến các phần tử của
mảng. Khi chỉ số đơn được dùng trong Matlab thì thứ tự các phần tử được tính bắt đầu từ
phần tử đầu tiên của cột 1 hàng 1, và tính hết một cột thì đến cột tiếp theo.
>> a(5) = -1 % Truy cập qua chỉ số đơn
a =
1 2 3
4 -1 6
7 8 0
>> a(3:7)
ans =
7 2 5 8 3
Khi thêm vào ma trận một phần tử nằm ngoài số hàng và cột ma trận đang có thì nó
kích thước của ma trận sẽ được tự động tăng lên cho phù hợp, các phần tử tăng thêm được
điền giá trị 0
>> a(2,6) = 20
a =
1 2 3 0 0 0
4 -1 6 0 0 20
7 8 0 0 0 0
Mặt khác, ta có thể dùng dấy “:” để thay thế cho các hàng, cột, hay một số phần tử
trong ma trận. Xem xét các ví dụ sau:

>> a(:,4) = 4 % Gán các phần tử ở cột số 4 bằng 4
a =
1 2 3 4 0 0
22
4 -1 6 4 0 20
7 8 0 4 0 0
>> b = a([1 2],:) % Tạo mảng b từ các hàng 1 và 2 của ma trận a
b =
1 2 3 4 0 0
4 -1 6 4 0 20
>> a(:, [2 5]) = [] % Xóa các phần tử ở cột 2 và 5 của ma trận a
a =
1 3 4 0
4 6 4 20
7 0 4 0
Khi ta gán cho ma trận một ma trận rỗng ([]) thì nó sẽ bị xóa đi, ma trận còn lại sẽ
rút bỏ đi hàng (cột) được gán bằng ma trận rỗng.
Ngoài trường hợp dùng địa chỉ dựa trên chỉ số, ta còn có thể dùng địa chỉ dựa trên
mảng logic. Nếu kích thước mảng logic cân bằng với mảng thì nó chính là địa chỉ của
mảng. Trong trường hợp này thì phần tử true (1) được giữ lại và phần tử false (0) bị bỏ đi.
Ví dụ:
>> a = -3: 3 % Tạo ma trận a
a =
-3 -2 -1 0 1 2 3
>> b = abs(a)>1 % Tạo mảng lấy những phần tử của a có abs(a)>1
b =
1 1 0 0 0 1 1
23
>> c = a(b) % Tạo ma trận c từ ma trận a và ma trận logic b
c =

-3 -2 2 3
Ví dụ 1: Tìm các số nguyên nhỏ hơn 1000 mà chia hết cho 7, chia cho 2,3,4,5,6 dư 1.
* Các phép toán và lệnh làm việc với ma trận
Các phép toán với ma trận. Với các phép toán giữa ma trận và một hằng sô thì tương
tự như phần véc tơ, nên ở đây chỉ giới thiệu các phép toán để tính toán 2 ma trận
A + B Cộng hai ma trận. Yêu cầu kích thước 2 ma trận phải giống
nhau
A - B Trừ hai ma trận. Yêu cầu kích thước 2 ma trận phải giống
nhau
A*B Nhân 2 ma trận. Yêu cầu số cột của ma trận A phải bằng số
hàng của ma trận B
A/B; A\B Chia hai ma trận
A^-1 Tính ma trận nghịch đảo của ma trận A
Các lệnh với ma trận
Lệnh Giải thích
s = size(a)
[r, c] = size(a)
Trả về một véc tơ hàng mà phần tử thứ nhất là số hàng của
a, phần tử thứ 2 là số cột của a
Length(a) Trả về giá trị max(size(a))
Det(a) Tính định thức ma trận a
Inv(a) Tính ma trận chuyền vị
Rank(a) Tìm hạng của ma trận a
isequal(a,b) Cho giá trị đúng nếu a, b giống nhau
ismember(a, b) Cho giá trị đúng khi phần tử của a cũng là phần tử của b
intersect(a, b) Các phần tử chung giữa a, b
setdiff(a, b) Các phần tử có trong a mà không có trong b
setxor(a, b) Các phần tử không thuộc phần chung giữa a và b
union(a,b) Tất cả các phần tử có trong a và b
* Các ma trận đặc biệt

[] Ma trận rỗng
Compan Tạo ma trận rỗng
24
Eye Tạo mà trận đồng nhất (ma trận đơn
vị)
Magic Tạo ma trận vuông, giá trị các phần tử
bằng 1 đến trị số phần tử
Ones Tạo mao trận 1
Rand Tạo ma trận với các phần tử ngẫu
nhiên từ 0 đến 1
Randn Tạo ma trận ngẫu nhiên thông thường
với giá trị trung bình bằng 0
Zeros Tạo ma trận 0
Ma trận đặc biệt thường có ững ứng đụng rộng rãi trong các phép toán. Khi thực
hiện một phép toán mà không có kết quả thì Matlab trả về một ma trận rỗng. Ma trận rỗng
không có kích cỡ, nhưng tên biến của chúng vẫn tồn tại trong không gian làm việc.
Ma trận 0 là ma trận có các phần tử đều mang giá trị 0
>> zeros(2,3)
ans =
0 0 0
0 0 0
Ma trận với các số ngẫu nhiên
>> rand(2)
ans =
0.4447 0.7919
0.6154 0.9218
Ma trận đơn vị
>> eye(3)
ans =
1 0 0

25

Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×