SlideShare a Scribd company logo
1 of 41
Download to read offline
5/9/2013
1
BÀI GIẢNG
GV:ThS. Võ Thiện Lĩnh
Một số vấn đề cần tìm hiểu
1. Giới thiệu Matlab
2. Cơ sở về Matlab
3. Function files và Script files.
4. Đồ họa
5. Tạo giao diện trong Matlab.
6. Simulink.
5/9/2013
2
BÀI 1.GIỚI THIỆU
 Matlab vừa là một ngôn ngữ lập trình vừa là một phần
mềm ứng dụng tính toán rất hiệu quả.
 Matlab - Matrix Laboratory
 Matlab là một thương hiệu đã được thương mại hóa của
tập đoàn MathWorks
BÀI 1.GIỚI THIỆU
Khả năng và những ứng dụng của Matlab
 Thư viện dựng sẵn to lớn rất phong phú nhiều lĩnh vực
 Giải quyết các vấn đề một cách số học
 Matlab ứng dụng những thuật toán đã kiểm chứng nên kết
quả đáng tin cậy.
 Lệnh và hàm sử dụng rất đơn giản.
 Có thể xây dựng những hàm riêng cho những ứng dụng
đặc biệt.
 Cung cấp thư viện hàm đồ họa rất mạnh.
 Cung cấp gói ứng dụng Simulink đầy đủ để mô phỏng.
5/9/2013
3
BÀI 1.GIỚI THIỆU
Quản lý không gian làm việc của Matlab
 Cửa sổ trợ giúp (Help window)
 Nút Start
 Cửa sổ nhập lệnh (Command window)
 Cửa sổ không gian làm việc (Workspace window)
 Cửa sổ quá trình lệnh (Command History window)
 Cửa sổ địa chỉ thư mục hiện thời (Current directory
window)
BÀI 2: CƠ SỞ VỀ MATLAB
 Các biến và hằng số
 Hàm lập sẵn
 Một số ví dụ để làm quen với Matlab
 Vector và ma trận
 So sánh và phép tính logic
 Các lệnh điều khiển chương trình
5/9/2013
4
I. Các biến và hằng số 1.Biến
Tên_biến = giá trị hoặc biểu thức
+ Biến (variable) trong Matlab là 1 kí hiệu được sử dụng để chứa 1 giá
trị. Gồm biến toàn cục(global), biến cục bộ(local).
+ Tên biến (variable name): bắt đầu bằng một chữ cái, tiếp theo là các
chữ cái, chữ số hoặc kí tự gạch chân(_) . Tối đa là 31 kí tự, Matlab
phân biệt rõ chữ hoa chữ thường.
+ Ví dụ : >> x = 5 ;
>> x = x + 3 ;
+ Biến kiểu xâu kí tự ( string )
>> ten='Nguyen Van A'
ten =
Nguyen Van A
Tránh đặt tên biến trùng với tên các hàm chuẩn, hoặc các từ khóa của
Matlab
I. Các biến và hằng số 2. Các hằng
5/9/2013
5
II. Hàm lập sẵn
• sqrt(x) : hàm rút căn bậc hai
• exp(x) : hàm e ( e = 2,71828…)
• log(x) : hàm lôgarit tự nhiên ( cơ số e )
• log10(x): hàm lôgarit cơ số 10
• sin(x)/ cos(x) : hàm sin/ hàm cos
• tan(x) / cot(x) : hàm tang/ hàm cotang
• ........ >> help LỆNH
Một số hàm liên quan đến số phức như sau:
• abs(z) : lấy mođun (suất) của số phức.
• anglc(z): lấy góc pha của số phức.
• real(x): lấy phần thực.
• imag(x) : lấy phần ảo.
• conj(x) : trả về số phức liên hiệp của số phức z
II. Hàm lập sẵn 1. Một số lệnh
Lệnh Công dụng
clc Xóa (lau) cửa sổ lệnh. Mang tính chất hình thức,giá trị các biến
vẫn tồn tại.
clear all Giải phóng toàn bộ biến ra khỏi bộ nhớ. Xóa Workspace
clear var1 var2 Giải phóng các biến var1 var2 ra khỏi bộ nhớ.
quit Thoát khỏi chương trình Matlab
who Liệt kê các biến hiện hành có trong bộ nhớ.
; Dấu chấm phẩy ; ở cuối dòng lệnh ngăn không cho Matlab hiển
thị các kết quả ra cửa sổ lệnh.
… Khi dòng lệnh quá dài cần xuống dòng, dấu 3 chấm … ở cuối
dòng lệnh báo cho Matlab biết dòng lệnh còn tiếp tục ở dòng tiếp
theo.
: Dấu 2 chấm : được dùng để phát sinh một mảng có các phần tử
cách đều nhau.
% Dấu phần trăm % Matlab xem nhữnggì sau dấu % là lời bình
5/9/2013
6
II. Hàm lập sẵn 1. Một số lệnh
Lưu phiên làm việc với Matlab
-Lệnh 'diary' sử dụng cho mục đích này.
Thực hiện:
>> diary('diary_file_name')
>> ........ (các câu lệnh của bạn ở đây)
>> diary off
II. Hàm lập sẵn 2. Một số ví dụ
• >>z = sqrt(25)
• >>y=sin(pi/4)
• >>round(3.8) = 4, round(3.49) = 3, round(3.5) = 4
• >>y = 3^2+1
• >>x = y/5, z= y5
• >> rem(10,3)
• >>c=clock
• >> z = 1 – 2i, abs(z), angle(z)*180/pi,real(z), imag(z)
• Giải phương trình bậc 2 trong R : 2x2 + 5x - 3 = 0
5/9/2013
7
II. Hàm lập sẵn 2.Một số ví dụ(tt)
Thành lập biểu thức:
>>syms x y;
>>S=2*x+3*y;
Tính giá trị biểu thức S với: x=2; y=3
>>u=subs(S,{x,y},{2,3})
>>u= subs(S,x,y^2)
Khai triển và rút gọn:
>>v=x^2+2*x+1
>>a=factor(v),b=expand(a)
>>c=factor(x^4-1), d=simplify(c)
II. Hàm lập sẵn 2.Một số ví dụ (tt)
1.Giải phương trình bậc 2 trong R : 2x2 + 5x - 3 = 0
Sử dụng lệnh “solve”
>>solve(‘2*x^2+5*x-3=0');
2.Giải phương trình sau theo ẩn b và c: b2 +8c+2b=0
>>solve('b^2+8*c+2*b=0','c')
>>solve('b^2+8*c+2*b=0',‘b')
3.Giải hệ phương trình sau:
>> [x y] = solve('3*x+y+1', '4*y+2*x-1')
4.Giải hệ phương trình sau:
5/9/2013
8
II. Hàm lập sẵn 2.Một số ví dụ (tt)
Tính đạo hàm biểu thức sau: x3 + 2x +5y theo x và y
>> syms x y
>> diff(x^3+2*x+5*y,x)
>> diff(x^3+2*x+5*y,y)
Tính đạo hàm bậc 2 của: sin(xy2) theo x và y
>> diff(sin(x*y^2),x,2)
>> diff(sin(x*y^2),y,2)
II. Hàm lập sẵn 2.Một số ví dụ (tt)
Tính tích phân sau:
>> syms x y n
>> int(x^n)
>> int(x^n,n) %biến lấy tích phân là n:
Tính tích phân sau:
>> syms x a b
>> int(x^2,a,b)
Tính tích phân sau theo y:
>>int(x*y^2,y,0,2)
n
x dx
n
x dn
2
b
a
x dx
2
2
0
xy dy
5/9/2013
9
II. Hàm lập sẵn 2.Một số ví dụ (tt)
Giải phương trình vi phân sau: y’(t) + 4y(t) = e-t
>> y=dsolve('Dy+4*y=exp(-t)')
Giải phương trình vi phân sau: y’(t) + 4y(t) = e-t , y(0)=1
>> y=dsolve('Dy+4*y=exp(-t)','y(0)=1‘)
Giải phương trình vi phân sau: y’’(t) + 4y(t) = e-2t , y(0)=1,
y(pi)=0
>> y=dsolve('D2y+4*y=exp(-2*t)','y(0)=0','y(pi)=0')
II. Hàm lập sẵn 3.Vector & ma trận
Mảng:Mảng: là tập hợp số, ký tự được sắp xếp có thứ tự
• Mảng 1 chiều ( vectơ)
-Vectơ hàng (row array)
>>x=[2,7,0,-3] %cách nhau dấu ‘ , ’ hoặc khoảng trắng.
-Vectơ cột (column array)
>>v=[3;5;6;9] %cách nhau bằng dấu ‘ ; ’
• Mảng 2 chiều( ma trận)
>> A=[2,4,6 ; 3,5,7 ; 4,6,8]
A=
2 4 6
3 5 7
4 6 8
5/9/2013
10
II. Hàm lập sẵn 3.Vector & ma trận
Mảng có các phần tử cách đều
Tên_mảng=[ ptử đầu a : gia số : ptử cuối b ];
Tên_mảng=linspace(a,b,n); n là số phần tử của mảng
Tên_mảng=logspace(a,b,n); tăng theo hàm log
Ví dụ:
>>u= [0:1:10]
Hoặc: >>u= linspace(0,10,11)
II. Hàm lập sẵn 3.Vector & ma trận
Tìm nghiệm của đa thức x3 + 6x2 -11x +290
>>a=[1,6,-11,290]; % các hệ số của đa thức.
>>x=roots(a)
Hoặc >>x=roots([1,6,-11,290]);
Đa thức trên có 3 nghiệm là: x1= -10 và x2= 2+5i, x3= 2-5i
Dùng hàm poly() kiểm tra lại ví dụ trên
>>r=[-10,2+5i,2-5i]; % cho trước các nghiệm
>>poly( r )
ans=
1 6 -11 290
Đa thức phải tìm là: x3 + 6x2 -11x +290.
Lưu ý: các hệ số được sắp xếp theo lũy thừa giảm của biến.
5/9/2013
11
II. Hàm lập sẵn 3.Vector & ma trận
Tìm ma trận chuyển vị:
>> A=[2,4,6 ; 3,5,7 ; 4,6,8]
A=
2 4 6
3 5 7
4 6 8
Truy xuất 1 phần tử của ma trận
>> A(2,3) % truy xuat ptu dong 2 cot 3
>> A(:,2) % trich vecto cot thu 2
>> A(3,:) % trich vecto dong thu 3
>> A(:,2:3) % tao ma tran con gom cot 2,3 cua A
>> A(1:2,:) % tao ma tran con gom cac dong 1, 2 cua A
>> A([1 3],[2 3]) % tao 1 ma tran con gom cac ptu dong 1,3 va cot 2,3
>> b=A’
b =
2 3 4
4 5 6
6 7 8
II. Hàm lập sẵn 3.Vector & ma trận
Tên hàm Ý nghĩa
size(A) Trả về 1 vectơ dòng [m n] chứa kích thước mảng A có m dòng n cột
length(A) Alà 1 ma trận , sẽ trả về số lớn nhất trong 2 số m,n
max(A) + Nếu A là vectơ sẽ trả về ptử lớn nhất trong A
+ Nếu A là 1 ma trận sẽ trả về 1 vectơ dòng chứa các phần tử lớn nhất
của mỗi cột.
min(A) Tương tự như hàm max(A) nhưng lựa chọn phần tử bé nhất.
sum(A) Tính tổng các ptử trong từng cột của ma trận A, kết quả chứa trong 1
vectơ dòng.
sort(A) Sắp xếp mỗi cột cuả ma trận A theo thứ tự giá trị tăng dần từ dòng 1 đến
dòng cuối , kết quả là 1 ma trận cùng kích thước với A
[x,k] =max(A) Tương tự max(A) nhưng giá trị các phần tử lớn nhất được lưu trong vectơ
dòng x và các chỉ số tương ứng được lưu trong vectơ dòng k
[x,k] = min(A) Có ý nghĩa tương tự nhưng trả về các phần tử nhỏ nhất.
[u,v,w]=find(A) Tìm những phần tử khác 0 của ma trận A. Vectơ u chỉ số dòng , v chỉ số
cột của những ptử khác 0, w chỉ chứa các ptử khác 0 của A
5/9/2013
12
II. Hàm lập sẵn 3.Vector & ma trận
Ví dụ: Cho mảng A=[1 2 -3 4 0 5 -6 ]
>>[u,v,w]=find(A)
>>[u,v,w]=find(A>2)
>>[u,v,w]=find(A<0), b= A(u,v)
>>size(A)
>>length(A)
>>max(A)
>>min(A)
>>sum(A)
>>sort(A)
Tương tự thực hiện các hàm với ma trận:
III. Các phép tính về mảng
5/9/2013
13
III. Các phép tính về mảng
Giải hệ phương trình
4x1 - 2x2 -10x3 = -10
2x1 +10x2 -12x3 = 32 
-4x1 - 6x2 +16x3 = -16
Cách 1:
>> A=[4 -2 -10;2 10 -12;-4 -6 16]
>> B=[-10;32;-16]
>> X=AB % dùng cho tất cả
Cách 2:
>> C=inv(A) %ma trận đảo của A, dùng cho ma trận vuông
>> X=C*B
IV.Cấu trúc điều khiển 1. Cấu trúc IF
if (biểu thức logic 1)
Lệnh hoặc nhóm lệnh 1
elseif (biểu thức logic 2)
Lệnh hoặc nhóm lệnh 2
else
Lệnh hoặc nhóm lệnh 3
end
Ví dụ : Tính giá trị của y theo các
miền giá trị khác nhau của x như
sau:
Nếu x<0 , y=0
0 x 5 , y=x2
x>5 , y=25*x
Lệnh như sau :
if x>5
y=25*x
elseif x>=0
y=x^2
else
y=0
end

5/9/2013
14
IV.Cấu trúc điều khiển 1. Cấu trúc IF
Ví dụ : Bài toán phân loại học sinh:
– Nhập điểm vào:
o điểm 9-10 xếp loại giỏi;
o điểm 7-8 xếp loại khá;
o điểm 5-6 xếp loại trung bình;
o điểm 0,1,2,3,4 xếp loại yếu;
– nếu điểm vào không phải số nguyên nằm giữa 0
và 10 thì thông báo điểm không hợp lệ.
IV.Cấu trúc điều khiển 1. Cấu trúc IF
1. diem = input('Nhap diem :');
2. if (diem == 9)|(diem == 10)
3. disp('Loai gioi')
4. elseif (diem == 7)|(diem == 8)
5. disp('Loai kha')
6. elseif (diem == 5)|(diem == 6)
7. disp('Loai trung binh')
8. elseif (diem>=0)&(diem<=4)
9. disp('Loai yeu')
10. else
11. disp(‘Diem vao khong hop le')
12. end
5/9/2013
15
IV.Cấu trúc điều khiển 2.Cấu trúc switch
switch <giá trị biểu thức>
case n1
< lệnh 1>
case n2
< lệnh 2>
. . . . . . . . . . . . . . .
case nn
< lệnh n>
otherwise
< lệnh n+1>
end
Ví dụ:
diem = input('Nhap diem :');
switch diem
case {9,10}
disp('Loai gioi')
case {7,8}
disp('Loai kha')
case {5,6}
disp('Loai trung binh')
case {0,1,2,3,4}
disp('Loai yeu')
otherwise
disp('Diem vao khong hop le')
end
IV.Cấu trúc điều khiển 3. Vòng lặp for
Vòng lặp for: được sử dụng khi số lần lặp được biết trước .
for n=array % một mảng bất kỳ, không nhất thiết là số tự nhiên
.....Lệnh hoặc nhóm lệnh
end
Ví dụ : Tính tổng của n số tự nhiên đầu tiên: S = 1+2+3+…+n
n=input('Nhap so so hang can tinh tong n = ');
S=0; %gia tri ban dau cua tong s
for k=1:n
S=S+k;
end
fprintf('Tong so %d so tu nhien dau tien la %d' ,n,S)
%d : kết quả xuất là số nguyên.
5/9/2013
16
IV.Cấu trúc điều khiển 4. Vòng lặp while
Vòng lặp while dùng khi không biết trước số lần lặp.
while <điều kiện>
<lệnh thi hành>
end
Ví dụ : Tính tổng của n số tự nhiên đầu tiên: S = 1+2+3+…+n
n=input('Nhap so so hang can tinh tong n = ');
k=0; S=0; %gia tri ban dau cua tong s
while (k<=n) %kết thúc vòng lặp khi không còn thỏa đkiện
S=S+k;
k=k+1;
end
fprintf('Tong so %d so tu nhien dau tien la %d' ,n,S)
IV.Cấu trúc điều khiển 4. Vòng lặp while
Ví dụ 2: Nhập vào các số từ bàn phím. Tính tổng các số dương tới khi
tổng này > 50 thì kết thúc .Đếm xem có bao nhiêu số đã nhập .
1. S=0; %tổng
2. k=0; %các số dương
3. m=0; % số lượng các số nhập vào
4. while S <= 50
5. x=input('Nhap cac so tu ban phim x = ')
6. m=m+1;
7. if x>0
8. S=S+x;
9. k=k+1;
10. end
11. end
12. disp('=> So cac so da nhap tu ban phim la : ')
13. disp(m)
14. disp('=> So cac so (+) nhap tu ban phim la : ')
15. disp(k)
5/9/2013
17
IV.Cấu trúc điều khiển 5. Lệnh break
• Lệnh break cho phép chấm dứt sớm vòng lặp for hoặc while khi thỏa
1 điều kiện nào đó bên trong vòng lặp nhưng nó không chấm dứt việc
thực thi chương trình.
Ví dụ:
for n=1:10
x=60-n^2;
if x<0
break;
end
y=sqrt(x);
end
disp(y)
Bài 3. Function file và Script files
 Chúng ta có thể viết và lưu các chương trình
Matlab trong những tập tin có phần mở rộng dạng
.m, được gọi là các M-file (Ví dụ ptb2.m).
 Matlab dùng 2 loại M-file là script file (tập tin lệnh)
và function file (tập tin hàm).
Script file: dùng cho chương trình đơn giản
Function file : dùng cho chương trình phức tạp
5/9/2013
18
I. Script file
Script file: là M-file đơn giản nhất, không có đối số. Được
dùng khi thi hành một loạt lệnh MATLAB theo một trình tự
nhất định.
Cấu trúc đề nghị của một Script file:
1. Phần chú thích : Viết các dòng chú thích cho chương trình.
2. Phần đầu vào: các giá trị đầu vào.
3. Phần tính toán.
4. Phần trình bày kết quả: Dùng 1 số hàm của Matlab để trình
bày kết quả.
I. Script file
Ví dụ1 : Soạn script file để tính diện tích của tam giác khi
biết tọa độ 3 điểm trong không gian. Diện tích tam giác
được tính bằng công thức tích hữu hướng của 2 vectơ.
5/9/2013
19
I. Script file
1. %File dientich.m : Chuong trinh tinh dien tich tam giac
2. %Du lieu dau vao : Toa do 3 diem A B C là [x,y,z]
3. %Du lieu dau ra : Dien tich tam giac ABC
4. %Bien p chi vecto huu huong cua 2 vecto ABxAC
5. disp('CHUONG TRINH TINH DIEN TICH TAM GIAC')
6. disp(' TOA DO 3 DIEM')
7. a=input('Toa do diem A =');
8. b=input('Toa do diem B =');
9. c=input('Toa do diem C =');
10. p=cross(b-a,c-a);% Tinh huu huong cua 2 vecto ABxAC
11. S=0.5*norm(p);% Dien tich tam giac ABC
12. disp('Dien tich tam giac ABC : ')
13. disp(S)
I. Script file
• Ví dụ: Tính tổng S=1+(1/2) + 1/3 +...+1/n
n=input ('nhap vao gia tri n ');
S=0; i=1;
while i<=n
S=S+(1/i);
i=i+1;
end
disp ('tong cua day la ')
disp(S)
5/9/2013
20
II. Function file
• Việc xây dựng hàm cũng được thực hiện tương tự như script
file. Tuy nhiên, đối với hàm ta cần quan tâm đến các tham
số truyền cho hàm và các kết quả trả về sau khi thực hiện.
• Có 3 điểm cần lưu ý:
- Tên hàm phải được đặt trùng với tên file lưu trữ.
- Phải có từ khóa function ở dòng đầu tiên.
-Trong một hàm có thể xây dựng nhiều hàm con (điều này
không có trong script file).
-Kết thúc hàm con phải có từ khóa end (điều này không cần
trong hàm ‘mẹ’).
function [giá trị ra] = function_name(giá trị vào)
II. Function file
1. Hàm chỉ có đối số vào: function tenham(in1,in2,…)
Ví dụ: Giải pt bậc 4: ax4+bx3+cx2+dx+e=0
Chương trình:
1. function ptbac4(a,b,c,d,e)
2. P=[a,b,c,d,e];
3. X=roots(P);
4. for i=1:length(X)
5. disp(['Nghiem thu',' ',num2str(i),'=',' ',num2str(X(i))])
6. end
Save chương trình với tên là: ptbac4.m
5/9/2013
21
II. Function file
2. Hàm chỉ có đối số ra: function [out1,out2,…]=tenham
Ví dụ: Xắp xếp thứ tự phần tử trong mảng X từ nhỏ lớn
1. function A=sapxep
2. X=input('Nhap mang X[ ]: ');
3. N=length(X);
4. i=1;
5. while(i<=N)
6. [tam(i),j]=min(X);
7. X(j)=[ ];%xoa phan tu thu j cua mang X
8. i=i+1;
9. end
10. A=tam;
11. end
II. Function file
3. Hàm có đối số vào/ra: function[x,y,...]=tenham(a,b,c,…)
Ví dụ1: giải pt bậc 2: ax2+bx+c=0
1. function [x1,x2]=gptb2(a,b,c)
2. if nargin<3
3. error('Vui long nhap du 3 he so cua phuong trinh')
4. elseif a==0
5. x1=-c/b;
6. x2=[ ];
7. else
8. D = b^ 2 - 4*a*c;
9. x1 = (-b+sqrt(D))/(2*a);
10. x2 = (-b-sqrt(D))/(2*a);
11. end
5/9/2013
22
II. Function file
4.Cách gọi tập tin .m
a) Hai tập tin riêng biệt:
%giai pt bac 4
function
X=ptbac4(a,b,c,d,e)
P=[a,b,c,d,e];
X=roots(P);
for i=1:length(X)
disp(['Nghiem thu','
',num2str(i),'=','
',num2str(X(i))])
end
%Save với tên: ptbac4.m
%tim nghiem max cua pt bac 4
function Y=nghiem_max(a,b,c,d,e)
X= ptbac4(a,b,c,d,e);
Y=max(X);
end
%Save với tên: nghiem_max.m
II. Function file 4.Cách gọi tập tin .m
b)Một tập tin có nhiều hàm riêng
%tim nghiem max cua pt bac 4
function Y=nghiem_max(a,b,c,d,e)
X= ptbac4(a,b,c,d,e);
Y=max(X);
end
%giai pt bac 4
function X=ptbac4(a,b,c,d,e)
P=[a,b,c,d,e];
X=roots(P);
for i=1:length(X)
disp(['Nghiem thu',' ',num2str(i),'=',' ',num2str(X(i))])
end
%Save với tên: nghiem_max.m
5/9/2013
23
III. Bài tập đề nghị
Bài 1. Viết chương trình tính chu vi và diện tích một
tam giác theo yêu cầu sau:
• Hiện yêu cầu nhập các cạnh a,b,c
• Xét điều kiện thành lập một tam giác:
−ĐK cần: a,b,c >0
−ĐK đủ: tổng 2 cạnh > cạnh còn lại
−Nếu không thỏa đk thì hiện thông báo lỗi.
• Tính chu vi + diện tích và hiện KQ.
Bài 2. Làm lại bài 1 với yêu cầu hàm có đối số vào/ra
III. Bài tập đề nghị
Giải bài 1:
1. a=input ('nhap vao do dai canh a : ');
2. b=input ('nhap vao do dai canh b : ');
3. c=input ('nhap vao do dai canh c : ');
4. if (a>0)&(b>0)&(c>0)&(a+b>c)&(c+b>c)&(a+c>b)
5. disp ('chu vi tam giac la : ');
6. cv=a+b+c
7. p=cv/2;
8. disp ('dien tich tam giac la : ');
9. s=sqrt(p*(p-a)*(p-b)*(p-c))
10. else
11. disp ('3 canh khong tao thanh tam giac ')
12. end
5/9/2013
24
III. Bài tập đề nghị
Bài 3: Nhập vào dãy số, tìm giá trị lớn nhất trong dãy?
1. n=input('nhap vao so phan tu cua day : ');
2. for i=1:n
3. a(i)=input (['a(',num2str(i),')=']);
4. end
5. disp ('day vua nhap la : '); disp(a)
6. max=a(1);
7. for i=1:n
8. if max<a(i)
9. max=a(i);
10. End;
11. End;
12. disp (['gia tri lon nhat cua day la’,num2str(max)])
III. Bài tập đề nghị
Bài 4: Kiểm tra xem một số n có phải là số nguyên tố không?
n=input('nhap vao gia tri n : ');
dem=0;
for i=1:n
if rem (n,i)==0
dem=dem+1;
end
end;
if dem==2
disp ('so vua nhap la so nguyen to')
else
disp ('so vua nhap khong phai so nguyen to')
end
5/9/2013
25
III. Bài tập đề nghị
III. Bài tập đề nghị
Bài 6: Tính n! ?
Bài 7: Tính biểu thức sau ứng với giá trị n nhập vào:
function m=giaithua(n)
if (n==1)|(n==0)
m=1;
return;
end
m=n*giaithua(n-1);
!
...
!4!3!2!1
1)(
432
n
xxxxx
xS
n
n 
5/9/2013
26
BÀI 4: ĐỒ HỌA
• NỘI DUNG:
I. Đồ họa 2-D
II. Đồ họa 3-D
I. Đồ họa 2-D
1. Đặc tả kiểu đường vẽ
• t = [0:pi/100:2*pi] ;
• y = sin(t);
• plot(t,y,‘:'); % vẽ đường chấm chấm
• grid on %tạo lưới
5/9/2013
27
2.Đặc tả màu và kích thước đường vẽ
Để đặc tả màu và kích thước đường vẽ ta dùng các tham số
sau:
• LineWidth: độ rộng đường thẳng,tính bằng số điểm
• MarkerEdgeColor: màu của các cạnh của khối đánh dấu
• MarkerFaceColor: màu của khối đánh dấu
• MarkerSize: kích thước của khối đánh dấu
Màu được xác định bằng các thông số:
3. Các dạng đánh dấu trên đồ thị
5/9/2013
28
Ví dụ :
• x = -pi : pi/10 : pi;
• y = tan(sin(x)) - sin(tan(x));
• plot(x,y,'--rs','LineWidth',2,'MarkerEdgeColor','k',...
'MarkerFaceColor','g','MarkerSize',10)
Đường cong y = f(x) có các đặc tả sau :
- đường vẽ là đường đứt nét(--)
- khối đánh dấu hình vuông (s), đường vẽ màu đỏ(r)
- đường vẽ rộng 2 point
- các cạnh của khối đánh màu đen
- khối đánh dấu màu green
- kích thước khối đánh dấu 10 point
Đặt các thông số cho trục
• Ví dụ:
1. x=[0 1 2 3];
2. y=[0 4 1 5];
3. h=plot(x,y)
• Để thấy các thuộc tính đồ họa của hàm plot ta dùng
lệnh
• set(h)
• Bây giờ ta thay đổi thuộc tính của đồ thị:
1. set(h,’Color’, ‘r’) %dat lai mau do
2. set(h,'LineWidth',6) %dat do rong duong
3. set(h,'Marker','v','MarkerSize',6)
5/9/2013
29
Ghi nhãn lên các trục tọa độ
Ví dụ
1. x=[-5:0.01:5];
2. y1=x.^2;
3. plot(x,y1,'r--')
4. xlabel('Truc x');
5. ylabel('Truc y');
6. legend('y1=x^2')
7. text(-3,9,' leftarrow x^2','FontSize',18)
8. gtext('Do thi')
5/9/2013
30
4.Vẽ nhiều hình trên 1 trục
Ví dụ: Vẽ 2 hàm y1=x2 và
y2=cos3x, (rad) trên
cùng 1 đồ thị.
Cách 1:
1. x=[-5:0.01:5];
2. y1=x.^2;
3. y2=cos(3*x);
4. plot(x,y1,x,y2,'r--')
5. xlabel('Truc x');
6. ylabel('Truc y');
7. legend('y1=x^2','y2=cos
3x')
Cách 2:
1. x=[0:0.01:5];
2. y1=x.^2;
3. y2=cos(3*x);
4. grid on
5. hold on
6. plot(x,y1,'r--')
7. plot(x,y2, 'm--')
8. xlabel('Truc x');
9. ylabel('Truc y');
10.hold off
5.Vẽ nhiều trục
• Hàm:
subplot(m,n,p)
subplot(mnp)
• subplot(2,2,[1 3])
subplot(2,2,2)
subplot(2,2,4)
• subplot(2,2,1:2)
subplot(2,2,3)
subplot(2,2,4)
x=[-5:0.01:5];
for n = 1:8
subplot(4,2,n)
plot(x,sin(n*pi*x))
end
5/9/2013
31
5.Vẽ nhiều trục
• Ví dụ:
1. function dieucheAM(fc,fm)
2. Ac = 1; % Carrier Amplitude
3. Am = 1; % Baseband Amplitude
4. m = Am/Ac;
5. t = linspace(0,1,100*fc);
6. c=Ac*cos(2*pi*fc*t);
7. e = (Ac + Am*cos(2*pi*fm*t));
8. u = (Ac + Am*cos(2*pi*fm*t)).*cos(2*pi*fc*t); %DSB-AM
9. subplot(1,3,1);plot(t,e,'r');grid on
10. subplot(1,3,2);plot(t,c,'r');grid on
11. subplot(1,3,3);plot(t,u);grid on
6.Các lệnh vẽ đồ thị khác
• Lệnh BAR: vẽ đồ thị dạng cột
1. Y = round(rand(5,3)*10);
2. subplot(2,2,1); bar(Y,'group')
3. title 'Group'
4. subplot(2,2,2); bar(Y,'stack')
5. title 'Stack'
6. subplot(2,2,3); barh(Y,'stack')
7. title 'Stack'
8. subplot(2,2,4) ; bar(Y,1.5)
9. title 'Width = 1.5'
• Lệnh POLAR : vẽ hệ tọa độ cực
1. t = -pi:0.01:pi;
2. polar(t, sin(t))
1 2 3 4 5
0
2
4
6
8
Group
1 2 3 4 5
0
5
10
15
20
Stack
0 5 10 15 20
1
2
3
4
5
Stack
1 2 3 4 5
0
2
4
6
8
Width = 1.5
5/9/2013
32
6.Các lệnh vẽ đồ thị khác
• Lệnh POLAR : vẽ hệ tọa độ cực
Ví dụ 1:
t = -pi:0.01:pi;
polar(t, sin(t))
Ví dụ 2:
x=0:0.1:2*pi;
polar(x,abs(sin(2*x).*cos(2*x)))
6.Các lệnh vẽ đồ thị khác
• Lệnh STAIRS: vẽ đồ thị dạng bậc thang
1. x = -pi:0.2:pi;
2. stairs(x,sin(x))
3. xlabeL('Truc x')
4. ylabel('y = stairs(x,sin(x)')
5. grid on
-4 -3 -2 -1 0 1 2 3 4
-1
-0.8
-0.6
-0.4
-0.2
0
0.2
0.4
0.6
0.8
1
Truc x
y=stairs(x,sin(x)
5/9/2013
33
6.Các lệnh vẽ đồ thị khác
• Lệnh STEM: phân bố lược
1. x = 0:0.1:4;
2. stem(x,exp(x))
3. xlabeL('Truc x')
4. ylabel('y = stairs(x,sin(x)')
5. grid on
0 0.5 1 1.5 2 2.5 3 3.5 4
0
10
20
30
40
50
60
Truc x
y=stairs(x,sin(x)
Ví dụ 3:
Soạn thảo script file có tên bai3.m để lập biểu đồ tổng số sinh viên Điện
Tử - Tin học tốt nghiệp tại trường X từ năm 1996 đến 2001 với dữ liệu
như sau:
• % Lap bieu do tong so sinh vien Dien tu – Tin hoc tot nghiep
• %
1. svdt=[38 33 36 31 60 70];
2. svth=[48 54 120 92 110 131];
3. nam=1996:2001;
4. subplot(211), bar(nam,svdt);
5. title('Sinh vien Dien tu tot nghiep tu 1996-2001');
6. subplot(212), bar(nam,svth);
7. title('Sinh vien Tin hoc tot nghiep tu 1996-2001');
8. colormap(cool(5));
Colormap 
5/9/2013
34
6.Các lệnh vẽ đồ thị khác
• Lệnh PIE: phân bố % hình tròn
x=[20 45 15 13 7];
y=[0 0 1 0 0] % 1 để nhấn mạnh phần 15,
%chọn 0 để chúng dính liền nhau.
pie(x,y)
20%
45%
15%
13%
7%
Lệnh ginput
• fplot('sinc(x)',[-2*pi,2*pi]);
• [x,y]=ginput(3) %lấy tọa độ 3 điểm trên đồ thị
5/9/2013
35
II. ĐỒ HỌA 3D
• Ví dụ:
• >> [x,y,z]=peaks; %hàm có phân bố Gauss
• >> plot3(x,y,z)
• >> mesh(x,y,z) %bề mặt dạng lưới
• >> surf(x,y,z) %tô màu bề mặt
• >> waterfall(x,y,z)
• >> pcolor(x,y,z)%giá trị Z được thể hiện với
giá trị màu tương ứng
• >> contour(x,y,z) %lấy đường viền trong 2D
Bài 5: SIMULINK
• Simulink là một phần mềm mở rộng của MATLAB
(Toolbox của Matlab) dùng để mô hình hoá, mô
phỏng và phân tích một hệ thống động, thiết kế hệ
thống điều khiển, thiết kế DSP, hệ thống thông tin
và các ứng dụng mô phỏng khác.
• Simulink được ghép bởi hai từ Simulation và Link.
Simulink cho phép mô tả hệ thống tuyến tính,hệ
phi tuyến, các mô hình trong miền thời gian liên
tục, hay gián đoạn hoặc một hệ gồm cả liên tục và
gián đoạn.
5/9/2013
36
CÁC BLOCKS LIBRARY:
• Thư viện SOURCES
• Thư viện Đồ thị (SINKS)
• Thư viện Phần Rời Rạc (DISCRETE)
• Thư viện Phần Tuyến tính (LINEAR)
• Thư viện Phần Phi Tuyến (NONLINEAR)
• Thư viện Phần Đầu Nối (CONECTIONS)
• Thư viện BLOCKSETS và TOOLBOXES
• ….
Các kiểu dữ liệu
Simulink chấp nhận các kiểu dữ liệu sau :
• double số thực với độ chính xác gấp đôi
• single số thực với độ chính xác đơn
• int8 số nguyên có dấu 8 bit
• uint8 số nguyên không dấu 8 bit
• int16 số nguyên có dấu 16 bit
• uint16 số nguyên khg dấu 16 bit
• int32 số nguyên có dấu 32 bit
• uint32 số nguyên không dấu 32 bit
5/9/2013
37
Các bước để vẽ mô hình
1.Từ cửa sổ Matlab đánh lệnh simulink. Cửa
sổ thư viện các khối sẽ xuất hiện
2.Từ cửa sổ thư viện ta nhấp chuột vào
File/New/Model hoặc nhấn Ctrl+ N.
3. Chọn các Block ở các thư viện thích hợp
và xây dựng mô hình sử dụng thao tác
"nhấn – kéo – thả" chuột.
Ví dụ 1
• Trong sơ đồ này chọn các khối từ các thư viện:
+ Thư viện các nguồn tín hiệu (Sources): Chọn Sin wave.
+ Thư viện các khối nhận tín hiệu (Sinks): Chọn Scope.
+ Các hàm tuyến tính (continuous): Chọn Integrator.
+ Commonly userd blocks: Chọn Mux.
5/9/2013
38
Ví dụ 2
• Mô phỏng một phương trình dùng để biến đổi độ Celcius
thành độ Fahrenheit là : TF = (9/5)TC + 32
• Trước hết ta khảo sát các khối cần để tạo mô hình:
 khối Ramp trong thư viện Sources để đưa vào tín hiệu nhiệt độ
 khối Constant trong thư viện Sources để tạo hằng số 32
 khối Gain trong thư viện Math để tạo ra hệ số 9/5
 khối Sum trong thư viện Math để cộng hai đại lượng
 khối Scope trong thư viện Sinks để hiển thị kết quả.
Ví dụ 3: Mô phỏng hệ pt
z1 +z2 =1
-z1+z2=1
5/9/2013
39
Ví dụ 4: Mô phỏng pt vi phân
x’(t) = -2x’(t) + u(t)
• Với u(t) là một sóng vuông có biên độ=1
và tần số =1 rad/sec.
Ví dụ 5: Thiết kế và phân tích hệ thống
5/9/2013
40
Ví dụ 6: Mô phỏng phương trình sau
Sine Wave
Scope
Product2
Product1
Product
eu
Math
Function
-1
Gain1
-1
Gain
80
Constant
Clock
3
Sine Wave
Scope
Product2
Product1
Product
eu
Math
Function
-1
Gain1
-1
Gain
80
Constant
Clock
3
1.Nhập vào chuỗi số và in ra kết quả tính
của:
• A) tổng bình phương các số trong chuỗi?
• B) giai thừa của các phần tử trong chuỗi?
• C) số nguyên tố trong chuỗi?
2. Nhập chuỗi ký tự chữ thường và in ra
chuỗi ký tự chữ HOA?
3. Nhập vào chuỗi số và in ra chuỗi mới với
thứ tự ngược lại?
4. Vẽ đồ thị và tìm cực trị của hàm
f(x)=x^3+2*x^2-1 ?
5. Tính x^n=?
5/9/2013
41
6. Viết chương trình yêu cầu Nhập liên tiếp
các số và khi nhập số 0 thì dừng nhập.
Tính trung bình cộng các số âm và trung
bình cộng các số dương vừa nhập?

More Related Content

What's hot

Các phương pháp đếm nâng cao
Các phương pháp đếm nâng caoCác phương pháp đếm nâng cao
Các phương pháp đếm nâng caoThế Giới Tinh Hoa
 
Kiến trúc máy tính và hợp ngữ bài 05
Kiến trúc máy tính và hợp ngữ bài 05Kiến trúc máy tính và hợp ngữ bài 05
Kiến trúc máy tính và hợp ngữ bài 05Nhóc Nhóc
 
30 bài toán phương pháp tính
30 bài toán phương pháp tính30 bài toán phương pháp tính
30 bài toán phương pháp tínhPham Huy
 
Phân tích và thiết kế hệ thống quản lý bán hàng
Phân tích và thiết kế hệ thống quản lý bán hàngPhân tích và thiết kế hệ thống quản lý bán hàng
Phân tích và thiết kế hệ thống quản lý bán hàngleemindinh
 
Tài liệu Matlab kỹ thuật
Tài liệu Matlab kỹ thuậtTài liệu Matlab kỹ thuật
Tài liệu Matlab kỹ thuậtPham Hoang
 
Bài tập tích phân suy rộng.
Bài tập tích phân suy rộng.Bài tập tích phân suy rộng.
Bài tập tích phân suy rộng.Van-Duyet Le
 
Bài tập thực hành số 1
Bài tập thực hành số 1Bài tập thực hành số 1
Bài tập thực hành số 1Tran Trung Dung
 
Tích phân-4-Phương pháp nguyên hàm_tích phân từng phần-pages-45-58
Tích phân-4-Phương pháp nguyên hàm_tích phân từng phần-pages-45-58Tích phân-4-Phương pháp nguyên hàm_tích phân từng phần-pages-45-58
Tích phân-4-Phương pháp nguyên hàm_tích phân từng phần-pages-45-58lovestem
 
Lập trình c++ có lời giải 2
Lập trình c++ có lời giải 2Lập trình c++ có lời giải 2
Lập trình c++ có lời giải 2Minh Ngoc Tran
 
Vi du chi tiet giai thich lap trinh gui trong matlab
Vi du chi tiet  giai thich lap trinh gui trong matlabVi du chi tiet  giai thich lap trinh gui trong matlab
Vi du chi tiet giai thich lap trinh gui trong matlabPhạmThế Anh
 
Tính toán khoa học: Chương 3: Đường cong khớp
Tính toán khoa học: Chương 3: Đường cong khớpTính toán khoa học: Chương 3: Đường cong khớp
Tính toán khoa học: Chương 3: Đường cong khớpChien Dang
 
[Báo cáo] Bài tập lớn Ngôn ngữ lập trình: Quản lý thư viện
[Báo cáo] Bài tập lớn Ngôn ngữ lập trình: Quản lý thư viện[Báo cáo] Bài tập lớn Ngôn ngữ lập trình: Quản lý thư viện
[Báo cáo] Bài tập lớn Ngôn ngữ lập trình: Quản lý thư việnThe Nguyen Manh
 
Bài tập mẫu C và C++ có giải
Bài tập mẫu C và C++ có giảiBài tập mẫu C và C++ có giải
Bài tập mẫu C và C++ có giảiTrung Thanh Nguyen
 
Giaitichcoso(PGS.TS.NguyenBichHuy).pdf
Giaitichcoso(PGS.TS.NguyenBichHuy).pdfGiaitichcoso(PGS.TS.NguyenBichHuy).pdf
Giaitichcoso(PGS.TS.NguyenBichHuy).pdfBui Loi
 
Bài giảng Công Nghệ Phần Mềm
Bài giảng Công Nghệ Phần MềmBài giảng Công Nghệ Phần Mềm
Bài giảng Công Nghệ Phần MềmHoài Phạm
 
Chuong 2. de quy dai hoc
Chuong 2. de quy   dai hocChuong 2. de quy   dai hoc
Chuong 2. de quy dai hocVũ Nam
 
Tính toán khoa học - Chương 6: Bài toán giá trị ban đầu với phương trình vi p...
Tính toán khoa học - Chương 6: Bài toán giá trị ban đầu với phương trình vi p...Tính toán khoa học - Chương 6: Bài toán giá trị ban đầu với phương trình vi p...
Tính toán khoa học - Chương 6: Bài toán giá trị ban đầu với phương trình vi p...Chien Dang
 

What's hot (20)

Các phương pháp đếm nâng cao
Các phương pháp đếm nâng caoCác phương pháp đếm nâng cao
Các phương pháp đếm nâng cao
 
Kiến trúc máy tính và hợp ngữ bài 05
Kiến trúc máy tính và hợp ngữ bài 05Kiến trúc máy tính và hợp ngữ bài 05
Kiến trúc máy tính và hợp ngữ bài 05
 
30 bài toán phương pháp tính
30 bài toán phương pháp tính30 bài toán phương pháp tính
30 bài toán phương pháp tính
 
Phân tích và thiết kế hệ thống quản lý bán hàng
Phân tích và thiết kế hệ thống quản lý bán hàngPhân tích và thiết kế hệ thống quản lý bán hàng
Phân tích và thiết kế hệ thống quản lý bán hàng
 
Tài liệu Matlab kỹ thuật
Tài liệu Matlab kỹ thuậtTài liệu Matlab kỹ thuật
Tài liệu Matlab kỹ thuật
 
Chuong02
Chuong02Chuong02
Chuong02
 
Bài tập tích phân suy rộng.
Bài tập tích phân suy rộng.Bài tập tích phân suy rộng.
Bài tập tích phân suy rộng.
 
Cac lenh trong matlab
Cac lenh trong matlabCac lenh trong matlab
Cac lenh trong matlab
 
Bài tập thực hành số 1
Bài tập thực hành số 1Bài tập thực hành số 1
Bài tập thực hành số 1
 
Tích phân-4-Phương pháp nguyên hàm_tích phân từng phần-pages-45-58
Tích phân-4-Phương pháp nguyên hàm_tích phân từng phần-pages-45-58Tích phân-4-Phương pháp nguyên hàm_tích phân từng phần-pages-45-58
Tích phân-4-Phương pháp nguyên hàm_tích phân từng phần-pages-45-58
 
Lập trình c++ có lời giải 2
Lập trình c++ có lời giải 2Lập trình c++ có lời giải 2
Lập trình c++ có lời giải 2
 
Vi du chi tiet giai thich lap trinh gui trong matlab
Vi du chi tiet  giai thich lap trinh gui trong matlabVi du chi tiet  giai thich lap trinh gui trong matlab
Vi du chi tiet giai thich lap trinh gui trong matlab
 
Đề tài: Nhận dạng mặt người trên matlab, HOT, 9đ
Đề tài: Nhận dạng mặt người trên matlab, HOT, 9đĐề tài: Nhận dạng mặt người trên matlab, HOT, 9đ
Đề tài: Nhận dạng mặt người trên matlab, HOT, 9đ
 
Tính toán khoa học: Chương 3: Đường cong khớp
Tính toán khoa học: Chương 3: Đường cong khớpTính toán khoa học: Chương 3: Đường cong khớp
Tính toán khoa học: Chương 3: Đường cong khớp
 
[Báo cáo] Bài tập lớn Ngôn ngữ lập trình: Quản lý thư viện
[Báo cáo] Bài tập lớn Ngôn ngữ lập trình: Quản lý thư viện[Báo cáo] Bài tập lớn Ngôn ngữ lập trình: Quản lý thư viện
[Báo cáo] Bài tập lớn Ngôn ngữ lập trình: Quản lý thư viện
 
Bài tập mẫu C và C++ có giải
Bài tập mẫu C và C++ có giảiBài tập mẫu C và C++ có giải
Bài tập mẫu C và C++ có giải
 
Giaitichcoso(PGS.TS.NguyenBichHuy).pdf
Giaitichcoso(PGS.TS.NguyenBichHuy).pdfGiaitichcoso(PGS.TS.NguyenBichHuy).pdf
Giaitichcoso(PGS.TS.NguyenBichHuy).pdf
 
Bài giảng Công Nghệ Phần Mềm
Bài giảng Công Nghệ Phần MềmBài giảng Công Nghệ Phần Mềm
Bài giảng Công Nghệ Phần Mềm
 
Chuong 2. de quy dai hoc
Chuong 2. de quy   dai hocChuong 2. de quy   dai hoc
Chuong 2. de quy dai hoc
 
Tính toán khoa học - Chương 6: Bài toán giá trị ban đầu với phương trình vi p...
Tính toán khoa học - Chương 6: Bài toán giá trị ban đầu với phương trình vi p...Tính toán khoa học - Chương 6: Bài toán giá trị ban đầu với phương trình vi p...
Tính toán khoa học - Chương 6: Bài toán giá trị ban đầu với phương trình vi p...
 

Similar to matlab co ban

Bai thi Nghiem ky thuat dien tu
Bai thi Nghiem ky thuat dien tuBai thi Nghiem ky thuat dien tu
Bai thi Nghiem ky thuat dien tuBrand Xanh
 
Chuong 1 Matlab co ban.pdf
Chuong 1 Matlab co ban.pdfChuong 1 Matlab co ban.pdf
Chuong 1 Matlab co ban.pdfHngTrn365275
 
Chuong 1 Matlab co ban.pdf
Chuong 1 Matlab co ban.pdfChuong 1 Matlab co ban.pdf
Chuong 1 Matlab co ban.pdfnguyenkaka2
 
Thuchanh Ktdk-matlab
Thuchanh Ktdk-matlabThuchanh Ktdk-matlab
Thuchanh Ktdk-matlabmark
 
Tailieu.vncty.com 06 matlab-osadq3_j2qu_20130412090644_577
Tailieu.vncty.com   06 matlab-osadq3_j2qu_20130412090644_577Tailieu.vncty.com   06 matlab-osadq3_j2qu_20130412090644_577
Tailieu.vncty.com 06 matlab-osadq3_j2qu_20130412090644_577Trần Đức Anh
 
2 matlab ly-thuyet_laptrinh_hamtoanhoc_
2 matlab ly-thuyet_laptrinh_hamtoanhoc_2 matlab ly-thuyet_laptrinh_hamtoanhoc_
2 matlab ly-thuyet_laptrinh_hamtoanhoc_Thân Văn Ngọc
 
2 matlab ly-thuyet_laptrinh_hamtoanhoc_
2 matlab ly-thuyet_laptrinh_hamtoanhoc_2 matlab ly-thuyet_laptrinh_hamtoanhoc_
2 matlab ly-thuyet_laptrinh_hamtoanhoc_Vũ Đình
 
2 matlab ly-thuyet_laptrinh_hamtoanhoc_
2 matlab ly-thuyet_laptrinh_hamtoanhoc_2 matlab ly-thuyet_laptrinh_hamtoanhoc_
2 matlab ly-thuyet_laptrinh_hamtoanhoc_LeeRyuRyu
 
Lttt matlab chuong 2
Lttt matlab chuong 2Lttt matlab chuong 2
Lttt matlab chuong 2Hoa Cỏ May
 
Xây dựng mô hình gián đoạn của động cơ một chiều kích từ độc lập
Xây dựng mô hình gián đoạn của động cơ một chiều kích từ độc lậpXây dựng mô hình gián đoạn của động cơ một chiều kích từ độc lập
Xây dựng mô hình gián đoạn của động cơ một chiều kích từ độc lậpnataliej4
 
Help maple 20000x
Help maple 20000xHelp maple 20000x
Help maple 20000xMicheal Lim
 
Nhom lenh co ban
Nhom lenh co banNhom lenh co ban
Nhom lenh co banVũ Tích
 
bai giang Matlab
bai giang Matlabbai giang Matlab
bai giang Matlableoteo113
 
Khao sat-ung-dung-matlab-trong-dieu-khien-tu-dong
Khao sat-ung-dung-matlab-trong-dieu-khien-tu-dongKhao sat-ung-dung-matlab-trong-dieu-khien-tu-dong
Khao sat-ung-dung-matlab-trong-dieu-khien-tu-dongTuấn Anh Phạm
 
Khao sat-ung-dung-matlab-trong-dieu-khien-tu-dong
Khao sat-ung-dung-matlab-trong-dieu-khien-tu-dongKhao sat-ung-dung-matlab-trong-dieu-khien-tu-dong
Khao sat-ung-dung-matlab-trong-dieu-khien-tu-dongKhoa Pham
 
Ctdl lab07-cac thuat-toan_sap_xep
Ctdl lab07-cac thuat-toan_sap_xepCtdl lab07-cac thuat-toan_sap_xep
Ctdl lab07-cac thuat-toan_sap_xepNguyễn Ngọc Hà
 

Similar to matlab co ban (20)

Bai thi Nghiem ky thuat dien tu
Bai thi Nghiem ky thuat dien tuBai thi Nghiem ky thuat dien tu
Bai thi Nghiem ky thuat dien tu
 
Matlab intro
Matlab introMatlab intro
Matlab intro
 
Chuong 1 Matlab co ban.pdf
Chuong 1 Matlab co ban.pdfChuong 1 Matlab co ban.pdf
Chuong 1 Matlab co ban.pdf
 
Chuong 1 Matlab co ban.pdf
Chuong 1 Matlab co ban.pdfChuong 1 Matlab co ban.pdf
Chuong 1 Matlab co ban.pdf
 
Co ban ve_matlab
Co ban ve_matlabCo ban ve_matlab
Co ban ve_matlab
 
Thuchanh Ktdk-matlab
Thuchanh Ktdk-matlabThuchanh Ktdk-matlab
Thuchanh Ktdk-matlab
 
Chuong1
Chuong1Chuong1
Chuong1
 
Tailieu.vncty.com 06 matlab-osadq3_j2qu_20130412090644_577
Tailieu.vncty.com   06 matlab-osadq3_j2qu_20130412090644_577Tailieu.vncty.com   06 matlab-osadq3_j2qu_20130412090644_577
Tailieu.vncty.com 06 matlab-osadq3_j2qu_20130412090644_577
 
2 matlab ly-thuyet_laptrinh_hamtoanhoc_
2 matlab ly-thuyet_laptrinh_hamtoanhoc_2 matlab ly-thuyet_laptrinh_hamtoanhoc_
2 matlab ly-thuyet_laptrinh_hamtoanhoc_
 
2 matlab ly-thuyet_laptrinh_hamtoanhoc_
2 matlab ly-thuyet_laptrinh_hamtoanhoc_2 matlab ly-thuyet_laptrinh_hamtoanhoc_
2 matlab ly-thuyet_laptrinh_hamtoanhoc_
 
2 matlab ly-thuyet_laptrinh_hamtoanhoc_
2 matlab ly-thuyet_laptrinh_hamtoanhoc_2 matlab ly-thuyet_laptrinh_hamtoanhoc_
2 matlab ly-thuyet_laptrinh_hamtoanhoc_
 
Lttt matlab chuong 2
Lttt matlab chuong 2Lttt matlab chuong 2
Lttt matlab chuong 2
 
Xây dựng mô hình gián đoạn của động cơ một chiều kích từ độc lập
Xây dựng mô hình gián đoạn của động cơ một chiều kích từ độc lậpXây dựng mô hình gián đoạn của động cơ một chiều kích từ độc lập
Xây dựng mô hình gián đoạn của động cơ một chiều kích từ độc lập
 
huong dan_su_dung_maple
huong dan_su_dung_maplehuong dan_su_dung_maple
huong dan_su_dung_maple
 
Help maple 20000x
Help maple 20000xHelp maple 20000x
Help maple 20000x
 
Nhom lenh co ban
Nhom lenh co banNhom lenh co ban
Nhom lenh co ban
 
bai giang Matlab
bai giang Matlabbai giang Matlab
bai giang Matlab
 
Khao sat-ung-dung-matlab-trong-dieu-khien-tu-dong
Khao sat-ung-dung-matlab-trong-dieu-khien-tu-dongKhao sat-ung-dung-matlab-trong-dieu-khien-tu-dong
Khao sat-ung-dung-matlab-trong-dieu-khien-tu-dong
 
Khao sat-ung-dung-matlab-trong-dieu-khien-tu-dong
Khao sat-ung-dung-matlab-trong-dieu-khien-tu-dongKhao sat-ung-dung-matlab-trong-dieu-khien-tu-dong
Khao sat-ung-dung-matlab-trong-dieu-khien-tu-dong
 
Ctdl lab07-cac thuat-toan_sap_xep
Ctdl lab07-cac thuat-toan_sap_xepCtdl lab07-cac thuat-toan_sap_xep
Ctdl lab07-cac thuat-toan_sap_xep
 

matlab co ban

  • 1. 5/9/2013 1 BÀI GIẢNG GV:ThS. Võ Thiện Lĩnh Một số vấn đề cần tìm hiểu 1. Giới thiệu Matlab 2. Cơ sở về Matlab 3. Function files và Script files. 4. Đồ họa 5. Tạo giao diện trong Matlab. 6. Simulink.
  • 2. 5/9/2013 2 BÀI 1.GIỚI THIỆU  Matlab vừa là một ngôn ngữ lập trình vừa là một phần mềm ứng dụng tính toán rất hiệu quả.  Matlab - Matrix Laboratory  Matlab là một thương hiệu đã được thương mại hóa của tập đoàn MathWorks BÀI 1.GIỚI THIỆU Khả năng và những ứng dụng của Matlab  Thư viện dựng sẵn to lớn rất phong phú nhiều lĩnh vực  Giải quyết các vấn đề một cách số học  Matlab ứng dụng những thuật toán đã kiểm chứng nên kết quả đáng tin cậy.  Lệnh và hàm sử dụng rất đơn giản.  Có thể xây dựng những hàm riêng cho những ứng dụng đặc biệt.  Cung cấp thư viện hàm đồ họa rất mạnh.  Cung cấp gói ứng dụng Simulink đầy đủ để mô phỏng.
  • 3. 5/9/2013 3 BÀI 1.GIỚI THIỆU Quản lý không gian làm việc của Matlab  Cửa sổ trợ giúp (Help window)  Nút Start  Cửa sổ nhập lệnh (Command window)  Cửa sổ không gian làm việc (Workspace window)  Cửa sổ quá trình lệnh (Command History window)  Cửa sổ địa chỉ thư mục hiện thời (Current directory window) BÀI 2: CƠ SỞ VỀ MATLAB  Các biến và hằng số  Hàm lập sẵn  Một số ví dụ để làm quen với Matlab  Vector và ma trận  So sánh và phép tính logic  Các lệnh điều khiển chương trình
  • 4. 5/9/2013 4 I. Các biến và hằng số 1.Biến Tên_biến = giá trị hoặc biểu thức + Biến (variable) trong Matlab là 1 kí hiệu được sử dụng để chứa 1 giá trị. Gồm biến toàn cục(global), biến cục bộ(local). + Tên biến (variable name): bắt đầu bằng một chữ cái, tiếp theo là các chữ cái, chữ số hoặc kí tự gạch chân(_) . Tối đa là 31 kí tự, Matlab phân biệt rõ chữ hoa chữ thường. + Ví dụ : >> x = 5 ; >> x = x + 3 ; + Biến kiểu xâu kí tự ( string ) >> ten='Nguyen Van A' ten = Nguyen Van A Tránh đặt tên biến trùng với tên các hàm chuẩn, hoặc các từ khóa của Matlab I. Các biến và hằng số 2. Các hằng
  • 5. 5/9/2013 5 II. Hàm lập sẵn • sqrt(x) : hàm rút căn bậc hai • exp(x) : hàm e ( e = 2,71828…) • log(x) : hàm lôgarit tự nhiên ( cơ số e ) • log10(x): hàm lôgarit cơ số 10 • sin(x)/ cos(x) : hàm sin/ hàm cos • tan(x) / cot(x) : hàm tang/ hàm cotang • ........ >> help LỆNH Một số hàm liên quan đến số phức như sau: • abs(z) : lấy mođun (suất) của số phức. • anglc(z): lấy góc pha của số phức. • real(x): lấy phần thực. • imag(x) : lấy phần ảo. • conj(x) : trả về số phức liên hiệp của số phức z II. Hàm lập sẵn 1. Một số lệnh Lệnh Công dụng clc Xóa (lau) cửa sổ lệnh. Mang tính chất hình thức,giá trị các biến vẫn tồn tại. clear all Giải phóng toàn bộ biến ra khỏi bộ nhớ. Xóa Workspace clear var1 var2 Giải phóng các biến var1 var2 ra khỏi bộ nhớ. quit Thoát khỏi chương trình Matlab who Liệt kê các biến hiện hành có trong bộ nhớ. ; Dấu chấm phẩy ; ở cuối dòng lệnh ngăn không cho Matlab hiển thị các kết quả ra cửa sổ lệnh. … Khi dòng lệnh quá dài cần xuống dòng, dấu 3 chấm … ở cuối dòng lệnh báo cho Matlab biết dòng lệnh còn tiếp tục ở dòng tiếp theo. : Dấu 2 chấm : được dùng để phát sinh một mảng có các phần tử cách đều nhau. % Dấu phần trăm % Matlab xem nhữnggì sau dấu % là lời bình
  • 6. 5/9/2013 6 II. Hàm lập sẵn 1. Một số lệnh Lưu phiên làm việc với Matlab -Lệnh 'diary' sử dụng cho mục đích này. Thực hiện: >> diary('diary_file_name') >> ........ (các câu lệnh của bạn ở đây) >> diary off II. Hàm lập sẵn 2. Một số ví dụ • >>z = sqrt(25) • >>y=sin(pi/4) • >>round(3.8) = 4, round(3.49) = 3, round(3.5) = 4 • >>y = 3^2+1 • >>x = y/5, z= y5 • >> rem(10,3) • >>c=clock • >> z = 1 – 2i, abs(z), angle(z)*180/pi,real(z), imag(z) • Giải phương trình bậc 2 trong R : 2x2 + 5x - 3 = 0
  • 7. 5/9/2013 7 II. Hàm lập sẵn 2.Một số ví dụ(tt) Thành lập biểu thức: >>syms x y; >>S=2*x+3*y; Tính giá trị biểu thức S với: x=2; y=3 >>u=subs(S,{x,y},{2,3}) >>u= subs(S,x,y^2) Khai triển và rút gọn: >>v=x^2+2*x+1 >>a=factor(v),b=expand(a) >>c=factor(x^4-1), d=simplify(c) II. Hàm lập sẵn 2.Một số ví dụ (tt) 1.Giải phương trình bậc 2 trong R : 2x2 + 5x - 3 = 0 Sử dụng lệnh “solve” >>solve(‘2*x^2+5*x-3=0'); 2.Giải phương trình sau theo ẩn b và c: b2 +8c+2b=0 >>solve('b^2+8*c+2*b=0','c') >>solve('b^2+8*c+2*b=0',‘b') 3.Giải hệ phương trình sau: >> [x y] = solve('3*x+y+1', '4*y+2*x-1') 4.Giải hệ phương trình sau:
  • 8. 5/9/2013 8 II. Hàm lập sẵn 2.Một số ví dụ (tt) Tính đạo hàm biểu thức sau: x3 + 2x +5y theo x và y >> syms x y >> diff(x^3+2*x+5*y,x) >> diff(x^3+2*x+5*y,y) Tính đạo hàm bậc 2 của: sin(xy2) theo x và y >> diff(sin(x*y^2),x,2) >> diff(sin(x*y^2),y,2) II. Hàm lập sẵn 2.Một số ví dụ (tt) Tính tích phân sau: >> syms x y n >> int(x^n) >> int(x^n,n) %biến lấy tích phân là n: Tính tích phân sau: >> syms x a b >> int(x^2,a,b) Tính tích phân sau theo y: >>int(x*y^2,y,0,2) n x dx n x dn 2 b a x dx 2 2 0 xy dy
  • 9. 5/9/2013 9 II. Hàm lập sẵn 2.Một số ví dụ (tt) Giải phương trình vi phân sau: y’(t) + 4y(t) = e-t >> y=dsolve('Dy+4*y=exp(-t)') Giải phương trình vi phân sau: y’(t) + 4y(t) = e-t , y(0)=1 >> y=dsolve('Dy+4*y=exp(-t)','y(0)=1‘) Giải phương trình vi phân sau: y’’(t) + 4y(t) = e-2t , y(0)=1, y(pi)=0 >> y=dsolve('D2y+4*y=exp(-2*t)','y(0)=0','y(pi)=0') II. Hàm lập sẵn 3.Vector & ma trận Mảng:Mảng: là tập hợp số, ký tự được sắp xếp có thứ tự • Mảng 1 chiều ( vectơ) -Vectơ hàng (row array) >>x=[2,7,0,-3] %cách nhau dấu ‘ , ’ hoặc khoảng trắng. -Vectơ cột (column array) >>v=[3;5;6;9] %cách nhau bằng dấu ‘ ; ’ • Mảng 2 chiều( ma trận) >> A=[2,4,6 ; 3,5,7 ; 4,6,8] A= 2 4 6 3 5 7 4 6 8
  • 10. 5/9/2013 10 II. Hàm lập sẵn 3.Vector & ma trận Mảng có các phần tử cách đều Tên_mảng=[ ptử đầu a : gia số : ptử cuối b ]; Tên_mảng=linspace(a,b,n); n là số phần tử của mảng Tên_mảng=logspace(a,b,n); tăng theo hàm log Ví dụ: >>u= [0:1:10] Hoặc: >>u= linspace(0,10,11) II. Hàm lập sẵn 3.Vector & ma trận Tìm nghiệm của đa thức x3 + 6x2 -11x +290 >>a=[1,6,-11,290]; % các hệ số của đa thức. >>x=roots(a) Hoặc >>x=roots([1,6,-11,290]); Đa thức trên có 3 nghiệm là: x1= -10 và x2= 2+5i, x3= 2-5i Dùng hàm poly() kiểm tra lại ví dụ trên >>r=[-10,2+5i,2-5i]; % cho trước các nghiệm >>poly( r ) ans= 1 6 -11 290 Đa thức phải tìm là: x3 + 6x2 -11x +290. Lưu ý: các hệ số được sắp xếp theo lũy thừa giảm của biến.
  • 11. 5/9/2013 11 II. Hàm lập sẵn 3.Vector & ma trận Tìm ma trận chuyển vị: >> A=[2,4,6 ; 3,5,7 ; 4,6,8] A= 2 4 6 3 5 7 4 6 8 Truy xuất 1 phần tử của ma trận >> A(2,3) % truy xuat ptu dong 2 cot 3 >> A(:,2) % trich vecto cot thu 2 >> A(3,:) % trich vecto dong thu 3 >> A(:,2:3) % tao ma tran con gom cot 2,3 cua A >> A(1:2,:) % tao ma tran con gom cac dong 1, 2 cua A >> A([1 3],[2 3]) % tao 1 ma tran con gom cac ptu dong 1,3 va cot 2,3 >> b=A’ b = 2 3 4 4 5 6 6 7 8 II. Hàm lập sẵn 3.Vector & ma trận Tên hàm Ý nghĩa size(A) Trả về 1 vectơ dòng [m n] chứa kích thước mảng A có m dòng n cột length(A) Alà 1 ma trận , sẽ trả về số lớn nhất trong 2 số m,n max(A) + Nếu A là vectơ sẽ trả về ptử lớn nhất trong A + Nếu A là 1 ma trận sẽ trả về 1 vectơ dòng chứa các phần tử lớn nhất của mỗi cột. min(A) Tương tự như hàm max(A) nhưng lựa chọn phần tử bé nhất. sum(A) Tính tổng các ptử trong từng cột của ma trận A, kết quả chứa trong 1 vectơ dòng. sort(A) Sắp xếp mỗi cột cuả ma trận A theo thứ tự giá trị tăng dần từ dòng 1 đến dòng cuối , kết quả là 1 ma trận cùng kích thước với A [x,k] =max(A) Tương tự max(A) nhưng giá trị các phần tử lớn nhất được lưu trong vectơ dòng x và các chỉ số tương ứng được lưu trong vectơ dòng k [x,k] = min(A) Có ý nghĩa tương tự nhưng trả về các phần tử nhỏ nhất. [u,v,w]=find(A) Tìm những phần tử khác 0 của ma trận A. Vectơ u chỉ số dòng , v chỉ số cột của những ptử khác 0, w chỉ chứa các ptử khác 0 của A
  • 12. 5/9/2013 12 II. Hàm lập sẵn 3.Vector & ma trận Ví dụ: Cho mảng A=[1 2 -3 4 0 5 -6 ] >>[u,v,w]=find(A) >>[u,v,w]=find(A>2) >>[u,v,w]=find(A<0), b= A(u,v) >>size(A) >>length(A) >>max(A) >>min(A) >>sum(A) >>sort(A) Tương tự thực hiện các hàm với ma trận: III. Các phép tính về mảng
  • 13. 5/9/2013 13 III. Các phép tính về mảng Giải hệ phương trình 4x1 - 2x2 -10x3 = -10 2x1 +10x2 -12x3 = 32  -4x1 - 6x2 +16x3 = -16 Cách 1: >> A=[4 -2 -10;2 10 -12;-4 -6 16] >> B=[-10;32;-16] >> X=AB % dùng cho tất cả Cách 2: >> C=inv(A) %ma trận đảo của A, dùng cho ma trận vuông >> X=C*B IV.Cấu trúc điều khiển 1. Cấu trúc IF if (biểu thức logic 1) Lệnh hoặc nhóm lệnh 1 elseif (biểu thức logic 2) Lệnh hoặc nhóm lệnh 2 else Lệnh hoặc nhóm lệnh 3 end Ví dụ : Tính giá trị của y theo các miền giá trị khác nhau của x như sau: Nếu x<0 , y=0 0 x 5 , y=x2 x>5 , y=25*x Lệnh như sau : if x>5 y=25*x elseif x>=0 y=x^2 else y=0 end 
  • 14. 5/9/2013 14 IV.Cấu trúc điều khiển 1. Cấu trúc IF Ví dụ : Bài toán phân loại học sinh: – Nhập điểm vào: o điểm 9-10 xếp loại giỏi; o điểm 7-8 xếp loại khá; o điểm 5-6 xếp loại trung bình; o điểm 0,1,2,3,4 xếp loại yếu; – nếu điểm vào không phải số nguyên nằm giữa 0 và 10 thì thông báo điểm không hợp lệ. IV.Cấu trúc điều khiển 1. Cấu trúc IF 1. diem = input('Nhap diem :'); 2. if (diem == 9)|(diem == 10) 3. disp('Loai gioi') 4. elseif (diem == 7)|(diem == 8) 5. disp('Loai kha') 6. elseif (diem == 5)|(diem == 6) 7. disp('Loai trung binh') 8. elseif (diem>=0)&(diem<=4) 9. disp('Loai yeu') 10. else 11. disp(‘Diem vao khong hop le') 12. end
  • 15. 5/9/2013 15 IV.Cấu trúc điều khiển 2.Cấu trúc switch switch <giá trị biểu thức> case n1 < lệnh 1> case n2 < lệnh 2> . . . . . . . . . . . . . . . case nn < lệnh n> otherwise < lệnh n+1> end Ví dụ: diem = input('Nhap diem :'); switch diem case {9,10} disp('Loai gioi') case {7,8} disp('Loai kha') case {5,6} disp('Loai trung binh') case {0,1,2,3,4} disp('Loai yeu') otherwise disp('Diem vao khong hop le') end IV.Cấu trúc điều khiển 3. Vòng lặp for Vòng lặp for: được sử dụng khi số lần lặp được biết trước . for n=array % một mảng bất kỳ, không nhất thiết là số tự nhiên .....Lệnh hoặc nhóm lệnh end Ví dụ : Tính tổng của n số tự nhiên đầu tiên: S = 1+2+3+…+n n=input('Nhap so so hang can tinh tong n = '); S=0; %gia tri ban dau cua tong s for k=1:n S=S+k; end fprintf('Tong so %d so tu nhien dau tien la %d' ,n,S) %d : kết quả xuất là số nguyên.
  • 16. 5/9/2013 16 IV.Cấu trúc điều khiển 4. Vòng lặp while Vòng lặp while dùng khi không biết trước số lần lặp. while <điều kiện> <lệnh thi hành> end Ví dụ : Tính tổng của n số tự nhiên đầu tiên: S = 1+2+3+…+n n=input('Nhap so so hang can tinh tong n = '); k=0; S=0; %gia tri ban dau cua tong s while (k<=n) %kết thúc vòng lặp khi không còn thỏa đkiện S=S+k; k=k+1; end fprintf('Tong so %d so tu nhien dau tien la %d' ,n,S) IV.Cấu trúc điều khiển 4. Vòng lặp while Ví dụ 2: Nhập vào các số từ bàn phím. Tính tổng các số dương tới khi tổng này > 50 thì kết thúc .Đếm xem có bao nhiêu số đã nhập . 1. S=0; %tổng 2. k=0; %các số dương 3. m=0; % số lượng các số nhập vào 4. while S <= 50 5. x=input('Nhap cac so tu ban phim x = ') 6. m=m+1; 7. if x>0 8. S=S+x; 9. k=k+1; 10. end 11. end 12. disp('=> So cac so da nhap tu ban phim la : ') 13. disp(m) 14. disp('=> So cac so (+) nhap tu ban phim la : ') 15. disp(k)
  • 17. 5/9/2013 17 IV.Cấu trúc điều khiển 5. Lệnh break • Lệnh break cho phép chấm dứt sớm vòng lặp for hoặc while khi thỏa 1 điều kiện nào đó bên trong vòng lặp nhưng nó không chấm dứt việc thực thi chương trình. Ví dụ: for n=1:10 x=60-n^2; if x<0 break; end y=sqrt(x); end disp(y) Bài 3. Function file và Script files  Chúng ta có thể viết và lưu các chương trình Matlab trong những tập tin có phần mở rộng dạng .m, được gọi là các M-file (Ví dụ ptb2.m).  Matlab dùng 2 loại M-file là script file (tập tin lệnh) và function file (tập tin hàm). Script file: dùng cho chương trình đơn giản Function file : dùng cho chương trình phức tạp
  • 18. 5/9/2013 18 I. Script file Script file: là M-file đơn giản nhất, không có đối số. Được dùng khi thi hành một loạt lệnh MATLAB theo một trình tự nhất định. Cấu trúc đề nghị của một Script file: 1. Phần chú thích : Viết các dòng chú thích cho chương trình. 2. Phần đầu vào: các giá trị đầu vào. 3. Phần tính toán. 4. Phần trình bày kết quả: Dùng 1 số hàm của Matlab để trình bày kết quả. I. Script file Ví dụ1 : Soạn script file để tính diện tích của tam giác khi biết tọa độ 3 điểm trong không gian. Diện tích tam giác được tính bằng công thức tích hữu hướng của 2 vectơ.
  • 19. 5/9/2013 19 I. Script file 1. %File dientich.m : Chuong trinh tinh dien tich tam giac 2. %Du lieu dau vao : Toa do 3 diem A B C là [x,y,z] 3. %Du lieu dau ra : Dien tich tam giac ABC 4. %Bien p chi vecto huu huong cua 2 vecto ABxAC 5. disp('CHUONG TRINH TINH DIEN TICH TAM GIAC') 6. disp(' TOA DO 3 DIEM') 7. a=input('Toa do diem A ='); 8. b=input('Toa do diem B ='); 9. c=input('Toa do diem C ='); 10. p=cross(b-a,c-a);% Tinh huu huong cua 2 vecto ABxAC 11. S=0.5*norm(p);% Dien tich tam giac ABC 12. disp('Dien tich tam giac ABC : ') 13. disp(S) I. Script file • Ví dụ: Tính tổng S=1+(1/2) + 1/3 +...+1/n n=input ('nhap vao gia tri n '); S=0; i=1; while i<=n S=S+(1/i); i=i+1; end disp ('tong cua day la ') disp(S)
  • 20. 5/9/2013 20 II. Function file • Việc xây dựng hàm cũng được thực hiện tương tự như script file. Tuy nhiên, đối với hàm ta cần quan tâm đến các tham số truyền cho hàm và các kết quả trả về sau khi thực hiện. • Có 3 điểm cần lưu ý: - Tên hàm phải được đặt trùng với tên file lưu trữ. - Phải có từ khóa function ở dòng đầu tiên. -Trong một hàm có thể xây dựng nhiều hàm con (điều này không có trong script file). -Kết thúc hàm con phải có từ khóa end (điều này không cần trong hàm ‘mẹ’). function [giá trị ra] = function_name(giá trị vào) II. Function file 1. Hàm chỉ có đối số vào: function tenham(in1,in2,…) Ví dụ: Giải pt bậc 4: ax4+bx3+cx2+dx+e=0 Chương trình: 1. function ptbac4(a,b,c,d,e) 2. P=[a,b,c,d,e]; 3. X=roots(P); 4. for i=1:length(X) 5. disp(['Nghiem thu',' ',num2str(i),'=',' ',num2str(X(i))]) 6. end Save chương trình với tên là: ptbac4.m
  • 21. 5/9/2013 21 II. Function file 2. Hàm chỉ có đối số ra: function [out1,out2,…]=tenham Ví dụ: Xắp xếp thứ tự phần tử trong mảng X từ nhỏ lớn 1. function A=sapxep 2. X=input('Nhap mang X[ ]: '); 3. N=length(X); 4. i=1; 5. while(i<=N) 6. [tam(i),j]=min(X); 7. X(j)=[ ];%xoa phan tu thu j cua mang X 8. i=i+1; 9. end 10. A=tam; 11. end II. Function file 3. Hàm có đối số vào/ra: function[x,y,...]=tenham(a,b,c,…) Ví dụ1: giải pt bậc 2: ax2+bx+c=0 1. function [x1,x2]=gptb2(a,b,c) 2. if nargin<3 3. error('Vui long nhap du 3 he so cua phuong trinh') 4. elseif a==0 5. x1=-c/b; 6. x2=[ ]; 7. else 8. D = b^ 2 - 4*a*c; 9. x1 = (-b+sqrt(D))/(2*a); 10. x2 = (-b-sqrt(D))/(2*a); 11. end
  • 22. 5/9/2013 22 II. Function file 4.Cách gọi tập tin .m a) Hai tập tin riêng biệt: %giai pt bac 4 function X=ptbac4(a,b,c,d,e) P=[a,b,c,d,e]; X=roots(P); for i=1:length(X) disp(['Nghiem thu',' ',num2str(i),'=',' ',num2str(X(i))]) end %Save với tên: ptbac4.m %tim nghiem max cua pt bac 4 function Y=nghiem_max(a,b,c,d,e) X= ptbac4(a,b,c,d,e); Y=max(X); end %Save với tên: nghiem_max.m II. Function file 4.Cách gọi tập tin .m b)Một tập tin có nhiều hàm riêng %tim nghiem max cua pt bac 4 function Y=nghiem_max(a,b,c,d,e) X= ptbac4(a,b,c,d,e); Y=max(X); end %giai pt bac 4 function X=ptbac4(a,b,c,d,e) P=[a,b,c,d,e]; X=roots(P); for i=1:length(X) disp(['Nghiem thu',' ',num2str(i),'=',' ',num2str(X(i))]) end %Save với tên: nghiem_max.m
  • 23. 5/9/2013 23 III. Bài tập đề nghị Bài 1. Viết chương trình tính chu vi và diện tích một tam giác theo yêu cầu sau: • Hiện yêu cầu nhập các cạnh a,b,c • Xét điều kiện thành lập một tam giác: −ĐK cần: a,b,c >0 −ĐK đủ: tổng 2 cạnh > cạnh còn lại −Nếu không thỏa đk thì hiện thông báo lỗi. • Tính chu vi + diện tích và hiện KQ. Bài 2. Làm lại bài 1 với yêu cầu hàm có đối số vào/ra III. Bài tập đề nghị Giải bài 1: 1. a=input ('nhap vao do dai canh a : '); 2. b=input ('nhap vao do dai canh b : '); 3. c=input ('nhap vao do dai canh c : '); 4. if (a>0)&(b>0)&(c>0)&(a+b>c)&(c+b>c)&(a+c>b) 5. disp ('chu vi tam giac la : '); 6. cv=a+b+c 7. p=cv/2; 8. disp ('dien tich tam giac la : '); 9. s=sqrt(p*(p-a)*(p-b)*(p-c)) 10. else 11. disp ('3 canh khong tao thanh tam giac ') 12. end
  • 24. 5/9/2013 24 III. Bài tập đề nghị Bài 3: Nhập vào dãy số, tìm giá trị lớn nhất trong dãy? 1. n=input('nhap vao so phan tu cua day : '); 2. for i=1:n 3. a(i)=input (['a(',num2str(i),')=']); 4. end 5. disp ('day vua nhap la : '); disp(a) 6. max=a(1); 7. for i=1:n 8. if max<a(i) 9. max=a(i); 10. End; 11. End; 12. disp (['gia tri lon nhat cua day la’,num2str(max)]) III. Bài tập đề nghị Bài 4: Kiểm tra xem một số n có phải là số nguyên tố không? n=input('nhap vao gia tri n : '); dem=0; for i=1:n if rem (n,i)==0 dem=dem+1; end end; if dem==2 disp ('so vua nhap la so nguyen to') else disp ('so vua nhap khong phai so nguyen to') end
  • 25. 5/9/2013 25 III. Bài tập đề nghị III. Bài tập đề nghị Bài 6: Tính n! ? Bài 7: Tính biểu thức sau ứng với giá trị n nhập vào: function m=giaithua(n) if (n==1)|(n==0) m=1; return; end m=n*giaithua(n-1); ! ... !4!3!2!1 1)( 432 n xxxxx xS n n 
  • 26. 5/9/2013 26 BÀI 4: ĐỒ HỌA • NỘI DUNG: I. Đồ họa 2-D II. Đồ họa 3-D I. Đồ họa 2-D 1. Đặc tả kiểu đường vẽ • t = [0:pi/100:2*pi] ; • y = sin(t); • plot(t,y,‘:'); % vẽ đường chấm chấm • grid on %tạo lưới
  • 27. 5/9/2013 27 2.Đặc tả màu và kích thước đường vẽ Để đặc tả màu và kích thước đường vẽ ta dùng các tham số sau: • LineWidth: độ rộng đường thẳng,tính bằng số điểm • MarkerEdgeColor: màu của các cạnh của khối đánh dấu • MarkerFaceColor: màu của khối đánh dấu • MarkerSize: kích thước của khối đánh dấu Màu được xác định bằng các thông số: 3. Các dạng đánh dấu trên đồ thị
  • 28. 5/9/2013 28 Ví dụ : • x = -pi : pi/10 : pi; • y = tan(sin(x)) - sin(tan(x)); • plot(x,y,'--rs','LineWidth',2,'MarkerEdgeColor','k',... 'MarkerFaceColor','g','MarkerSize',10) Đường cong y = f(x) có các đặc tả sau : - đường vẽ là đường đứt nét(--) - khối đánh dấu hình vuông (s), đường vẽ màu đỏ(r) - đường vẽ rộng 2 point - các cạnh của khối đánh màu đen - khối đánh dấu màu green - kích thước khối đánh dấu 10 point Đặt các thông số cho trục • Ví dụ: 1. x=[0 1 2 3]; 2. y=[0 4 1 5]; 3. h=plot(x,y) • Để thấy các thuộc tính đồ họa của hàm plot ta dùng lệnh • set(h) • Bây giờ ta thay đổi thuộc tính của đồ thị: 1. set(h,’Color’, ‘r’) %dat lai mau do 2. set(h,'LineWidth',6) %dat do rong duong 3. set(h,'Marker','v','MarkerSize',6)
  • 29. 5/9/2013 29 Ghi nhãn lên các trục tọa độ Ví dụ 1. x=[-5:0.01:5]; 2. y1=x.^2; 3. plot(x,y1,'r--') 4. xlabel('Truc x'); 5. ylabel('Truc y'); 6. legend('y1=x^2') 7. text(-3,9,' leftarrow x^2','FontSize',18) 8. gtext('Do thi')
  • 30. 5/9/2013 30 4.Vẽ nhiều hình trên 1 trục Ví dụ: Vẽ 2 hàm y1=x2 và y2=cos3x, (rad) trên cùng 1 đồ thị. Cách 1: 1. x=[-5:0.01:5]; 2. y1=x.^2; 3. y2=cos(3*x); 4. plot(x,y1,x,y2,'r--') 5. xlabel('Truc x'); 6. ylabel('Truc y'); 7. legend('y1=x^2','y2=cos 3x') Cách 2: 1. x=[0:0.01:5]; 2. y1=x.^2; 3. y2=cos(3*x); 4. grid on 5. hold on 6. plot(x,y1,'r--') 7. plot(x,y2, 'm--') 8. xlabel('Truc x'); 9. ylabel('Truc y'); 10.hold off 5.Vẽ nhiều trục • Hàm: subplot(m,n,p) subplot(mnp) • subplot(2,2,[1 3]) subplot(2,2,2) subplot(2,2,4) • subplot(2,2,1:2) subplot(2,2,3) subplot(2,2,4) x=[-5:0.01:5]; for n = 1:8 subplot(4,2,n) plot(x,sin(n*pi*x)) end
  • 31. 5/9/2013 31 5.Vẽ nhiều trục • Ví dụ: 1. function dieucheAM(fc,fm) 2. Ac = 1; % Carrier Amplitude 3. Am = 1; % Baseband Amplitude 4. m = Am/Ac; 5. t = linspace(0,1,100*fc); 6. c=Ac*cos(2*pi*fc*t); 7. e = (Ac + Am*cos(2*pi*fm*t)); 8. u = (Ac + Am*cos(2*pi*fm*t)).*cos(2*pi*fc*t); %DSB-AM 9. subplot(1,3,1);plot(t,e,'r');grid on 10. subplot(1,3,2);plot(t,c,'r');grid on 11. subplot(1,3,3);plot(t,u);grid on 6.Các lệnh vẽ đồ thị khác • Lệnh BAR: vẽ đồ thị dạng cột 1. Y = round(rand(5,3)*10); 2. subplot(2,2,1); bar(Y,'group') 3. title 'Group' 4. subplot(2,2,2); bar(Y,'stack') 5. title 'Stack' 6. subplot(2,2,3); barh(Y,'stack') 7. title 'Stack' 8. subplot(2,2,4) ; bar(Y,1.5) 9. title 'Width = 1.5' • Lệnh POLAR : vẽ hệ tọa độ cực 1. t = -pi:0.01:pi; 2. polar(t, sin(t)) 1 2 3 4 5 0 2 4 6 8 Group 1 2 3 4 5 0 5 10 15 20 Stack 0 5 10 15 20 1 2 3 4 5 Stack 1 2 3 4 5 0 2 4 6 8 Width = 1.5
  • 32. 5/9/2013 32 6.Các lệnh vẽ đồ thị khác • Lệnh POLAR : vẽ hệ tọa độ cực Ví dụ 1: t = -pi:0.01:pi; polar(t, sin(t)) Ví dụ 2: x=0:0.1:2*pi; polar(x,abs(sin(2*x).*cos(2*x))) 6.Các lệnh vẽ đồ thị khác • Lệnh STAIRS: vẽ đồ thị dạng bậc thang 1. x = -pi:0.2:pi; 2. stairs(x,sin(x)) 3. xlabeL('Truc x') 4. ylabel('y = stairs(x,sin(x)') 5. grid on -4 -3 -2 -1 0 1 2 3 4 -1 -0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.6 0.8 1 Truc x y=stairs(x,sin(x)
  • 33. 5/9/2013 33 6.Các lệnh vẽ đồ thị khác • Lệnh STEM: phân bố lược 1. x = 0:0.1:4; 2. stem(x,exp(x)) 3. xlabeL('Truc x') 4. ylabel('y = stairs(x,sin(x)') 5. grid on 0 0.5 1 1.5 2 2.5 3 3.5 4 0 10 20 30 40 50 60 Truc x y=stairs(x,sin(x) Ví dụ 3: Soạn thảo script file có tên bai3.m để lập biểu đồ tổng số sinh viên Điện Tử - Tin học tốt nghiệp tại trường X từ năm 1996 đến 2001 với dữ liệu như sau: • % Lap bieu do tong so sinh vien Dien tu – Tin hoc tot nghiep • % 1. svdt=[38 33 36 31 60 70]; 2. svth=[48 54 120 92 110 131]; 3. nam=1996:2001; 4. subplot(211), bar(nam,svdt); 5. title('Sinh vien Dien tu tot nghiep tu 1996-2001'); 6. subplot(212), bar(nam,svth); 7. title('Sinh vien Tin hoc tot nghiep tu 1996-2001'); 8. colormap(cool(5)); Colormap 
  • 34. 5/9/2013 34 6.Các lệnh vẽ đồ thị khác • Lệnh PIE: phân bố % hình tròn x=[20 45 15 13 7]; y=[0 0 1 0 0] % 1 để nhấn mạnh phần 15, %chọn 0 để chúng dính liền nhau. pie(x,y) 20% 45% 15% 13% 7% Lệnh ginput • fplot('sinc(x)',[-2*pi,2*pi]); • [x,y]=ginput(3) %lấy tọa độ 3 điểm trên đồ thị
  • 35. 5/9/2013 35 II. ĐỒ HỌA 3D • Ví dụ: • >> [x,y,z]=peaks; %hàm có phân bố Gauss • >> plot3(x,y,z) • >> mesh(x,y,z) %bề mặt dạng lưới • >> surf(x,y,z) %tô màu bề mặt • >> waterfall(x,y,z) • >> pcolor(x,y,z)%giá trị Z được thể hiện với giá trị màu tương ứng • >> contour(x,y,z) %lấy đường viền trong 2D Bài 5: SIMULINK • Simulink là một phần mềm mở rộng của MATLAB (Toolbox của Matlab) dùng để mô hình hoá, mô phỏng và phân tích một hệ thống động, thiết kế hệ thống điều khiển, thiết kế DSP, hệ thống thông tin và các ứng dụng mô phỏng khác. • Simulink được ghép bởi hai từ Simulation và Link. Simulink cho phép mô tả hệ thống tuyến tính,hệ phi tuyến, các mô hình trong miền thời gian liên tục, hay gián đoạn hoặc một hệ gồm cả liên tục và gián đoạn.
  • 36. 5/9/2013 36 CÁC BLOCKS LIBRARY: • Thư viện SOURCES • Thư viện Đồ thị (SINKS) • Thư viện Phần Rời Rạc (DISCRETE) • Thư viện Phần Tuyến tính (LINEAR) • Thư viện Phần Phi Tuyến (NONLINEAR) • Thư viện Phần Đầu Nối (CONECTIONS) • Thư viện BLOCKSETS và TOOLBOXES • …. Các kiểu dữ liệu Simulink chấp nhận các kiểu dữ liệu sau : • double số thực với độ chính xác gấp đôi • single số thực với độ chính xác đơn • int8 số nguyên có dấu 8 bit • uint8 số nguyên không dấu 8 bit • int16 số nguyên có dấu 16 bit • uint16 số nguyên khg dấu 16 bit • int32 số nguyên có dấu 32 bit • uint32 số nguyên không dấu 32 bit
  • 37. 5/9/2013 37 Các bước để vẽ mô hình 1.Từ cửa sổ Matlab đánh lệnh simulink. Cửa sổ thư viện các khối sẽ xuất hiện 2.Từ cửa sổ thư viện ta nhấp chuột vào File/New/Model hoặc nhấn Ctrl+ N. 3. Chọn các Block ở các thư viện thích hợp và xây dựng mô hình sử dụng thao tác "nhấn – kéo – thả" chuột. Ví dụ 1 • Trong sơ đồ này chọn các khối từ các thư viện: + Thư viện các nguồn tín hiệu (Sources): Chọn Sin wave. + Thư viện các khối nhận tín hiệu (Sinks): Chọn Scope. + Các hàm tuyến tính (continuous): Chọn Integrator. + Commonly userd blocks: Chọn Mux.
  • 38. 5/9/2013 38 Ví dụ 2 • Mô phỏng một phương trình dùng để biến đổi độ Celcius thành độ Fahrenheit là : TF = (9/5)TC + 32 • Trước hết ta khảo sát các khối cần để tạo mô hình:  khối Ramp trong thư viện Sources để đưa vào tín hiệu nhiệt độ  khối Constant trong thư viện Sources để tạo hằng số 32  khối Gain trong thư viện Math để tạo ra hệ số 9/5  khối Sum trong thư viện Math để cộng hai đại lượng  khối Scope trong thư viện Sinks để hiển thị kết quả. Ví dụ 3: Mô phỏng hệ pt z1 +z2 =1 -z1+z2=1
  • 39. 5/9/2013 39 Ví dụ 4: Mô phỏng pt vi phân x’(t) = -2x’(t) + u(t) • Với u(t) là một sóng vuông có biên độ=1 và tần số =1 rad/sec. Ví dụ 5: Thiết kế và phân tích hệ thống
  • 40. 5/9/2013 40 Ví dụ 6: Mô phỏng phương trình sau Sine Wave Scope Product2 Product1 Product eu Math Function -1 Gain1 -1 Gain 80 Constant Clock 3 Sine Wave Scope Product2 Product1 Product eu Math Function -1 Gain1 -1 Gain 80 Constant Clock 3 1.Nhập vào chuỗi số và in ra kết quả tính của: • A) tổng bình phương các số trong chuỗi? • B) giai thừa của các phần tử trong chuỗi? • C) số nguyên tố trong chuỗi? 2. Nhập chuỗi ký tự chữ thường và in ra chuỗi ký tự chữ HOA? 3. Nhập vào chuỗi số và in ra chuỗi mới với thứ tự ngược lại? 4. Vẽ đồ thị và tìm cực trị của hàm f(x)=x^3+2*x^2-1 ? 5. Tính x^n=?
  • 41. 5/9/2013 41 6. Viết chương trình yêu cầu Nhập liên tiếp các số và khi nhập số 0 thì dừng nhập. Tính trung bình cộng các số âm và trung bình cộng các số dương vừa nhập?