Giáo trình Matlab v5.3 - Chương 3: Các khái niệm cơ bản
- ?hoặc Ctrl + p : Gọi lại các lệnh đã thực hiện tr-ớc đó.
- ?hoặc Ctrl +n : Gọi lại lệnh vừa thực hiện tr-ớc đó.
- ?hoặc Ctrl + f : chuyển con trỏ sang bên phải 1 ký tự.
- ?hoặc Ctrl + b: chuyển con trỏ sang trái một ký tự.
- Dấu (;) để kết thúc một dòng lệnh
- ?nhảy xuống dòng d-ới
- Ctrl + A hoặc Home : chuyển con trỏ về đầu dòng.
- Ctrl + E hoặc End: Chuyển con trỏ đến cuối dòng.
- BackSpace: Xoá ký tự bên trái con trỏ.
- Esc: xoá dòng lệnh.
t;
- Nhỏ hơn hoặc bằng: <=
- Lớn hơn: >
- Lớn hơn hoặc bằng: >=
- Bằng: ==
- Không bằng ( khác): ~=
Biểu thức có các toán tử quan hệ nhận gia trị đúng lμ (true) hoặc sai (false). Trong
Matlab, biểu thức đúng sẽ có giá trị lμ 1, biểu thức sai có gia trị lμ 0.
Ví dụ1:
>>12.2>12
ans =
1
>>1~=1
Tungvn40@yahoo.com CM Soft 70 NCT F2 Q10
Trang 22
ans =
0
>> A=[ 1:3;4:6;7:9]
A =
1 2 3
4 5 6
7 8 9
>> B=[1:3;2:4;10:12]
B =
1 2 3
2 3 4
10 11 12
>> A==B
ans =
1 1 1
0 0 0
0 0 0
Ví dụ 2:
Cho một quả cầu mặng có khối l−ợng lμ m = 2kg đ−ợc buộc vμo một sợi dây có
chiều dμi
l = 1.5m. Một ng−ời nắm vμo đầu dâyvμ quay tròn quả cầu theo ph−ơng thẳng đứng.Vận
tốc dμi của quả cầu ở vị trí cao nhất lμ v =6m/s. lực kéo T trên sợi dây thay đổi theo góc
nghiêng của dây với ph−ơng nằm ngang xác định theo công thức sau:
( )θsin322 −+= mg
l
mvT
Cho biết khi lực kéo T> 145N thì sơi dây bị đứt . Hãy xác định những vị trí dây bị
đứt.
Ch−ơng trình nh− sau:
function y = tinhluc(theta,T)
m=2;l=1.5;Tmax=145;v=6;g=9.8;
theta=0:10:360;
θ
v
Tungvn40@yahoo.com CM Soft 70 NCT F2 Q10
Trang 23
rad=pi*theta/180;
T=m*(v^2/l+g*(2-3*sin(rad)));
bang=[theta;T>Tmax]
plot(theta,T);
grid on
>>Tinhluc
bang =
Columns 1 through 12
0 10 20 30 40 50 60 70 80 90 100 110
0 0 0 0 0 0 0 0 0 0 0 0
Columns 13 through 24
120 130 140 150 160 170 180 190 200 210 220 230
0 0 0 0 0 0 0 0 0 0 0 0
Columns 25 through 36
240 250 260 270 280 290 300 310 320 330 340 350
0 0 1 1 1 0 0 0 0 0 0 0
Column 37
360
0
Từ kết quả trên ta thấy tại các vị trí ứng với các góc 2600, , 2700, , 2800, thì biểu thức logic
T>Tmax có giá trị lμ 1, tức tại đó dây có thể sẽ bị đứt.
3.10.2 Các phép toán logic
Các phép toán logic vμ, hoặc, đảo đ−ợc thực hiện bởi các toán tử sau:
- Phép vμ( and): Ký hiệu lμ &
VD: phép & 2 ma trận cùng cỡ A, B lμ một ma trận có các phần tử bằng 1 nếu các phần
tử t−ơng ứng của cả 2 ma trận đầu đều khác 0 vμ bằng 0 nếu 1 trong 2 phần tử t−ơng ứng
của 2 ma trận bằng 0.
>>A=[1 2 7; 0 4 9;1 3 5];
>> B=[0 2 4; 2 4 6; 3 0 7]
>> C=A&B
C =
0 1 1
Tungvn40@yahoo.com CM Soft 70 NCT F2 Q10
Trang 24
0 1 1
1 0 1
- Phép hoặc (or) : Ký hiệulμ |
VD : phép or 2 ma trận cùng cỡ A,B lμ một ma trận có các phần tử bằng 0 nếu các phần
tử t−ơng ứng của cả 2 ma trận đầu đều bằng 0 vμ bằng 1 nếu 1 trong 2 phần tử t−ơng ứng
của 2 ma trận khác 0.
>>A=[0 2 7; 0 4 9;1 3 0];
>> B=[0 2 4; 2 4 6; 3 0 0];
>> C=A | B
C =
0 1 1
1 1 1
1 1 0
- Phép đảo( not): Ký hiệu lμ ~
Ví Dụ : phép đảo của một ma trận lμ một ma trận có cùng cỡ với các phần tử có giá trị
bằng 1 nếu các phần tử của ma trận đầu có giá trị bằng 0 vμ bằng 0 nếu các phần tử của
ma trận đầu có giá trị khác 0.
>>A=[0 2 7; 0 4 9;1 3 0]
>> B=~A
B =
1 0 0
1 0 0
0 0 1
3.10.3 Cấu trúc câu lệnh điều kiện:
• Lệnh if đơn:
Cú pháp: if
Nhóm lệnh;
End
Nếu biểu thức logic đúng nhóm lệnh sẽ đ−ợc thực hiện . Nếu biểu thức logic sai thì
ch−ơng trình chuyển đến lệnh sau end.
VD:
Tungvn40@yahoo.com CM Soft 70 NCT F2 Q10
Trang 25
function y=f(a,b,c)
if a<b
disp(' hinh thang nguoc')
end
y=(a+b)*c/2;
Sau đó ghi tên lμ ht
Quay lại cửa sổ MatLab command Window:
>> ht(2,4,2)
hinh thang nguoc
ans =
6
• Cấu trúc lệnh if lồng nhau:
Cú pháp: if
Nhóm lệnh 1;
if
Nhóm lệnh 2;
End
Nhóm lệnh 3;
End
Nhóm lệnh 4;
Nếu biểu thức logic 1 đúng thì
- Thực hiện nhóm lệnh 1.
- Kiểm tra biểu thức logic 2.
- Nếu đúng thực hiện nhóm lệnh 2
- Nếu sai bỏ qua nhóm lệnh 2
- Thực hiện nhóm lệnh 3.
Nếu biểu thức logic 1 sai thì
- Thực hiện nhóm lệnh 4.
• Lệnh else:
Cú pháp: if
Nhóm lệnh A;
Tungvn40@yahoo.com CM Soft 70 NCT F2 Q10
Trang 26
else
Nhóm lệnh B;
End
Nhóm lệnh A sẽ đ−ợc thực hiện nếu biểu thức logic đúng. Nếu không nhóm lệnh
B sẽ đ−ợc thực hiện.
• Lệnh elseif
Cú pháp: if
Nhóm lệnh A;
Elseif
Nhóm lệnh B;
Elseif
Nhóm lệnh C;
......
End
Nếu BT logic 1 đúng nhóm lệnh A sẽ đ−ợc thực hiện. Nếu sai kiểm tra Btlogic 2,
nếu đúng thực hiện nhóm lệnh B. Nếu sai kiểm tra BT logic3,nếu đúng thực hiện nhóm
lệnh CNếu không có biểu thức logic nμo đúng thì không có lệnh nμo trong cấu trúc trên
đ−ợc thực hiện.
• Kết hợp cấu trúc elseif vμ else
Cú pháp: if
Nhóm lệnh A;
Elseif
Nhóm lệnh B;
Elseif
Nhóm lệnh C;
......
Else
Nhóm lệnh n;
End
Tungvn40@yahoo.com CM Soft 70 NCT F2 Q10
Trang 27
Nếu BT logic 1 đúng nhóm lệnh A sẽ đ−ợc thực hiện. Nếu sai kiểm tra Btlogic 2, nếu
đúng thực hiện nhóm lệnh B. Nếu sai kiểm tra BT logic3, nếu đúng thực hiện nhóm lệnh
CNếu không có biểu thức logic nμo đúng thì nhóm lệnh n đ−ợc thực hiện.
a=input(' vao a=')
b=input(' vao b=')
c=input(' vao c=')
d=b^2-4*a*c
if d < 0
disp(' pt vo nghiem')
elseif d==0
disp (' pt co nghiem kep')
x12=-b/2*a
else
disp (' pt co 2 nghiem phan biet')
x1=(-b+sqrt(d))/2*a
x2=(-b-sqrt(d))/2*a
end
• câu điều kiện vμ lệnh Break
cú pháp: if,break, end
thoát khỏi vòng lặp nếu điều kiện logic đúng. Ng−ợc lại sẽ thực hiện lệnh tiếp
theo trong vòng lặp.
3.10.4 Cấu trúc vòng lặp.
• vòng lặp for:
cú pháp: for chỉ số = biểu thức
nhóm lệnh A;
end
qui tắc thực hiện:
- Chỉ số của vòng lặp phải lμ biến.
- Nếu ma trận biểu thức lμ rỗng thì không thực hiện vòng lặp.
- Nếu biểu thức lμ một đại l−ợng vô h−ớng vòng lặp thực hiện 1 lần vμ chỉ số nhận giá
trị của đại l−ợng vô h−ớng.
Tungvn40@yahoo.com CM Soft 70 NCT F2 Q10
Trang 28
- Nếu biểu thức lμ một vector hμng, số lần lặp bằng số phần tử trong véctor sau mỗi lần
lặp chỉ số nhận giá trị tiếp theo của vector.
- Nếu biểu thức lμ một ma trận thì số vòng lặp bằng số cột của ma trận sau mỗi vòng
lặp chỉ số sẽ nhận giá trị cột tiếp theo của ma trận
- Khi kết thúc vòng lặp chỉ số nhận giá trị cuối cùng.
- Có thể dùng toán tử : trong vòng lặp for i = chỉ số đầu: gia số: chỉ số cuối. Vμ số
vòng lặp đ−ợc tính ceil((chỉ số cuối-chỉ số đầu)/gia số+1)
n=input ('vao n=')
for k=n
s=1;
s=s+k
end
đặt tên lμ vd
>>vd
vao n=3
n =
3
s =
4
>>vd
vao n=[1 4 7]
n =
1 4 7
s =
2
s =
5
s =
8
Tungvn40@yahoo.com CM Soft 70 NCT F2 Q10
Trang 29
>>vd
vao n=[1 2 5;5 7 8;9 5 6];
s =
2
6
10
s =
3
8
6
s =
6
9
7
• Vòng lặp While
Cú pháp: While
Nhóm lệnh A;
End
Nếu biểu thức đúng thì thực hiện nhóm lệnh A. Khi thực hiện xong thì kiểm tra laị điều
kiện. Nếu điều kiện vẫn đúng lại thực hiện nhóm lệnh A. Nếu sai vòng lặp kết thúc.
3.10.5 Các lệnh break, return, error:
Lệnh break: kết thúc sự thự thi vòng lặp for hoặc while
Lệnh return: th−ờng đ−ợc sử dụng trong các hμm của Matlab. Lệnh return sẽ cho
phép quay trở về thực thi những lệnh nằm trong tác dụng của lệnh return.
Lệnh error (‘dòng nhắn): kết thúc thực thi lệnh vμ hiển thị dòng nhắn trên mμn
hình.
Ví dụ: Chọn một số d−ơng bất kỳ. Nếu số đó lμ số chẵn thì chia hết cho hai. Nếu
số đó lμ số lể thì nhân với 3 rồi cộng 1. Lặp lại quá trình đó cho đến khi kết quả lμ 1.
Ch−ơng trình:
while 1
Tungvn40@yahoo.com CM Soft 70 NCT F2 Q10
Trang 30
n=input ('Nhap vao mot so : ');
if n<=0
break
end
while n>1
if rem(n,2)== 0% phan du cua n chia cho 2
n=n/2
else
n= 3*n+1
end
end
end
Khi chạy ch−ơng trình ta sẽ thấy tác dụng của lệnh break ( dừng ch−ơng trình khi
nhập số âm hoặc số 0)
3.10.6 Biến toμn cục (global variables)
Matlab cho phép sử dụng cùng một biến cho các hμm hoặc giữa các hμm vμ
ch−ơng trình chính của Matlab, điều nμy đ−ợc thực hiện thông qua việc khai báo biến
toμn cục:
Global tên1 tên2 tên3 .
(Tên các hμm cách nhau bắng dấu khoảng trống, không sử dụng dấu phẩy).
Việc khai báo biến toμn cục phải đ−ợc thực hiện ở ch−ơng trình chính hoặc ở file
lệnh (script) hoặc ở file hμm ( function) có sử dụng các biến. Biến toμn cục có tác dụng
cho đến khi kết thúc quá trình tính toán hoặc khi toμn bộ workspace đ−ợc xoá. Không
đ−ợc đ−a tên biến toμn cục vμo danh sách các đối số của hμm. Khi sử dụng biến toμn cục
các lệnh sau tỏ ra rất cần thiết:
• Clear glolal : Lệnh nμy cho phép loại bỏ các biến toμn cục.
• Isglobal(Tên biến) : Lệnh nμy cho phép kiểm tra xem một biến nμo đó có phải lμ
biến toμn cục hay không. Nếu lμ biến toμn cục thì giá trị trả về sẽ lμ 1.
3.10.7 Một số hμm toán học:
Mục nμy chỉ giới thiệu một số hμm đơn giản vμ th−ớng gặp trong khi lập trình:
• sin: hμm sin
• cos: hμm cos
• tan: hμm tang
• asin: hμm arcsin
• acos: hμm arccos
• atan: hμm arctang
Tungvn40@yahoo.com CM Soft 70 NCT F2 Q10
Trang 31
• sinh: hμm sin hyperbolic
• cosh: hμm cos hyperbolic
• tanh: hμm tang hyperbolic
• asinh: hμm arcsin hyperbolic
• acosh: hμm arccos hyperbolic
• atanh: hμm arctang hyperbolic
• abs: Lấy giá trị tuyệt đối hoặc độ lớn của số phức
• round: lμm tròn đến số nguyên gần nhất
• fix: lμm tròn h−ớng về không
• floor: lμm tròn h−ớng về -∞
• ceil : lμm tròn h−ớng về +∞
• rem: phần d− sau khi chia
• gcd: −ớc số trung lớn nhất
• lcm: bội số trung nhỏ nhất
• exp: luỹ thừa e
• log: logarit cơ số e
• log10: logarit cơ số 10
3.10.8 Định dạng số:
Các phép tính trong Matlab đ−ợc thực hiện với độ chính xác cao ta có thể định
dạng cho các số xuất ra mμn hình tuỳ theo yêu cầu cụ thể:
Ta lấy ví dụ với số 4/3
• format short ( đây lμ chế độ mặc định ):
a = 1.3333
• format short e
a = 1.3333e + 000
• format long
a = 1.33333333333333
• format long e
a = 1.33333333333333e + 000
• format bank
a = 1.33
Tungvn40@yahoo.com CM Soft 70 NCT F2 Q10
Trang 32
• format hex
a = 3ff5555555555555
File đính kèm:
Giáo trình Matlab v5.3 - Chương 3_Các khái niệm cơ bản.pdf

