Professional Documents
Culture Documents
Matlab Lecture Notes
Matlab Lecture Notes
MATLAB
TIN HỌC ỨNG DỤNG – HỌC PHẦN II
(Tài liệu tham khảo & Bài tập cho sinh viên Kỹthuật Biển – K45)
Nguyễn Bá Tuyên
Nguyễ
n Quang Chiế n
-1-
Bài giảng Tin Ứng dụng 2 – Matlab 7
MỤC LỤC
-2-
Bài giảng Tin Ứng dụng 2 – Matlab 7
-3-
Bài giảng Tin Ứng dụng 2 – Matlab 7
-4-
Bài giảng Tin Ứng dụng 2 – Matlab 7
VD: Hãy cùng tham khả o các demo của Matlab đểxem ta có thểlàm được những
gì chỉvới một vài dòng lệnh đơn giả
n:
>> colormap(hsv(64))
>> z = cplxgrid(30); % miền không gian số phức đơn vị z
>> cplxmap(z,z^3) % vẽ đồ thị hàm x = z^3 – hinh1
>> cplxroot(3) % vẽ đồ thị hàm y = z^(1/3) – hinh2
-5-
Bài giảng Tin Ứng dụng 2 – Matlab 7
Đểminh họa đ iề
u này, ta xét mộ t ví dụrấ
tđơn giả
n: so sánh phép cộng hai véctơ
trong ngôn ngữlập trình Pascal và MatLab.
u diễ
- Pascal biể n một véctơdưới dạ
ng mả
ng (array), chẳ
ng hạ
n có 3 vec-tơA, B,
C và A + B = C:
var
A: array[1..5] of integer = (3, 7, 4, 2, 0);
B: array[1..5] of integer = (-2, 4, 8, 5, 1);
C: array[1..5] of integer;
i: integer;
begin
for i := 1 to 5 do
begin
C[i] := A[i] + B[i]
end
end.
- Có đ ược sựđ ơn giản nói trên là nhờMatLab đ ã xây dựng sẵn khái niệm ma trận.
Dấ u cộng trong dòng lệ nh MatLab biể u thịphép cộng ma trậ
n. Pascal không được
nhưvậ y; mả ng chỉlà sựbiể u diễn có thứtựcủa các biến. Không có phép cộ ng ma
trận, chỉcó phép cộng hai số– vì vậ y chương trình Pascal dài hơn rất nhiề
u.
- Mộ t đặ
cđ iểm nữa là tấ
t cảcác biến trong chương trình Pascal trên đều phải được
khai báo. Trong MatLab các biến sẽtựđ ộng hình thành trong mỗi câu lệnh gán.
Trong nhữ ng nă m gầnđ ây, bên cạnh các ngôn ngữlậ p trình truyền thố ng (C / C++
/ Fortran), các ngôn ngữvăn lệ nh (scripting languages) đ ược sửdụ ng phổbiế n
hơn trong lĩ nh vực nghiên cứu tính toán. MatLab là một trong các ngôn ngữnhư
vậy. Là một ngôn ngữbậ c cao, mỗ i dòng lệnh MatLab thường có tác dụng tương
đương với khoả ng 10 dòng lệ nh của C / C++. Người lậ p trình sẽtốn ít thời gian gõ
câu lệnh và tập trung hơn vào nội dung chương trình.
-6-
Bài giảng Tin Ứng dụng 2 – Matlab 7
Tuy vậ y các ngôn ngữlậ p trình biên dị ch nhưC / Fortran cho phép chương trình
tính toán rấ t nhanh và tốc độcũng là một yêu cầ u rất quan trọng trong các chương
trình tính lớn. Do đ ó mộ t cách kế t hợp thông minh là phầ n lõi tính toán có thể
đ ược viế t bằ ng ngôn ngữbiên dị ch, và các thao tác nhập xuấ t, xửlí, hiể
n thịsố
liệu được viế t bởi ngôn ngữvă n lệnh nhưMatLab.
-7-
Bài giảng Tin Ứng dụng 2 – Matlab 7
t hướng dẫ
+ Chi tiế n cài đặ
t xin xem file ‘
install_guide.pdf’trong đ
ĩa CD1
n tiế
(bả ng Anh).
1.4.2. Khởi động Matlab (Hệđiều hành Windows)
- TừHĐH Windows, khởi động Matlab đ
ơn giản bằ
ng cách nháy
đ u tượng MATLAB trên màn hình, hoặ
úp vào biể c bằng cách
chọ n MATLAB từMenu Start.
- Quá trình khởi đ
ộng đưa người dùng đế
n Cửa sổlệ
nh, nơi các
dòng lệnh được biểu thị
bằng '>>'.
>>_
Đây là dấu hiệ
u cho thấ
y Matlab đang chờbạ nđánh một (câu) lệ
nh. Khi hoạt độ
ng
trong chếđộmáy tính cầ m tay, tất cảcác lệ
nh của Matlab được nhậ p vào dòng
lệnh từbàn phím.
- Matlab có thểđượ
c sửdụng theo nhiề
u chếđ
ộvà nhiề
u cách khác nhau;
+ Nhưmột máy tính cầ
m tay cao cấ
p trong chếđộmáy tính cầ
m tay
+ Nhưmột ngôn ngữlậ
p trình bậ
c cao
+ Nhưmột chu trình con gọ
i từchương trình C
u này chúng ta sẽđi nghiên cứu chi tiế
Trong tài liệ t 2 chếđộđầ
u tiên.
-8-
Bài giảng Tin Ứng dụng 2 – Matlab 7
n củ
Hình 1.1: Giao diệ a Matlab 7.0
* Nút Start: ởgóc dưới bên trái củ a màn hình Matlab, cho phép ta chạ y các ứng
dụ ng mẫ u (demos), các công cụvà cửa sổchưa hiể n thịkhi khởi độ ng Matlab.
Bằ ng cách đánh lệ nh 'demo' bạ n có thểtiế p cận với mộ t tậ
p hợp sâu rộng những
n giá trịrấ
file trình diễ t cao, vì đó là biể
u hiện cho những khảnă ng của Matlab.
: Thửchạ
Ví dụ y Start -> Matlab -> Demos và chạ
y mộ
t ứng dụ
ng mẫ
u trong cửa
sổDemo(s).
nh này sẽxóa tấ
Ghi chú: Lệ t cảgiá trịcủ
a các biế
n hiệ
n có.
* Cửa sổlệ
nh: đã đ
ược đềcậ
p ởmụ
c 1.4.2. (Khởi độ
ng Matlab).
- Các diễn giải và câu (mệ nh đề) của Matlab được đánh giá khi bạ n gõ vào 'Cửa sổ
lệnh', và các kế t quảtính toán cũ ng được thểhiệ n tạ i đây. Không giố ng như
Fortran và các ngôn ngữtính toán cầ n biên dịch khác, Matlab là mộ t môi trường
tương tác – bạ nđ ưa ra một câu lệnh, và Matlab cốgắ ng thực thi nó ngay lậ p tức
trước khi đòi hỏ i 1 lệ
nh tiế
p theo.
n giả
- Các diễ i và câu cũng đư
ợc sửdụ ng trong các M-file (sẽđượ
c trình bày chi
t ởchương V). Chúng thường có cấ
tiế u trúc:
n = diễ
>> biế i
n giả
c đơn giả
hoặ n là n giả
>> diễ i
n giả
- Các diễ i thường được soạn bằ ng các toán tử, các hàm, và tên các biến, và
được hiển thịtrên màn hình sau khi ấn Enter. Các câu lệ nh có dạng ‘tên biến=
-9-
Bài giảng Tin Ứng dụng 2 – Matlab 7
- 10 -
Bài giảng Tin Ứng dụng 2 – Matlab 7
* Cửa sổđị a chỉthưmục hiệ n thời: Thưmục hiệ n thời là nơi chương trình
Matlab sẽtìm các M-file, và các file không gian làm việc (.mat files) mà bạ
n đã
Load và Save.
- 11 -
Bài giảng Tin Ứng dụng 2 – Matlab 7
- 12 -
Bài giảng Tin Ứng dụng 2 – Matlab 7
u bạ
Ví dụ, nế nđ ánh vào dòng lệ nh 'lookfor logarithm', Matlab sẽliệ
t kê tấ
t cảcác
hàm từng biế
t của Matlab có liên quan tới Logarit.
n cửa sổHelp củ
Hình 1. : Giao diệ a Matlab 7.0
1.8. History & Editing
- Trong giao diệ n mặ c định của Matlab, cử a sổ'Command History' (lị ch sửcác
lệnh) nằ m ởgóc phầ n tưbên dưới, phía trái. Trong cửa sổnày, các lệ nh đã sử
dụ ng trong các lần khởi độ ng Matlab gần đây đề uđ ược lưu lạ i. Mỗi lần khởi động
Matlab, toàn bộcác lệ nh sửdụng trong lầ nđ ó sẽđược lưu lạ i dưới dạ ng một nhóm
có thểđ óng mởbằ ng nút biể u tượng '+' (expand)hoặ c '-' (collapse) ởđầ u dòng
(dòng ghi mố c thờigian giữa hai dấu chú thích '%'):
VD: (+) %-- 8/14/07 3:21 PM --%
(-) %-- 8/14/07 3:21 PM --%
- Đểgọi lại lệ
nh từcửa sổ'Command History', bạ
n tìm đ
ến lệ
nh đ
ó bằ
ng các thanh
cuốn, rồ
i nháy đúp vào tên lệ
nh.
- Đểgọi lại các lệ
nh bạ
nđã sửdụng từdấ
u nhắ
c củ
a cửa sổlệ
nh, Matlab dùng các
phím mũi tên () trên bàn phím.
- Ví dụ , đểgọ i lạ
i lệ
nh bạ n gõ vào lúc gần nhất, bạn nhấn phím mũ i tên lên ().
Tiếp tục nhấ n phím này, nó sẽgọ i tiế
p lệ
nh trước đó. Phím mũ i tên xuống gọi lạ i
lệnh theo thứtựngược lạ i.
- 13 -
Bài giảng Tin Ứng dụng 2 – Matlab 7
- Các phím mũi tên và có thểdùng đ ểthay đổ i vịtrí con trỏtrong dòng lệnh
tại dấ
u nhắ c củ
a Matlab, nhưvậ
y chúng ta có thểsửa dòng lệ nh. Thêm nữa, có thể
dùng chuột cùng với bộnhớđệ mđ ểcắt, copy, dán và sửa vă n bả n tạ
i dấ
u nhắc của
dòng lệnh.
- 14 -
Bài giảng Tin Ứng dụng 2 – Matlab 7
- 15 -
Bài giảng Tin Ứng dụng 2 – Matlab 7
- Kết quảcủa phép tính thứnhấ tđược Matlab gán cho biến 'ans', biến này được sử
dụ ng cho phép tính thứhai, qua đ
ó giá trịcủ
a nó đã đ
ược thay đổ i (được gán lạ
i).
- Chúng ta có thểsửdụng tên riêng do ta đ
ặtđ
ểlưu các giá trị
số
>> x = 2^3-3
x =
5
>> y = x*6
y =
30
từđó 'x' có giá trịbằ
ng 5 và 'y' bằ
ng 30. Chúng có thểđ
ược sửdụng cho những
p theo.
tính toán tiế
- Đây là các ví dụvềvềcâu lệ nh gán: các giá trịđược gán cho các biế n. Cần phả
i
gán một giá trịcho mỗi biế
n trước khi sửdụng biế n đó trong câu lệ
nh tiếp theo.
c đặ
* Quy tắ t tên biế
n:
n hợp lệcấ
- Tên biế u tạ
o bởi các chữvà số, bắ
tđầ
u bằ
ng chữ. Nên đặ
t tên biế
n
phản ánh giá trịmà nó đại diệ
n cho.
Các tên sau hợp lệ
:
- 16 -
Bài giảng Tin Ứng dụng 2 – Matlab 7
- 17 -
Bài giảng Tin Ứng dụng 2 – Matlab 7
u dữliệ
Hình 2.1. Các kiể u của Matlab
* Đị
nh dạ
ng kế
t quả
:
- Sửdụ ng lệnh 'format' cùng các đị nh dạng. Lệnh này chỉlàm thay đổ i cách mà kế
t
quảđư ợc hiển thịtrên màn hình, không làm thay đ ổi độchính xác của sốhoặ c
phép tính. Hầu hế t các phép tính sốhọ c củ a Matlab đượ c thực hiện với độchính
xác Double, nghĩ a là độchính xác 16 chữsốsau dấ u phẩ y thập phân.
- Đểthực hiệ
n lênh, từdấ
u nhắ
c củ
a cửa sổlệ
nh đánh mộ
t trong các lệ
nh sau:
format short u phẩ
: dấ y thậ
p phân cốđ
ịnh, 5 chữsố
format long u phẩ
: dấ y cốđị
nh, 15 chữsố
format short e u khoa họ
: ký hiệ c, 5 chữsố
format long e u khoa họ
: ký hiệ c, 15 chữsố
format short g u phẩ
: dấ y cốđị
nh hoặ
c di độ
ng, 5 chữsố
format long g u phẩ
: dấ y cốđị
nh hoặ
c di độ
ng, 15 chữsố
format hex ng Hexa (hệ16)
: format dạ
format '+' : dương (+), âm (-), và ký tựtrắ
ng (blank) ứng với 0
format bank : Dollars và cents
format rat : tỷlệxấp xỉinteger
- Thông thường, 'format short' là dạng mặc đị
nh. Khi đ
ược gọ
i lên, một dạ
ng
format sẽcó hiệ
u lực tới khi nó đ
ược thay đổ
i.
- 18 -
Bài giảng Tin Ứng dụng 2 – Matlab 7
- Double precision reals: Trong Matlab, tấ t cảcác sốthực được lưu với đ ộchính
xác double, không giố ng các ngôn ngữlậ p trình khác nhưC hay Fortran khi chỉcó
một loại riêng biệ
t float hay real*8 cho các sốthực vớiđộchính xác single.
- Một dạ ng ngắ n cực kỳhiệ u quảcho việ c nhậ
p các sốrấ t lớn hoặ
c rất bé là dạ
ng
-7
ký hiệu 'e'. Chẳng hạn -1.23456e-7 là dạ ng ngắn của -1.23456 x 10 ; và 8.76e+12
12
ng viế
là dạ t ngắ
n của 8.76 x 10 . Ví dụ:
>> 1.23e-2
ans =
0.0123
>> 5e6
ans =
5000000
- Sốphức: đ
ược nhậ
p vào dưới dạ
ng 3+2*i hoặ
c 3+2*sqrt(-1).
- Chuỗ i: là mộ
t mả ng tậ p hợp củ
a các ký tự, được nhậ
p vào dưới dạ
ng 'abc' hoặ
c
'vi du day la mot chuoi'.
Trên đây là những kiể u dữliệu cơbản mà bạn sẽrất thường dùng trong khóa học
này. Đểbiế t danh sách đầyđ ủhơn, bạ
n có thểdùng lệ nh 'help datatypes' từcửa sổ
nhập lệnh.
- 19 -
Bài giảng Tin Ứng dụng 2 – Matlab 7
u ba chấ
- Dấ m '...' thểhiệ
n rằ
ng câu lệ
nh còn tiế
p tục ởdòng sau.
n đổ
* Chuyể i giữa chuỗi và số
- Đôi khi chúng ta cầ
n chuyể n mộ t chuỗi thành mộ t sốtương ứng, hoặ
c ngược lạ
i.
Các công việ c chuyển đổi này được thực hiệ n bởi lệnh:
n một chuỗi thành sốtương ứng
- 'str2num': chuyể
nh:
và hai lệ
n một sốthực thành chuỗ
- 'num2str': chuyể i tươ
ng ứng
- 'int2str': n một chuỗi thành sốtương ứng
chuyể
- Những lệnh này rấ
t hữu ích trong việ
c tạ
o ra các nhãn và tiêu đềmột cách tự
động, chẳ
ng hạn như
- 20 -
Bài giảng Tin Ứng dụng 2 – Matlab 7
(sqrt), lũy thừa (exp), logarit (log, log10, log2), giá trịtuyệ
t đố
i (abs), và các hàm
lượng giác (sin, cos, tan, atan,...). Ví dụ
:
>> sin(45)
ans =
0.8509
trảkế
t quảbằng sin củ
a 45 radians... mà thực ra ý đị
nh của bạ
n là tính sin củ
a 450,
45
sẽbằ
ng 180 radians:
>> sin(45/180*pi)
ans =
0.7071
2
m tra lạ
và kiể i xem bạ
n có thu đ
ược ã đị
nhưđ nh không
2
>> sqrt(2)/2
ans =
0.7071
ng tấ
- Chú ý rằ t cảcác tính toán củ
a Matlab đều có lỗ
i làm tròn, mà đ n lạ
ôi khi bạ i
thấy mộtcách không mong đợi. Ví dụ , bạ
n không nên ngạ c nhiên khi thấy
>> tan(pi)
ans =
-1.2246e-016
- 21 -
Bài giảng Tin Ứng dụng 2 – Matlab 7
- 22 -
Bài giảng Tin Ứng dụng 2 – Matlab 7
cplxpair p xế
- sắ p các sốvềcác cặ
p liên hợp phức.
n dư:
Các hàm làm tròn và phầ
fix - làm tròn vềphía 0.
floor - làm tròn vềphía âm vô cùng.
ceil - làm tròn vềphía dư
ơng vô cùng.
round - làm tròn vềphía sốnguyên gầ
n nhấ
t.
mod - mô đ y phầ
un (lấ n dưcủa phép chia).
rem y phầ
- lấ n dưcủ
a phép chia (tương tựmod)
sign y dấ
- hàm lấ u củ
a một biế
n, trảvề+1, 0, -1 (+, 0, -).
Ví dụ:
mod([1 2 3 4 5 6 7],3)
ans =
1 2 0 1 2 0 1
- 23 -
Bài giảng Tin Ứng dụng 2 – Matlab 7
5 5 5
5 5 5
>> Y= [1 2 3; 4 5 6; 7 8 9]
Y =
1 2 3
4 5 6
7 8 9
>> X >= Y
ans =
1 1 1
1 1 0
0 0 0
- 24 -
Bài giảng Tin Ứng dụng 2 – Matlab 7
ans =
0
& và (and)
| hoặc (or)
~ không (not)
ng hạ
Chẳ n như ~= nghĩ ng
a là không bằ
~(x>5) nghĩa là x không lớn hơn 5, nế
u x=4 thì phép
m tra này sẽcho kế
kiể t quảđ
úng (true), hay = 1
- Mộ t ứng dụng khác nữa của các phép kiểm tra logic là ta có thể‘
xóa’(hay bỏ
qua) các phần tửnhấtđịnh của một ma trậ
n:
khi tính phân bốlưu tốc theo chiề u sâu (tính từđáy kênh), ta có thểbỏ
qua lớp biên với chiều sâu nước z thỏa mãn điề u kiệ
n z <= delta (delta
là chiều dày lớp biên).
n suấ
khi tính tầ t vượt quá một ngưỡng N nào đó củ a chiều cao sóng
trong bộsốliệ u đo đạc vềsóng – véctơH, ta có thểkiểm tra điề
u kiện
H(i) > N.
VD:
>> H = [4.7506 1.1557 3.0342 2.4299 4.4565... (shift + )
3.8105 2.2823 0.0925 4.1070 2.2235];
>> N = 3;
>> kiemtra = H > N
kiemtra =
- 25 -
Bài giảng Tin Ứng dụng 2 – Matlab 7
1 0 1 0 1 1 0 0 1 0
>> H = H.* kiemtra
H =
4.7506 0 3.0342 0 4.4565 3.8105 0 0 4.1070 0
2.10. Kết hợp nhiều lệnh trên một dòng; Ẩn kết quảtính.
Dấu phẩ y (,) và dấ
u chấ m phẩ y (;) là những ký tựcó ý nghĩ
a đ
ặc biệ
t trong
Matlab, và sẽchứng tỏlà rấ
t hữu ích.
t hợp nhiề
* Kế u lệ
nh trên một dòng:
Toán tửphẩ
y (,) được dùng đ
ểnhóm nhiề
u lệ
nh trên một dòng, ví dụ:
>> x=3.5, y=-5.0, xˆ3 – y
x =
3.5000
y =
-5
ans =
47.8750
* Ẩn kế
t quảtính (Surpessing output)
- Thông thường, chúng ta không muố n theo dõi tấ
t cảcác tính toán trung gian, hay
ta muốn ẩ nđi mộ t câu lệ
nh, một diễ
n giả i. Khi đ
ó ta dùng dấ u chấ m phẩ y (;). Ví
dụ :
>> x=3.5; y=-5.0; xˆ3 – y
ans =
47.8750
Trong ví dụtrên, kế
t quảcủ
a hai lệ
nh gán đầ
u tiên đ
ãđược ẩ
nđi.
- 26 -
Bài giảng Tin Ứng dụng 2 – Matlab 7
a là kích thước củ
Nghĩ a mả
ng r sẽlà 2x3 (2 hàng, 3 cộ
t).
- Ma trậ n là một mả ng hai chiều (kích thước m x n với các quy luậ tđ ặ t biệ t cho
phép cộng, nhân và các tính toán khác. Nó đ ặc trưng cho một sựbiế n đổ i tuyế n
tính vềtoán họ c. Hai chiề
u của ma trận là hàng và cột (m hàng và n cột).
- Véctơlà mộ t ma trận mà mộ t chiều chỉcó chỉsố=1. Cụthể , một véctơhàng là
một ma trận chỉcó mộ t hàng (kích thước 1 x n), còn mộ
t véctơcột là một ma trậ
n
chỉcó một cột (kích thước m x 1).
- Mặ c dù khái niệ m mả ng tổ ng quát hơn và ít tính chất toán học hơn một ma trận,
nhưng hai thuậ t ngữnày vẫ n thường đ ược dùng lẫ n với nhau. Hơn nữa, Matlab
đ ôi khi không có mộ t sựphân biệ t chính thức nào, thậm chí là giữa một đại lượng
vô hướng và mộ t ma trận kích thước 1x1.
- Các lệnh có thểđược sắ p xếp theo sựphân biệ
t giữa mả ng/ma trậ n, nhưng
Matlab thường cho phép bạ
n sửdụng chúng lẫ
n lộ
n một cách thoả i mái. Ý tưởng ở
- 27 -
Bài giảng Tin Ứng dụng 2 – Matlab 7
đây (và bất cứchỗnào khác) là Matlab muốn giữcho ngôn ngữcủ
a mình đơn giả
n
và tựnhiên, đểbạn có thểtựmình tránh khỏi các rắ
c rố
i.
- Các phần tửđơn lẻtrong ma trậ n có thểđược tiế p cận và sửa đổi bằ
ng cách sử
dụng chỉsốphầ n tử(subscripting). Trong Matlab, phầ n tửthứi của véctơV được
biểu diễ
n bằ ng ký hiệu V(i), chỉsốđ ược viết trong ngoặ cđ ơn. Ví dụ
:
>> V = [10 20 30]
V =
10 20 30
>> V(2)
ans =
20
>> V(2)=50
V =
10 50 30
3.2. Véctơhàng
Véctơhàng là chuỗ i các sốđư ợc phân cách bởi dấ u phẩ y hoặ c khoả ng trống. Số
lượng các đầ u sốđ ược gọ i là ‘chiều dài’ của véctơ, và mỗi đ ầu sốthường được
nhắc đến như‘phầ n tử’ , hoặ c ‘hợp phầ n’của véctơ. Cú pháp cơbả n đ ểnhậ p1
véctơlà mộ t chuỗi các giá trịđ ược bao trong cặp ngoặ c vuông [ ]. Ví dụ:
>> v = [ 1 3 sqrt(5)]
v =
1.0000 3.0000 2.2361
>> length(v)
ans =
3
- Trong ví dụđ ầ u tiên, các khoả ng trống được dùng đểphân cách các phầ n tửcủ a
véctơ. Khoả ng trống (space) rấ t quan trọ
ng trong khi khai báo véctơ, đ
iều này có
thểminh họ a bằng sựkhác biệ t nhỏgiữa hai dòng lệnh dưới đây:
>> v2 = [3+ 4 5]
v2 =
7 5
>> v3 = [3 +4 5]
v3 =
3 4 5
- 28 -
Bài giảng Tin Ứng dụng 2 – Matlab 7
3.3. Vectơcột
Véctơcột có cấu tạ
o tương tựnhưvéctơhàng. Khi định nghĩ a véctơcộ
t, các phầ
n
tửđược phân cách nhau bởiký tự‘ c bởi ‘
;’ hoặ newlines’. Ví dụ :
>> c = [ 1; 3; sqrt(5)]
c =
1.0000
3.0000
2.2361
>> c2 = [3 (shift + )
4 (shift + )
5]
c2 =
3
4
5
>> c3 = 2*c - 3*c2
c3 =
-7.0000
-6.0000
-10.5279
- Mộ t cách tổng quát thì a : b : c sẽtạ o ra mộ t véc tơvới các phầ n tửbắ t đầ u
từgiá trịcủ a a, tă
ng dầ n với bước tă
ng bằ ng giá trịcủa b, cho tớ i khi đạ t tới giá trị
của c (sẽkhông tạ o ra một giá trị
vượt quá c). Điề u này giải thích vì sao 1:-1 tạ o ra
một véctơrỗng [ ].
>> 0.32:0.1:0.6
ans =
0.3200 0.4200 0.5200
>> -1.4:-0.3:-2
ans =
- 29 -
Bài giảng Tin Ứng dụng 2 – Matlab 7
thì đ
ểtrích ra các phầ
n tửtừthứ3 đ
ến thứ6 ta có thểdùng lệ
nh:
>> r(3:6)
ans =
5 -1 -3 -5
- 30 -
Bài giảng Tin Ứng dụng 2 – Matlab 7
>> v2./v1
ans =
4.0000 2.5000 2.0000
Lưu ý các phép tính của các đại lượng vô hướng trên các véctơkhác nhưthếnào
với cách làm việc phầ n tửvới phầ n tử, ví dụ: 2 * sqrt(x) rõ ràng là nhân sốvô
hướng với véctơ, trong khi x/y thì khác, vì vậy ởđ ây ta cầ
n phải sửdụ ng x./y
Chú ý: Các phép cộng và trừphần tửvớ i phần tửlẽra cũng phải sửdụ
ng .+ và .-
, tuy nhiên trong ví dụnày thì không cầ
n thiế
t.
* Ghép các véctơ:
- Có thểtạ o ra một véctơtừnhững véctơcó trước nế
u nhưkích thước của chúng
tương thích với nhau, ví dụ:
>> w = [1 2 3], z = [8 9]
>> cd = [2*z,-w], sort(cd)
w =
1 2 3
z =
8 9
cd =
16 18 -1 -2 -3
ans =
-3 -2 -1 16 18
- 31 -
Bài giảng Tin Ứng dụng 2 – Matlab 7
3.6. Xửlý dữliệu với các hàm dựng sẵn cho vectơ& ma trận
ng trên lớp)
(Xem thêm Help và bài giả
p xế
* Sắ p dữliệ
u: sort
- 32 -
Bài giảng Tin Ứng dụng 2 – Matlab 7
* Tìm độlệ
ch quân phương: std
- 33 -
Bài giảng Tin Ứng dụng 2 – Matlab 7
4.1. Đị
nh nghĩ
a và khởi tạo ma trận
- Ma trận là dạng cấ
u trúc dữliệu cơbản củ
a Matlab. Và nhưđã đềcậ p ởchương
trước, các véctơchẳng qua là những dạ
ng đặc biệ
t của ma trậ
n có kích thước (1 x
n) hoặc (m x 1).
- Từdấu nhắ c của cửa sổnhậ p lệ
nh, đ
ánh lệnh help elmat và help matfun đểcó
một danh sách các lệnh và hàm làm việc với ma trậ
n trong Matlab.
- Cú pháp củ a việ cđ ị
nh nghĩ a và khởi tạ
o ma trận rấ
t giống với những gì bạ n đã
thấy với véctơ: các khoảng trống (hoặc dấu phẩy) phân cách các phần tửtrong một
hàng, và các dấu chấ m phẩy là ký hiệu cho biế
t bắtđầu mộ t hàng mới sau đó.
Ví dụkhi bạ
nđánh:
>> A = [2 -1 0 0; 1 1 2 3; -1 4 0 5 ]
Matlab sẽđ
ưa ra kế
t quả
A =
2 -1 0 0
1 1 2 3
-1 4 0 5
n A bây giờchứa mộ
Và biế t ma trậ
n 3x 4.
- Các phần tửđơn lẻcủ a mộ t ma trận có thểđược tiế p cậ
n và chỉnh sửa theo cùng
một cách nhưvới các véctơ, đó là cung cấ p các chỉsốhàng và cột. Ví dụlệnh
A(3,2) = 0 sẽthay thểgiá trịphầ
n tửcộ
t 2 hàng cuối cùng của ma trậ
n A thành 0.
u lệ
- Có nhiề nh đ
ểkhởi tạ
o mộ
t sốdạ
ng ma trậ
n đặ
c biệ
t, ví dụ
zeros(n,m) - o ma trậ
tạ n với tấ
t cảcác phầ
n tử= 0
ones(n,m) - o ma trậ
tạ n với tấ
t cảcác phầ
n tử= 1
eye(n) - o ma trậ
tạ n đơn vịkích thước n x n.
- Đểkhởi tạ o một ma trậ
n vuông đặc biệt, bạ
n có thểsửdụng dạ ng ngắn zeros(n),
lệnh này đã ngầmđ ị
nh rằng sốhàng và sốcộ t của ma trậ
n là bằ
ng nhau.
- 34 -
Bài giảng Tin Ứng dụng 2 – Matlab 7
zeros - n với tấ
ma trậ t cảcác phầ
n tử= 0
ones - n với tấ
ma trậ t cảcác phầ
n tử= 1
diag - nđ
ma trậ ường chéo (hoặ
c chích xuấ
t mộ
t đường chéo)
toeplitz - n với mỗi đ
ma trậ ường chéo bằ
ng 1 hằ
ng số
triu - n tam giác trên
ma trậ
tril - n tam giác dưới
ma trậ
rand - n với các phầ
ma trậ n tửngẫ
u nhiên (từ-1 đế
n 1)
linspace - n với các phầ
ma trậ n tửcách đ
ều nhau
cat - móc nối các ma trậ
n với nhau theo một chiề
u đã đ
ịnh
repmat - xây dựng ma trậ
n mới bằng cách lặ
p mộ
t véc tơtheo 1 chiề
u
(hoặc nhiề
u chiề
u) đ
ã định
Xem help đ
ểcó hướng dẫ
n chi tiế
t hơn vềcách sửdụ
ng các hàm này.
- 35 -
Bài giảng Tin Ứng dụng 2 – Matlab 7
- 36 -
Bài giảng Tin Ứng dụng 2 – Matlab 7
- 37 -
Bài giảng Tin Ứng dụng 2 – Matlab 7
- Đểxem nộ
i dung của một m-file, bạ
n nháy đúp vào file đ
ó đ
ểmởnó ra hoặ
c
đ nh
ánh lệ
>> type tên_file
- Thực thi: Đểcó thểthực thi một m-file, nó cầ n phả i tồn tại trong thưmục hiệ n
thời (xem cử a sổCurrent Directory). Bạn có thểdi chuyể n giữa các thưmụ c trong
ổcứng gầ n giống nhưvới trình duyệ t Exprorer của Windows, hoặ c dùng lệ nh
editpath (path là đ
ường dẫn đế n thưmục mà Matlab sẽtìm kiế m file ởđó).
- Biên dị ch: không cầ n thiết biên dịch cảhai loạ i M-file của Matlab. Muốn thực
hiện các lệnh chứa trong file này rấ t đơn giản, bạn chỉcầ n đánh tên file (không cần
phần mởrộ ng '.m') từdấ u nhắ c cửa sổlệnh . Các chỉnh sửa đ n hành với file và
ã tiế
ghi lại vào ổđĩ a sẽđ ược thực thi khi bạn gọi function hay script đó lần sau.
Ví dụgọi thực thi các lệ
nh có trong file baitap2.m nhưsau:
>> baitap2
- 38 -
Bài giảng Tin Ứng dụng 2 – Matlab 7
Thì khi một người dùng khác ngồi vào máy tính củ
a bạ n, muốn biế
t những thông
tin cơbản nhấ t xem file baitap2.m viế
t vềvấn đềgì, họcó thểđánh vào cửa sổ
lệnh:
help baitap2
t quảnhậ
và kế nđược sẽlà
script nay giai quyet cac bai tap ve nha
lien quan toi kien thuc chuyen nganh ky thuat bien
Hàm với m-file: Dùng cho các hàm phức tạp hơn, chẳ ng hạn nhưcó
chứa các vòng lặ
p, câu đ
iều kiệ
n... bạ
n cầ
n dùng m-file đểkhai báo các
hàm đ ó.
n phân biệ
- Sau nữa chúng ta cầ t các hàm m-file và các script-file:
Script m-file, nhưđã đ ềcậ p ởphần trước, không phả i là một hàm. Nó
không có các tham sốđ ầu vào cũng nhưđ ầu ra, và đơn giản nó chỉthực
hiện mộ t chuỗi các câu lệnh của Matlab, vớ i các biế
nđ ược định nghĩa
trong khong gian làm việ c.
Hàm m-file khác với script m-file ởchỗnó có một dòng đ
ịnh nghĩ
a
hàm, qua đó liên hệgiữa các tham sốđ
ầu vào và đầ
u ra.
Hàm là cách chủyếu đểphát huy khảnă ng của Matlab. So vớ
i các script, các hàm
có khảnăng phân chia nhiệ
m vụtốt hơn nhiều.
- 39 -
Bài giảng Tin Ứng dụng 2 – Matlab 7
- Soạ n thảo hướng dẫn sửdụng cho hàm (không bắ t buộc, xem thêm phần
chú thích - Comments). Mô tảngắ n gọn mục đich của hàm và làm thếnào
đểsửdụ ng nó. Các dòng này cầ n bắ t đầ
u bằ
ng ký tự%, hay chính là các
dòng chú thích mà ta đ
ã đềcập, và Matlab sẽbỏqua nó khi thực thi hàm.
- Cuố i cùng và cũ
ng là quan trọng nhấ t: soạn thả o mã lệnh thực thi nội
dung của hàm. Đi cùng với nội dung ta cũ ng cầ nđ ầyđ ủcác câu chú thích
đểngười dùng khác có thểhiểu đượ c quá trình ta đang làm.
Mộtm-file hàm hoàn chỉ
nh có thểtrông nhưsau (theo ví dụtrên củ
a chúng ta)
function [A] = dientich(a,b,c)
% Tinh dien tich cua mot tam giac
% khi biet chieu dai 3 canh la a, b va c.
% Dau vao:
% a,b,c: Chieu dai cua cac canh
% Dau ra:
% A: Dien tich tam giac
% Cach su dung (cu phap):
% Dientichcantinh = dientich(2,3,4);
% Nguoi viet: Ng.Ba.Tuyen, 2007.
s = (a+b+c)/2;
A = sqrt(s*(s-a)*(s-b)*(s-c));
%%%%%%%%% ket thuc dientich %%%%%%%%%%%
Ta thấ y rằ
ng chú thích ởđ ây khá đầyđ ủ
, và người dùng sau có thểdễdàng hiểu
được nội dung cũ ng nhưcách sửdụng hàm dientich bằ ng cách đ nh help
ánh lệ
dientich từcửa sổnhậ p lệnh, hướng dẫ
n thu được sẽnhưsau:
>> help dientich
Tinh dien tich cua mot tam giac
khi biet chieu dai 3 canh la a, b va c.
Dau vao:
a,b,c: Chieu dai cua cac canh
Dau ra:
A: Dien tich tam giac
Cach su dung (cu phap):
Dientichcantinh = dientich(2,3,4);
Nguoi viet: Ng.Ba.Tuyen, 2007.
- 40 -
Bài giảng Tin Ứng dụng 2 – Matlab 7
>> dientich(4, 5, 7)
ans =
9.7980
Nhưvậ y chúng ta đ ã đi qua các bước cơbản từkhai báo một hàm bằng m-file,
soạn thảo nội dung, mã lệ nh, và sửdụng hàm. Hãy sửdụng help đểcó hiểu biết
sâu hơn vềhàm trong Matlab.
* Một khía cạ nh quan trọng khác củ a hàm M-file là hầ u hế t các hàm xây dựng
trong Matlab (trừnhững hàm lõi toán họ c) đều là các M-file mà bạ n có thểđọc và
copy. Đây là một cách rất tổ
t đểhọc hỏi, luyệ
n tậ p lập trình – và cũng là một mẹo.
nh switch...case...case... case...otherwíe...end
* Câu lệ
- Bộcâu lệ nh if/elseif chỉhữu ích trong trường hợp chỉcó mộ t vài lựa chọn. Còn
khi có mộ t sốlượng lớn các lựa chọ n khảdĩ, thông thường ta dùng switch đểthay
thế. Ví dụ
:
switch donvi
case ’Chieudai’
disp(’met’)
case ’The tich’
disp(’lit’)
case ’Thoi gian’
disp(’giay’)
otherwise
disp(’Toi chiu thua’)
end
- 41 -
Bài giảng Tin Ứng dụng 2 – Matlab 7
- Diễn giả
i của lệnh switch có thểlà một chuỗ i hoặc mộ
t số
. Trường hợp đầ
u tiên
phù hợp với case thì các lệ
nh của nó sẽđược thực thi.
- Có thểsửdụ ng otherwise hoặ
c không. Trong trường hợp có sửdụ
ng, thì Matlab
thực thi các lệ
nh sau otherwise nếu không có trường hợp nào phù hợp với các
case.
- 42 -
Bài giảng Tin Ứng dụng 2 – Matlab 7
Cách đ
ơn giả
n nhấ
tđểhọ
c cách làm việ
c với file dữliệ
u là thông qua ví dụsau:
Giảsửdữliệ u dạ
ng sốđược lưu trong file có tên ‘table.dat’ trong thưmục hiệ
n
hành, dữliệ
u nhưsau
100 2256
- 43 -
Bài giảng Tin Ứng dụng 2 – Matlab 7
200 4564
300 3653
400 6798
500 6432
nh sau
3 lệ
>> fid = fopen('table.dat','r');
>> a = fscanf(fid,'%3d%4d');
>> fclose(fid);
sẽlầ
n lượt làm các nhiệ
m vụ:
Mởmộ t file đ
ểđ ọc, việ c này được chỉđị nh bằng chuỗi ‘
r’, (r là viết tắt
của read). Biế n fid đượ c gán cho mộ t giá trịbằng 1 sốnguyên tốduy
nhất, đ
ặ c trưng cho file sẽsửdụng (sốnày còn gọi là sốchỉthịcủ a file).
Sau này mỗi khi nhắ c đế n file này chúng ta sẽsửdụ ng sốchỉthịfid.
Đọc vào bộnhớtừng cặ p sốtừfile (file có sốchỉthịlà fid), một sốcó 3
chữsốvà một sốcó 4 chữsố .
Đóng file (file có sốchỉthịlà fid).
o ra mộ
Quá trình này tạ t véc tơcột chứa các phầ
n tử100 2256 200 4564 ...500
6432. Véctơnày có thểđ ược chuyể nđổi vềma trận 5x2 bằ
ng lệ
nh:
A = reshape(2,2,5)';
ng ởđ
1 Chú ý rằ ây xuố
ng dòng do hạ
n chếbềngang củ
a tài liệ p trình không ấ
u. Khi lậ n Enter vì máy sẽ
hiể
u nhầm z thành một ma trậ
n.
- 44 -
Bài giảng Tin Ứng dụng 2 – Matlab 7
thời gian. Chẳ ng hạ n, nếu sốliệu z ởví dụtrên là mực nước đo được tạ i các thời
điểm 0 s, 10 s, 20 s... (cách nhau 10 giây) thì ta có thểbổsung mã lệ
nh nhưsau:
figure;
t = 0:10:200;
plot(t, z);
Ởđây lệ
nh figure có tác dụ
ng tạ
o ra mộ
t hình mới.
n vẽthường có rấ
Chú ý: Các vec-tơcầ t nhiều phần tử, và do đ n dùng dấ
ó ta cầ u;
ởcuối câu lệ
nh đểngăn không cho máy hiện lại nộ
i dung của toàn bộvec-tơ.
i đểvẽbiể
Tóm lạ u đồdạ
ng đ
ường nói chung ta theo 3 bước sau:
t vec-tơchứa các tọ
1) Phát sinh mộ a độx của các điể
m
2) Phát sinh một vec-tơchứa các tọađ ộy, có thểlà từsốliệ u sẵ
n có, hoặ c là một
hàm tính từcác giá trịtương ứng của x. Trong trường hợp sau cần lưu ý phép tính
cầnđ ược áp dụng cho từng phần tửmột.
3) Thực hiệ
n lệ
nh vẽplot(x, y)
Trong các biể u đồta phả i ghi tiêu đềcủa biểuđ ồvà điền các đạ
i lượng và đơn vị
lên các trục (x, y). Có thểthực hiệ n việ
c này bằ
ng cách:
title('Tiêu đ
ềbiể
uđồ')
xlabel('Tiêu đ
ềtrục x')
ylabel('Tiêu đ
ềtrục y')
Chẳng hạ
n với ví dụvềmẫ
u quan trắ
c mự
c nướ
c theo thời gian nhưtrên ta có thể
t:
viế
title('Qua trinh muc nuoc thuc do')
xlabel('t (s)')
ylabel('z (m)')2
Kế t quảbiể uđ ồthu đượ c nhưtrên Hình 1. MatLab tựđ ộng căn chỉnh phạ m vi của
trục tung và trục hoành sao cho có thểhiể n thịtoàn bộsốliệ u cần vẽ . Tuy vậ y
trong mộ t sốtrường hợp ta cần thểhiệ n từng phầ n của biểu đồ, hoặc vì tính thẩm
mỹmà có thểchỉ nh sửa phạm vi của các trục. Câu lệnh nhưsau:
2 Vậ
y nế n có V(m3 ) thì sao? Hãy thửV(m^3) xem!
u muố
- 45 -
Bài giảng Tin Ứng dụng 2 – Matlab 7
trong đ
ó:
n lượt là giới hạ
xmin, xmax lầ n trái và phả
i củ
a trục hoành
n lượt là giới hạ
ymin, ymax lầ n dư
ới và trên củ
a trục tung.
Ta cầ n nhậ p cả4 giá trịnói trên của vec-tơphạ m vi trục. Chẳ ng hạ n khi muốn
biểu thịmực nước chỉtrong khoả ng thời gian từt = 100 s đến t = 150 s, và hạ
n chế
cao đ ộmặ t nước từ0 đế n 0.4 m, ta gõ lệnh:
axis([100 150 0 0.4])
Qua trinh muc nuoc thuc do Qua trinh muc nuoc thuc do
0.4 0.4
0.2 0.3
z (m)
z (m)
0 0.2
-0.2 0.1
-0.4 0
0 50 100 150 200 100 110 120 130 140 150
t (s) t (s)
Hình 1: Ví dụvềbiểu đồdạng đường Hình 2: Biểu đồdạng đường sau khi chỉ
nh lại
phạm vi các trục
Ví dụ:
- 46 -
Bài giảng Tin Ứng dụng 2 – Matlab 7
Hình 3: Kiểu nét vẽcùng các thuộc tính khác có thểlựa chọn
p sau khi chọn chếđộEdit Plot và nháy phải chuột
trực tiế
vào đường biểu đồ
Nhưvậ
y có thểtổhợp các kiể
u màu và nét vẽkhác nhau, theo bả ây 3:
ng sau đ
Màu vẽ Nét vẽ Điể
m nút
r red, đỏ - nét liề
n * dấ
u sao
g green, xanh lục -- nét đứt + dấ
u cộ
ng
b blue, xanh lam : nét chấ
m s hình vuông
k black, đ
en .- nét chấ
m gạ
ch ^ tam giác
3 Thự
c ra ta có thểlự
a chọ
n kiể
u và nét vẽtrực tiế uđ
p trên biể ồcủ
a MatLab bằ
ng cách chọ
n Edit Plot
(hoặ c nút
trên thanh công cụ) rồi nháy phả t vào đ
i chuộ ư ờ ng cầ
n chỉ
nh và lự
a chọ uđ
n Line Style (kiể ư
ờng), Line
Width (bềrộ ng) hoặ c Marker (kiểuđiểm nút) (xem Hình 3).
- 47 -
Bài giảng Tin Ứng dụng 2 – Matlab 7
Qua trinh muc nuoc thuc do Qua trinh muc nuoc thuc do
0.4 0.4
0.2 0.2
z (m)
z (m)
0 0
-0.2 -0.2
-0.4 -0.4
0 50 100 150 200 0 50 100 150 200
t (s) t (s)
- 48 -
Bài giảng Tin Ứng dụng 2 – Matlab 7
Vào menu Insert – Text Box, vạ ch ra một khung chữnhậ t và gõ vào z max4
Vào menu Insert – Arrow, vạ ch mũ i tên chỉtừkhung chữvào vòng tròn
Muốn xóa các chú thích, chỉcầ
n chọn đố i tượng cần xóa, ấ
n Delete.
z max
0.2
z (m)
-0.2
-0.4
0 50 100 150 200
t (s)
- 49 -
Bài giảng Tin Ứng dụng 2 – Matlab 7
- MatLab có thểlưu lạ i biểu đ ồchúng ta tạ o ra, dưới dạng nhiều dạ ng file ảnh
chuẩ n hiệ n nay: *.gif, *.png, *.jpeg, *.emf, *.eps v.v... Bên cạ nh đó, MatLab còn
có mộ t dạng file riêng gọ i là *.fig, trong đó lưu toàn bộthông tin của các đ ường,
nét, điể m... trên biểu đồ . Do vậ y mà file fig chi tiết hơn đ
ồng thời thường có kích
thước file lớn.
- Đểlưu biể u đồtrong MatLab ta chọn Menu File – Save, sau đó nhậ p tên cho file
hình mà ta muố n lưu. Cũ ng có thểnhấ n vào biểu tượng Save ( ) trên thanh công
cụ. Chú ý chọ n kiểu file hình (Save as type) thích hợ p.
6.5. ĐồthịLogarit
Trong một sốtrường hợ p, các đồthịlogarit cầ nđ ược sửdụ ng, chẳ
ng hạ n biể u đồ
đường cấp phối hạt. Muốn đặt thang logarit với trụ
c hoành ta chỉcần thay tên lệnh
plot bằ
ng semilogx.
Chẳ
ng hạ n vẽđ
n ta cầ ường cấ
p phối hạ
t với mẫ
u bùn cát sau:
- 50 -
Bài giảng Tin Ứng dụng 2 – Matlab 7
Sốliệ u dùng đểvẽđ ồthịlà hai cột sau cùng: tỉlệcộ ng dồn (P) và đường kính (d).
Có P (%) khố i lượng bùn cát mịn hơn d (mm). Ởđ ây đã giảthiế ng đường kính
t rằ
lớn nhấ t bằ
ng 1 mm nhưlà giới hạ n trên của biểu đồ.
- 51 -
Bài giảng Tin Ứng dụng 2 – Matlab 7
80
60
P (%)
40
20
0 0
10
d (mm)
- 52 -
Bài giảng Tin Ứng dụng 2 – Matlab 7
Sẽtạ o ra một bả
ng gồm (m × n) biể uđ ồnhỏ(m hàng và n cột). Tiếp đó hình thứk
ng dưới, trái qua phả
(tính từtrên xuố i) sẽđược kích hoạ
t và chuẩn bịđược vẽ .
Xét một ví dụđơn giả n: ta cầ n vẽđường quá trình mực nướ c (z) và vậ
n tốc dòng
chả u đồkhác nhau. Đểcó sựđố
y (v) theo thời gian (t), nhưng trên hai biể i chiế
u
vềthời gian giữa hai biểuđ ồta nên xế p chúng theo một cột dọc. Nhưvậ y m = 2 và
n = 1.
t = 0:5:100;
z = [-0.14 -0.08 -0.05 -0.04 0.01 0.07 0.15 0.23 0.25 0.37 0.4 0.45 0.55
0.6 0.66 0.76 0.82 0.91 1 1.03 1.14];
v = [0.84 0.89 0.91 0.89 0.91 0.88 0.92 0.97 0.97 0.97 0.99
1.02 0.96 1.03 0.98 1.04 1.04 1.11 1.04 1.12 1.16];
subplot 211
plot(t, z); xlabel('t (phut)'); ylabel('z (m)');
title('Duong qua trinh muc nuoc tai diem A1');
subplot 212
plot(t, v, 'g'); xlabel('t (phut)'); ylabel('v (m/s)');
title('Duong qua trinh luu toc tai diem A1');
Kế t quảnhưtrên Hình 7.5
5 MatLab còn có lệ
nh plotyy cho phép hai trụ i hai đ
c tung vớ ạ ợ
i lưng khác nhau (chẳ
ng hạ
n z và v) trên
cùng mộ uđ
t biể ồ
.
- 53 -
Bài giảng Tin Ứng dụng 2 – Matlab 7
z (m)
0.5
-0.5
0 20 40 60 80 100
t (s)
Duong qua trinh luu toc tai diem A1
1.4
1.2
v (m/s)
0.8
0 20 40 60 80 100
t (s)
- 54 -
Bài giảng Tin Ứng dụng 2 – Matlab 7
Trong kỹthuậ t rất cầ n các biểu đ ồkhông gian. Thường gặ t là các bình đồ
p nhấ
(bảnđ ồđ ịa hình của một khu vự c nhỏ). Bên cạnh đó, biể u đồkhông gian còn có
thểđược dùng đ ểbiể u diễn độsâu đị a hình hay một trường không gian nói chung
t độ
(nhiệ , khí áp ...). Trong tấ t cảcác trư ờng hợp nói trên, luôn có mộ t biến (z)
được biể
u diễ n theo hai biế n không gian trên mặ tđất (x, y).
Với trục x dọc theo bãi biển và trục y hướng ra khơi. Ta xét lướ a độtrên mặ
i tọ t
bằng, các đ m nút lưới có phạ
iể m vi 0 < x < 200, 0 < y < 200. Khoả ng cách giữa
các điểm nút lưới theo phương x là Δx = 10, theo phương y là Δy = 4. Nghĩa là tọa
độcủ a tất cảcác điểm nút lưới có dạng:
⋮
0,0⋮ ⋮ 10,0⋮ ⋮ ⋮ 200,0 ⋮
⋮
[
x i , y i⋮
=
⋮
⋮
0,4⋮ ⋮
⋮
0,200 ⋮ ⋮
10,4⋮ ⋮ ⋮
⋮
10,200 ⋮⋮ ⋮
200,4 ⋮
⋮
200,200 ⋮
]
Lệ nh meshgrid sẽgiúp ta làm đ iều đó:
[x, y] = meshgrid(0:10:200, 0:4:200);
Lệnh meshgrid lấ
y hai thông số: thông sốvec-tơthứnhấ a độtrên trục x,
t là các tọ
thông sốvec-tơthứhai là các tọađ ộtrên trục y. Kế
t quảta đượ c một ma trận các
- 55 -
Bài giảng Tin Ứng dụng 2 – Matlab 7
điểm trên một vùng hình chữnhậ t (51 × 21) có các tọađ ộtương ứng dựng từcác
vec-tơtrên6. Sau đ ng z sẽđ
ó mả ược tính từmả ng y theo công thức Dean:
z = -0.1 * y .^ (2/3);
Trong đó cầ
n chú ý phép tính lũ
y thừa cho từng phầ
n tử.
Viết thêm dòng chữz(m) bên cạnh thanh chỉdẫn màu này bằ ng cách Insert –
Text Box. Xóa bỏđường bao củ
a hình chữnhật bằ
ng cách nháy phải chuột – Line
Style – None.
Chú ý rằ ng khi hiện các bản đồđị a hình / bản vẽmặ t bằng, trong hầu hế t các
trường hợp ta muố n đặt những tỷlệbằng nhau trên hai trục x và y. Khi đ
ó ta dùng
lệnh:
axis equal;
[ ] [ ]
0 0
0 10 ⋮ 200 4 4 ⋮ 4
x= và y=
⋮ ⋮ ⋮ ⋮ ⋮ ⋮
0 10 ⋮ 200 200 200 ⋮ 200
7 Bảng màu jet mặ
c dù rự
c rỡnhưng không hiệ ng đ
u quảkhi in trắ en, thay vào đ
ó nên dùng bả
ng màu
gray.
- 56 -
Bài giảng Tin Ứng dụng 2 – Matlab 7
Tiế a đồthịlạ
p theo ta có khung củ ng màu 8:
i cho vừa với bả
axis tight;
y (m)
[C,h] = contour(x,y,z);9 80
Ta cũ ng có thểbiể n đị
u diễ a hình dưới dạ
ng không gian (3 chiề
u) sửdụ ng lệnh
surf hoặ c mesh:
figure; surf(x, y, z);
figure; mesh(x, y, z);
Sau đ ó hãy sửdụng công cụxoay hình bằ ng cách ấ
n nút Rotate 3D trên thanh
công cụ( ).
- 57 -
Bài giảng Tin Ứng dụng 2 – Matlab 7
Sốliệu của mặt cắ t được lấy từ1 cột (hoặc hàng) từmả ng 2 chiề u tương ứng.
Chẳng hạn, mặ
t cắt có x = 100 m (tương ứng với cộ
t thứ11 (trong số21 cột) trong
n z):
ma trậ
- 58 -
Bài giảng Tin Ứng dụng 2 – Matlab 7
ymc1 = y(11,:);
zmc1 = z(11,:);
plot(ymc1, zmc1, '*-');
xlabel('y (m)'); ylabel('z (m)');
- 59 -
Bài giảng Tin Ứng dụng 2 – Matlab 7
50
40
30
Y (m) 20
10
0
0 20 40 60 80
X(m)
n trường vec-tơ
Hình 16: Biểu diễ
- 60 -
Bài giảng Tin Ứng dụng 2 – Matlab 7
•Hãy thiết lậ
p một vec-tơh chứa độsâu khác nhau: 3 m, 3.2 m, ..., 4 m. Tính L tạ
i
các độsâu cho bởih.
•T嫕h C tương ứ ng với L
•Tính sin_alpha theo công thức
sinα= sinα* C / Co(chú ý đ ơn vịđ
ộ!)
o
•T嫕h alpha (d嫕g lệ
nh asin)
•Tính H = Ho × Ksh × Kr
i c嫕gi
•Ghi lạ trịcủa H
- 61 -
Bài giảng Tin Ứng dụng 2 – Matlab 7
t kế
•Viế t quảra file ketqua.txt
Bài tậ
p số2
Quan hệgiữa vận chuyể n bùn cát S và lưu tốc u có quan hệdạ ng: S = aub . Đểxác
đị
nh các hệsốa và b ngườ i ta tiế
n hành thí nghiệm và thu đượ c kết quảsau:
u (m/s) 0.2 0.35 0.57 0.68 0.81 0.96 1.12
S 0.0002 0.0018 0.0159 0.0282 0.0609 0.1258 0.2858
(m3 /s.m)
Sửdụng hàm polyval đểtính b và log a trong phương trình trên nhưsau:
p = polyval(X, Y, 1)
Phần tửđ ầu củ
a vec-tơp chính là b; phầ
n tửthứ2 của p bằ
ng log a.
Hãy tính a.
4) Vẽđ
ồthịđ
ường thẳ
ng: Y = b X + log a lên cùng hệtrục với các đ
iểm chấ
mở
câu 2).
Bài tậ
p số3
1) Một chuỗi sốliệ u đo đạc vận tốc dòng chảyđ ược phát sinh bởi:
t = 0:0.5:48;
N là dãy sốngẫ u nhiên có chiều dài bằng length(t)
u = 0.4 + 0.12 sin(2πt / 24) + 0.05 N
- 62 -
Bài giảng Tin Ứng dụng 2 – Matlab 7
E = 10 (τ– τ
c) nếu τ> τ
c
= 0 trường hợp còn lạ
i
Bài tậ
p số4:
Cho véctơX = [10 20 30] và Y = [10 40 30].
1. Tính diệ n tích tam giác tạ o bởi 3 đỉ nh có tọa đ ộ X(1)Y(1), X(2)Y(2),
X(3)Y(3).
2. Tổng quát hơn, tính diệ
n tích đa giác n cạ
nh (trên mặ
t phẳ
ng 2 chiều) với tọa độ
xi và yi của đỉ
nh thứi cho bởi phầ n tửthứi của véctơX và Y tương ứng (do đ óX
và Y là 2 véctơcó cùng chiề u dài = n).
LỜI GIẢI
Bài tậ
p số1:
Hướng dẫ n: tạ
o một script file có tên baitap1.m, soạn thả
o nội dung dư
ới đây, và
i. Sau đó chạ
ghi lạ y file này, ta sẽthu được kế t quả.
% baitap1
% Inputs: T, H0, alpha0
% Outputs: C0, L0, L
%-------------------------------------------------------------
clear all;
g=9.81;
T=8;
H0=2;
alpha0=30;
%-------------------------------------------------------------
L0=g*T^2/(2*pi)
C0 = L0/T;
h=[3:0.2:4]
% n=length(h);
% for i = 1:n
- 63 -
Bài giảng Tin Ứng dụng 2 – Matlab 7
% L(i)=disperse(h(i), L0);
% end;
Bài tậ
p số2:
Hướng dẫ n: tạ
o một script file có tên baitap2.m, soạn thả
o nội dung dư
ới đây, và
i. Sau đó chạ
ghi lạ y file này, ta sẽthu được kế t quả.
(Bài này làm theo các bước nhưtrên lớp: tính log(u), log(S), vẽlên trục tọa độ
thường (không vẽlên trục loga vì ởđ
ây ta đã tính giá trịcủa loga rồ
i), và xác đ
ịnh
các hệsốa, b củ a đường thẳng mộtcách gầ nđ úng trên đồthị ).
Bài tậ
p số3:
Hướng dẫ n: tạ
o một script file có tên baitap3.m, soạn thả
o nội dung dư
ới đây, và
i. Sau đó chạ
ghi lạ y file này, ta sẽthu được kế t quả.
clear all;
t=0:0.5:48
N=rand(1,length(t));
u=0.4+0.12*sin(2*pi*t/24)+0.05*N
plot(N);
hold on;
plot(u,'+');
C=60;
Rho = 1000;
g=9.81;
To = Rho*g/C^2*u.^2
plot(t,To)
hold on
grid on
Toc = 0.65
10 * (To - Toc) .* (To > Toc) + 0 .* (To <= Toc)
Bài tậ
p số4:
Hướng dẫn: Lầ n lượt thực hiệ n các bước sau:
o một script file có tên baitap4.m, soạ
1. Tạ n thả
o nộ
i dung dưới đ
ây, và ghi lạ
i.
- 64 -
Bài giảng Tin Ứng dụng 2 – Matlab 7
n = length (x);
m = length (y);
if m ~=n
'Error: 2 vecto X va Y can co chieu dai bang nhau!'
else
Sdagiac = 0;
for i = 1:(n-1)
Sdagiac = Sdagiac + 0.5*(y(i)+y(i+1))*(x(i+1)-x(i));
end
Sdagiac = Sdagiac + 0.5*(y(n)+y(1))*(x(1)-x(n));
end
2. Vừ a rồi ta đ o ra mộ
ã tạ t hàm mới trong Matlab, với tên là hàm dientich. Sử
dụng hàm này ta có thểdễdàng tính đ ược diệ n tích đ
a giác nói chung và tam giác
nói riêng bằng cách gọi hàm từcửa sổnhậ p lệ
nh
>> dientich(X,Y)
Lưu ý rằ ng hàm tính diệ
n tích ngầ mđ ị
nh rằ ng 2 véc tơX, Y ởđây đã chứa sốliệu
cho trước vềtọa độcác đ ỉnh củ ađ a giác theo nhưquy ư ớc. Hơ
n nữa, khi nhậ
p tọa
độta đ ánh sốcác đỉnh từ1 đ ến n theo chiề u kim đồng hồ.
- 65 -
Bài giảng Tin Ứng dụng 2 – Matlab 7
- 66 -