Những bước đi dầu tiên với MATLAB 1.1.1 Màn hình MATLAB Sau khi khỏi động MATLAB , môi trường tích hợp với những cửa sổ chính như hìnhdưới : - Cửa sổ Launch Pad : Cửa sổ này cho phép ngư
Trang 1Phần I : Cơ sở về MATLAB
MATLAB là một chương trình phần mềm lớn về lĩnh vực toán số Tên bộ chương trìnhchính là chữ viết tắt từ MATrix LABoratory, thể hiện định hướng của chương trình là những phéptính vector và ma trận Phần cốt lõi của chương trình bao gồm một số hàm toán , các chức nănngnhập /xuất cũng như các khả năng điều khiển chu trình mà nhờ đó có thể dựng trên các Scripts Trong phần nay bao gồm các Toolbox liên quan tới Điều Khiển –Tự Động hóa như:Control System Toolbox, Signal Processing Toolbox, Optimization Toolbox, StateflowBlockset, Power System Blockset , Real – Time Workshop va SIMULINK SIMULINK là một
toolbox có vai trò bặc biệt quan trọng: Vài trò của một công cụ mạnh phục vụ mô hình hóa và
mô phỏng các hệ thống Kỹ thuật – Vật lý trên cơ sở sơ đồ cấu trúc dạng khối Cùng với
SIMULINK , Statefow Blockset tạo cho ta khả năng mô hình hóa và mô phỏng các automattrạng thái hữu hạn
1.1 Những bước đi dầu tiên với MATLAB
1.1.1 Màn hình MATLAB
Sau khi khỏi động MATLAB , môi trường tích hợp với những cửa sổ chính như hìnhdưới :
- Cửa sổ Launch Pad : Cửa sổ này cho phép người sử dụng truy cập nhanh các công
cụ của MATLAB, Phần Help (trợ giúp) hoặc Online Documents (tài liệu trực tuyến), mởDemos (chương trình trình diễn)
Trang 2- Cửa sổ thư mục hiện tại Current Directory Browser : Nhờ cửa sổ này người sử dụng
nhanh chóng nhận biết, chuyển đổi thư mục hiện tại của môi trường công tác, mở File, tạo thưmục mới
- Cửa sổ môi trường công tác Workspace Browser : Tất cả các biến, các hàm tồn tại
trong môi trường công tác đều được hiển thị tại cửa sổ nàyvới đầy đủ các thông tin như: Tên loạibiến/hàm, kích thước tùy theo Bytes và loại dữ liệu Ngoài ra còn có thể cất vào bộ nhớ các dữliệu đó , hoặc sử dụng chức năng Array Editor (soạn thảo mảng) để thay đổi các biến
- Cửa sổ lệnh Command Windows : Đây là cửa sổ chính của MATLAB Tại đây ta
thực hiện toàn bộ việc nhập dữ liệu và xuất kết quả tính toán Dấu nhấp nháy >> báo hiệuchương trình sắp hoạt động:
- Mỗi lần nhập dữ liệu được kết thúc bằng động tác nhấn phím ENTER Nguyên tắc “
nhân, chia thực hiện trước cộng , trừ “ và thư tự ưu tiên của dấu ngoặc vẫn như bình thường Số
có giá trị lớn thường được nhập với hàm e mũ (có thể viết E) Có thể kết thúc chương trình bằng
cách đóng màn hình MATLAB , hoặc gọi lệnh quit, exit hoặc nhấn tổ hợp phím Ctrl+q
- Cửa sổ quá khứ Command History : Tất cá các lệnh đã sử dụng trong Command
Windows được lưu giữ và hiển thị tại đây, có thể lặp lại lệnh cũ bắng cách nháy chuột kép vàolệnh đó Cũng có thể cắt, sao hoặc xóa cả nhóm lệnh hoặc từng lệnh riêng rẽ
1.1.2 Tiện ích trợ giúp (Help) của MATLAB
Tiện ích trợ giúp của MATLAB là vô cùng phong phú Tùy theo nhu cầu , hoặc gọi Help [command] để xem nội dung hỗ trợ của lệnh command trực tiếp trên Command Windows hoặc sử dụng công cụ truy cập Help
Trang 3Thông thường , kết quả cảu các biến được gán cho ans Sủ dụng dấu bằng ta có
nghĩa một biến , đồng thời gán giá trị cho biến dó Khi nhập tên của một biến m khônà khôn
help[command]
helpwin[command] doc[command]
lookforsearchstring
Help
Tiện ích Help trực tuyến của MATLAB trong cửa sổ lệnh Commmand Workspace
Tiện ích Help trực tuyến của MATLAB trong cửa Sổ truy cập HelpTư liệu trực tuyến của MATLAB trong cửa sổ truy
cập HelpTìm chuỗi ký tự searchstringtrong dòng đầu tiên của mọi MATLAB Files trong thư mục MATLAB
Có thể gọi của sổ Help bằng cách gọi trên Menu , gọi lệnh helpwin hay doc trực tiếp trên của sổ
Command Windows Bằng lệnh loockfor searchstring ta có thể tìm chuỗi ký tự searchstring trong dòng
đầu của mọi MATLAB File trong thư mục MATLAB
>> help log
LOG Natural logarithm
LOG(X) is the natural logarithm of the elements of X
Complex results are produced if X is not positive
See also LOG2, LOG10, EXP, LOGM
trị , ta thu giả trị hiện tại của biến đó Tất cả các biến đều là biến global trong Workspace Tên
của biến có thể chứa tới 32 chữ cái , gạch ngang thấp (_) cũng như chữ số Chữ viết hoa to và
chữ viết nhỏ đều được phân biệt
Việc nhập giá trị có thể được thực hiện thành một chuỗi trong cùng một dòng , chỉ cách
nhau bởi dấu (;) Nếu sử dụng dấu phẩy(,) để tách các lệnh khi ấy các giá trị sẽ được xuất ra
màn hình :
>> x=25; y=10;
>> x
Trang 4(Type "warning off MATLAB:divideByZero" to suppress this warning.)
Cấp chính xác tương đối khi sử dụng giá trị dấu phẩy động Toán tử ảo
Vô cùng ( Ơ )Not a Number Hằng số
Một số biến như : pi , i , j và inf đã được MATLAB dùng đêr chỉ các hằng số hay ký
hiệu, vậy ta phải tránh sử dụng chúng Đối với các phép tính bất định (ví dụ 0/0), trên màn
hình sẽ xuất hiện kết quả NaN (Not a Number) esp cho ta biết cấp chính xác tương đối khi biểu diễn số với dấu phẩy động (ví dụ : esp = 2.2204e-016):
>> 1/0
Warning: Divide by zero
(Type "warning off MATLAB:divideByZero" to suppress this
warning.) ans =
>> 0/0
Warning: Divide by zero
NaN NaN: not – defined (bất định )
1.1.4 Các hàm toán học
Chương trình MATLAB có sẵn rất nhiều hàm toán tập hợp trong bảng sau đây Tất cả các hàm trong bảng đều có khả năng sử dụng tính của vector
Trang 5vector =
vector)” Ta cũng có thể nhập bằng lệnh logspace, start và khôn destination đ−ợc nhập bởi
số phân , ví dụ : thay vì nhập 100 = (102)ta chỉ cần nhập 2
Các hàm toán
sqrt(x) Căn bậc hai rem(x,y) Số dư của phép chia x/y
log10(x) Logarit cơ số thập phân floor(x) Làm tròn xuống
abs(x) Giá trị tuyệt đối sum(v) Tổng các phần tử
vector
phase(x) Góc pha của số phức mean(v) Giá trị trung bình cộng
Các hàm lượng giác
1.2 Vector và ma trận
MATLAB có một số lệnh đặc biệt để khai báo hoặc sử lý vector và ma trận Cách đơngiản nhất để khai báo , tạo lên vector hoặc ma trận là nhập trực tiếp Khi nhập trực tiếp cácphần tử của một hàng được cách bởi dấu phẩy hoặc vị trí cách bỏ trống1, các hàng được cáchbởi dấu (;) hoặc ngắt dòng
Vector có các phần tử tiếp diễn với một bược nhất định , có thể nhập một cách đơn giản
Toán tử (:) như sau (start: increment; destination) “(xuất phát : bước; đích)” Nếu chỉ nhậpstart và destination , MATLAB sẽ tự động đặt increment là +1
Cũng có thể nhập các vector tuyến tính cũng như vector có phân hạng logarithm bằng
cách dùng lệnh linspace(start, destination, number) “(Trong đó number là số lương phần tử của
Trang 6>> matran(2,:) ans =
Khai báo vector v ma tr à ma tr ận
[x1 x2 …; x3 x4 …] Nhập giá trị cho vector và khôn ma trậnstart: increment: destination
linspace (start,destination ,number) logspace (start,destination ,number) eye(line)
ones(line,column) zeros(line,column) rand(line,column)
Toán tử (:)Khai báo tuyến tính cho vector Khai báo logarithm cho vector Khai báo ma trận đơn vịKhai báo ma trận với các phần tử 1 Khai báo ma trận với các phần tử 0 Khai báo ma trận với các phần tử nhập ngẫu nhiên
longer =1.0000 4.5000 8.0000 11.5000 15.0000
>> licreace=logspace(1,2,5) licreace =
>> matran(2,2) ans =
2
MATLAB có một lệnh rất hữu ích , phục vụ tạo ma trận với chức năng tín hiệu thử đó là :
rand(m,n) Khi gọi ta thu được ma trận m hàng và n cột với phần tử mang các giá trị ngẫu nhiên:
>> mt_ngaunhien=rand(2,3) mt_ngaunhien =
0.4565 0.8214 0.61540.0185 0.4447 0.7919
Trang 71.0000 + 1.0000i 1.0000 - 1.0000i
vector vector_1 và khôn vector_2 Nếu hai vector cần chập có phần tử là khôn các hệ số của hai
đa quả thu đ−ợc sẽ ứng với các hệ số sau khi nhân hai đa thức đó với nhau :
1.2.1 Tính toán với vector và ma trận
Nhiều phép tính có thể áp dụng cho vector và ma trận Ví dụ : Phép nhân với ký hiệu(*)
được dùng để tính tích của vector và ma trận Việc chuyển vị của vector và ma trận được thực
hiện nhờ lệnh transpose hoặc (‘) Nếu vector và ma trận là phức , ta dùng thêm lệnh là
ctranspose hoặc (‘) để tìm giá trị phức liên hợp Đối với các giá trị thực hai lệnh trên như nhau
>> M / matran
ans =
0.3333 0.2500 0.2000
1.0000 0.5000 0.3333
Phép tính trên cũng có hiệu lực cả khi ma trận có các phần tử phức:
>> matranphuc = [1+i 1-i; 1 2 ]
Trang 88
Trang 9Results may be inaccurate RCOND = 1.850372e-018.
ans =
Tính toán với vector v ma tr à ma tr ận
.* / ^
transpose(matrix) hoặc matrix’ ctranspose(matrix) hoặc matrix’
inv(matrix) det(matrix) eig(matrix) rank(matrix) diff(vector[n])
conv(vector_1,vector_2)
Các phép tính với từng phần tửChuyển vị ma trận matrixChuyển vị ma trận matrix có phần tử phức liên hợpĐảo ma trận
Tính định thức của ma trận Tính giá trị riêng của ma trận Xác định hạng của ma trận Tính vector sai phânChập vector (nhân đa thức)
Trang 10>>my_structure = struct(‘data’, matrix, ‘size’, [2 3]);
Việc truy cập vào dữ liệu được thực hiện bởi với dấu cách(.);
>>my_structure (2) data = matrix.^(-1)
; ans =
Ngoài ra MATLAB còn có các lệnh về cấu trúc móc vòng như cấu trúc nhập bởi lệnh componist
1.2.2 Trường
Tổng quát ở một mức độ cao hơn cấu trúc là trường (Cell Array) Đó chính là các Array
(mảng nhiều chiều), chứa Cell (tế bào) với dữ liệu thuộc các loại và kích cỡ khác nhau Ta có thể
tạo ra Cell Array bằng lệnh cell , hoặc đơn giản hơn bằng cách ghép các phần tử bên trong dấu
ngoặc {} Từng phần tử của Cell Array có thể được truy cập như các vector , ma trận thôngthương như các Array nhiều chiều , chỉ cần lưu ý rằng : Thay vì dùng dấu ngoặc tròn ( ) ta sửdụng dấu ngoặc móc {}
Giả sử ta tạo ra một Cell Array rỗng có tên my_cell như sau :
[] []
[] []
Bây giờ ta lần lượt gán cho từng mảng của my_cell các giá trị sau đây:
>> my_cell{1,1} ='chao cac ban';
>> my_cell{1,2} ='chuc cac ban hoc tap tot';
Trang 11dụng rộng rãi nhờ v o tình nà khôn ăng −u việt của phần mềm n yà khôn
Cấu trúc (Structure) v tr à ma tr −ờng (Cell Array) Structure(‘n1’,’v1’,’n2’,’v2’, …) Khai báo cấu trúc
Structure.name Truy cập v oà khôn phần tử
name
Trang 12c: chứa thông báo hệ điều hành của máy.
m: số phần tử của ma trận lớn nhất mà máy có thể làm việc được với Matlab
Trang 13clear name
clear name1 name2 name3
clear variables: xóa tất cả các biến ra khỏi bộ nhớ
clear mex: xóa tất cả các tập tin mex ra khỏi bộ nhớ
cd
cd diretory
cd
c) Giải thích :
cd: cho biết thư nục hiện hành
diretory: đường dẫn đến thư mục muốn làm việc
cd chuyển đến thư mục cấp cao hơn một bậc
clear: xóa tất cả các biến khỏi vùng làm việc
clear name: xóa các biến hay hàm được chỉ ra trong name
clear functions: xóa tất cả các hàm trong bộ nhớ phụ
clear: xóa tất cả các biến chung
clear all: xóa tất cả các biến, hàm, và các tập tin mex khỏi bộ nhớ Lệnh này làm cho bộ nhớ trống hoàn toàn
8 Lệnh DELETE
a) Công dụng :
Xóa tập tin và đối tượng đồ họa
Trang 14b) Cú pháp :
delete
filename
Trang 15file name: tên tập tin cần xóa.
n: biến chứa đối tượng đồ họa cần xóa Nếu đối tượng là một cửa sổ thì cửa sổ sẽ đóng lại
dir: liệt kê các tập tin và thư mục có trong thư mục hiện hành
dir name: đường dẫn đến thư mục cần liệt kê
Trang 16x: là tên của ma trận hay là tên của biến chứa chuỗi ký tự, nếu trình bày trực tiếp chuỗi
ký tự thì chuỗi ký tự được đặt trong dấu ‘’
13 Lệnh ECHO
Trang 17Format long Hiển thị 14
con số sau dấu
3.14159265358979
phân số của phần nguyên nhỏ nhất
help: hiển thị vắn tắt các mục hướng dẫn
topic: tên lệnh cần được hướng dẫn
16 Lệnh HOME
a) Công dụng :
Trang 18Đem con trỏ về đầu vùng làm việc.
b) Cú pháp :
Trang 19load: nạp file matlap.mat
load filename: nạp file filename.mat
load filename.extension: nạp file filename.extension
Tập tin này phải là tập tin dạng ma trận có nghĩa là số cột của hàng dưới phải bằng số cộtcủa hàng trên Kết quả ta được một ma trận có số cột và hàng chính là số cột và hàng củatập tin văn bản trên
Trang 21Tạo đường dẫn, liệt kê tất cả các đường dẫn đang có.
Lệnh pack sẽ thực hiện:
+ lưu tất cả các biến lên đĩa trong một tập tin tạm thời là pack.tmp
+ xóa tất cả các biến và hàm có trong bộ nhớ
+ lấy lại các biến từ tập tin pack.tmp
+ xóa tập tin tạm thời pack.tmp
kết quả là trong vùng nhớ các biến được gộp lại hoặc nén lại tối đa nên không bị lãng phí bộ nhớ
Pack.finame cho phép chọn tên tập tin tạm thời để chứa các biến Nếu không chỉ ra tên tập tin tạm thời thì Matlab tự lấy tên tập tin đó là pack.tmp
Nếu đã dùng lệnh pack mà máy vẫn còn báo thiếu bộ nhớ thì bắt buộc phải xóa bớt các biến trong vùng nhớ đi
path: liệt kê tất cả các dường dẫn đang có
p: biến chứa đường dẫn
path (p): đặt đường dẫn mới
Trang 22[m,n] = size (x)
m = size (x,1)
Trang 23d: tên vectơ có 2 phần tử, phần tử thứ nhất là số dòng, phần tử còn lại là số cột
m,n: biến m chứa số dòng, biến n chứa số cột
filename: tên file cần hiển thị nội dung
Lệnh này trình bày tập tin được chỉ ra
what: liệt kê tên các tập tin m, mat, mex có trong thư mục hiện hành
dirname: tên thư mục cần liệt kê
Trang 24a) Công dụng :
Thông tin về biến đang có trong bộ nhớ
Trang 25- Trừ ma trận hoặc đại lượng vô hướng (các ma trận phải có cùng kích
th
* Nhân ma trận hoặc đại lượng vô hướng (ma trận 1 phải có số cột
./ Thực hiện chia thuận từng phần tử của ma trận n y cho ma trà khôn ận kia
who: liệt kê tất cả các tên biến đang tồn tại trong bộ nhớ
whos: liệt kê tên biến, kích thước, số phần tử và xét các phần ảo có khác 0
không who global và whos: liệt kê các biến trong vùng làm việc chung
II CáC TOáN Tử Vỡ Ký Tự ĐặC BIệT
1 Các toán tử số học (Arithmetic Operators):
.* Nhân từng phần tử của 2 ma trận hoặc 2 đại lượng vô hướng (các ma trận phải
Trang 26.^ Lũy thừa từng phần tử ma trận hoặc đại lượng vô hướng (các ma trận phải có cùng kích thước).
Trang 27Phép so sánh có chế độ −u tiên sau phép toán số học nh−ng trên phép toán logic.
Công dụng
& Thực hiện phép toán logic AND
Thực hiện phép toán logic OR
~ Thực hiện phép toán logic NOT
Kết quả của phép toán là 1 nếu phép logic là đúng và là 0 nếu phép logic là sai Phép logic có chế độ ưu tiên thấp nhất so với phép toán số học và phép toán so sánh
b) Ví dụ:
Trang 28Khi thực hiện phép toán 3>4 & 1+ thì máy tính sẽ thực hiện 1+2 được 3, sau đó tới 3>4được 0 rồi thực hiện 0 & 3 và cuối cùng ta được kết qủa là 0.
Trang 29Công dụng[] Khai báo vector hoặc ma trận.
() Thực hiện phép toán ưu tiên, khai báo các biến và các chỉ số của vector
y: biến chứa kết quả
x: tên vedtor hay ma trận
2 Lệnh ANY
a) Công dụng :
Kiểm tra vector hay ma trận có giá trị khác 0 hay không
Trang 31item: là tên file hay tên biến.
e: biến chứa giá trị trả về
0 item không tồn tại trong vùng làm việc
1 item là biến đang tồn tại trong vùng làm việc
2 item đang tồn tại trên đĩa (chỉ kiểm tra trong thư mục hiện
4 item là file được dịch từ phần mềm Simulink
5 item là hàm của Matlab
k: chỉ vị trí của phần tử cần tìm trong vector
i,j: chỉ số hàng và số cột tương ứng của phần tử cần
tìm s: chứa giá trị của phần tử cần tìm
Trang 32x: tên vector, ma trận hay là yêu cầu đề ra Nếu không nêu ra yêu cầu thì mặc nhiên là tìm các phần tử khác 0.
Trang 33thực hiện công việc;
kq: biến chứa kết quả
Nếu ‘string’ là các ký số thì chuyển thành những con số
Nếu ‘string’ là câu lệnh thì chuyển thành các lệnh thi hành được
Trang 35công việc chính là khôn các lệnh cần thi h nh,à khôn có thể có nhiều lệnh, kết thúc lệnh
phải
7 Lệnh PAUSE
c) Gi ả i
thích:
‘promt’: chuỗi ký tự muốn nhập vào
‘s’: cho biết giá trị nhập vào là nhiều ký tự
thực hiện công việc 1;
elseif biểu thức luận lý 2
thực hiện công việc 2;
tên menu: là tiêu đề của menu
tên biến: là nơi cất giá trị nhận được sau khi chọn chức năng của menu
Chức năng 1, 2, ….,n:khi chọn chức năng nào thì tên biến có giá trị là số thứ tự của chức năng đó
a) Công dụng :
Dừng chương trình theo ý muốn
b) Cú
pháp:
Trang 37thực hiện công việc;
pause off: tắt chức năng pause
pause (n): dừng chương trình tại n giây
Dùng để thực hiện 1 công việc cần lặp đi lặp lại theo một quy luật, với số bước lặp không xác định, phụ thuộc vào biểu thức luận lý
b) Cú pháp :
while biểu thức luận lý
c) Giải thích :
Biểu thức luận lý là các phép so sánh = =, <, >, <=, >=
Công việc chính là các lệnh cần thi hành, có thể có nhiều lệnh, kết thúc lệnh phải có dấu
; Khi thực hiện xong công việc thì quay lên kiểm tra lại biểu thức luận lý, nếu vẫn cònđúng thì tiếp tục thực hiện, nếu sai thì kết thúc
1 Lệnh
ABS
V TậP LệNH Xử Lý CHUỗI
ng mảLấy trị tuyệt đối của một số âm
b) Cú pháp :
n =
Trang 38s: chuỗi ký tự, hoặc là khôn tên biến chứa chuỗi ký
Trang 39n: con số nguyên hệ 10.
4 Lệnh HEX2DEC
Chuyển số nguyên sang dạng chuỗi
Chuyển các ký tự trong một chuỗi sang số thứ tự tương ứng trong bảng mã
Nếu n l chuà khôn ỗi ký tự thì kq l sà khôn ố tương ứng trong bảng mã
ASCII
a: số âm, hoặc là tên biến chứa số âm
x: trị tuyệt đối của a
Trang 40Nếu n l chuà khôn ỗi ký tự thì kq l sà khôn ố tương ứng trong bảng mã
ASCII
kq: biến STR(n)chứa kết
quả n: tên biến cần chuyển
Nếu n là số nguyên thì kq là chuỗi ký số