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
Trang 2BÀ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.
Trang 3BÀ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
Trang 4I 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
Matlab
Trang 5II 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
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ững gì sau dấu % là lời bình
Trang 6II 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.
• >> 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
Trang 8xy dy
Trang 9- 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)
Trang 10II Hàm lập sẵn 3.Vector & ma trận
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
Trang 11II Hàm lập sẵn 3.Vector & ma trận
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
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
Trang 12II Hàm lập sẵn 3.Vector & ma trận
Trang 13Ví 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=x2x>5 , y=25*x Lệnh như sau :
if x>5
y=25*x elseif x>=0
y=x^2 else
y=0 end
Trang 14IV.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)
6 elseif (diem == 5)|(diem == 6)
7 disp('Loai trung binh')
Trang 15IV.Cấu trúc điều khiển 2.Cấu trúc switch
switch <giá trị biểu thức>
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
Trang 16IV.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
Trang 17IV.Cấu trúc điều khiển 5 Lệnh break
• Lệnhbreakcho phép chấm dứt sớm vòng lặpforhoặcwhilekhi 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
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
Trang 18I 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ơ.
Trang 19I 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 : ')
Trang 20II 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,…)
Trang 21II Function file
2 Hàm chỉ có đối số ra: function [out1,out2,…]= tenham
II Function file
3 Hàm có đối số vào/ra: function [x,y, ]= tenham (a,b,c,…)
Trang 22II Function file
%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
Trang 23III 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 : ');
Trang 24III 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 : ');
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 : ');
Trang 25! 3
! 2
! 1 1 ) (
4 3 2
n
x x
x x x x
S
n
Trang 272.Đặ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ị
Trang 28• 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)
Trang 29Ghi nhãn lên các trục tọa độ
Trang 312 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
Trang 3310 20 30 40 50 60
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
Trang 35• >> 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.
Trang 36CÁ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
• ….
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
Trang 37Cá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
Trang 38Ví dụ 2
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
Trang 40Ví dụ 6: Mô phỏng phương trình sau
Si ne Wave
Scope Product2
Product1 Product
e Math Functi on
-1 Gain1
-1 Gai n 80
Product1 Product
e Math Functi on
-1 Gain1
-1 Gai n 80
• 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?
Trang 416 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?