LẬP TRÌNH VỚI MATLAB
MATLABcho phép người dùng lập trình theo hai loại : scriptsvà function
SCRIPTS:Là hình thức đơn giản nhất của M-file bởi vì nó không có thông số
vào và ra. Chúng là một tập hợp các lệnh và các hàm của MATLAB. Scripts hoạt
động dựa vào đối tượng tồn tạitrong Workspace. Tất cả cácbiến tạo ra trong scripts
đều có thể sử dụng sau khi scripts kết thúc.
79 trang |
Chia sẻ: maiphuongdc | Lượt xem: 11628 | Lượt tải: 1
Bạn đang xem trước 20 trang tài liệu Giáo trình Matlab Căn bản, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
i phép chia x= A\B yêu cầu hai ma trận A và B bằng nhau về số
hàng còn đối với x=A/B thì yêu cầu số hàng của ma trận A bằng số cột của ma trận B.
Cách 2:
Ta có Ax=B > x = A-1B
x= A\ B ta thực hiện như sau bằng hàm inv(A)
x=inv(A)*B
Matlab Căn bản
Nguyễn Hoài Sơn - Khoa Xây dựng và Cơ học Ứng dụng - ĐHSPKT Trang 20
Cách 3:
Dùng phương pháp tách LU bằng hàm lu có sẳn trong MATLAB
Ví dụ: Giải hệ phương trình đại số Ax=B bằng phương pháp tách LU ta thực hiện như
sau
Một vài ví dụ ứng dụng các cách trên để giải:
Ví dụ 1: Giải hệ phương trình sau
Matlab:
Cách 1:
Kết quả:
Matlab Căn bản
Nguyễn Hoài Sơn - Khoa Xây dựng và Cơ học Ứng dụng - ĐHSPKT Trang 21
Cách 2:
Kết quả:
Cách 3:
Kết quả:
Ví dụ 2: Xác định hiệu điện thế V1 và V2 của mạch như sau
Matlab Căn bản
Nguyễn Hoài Sơn - Khoa Xây dựng và Cơ học Ứng dụng - ĐHSPKT Trang 22
Aùp dụng định luật Kirchhoft cho dòng điện ta có:
Công suất của dòng điện được tính S= V*I
Matlab:
Polynomials and Interpolation(Hàm đa thức và nội suy)
MATLAB cung cấp một vài hàm cho các phép toán đa thức cơ bản như tìm
nghiệm đa thức ( roots), ước lượng giá trị đa thức(polyval), phép tính vi phân,… Thêm
vào đó có một vài hàm cho những ứng dụng cao hơn như hàm nội suy, sử lý số liệu
thực nghiêm, phân rã đa thức.
Tìm nghiệm đa thức:
Matlab: Sử dụng hàm roots để tìm nghiệm đa thức trên
Ta thu được nghiệm:
Matlab Căn bản
Nguyễn Hoài Sơn - Khoa Xây dựng và Cơ học Ứng dụng - ĐHSPKT Trang 23
Tìm hệ số của đa thức khi biết trước tập nghiệm:
Giả sử nghiệm của đa thức là : -1, -2, -3 ± j4
Dùng hàm poly để tìm hệ số của đa thức, ta thực hiện MATLAB như sau:
Kết quả:
Đa thức của bộ nghiệm trên là
Tính giá trị của đa thức:
Sử dụng hàm polyval(c,x0) để tính giá trị của đa thức c tại x=x0
Ví dụ 1: Tìm giá trị của đa thức 13)( 3 −−= xxxf sau tại x=5
MATLAB:
Ví dụ 2:
Kết quả:
Nhân và chia đa thức:
Sử dụng hai hàm conv và deconv khi ta muốn nhân hoặc chia hai đa thức với nhau:
Ví dụ 1: Cho hai đa thức : 12721 ++= ssf và 922 += sf Hãy tính 213 * fff =
Matlab Căn bản
Nguyễn Hoài Sơn - Khoa Xây dựng và Cơ học Ứng dụng - ĐHSPKT Trang 24
MATLAB:
Vậy đa thức cần tìm là:
10863217f 2343 ++++= ssss
Ví dụ 2: Cho hai đa thức 5281379 2344 ++++= ssssf và 13425 ++= ssf , hãy tính
5
4
6 f
ff =
MATLAB:
Vậy đa thức cần tìm là: 45f 26 ++= ss
Với r là phần dư f4=conv(f5,f6)+r
Ví dụ 3:
Tính đạo hàm của đa thức:
Ta sử dụng hàm polyder(p) để tính đạo hàm của đa thức p
Ví dụ:
Matlab Căn bản
Nguyễn Hoài Sơn - Khoa Xây dựng và Cơ học Ứng dụng - ĐHSPKT Trang 25
Phân rã đa thức:
Sử dụng hàm [r,p,k]=residue(b,a)
Ví dụ: Phân rã đa thức sau
MATLAB:
Ví dụ 1:
Kết quả:
Cuối cùng đa thức trên sau khi phân rã ta được
Dùng hàm [b,a]=residue(r,p,k) để chuyển ngược lại
Ví dụ 2:
Matlab Căn bản
Nguyễn Hoài Sơn - Khoa Xây dựng và Cơ học Ứng dụng - ĐHSPKT Trang 26
Dùng hàm [b,a]=residue(r,p,k) ta có kết quả sau:
Sử lý số liệu thực nghiệm:
Sử dụng hàm polyfit(x,y,n) để tìm hệ số của đa thức dựa vào một tập dữ liệu
có nghĩa, với x và y là dữ liệu còn n là bậc đa thức nội suy
Ví dụ1:
Ví dụ 2: Tìm đa thức bậc 3 dựa vào bảng dữ liệu sau:
MATLAB:
MATLAB:
Matlab Căn bản
Nguyễn Hoài Sơn - Khoa Xây dựng và Cơ học Ứng dụng - ĐHSPKT Trang 27
Đồ thị:
NỘI SUY
Nội suy dữ liệu một chiều:
Sử dụng hàm interp1 để nội suy dữ liệu một chiều, cú pháp của lệnh như sau:
Cú pháp:
yi = interp1(x,Y,xi)
yi = interp1(Y,xi)
yi = interp1(x,Y,xi,method)
yi = interp1(x,Y,xi,method,'extrap')
yi = interp1(x,Y,xi,method,extrapval)
Chú thích:
• yi = interp1(x,Y,xi) trả về vec tơ giá trị yi tương ứng với vec tơ giá trị xi dựa
vào phép nội suy của tập dữ liệu x, Y. Nếu Y là một ma trận thì hàm nội suy sẽ
xây dựng theo từng cột của ma trận Y.
Ví dụ:
Matlab Căn bản
Nguyễn Hoài Sơn - Khoa Xây dựng và Cơ học Ứng dụng - ĐHSPKT Trang 28
• yi = interp1(Y,xi) giống như yi = interp1(x,Y,xi) tuy nhiên x = 1:N với N=
size(Y,1) hoặc N= length(Y)
Ví dụ:
Kết quả đồ thị:
Matlab Căn bản
Nguyễn Hoài Sơn - Khoa Xây dựng và Cơ học Ứng dụng - ĐHSPKT Trang 29
• interp1(x,Y,xi,method) Nội suy dữ liệu theo nhiều phương pháp khác nhau
Method:
‘nearest’:
‘linear’: Phép nội suy tuyến tính và cũng là method mặc định của hàm interp1.
‘spline’: Nội suy theo đường cong bậc 3
‘cubic’ và ‘pchip’: Nội suy theo đường cong Hermit
Chú ý:
Đối với các ‘nearest’ và ‘lnear’ thì giá trị phần tử của vec tơ xi nằm ngoài vùng
giá trị x thì MATLAB hiểu các phần tử này là NaN, còn các phương pháp còn lại
MATLAB sẽ thực hiện theo phép ngoại suy.
Ví dụ:
Kết quả bằng đồ thị:
• yi = interp1(x,Y,xi,method,'extrap') Thực hiện phép ngoại suy ứng với từng giá
trị của xi nằm ngoài vùng dữ liệu của x.
Matlab Căn bản
Nguyễn Hoài Sơn - Khoa Xây dựng và Cơ học Ứng dụng - ĐHSPKT Trang 30
• yi = interp1(x,Y,xi,method,extrapval) Trả về vec tơ giá trị của các phần tử xi
ngoài vùng dữ liệu x.
Nội suy dữ liệu hai chiều: Sử dụng hàm interp2 để thể hiện phép nội suy hai chiều.
Đây là một hàm quan trọng cho việc sử lý ảnh và các dữ liệu mà ta mường tượng hóa.
Cú pháp:
ZI = interp2(X,Y,Z,XI,YI)
ZI = interp2(Z,XI,YI)
ZI = interp2(Z,ntimes)
ZI = interp2(X,Y,Z,XI,YI,method)
Chú thích:
• ZI = interp2(X,Y,Z,XI,YI) trả về vec tơ giá trị ZI tương ứng với cặp vec tơ giá
trị (XI,YI) dựa vào phép nội suy của tập dữ liệu X, Y,Z.
Ví dụ:
Đồ thị:
Điểm nội suy P(XI,YI,ZI)
Bộ điểm lưới (X,Y,Z)
Matlab Căn bản
Nguyễn Hoài Sơn - Khoa Xây dựng và Cơ học Ứng dụng - ĐHSPKT Trang 31
• ZI = interp2(Z,XI,YI) Thực hiện phép nội suy hai chiều với tập dữ liệu X=1:N,ø
Y=1:M và Z trong đó [M,N]=size(Z).
• ZI = interp2(Z,ntimes) Thực hiện phép nội suy bằng việc tăng thêm giá trị Z
lên n lần
• ZI = interp2(X,Y,Z,XI,YI,method) Thực hiện phép nội suy 2 chiều dựa vào các
phương pháp sau:
Method:
‘linear’:
‘nearest’:
‘spline’
‘cubic’
So sánh các phương pháp nội suy khác nhau:
MATLAB:
[xi,yi] = meshgrid(-3:0.25:3);
zi1 = interp2(x,y,z,xi,yi,'nearest');
zi2 = interp2(x,y,z,xi,yi,'bilinear');
zi3 = interp2(x,y,z,xi,yi,'bicubic');
GIẢI PHƯƠNG TRÌNH VI PHÂN THƯỜNG
Có hai lớp bài toán:
Bài toán giá trị đầu : Nghiệm bài toán phụ thuộc vào thời gian, do vậy nghiệm
bài toán ở thời điểm ban đầu phải biết trước.
Bài toán giá trị biên:Nghiệm bài toán không phụ thuộc thời gian, tuy nhiên
nghiệm bài toán trên biên phải được biết trước
Giải bài toán với giá trị đầu:
Giả sử ta sử phương trình vi phân cấp 1 và điều kiện đầu cho như sau:
00 )(ty
y)f(t,y
y=′
=′
Matlab Căn bản
Nguyễn Hoài Sơn - Khoa Xây dựng và Cơ học Ứng dụng - ĐHSPKT Trang 32
Các hàm MATLAB sau dùng để giải ptvp điều kiện đầu:
• ode23: Giải ptvp bậc 2-3 theo phương pháp Runge-Kutta
• ode45: Giải ptvp bậc 4-5 theo phương pháp Runge-Kutta
Cú pháp:
[T,Y] = solver(odefun,tspan,y0)
[T,Y] = solver(odefun,tspan,y0,options)
[T,Y] = solver(odefun,tspan,y0,options,p1,p2...)
[T,Y,TE,YE,IE] = solver(odefun,tspan,y0,options)
Chú thích:
solver : ode23, ode45,…
odefun: hàm chứa ptvp
tspan: Vec tơ xác định khoảng tp
y0: Vec tơ giá trị ban đầu
option: Thuộc tính tích phân
Ví dụ 1:
Với :
hay:
MATLAB:
Matlab Căn bản
Nguyễn Hoài Sơn - Khoa Xây dựng và Cơ học Ứng dụng - ĐHSPKT Trang 33
0 500 1000 1500 2000 2500 3000 3500 4000 4500 5000
20
22
24
26
28
30
32
34
36
38
40
time(s)
h(
t)
Ví dụ 2:
Matlab Căn bản
Nguyễn Hoài Sơn - Khoa Xây dựng và Cơ học Ứng dụng - ĐHSPKT Trang 34
LẬP TRÌNH VỚI MATLAB
MATLAB cho phép người dùng lập trình theo hai loại : scripts và function
SCRIPTS: Là hình thức đơn giản nhất của M-file bởi vì nó không có thông số
vào và ra. Chúng là một tập hợp các lệnh và các hàm của MATLAB. Scripts hoạt
động dựa vào đối tượng tồn tại trong Workspace. Tất cả các biến tạo ra trong scripts
đều có thể sử dụng sau khi scripts kết thúc.
Ví dụ:
FUNCTION : Là scripts tuy nhiên có thêm đối số vào ( input arguments) và
đối số ra ( output arguments). Hoạt động của biến trong một workspace riêng, các
biến này chia rẽ với các biến trong workspace mà ta thực hiện trong scripts hay ở
command line.
Các thành phần cơ bản của một hàm (function)
Dòng định nghĩa hàm.
Dòng cho biết ý nghĩa của hàm (Dòng H1)
Dòng chú thích ý nghĩa của hàm ( Dòng Help line)
Nội dung của hàm
Ví dụ:
Dòng định nghĩa hàm cho biết: Tên của hàm và các đối số của hàm được minh họa
như sau:
Việc đặt tên hàm cũng có ràng buộc giống như việc đặt tên biến: bắt đầu bằng
tên hàm bằng kí tự tiếp theo là các con số và dấu gạch dưới.
%%% M-file: ex_3_1.m
theta=-pi:0.01:pi;
rho(1,:)=2*sin(5*theta).^2;
rho(2,:)=cos(10*theta).^3;
rho(3,:)=sin(theta).^2;
rho(4,:)=5*cos(3.5*theta).^3;
Thực hiện ở dòng command line
CHƯƠNG
3
Matlab Căn bản
Nguyễn Hoài Sơn - Khoa Xây dựng và Cơ học Ứng dụng - ĐHSPKT Trang 35
Đối số của hàm: Nếu hàm có nhiều giá trị trả về thì ta đặt tất cả các đối số này
trong dấu ngoặc vuông []
function [x,y,z]= sphere(theta, phi, rho)
Nếu hàm không có giá trị trả về ta có thể để trống hay để dấu []
function print_result(x) hay function []=print_result(x)
Dòng H1: Đây là dòng trợ giúp đầu tiên, cho biết ý nghĩa của hàm, dòng này ngay
sau dòng định nghĩa hàm và bắt đầu với kí tự “ %”
Ví dụ : hàm average.m
% AVERAGE means of vectơ Elements
Dòng này sẽ là dòng đầu tiên xuất hiện khi bạn gõ help function_name ( Tên hàm ) tại
dòng nhắc (>>) của MATLAB. Dòng này chứa thông tin rất quan trọng của hàm.
Các dòng trợ giúp ( Help line):
Các dòng này được tạo ra nhmằ mục đích chú thích các thông số của hàm cũng như các ví
dụ khi sử dụng hàm này. Các dòng này xuất hiện sau dòng H1 line khi bạn gõ help
function_name tại dòng nhắc của MATLAB. Các dòng này sẽ kết thúc khi có dòng trắng
giữa hai dòng có “ %”
Ví dụ bạn gõ help sin tại dòng nhắc MATLAB:
Có kết quả như sau:
Nội dung của hàm: đây chính là phần chính của hàm
Chú thích trong MATLAB :
Nội dung của hàm
Dòng H1
Các dòng trợ giúp
Matlab Căn bản
Nguyễn Hoài Sơn - Khoa Xây dựng và Cơ học Ứng dụng - ĐHSPKT Trang 36
Như đã đề cập ở trên, Dòng chú thích là dòng bắt đầu với dấu % . Dòng chú
thích có thể xuất hiện bất cứ đâu trong *.m ( tập tin của MATLAB) và ta có thể đặt ở
cuối dòng lệnh.
Ví dụ:
%% Tinh tong cac phan tu
y=sum(x) % su dung ham sum
Hàm hoạt động như thế nào:
Người dùng có thể gọi hàm ở dòng nhắc Matlab hay bất cứ nơi nào trong *.m (
tập tin của MATLAB) chắc rằng các thông số cần thiết cho hàm đủ là được
Khi gặp một tên mới MATLAB :
1. Kiểm tra xem có phải là tên biến hay không.
2. Kiểm tra xem có phải là hàm con (subfunction) và hàm riêng (
private function( Hàm nằm trong thư mục con của thư mục hiện
hành gọi là hàm riêng)) hay không.
3. Kiểm tra xem hàm này có trong đường dẩn hiện hành hay không.
Kiểm tra biến vào và ra của một hàm:
Ta sử dụng hai hàm sau: nargin và nargout để kiểm tra thông số vào và ra của
một hàm.
Ví dụ:
Các phép toán logic:
function [avg,med] = newstats(u) % Primary function
% NEWSTATS Find mean and median with internal
functions.
n = length(u);
avg = mean(u,n);
med = median(u,n); Subfunction
function a = mean(v,n)
% Calculate average.
a = sum(v)/n;
function m = median(v,n)
% Calculate median.
w = sort(v);
if rem(n,2) == 1
m = w((n+1)/2);
else
m = (w(n/2)+w(n/2+1))/2;
end
function c = testarg1(a,b)
if (nargin == 1)
c = a.^2;
elseif (nargin == 2)
c = a + b;
end
Matlab Căn bản
Nguyễn Hoài Sơn - Khoa Xây dựng và Cơ học Ứng dụng - ĐHSPKT Trang 37
Phép toán Ý nghĩa
& Và
| Hoặc
~ Phủ định
Bảng toán logic
Ví dụ:
Các hàm logic ( Logical function :
1. C = xor(A,B)
Ý nghĩa:
Ví dụ:
Matlab Căn bản
Nguyễn Hoài Sơn - Khoa Xây dựng và Cơ học Ứng dụng - ĐHSPKT Trang 38
2. all(A) hoặc all (A, dim)
Kiểm tra tất cả các phần tử trong vectơ A, giá trị sẽ trả về 1 nếu tất cả phần tử
khác không ngược lại bằng 0. Nếu A là một ma trận thì all(A) sẽ kiểm tra vectơ cột
của ma trận A.
all( A,dim): Kiểm tra phần tử mảng A theo vec tơ hàng hay cột mà thôi
Matlab Căn bản
Nguyễn Hoài Sơn - Khoa Xây dựng và Cơ học Ứng dụng - ĐHSPKT Trang 39
Ta có thể ứng dụng hàm này để lập trình
3. Hàm any(A) và any(A,dim)
Cũng giống như hàm all nhưng ý nghĩa hàm any chỉ trả về 0 khi tất cả các phần tử ma
trận A đều bằng 0 còn các trường hợp còn lại hàm trả về 1
any(A,dim)
Ví dụ:
4. Hàm find(A)
if all(A < 5)
lệnh
end
Matlab Căn bản
Nguyễn Hoài Sơn - Khoa Xây dựng và Cơ học Ứng dụng - ĐHSPKT Trang 40
Tìm chỉ số của phần tử A theo một đều kiện nào đó. Ví dụ sau sẽ minh họa cụ
thể hơn
Toán tử quan hệ:
Toán tử Ý nghĩa
< Nhỏ hơn
<= Nhỏ hơn hoặc bằng
> Lớn hơn
>= Lớn hơn hoặc bằng
== Bằng nhau
~= Không bằng
Các câu lệnh điều kiện:
• Dạng 1:
if (biểu thức logic)
lệnh
end
Lệnh chỉ thực hiện khi biểu thức logic nhận giá trị đúng. Nếu biểu thức logic
này không thoả mãn thì lệnh không được thực hiện.
Lưu đồ:
Matlab Căn bản
Nguyễn Hoài Sơn - Khoa Xây dựng và Cơ học Ứng dụng - ĐHSPKT Trang 41
Ví dụ:
x = input('x = ');
if x<0
x = -x;
end;
disp('|x | = ');
disp(x);
• Dạng 2:
if (biểu thức logic)
lệnh 1
else
lệnh 2
end
Lệnh 1 thực hiện khi biểu thức logic đúng và ngược lại khi biểu thức logic sai
thì lệnh 2 thưc hiện.
Lưu đồ:
Ví dụ:
x = input('Nhập x:')
if x<-1
y = abs(x+1)
else
y = abs(x-1)
end
disp('x=')
disp(x)
disp('y=')
disp(y)
ĐK if
Lệnh
Matlab Căn bản
Nguyễn Hoài Sơn - Khoa Xây dựng và Cơ học Ứng dụng - ĐHSPKT Trang 42
• Dạng 3:
if (biểu thức logic 1)
lệnh 1
elseif (biểu thức logic 2)
lệnh 2
else
lệnh 3
end
Ở dạng này lệnh 1 thực hiện khi biểu thức logic 1 thỏa mãn. Nếu biểu thức
logic 1 không đúng, chương trình tiếp tục kiểm tra biểu thức logic 2, nếu đúng thực
hiện lệnh 2 nếu sai sẽ thực hiện lệnh 3.
Lưu đồ:
Ví dụ:
if temperature > 100
disp(’Too hot - equipment malfunctioning.’)
elseif temperature > 90
disp(’Normal operating range.’)
elseif temperature > 50
disp(’Below desired operating range.’)
else
disp(’Too cold - turn off equipment.’)
end
Vòng lặp for:
for index = start:increment:end
statements
end
start và end lần lượt là giá trị bắt đầu và kết thúc của index, increment là bước
nhảy, nếu không cài đặt bước nhảy thì MATLAB mặc định increment =1, mỗi lần lặp
sẽ kết thúc khi gặp từ khóa end . Việc đầu tiên khi thực hiện vòng lặp for là
MATLAB kiểm tra xem sẽ lặp bao nhiêu lần, sau đó mới bắt đầu thực thi vòng lặp.
Lưu đồ:
Matlab Căn bản
Nguyễn Hoài Sơn - Khoa Xây dựng và Cơ học Ứng dụng - ĐHSPKT Trang 43
Ví dụ1:
MATLAB code:
Ví dụ 2:
n = input('Enter n:');
Sn = 0;
for k = 1:1:n
Sn = Sn + 1/k;
end;
disp('Sn = ');disp(Sn);
Vòng lặp while:
while ( điều kiện)
lệnh
end
Matlab Căn bản
Nguyễn Hoài Sơn - Khoa Xây dựng và Cơ học Ứng dụng - ĐHSPKT Trang 44
Đối với vòng lặp while thì số lần lặp không xác định, số lần lặp phụ thuộc vào
điều kiện đúng hay sai. Trong khi điều kiện còn đúng thì vòng lặp vẫn còn tiếp tục vì
vậy trong phần lệnh của vòng lặp while luôn có điều kiện để dừng vòng lặp. Trong
quá trình xây dựng và chạy thử chương trình nếu rơi vào vòng lặp vô hạn thì bạn nhấn
tổ hợp phím: Ctrl+(pause/brreak) để kết thúc chương trình.
Lưu đồ:
Ví dụ 1:
Matlab Căn bản
Nguyễn Hoài Sơn - Khoa Xây dựng và Cơ học Ứng dụng - ĐHSPKT Trang 45
MATLAB code:
Ví dụ 2:
n = input('Enter n:');
Sn = 0; k = 0;
while k<= n
k = k + 1;
Sn = Sn + 1/k;
end
disp('Sn = '); disp(Sn);
Cấu trúc switch … case
switch (biểu thức)
case điều kiện_1
Lệnh 1
case điều kiện_2
Lệnh 2
….
case điều kiện_n
Lệnh n
otherwise
Lệnh (n+1)
end
Ví dụ:
fprintf(' \n');
fprintf('Select a case:\n');
fprintf('==============\n');
fprintf(' 1 - pi\n');
fprintf(' 2 - e \n');
fprintf(' 3 - i \n');
fprintf('==============\n');
n = input('');
switch n
case 1
disp('Pi = ');disp(pi);
case 2
disp('e = ');disp(exp(1));
case 3
disp('i = ');disp(i);
otherwise
disp('Nothing to display');
end
Matlab Căn bản
Nguyễn Hoài Sơn - Khoa Xây dựng và Cơ học Ứng dụng - ĐHSPKT Trang 46
ĐỒ HỌA TRONG MATLAB
Các bước đồ họa:
Bước MATLAB code
1. Chuẩn bị dữ liệu
X= 0:0.1:2*pi;
Y= sin(X);
2. Chọn cửa sổ và vị trí của đối tượng đồ
họa trong cửa sổ.
figure(‘Name’,’Hinh sine’);
subplot(2,2,1);
3. Gọi hàm vẽ đồ thị h =plot(X,Y);
4. Xác định thuộc tính cho hình như kiểu
đường, màu sắc, …
set(h, ‘LineStyle’,’-‘,’Color’,’r’)
5. Xác định các thuộc tính của axis, axes,
lưới vẽ, …
axis([-1 6 -1.2 1.2]);
grid on;
6. Chú thích cho đồ thị: labels, legend,
text, …
xlabel(‘X’);
ylabel(‘Y=SIN(X)’);
title(‘Đồ thị hình sine’);
7. Xuất kết quả
Kết quả các bước trên ta có đồ thị như sau:
MATLAB code Đồ thị
X=0:0.01:2*pi;
Y1=sin(X);
Y2=cos(X);
figure('Name','Hinh Sine');
Subplot(2,1,1);
h=plot(X,Y1);
set(h,'linestyle','-','Color','r');
xlabel('Truc X');
ylabel('Y=sin(X)');
title('Hinh Sine');
grid on
subplot(2,1,2);
h=plot(X,Y2);
set(h,'linestyle','.','Color','b');
xlabel('Truc X');
ylabel('Y=cos(X)');
title('Hinh COS');
Matlab Căn bản
Nguyễn Hoài Sơn - Khoa Xây dựng và Cơ học Ứng dụng - ĐHSPKT Trang 47
grid on;
Mô hình cây thư mục quản lý đối tượng đồ họa trong MATLAB
Các đối tượng của MATLAB
Lệnh figure
Cú pháp:
figure
Matlab Căn bản
Nguyễn Hoài Sơn - Khoa Xây dựng và Cơ học Ứng dụng - ĐHSPKT Trang 48
figure('PropertyName',PropertyValue,...)
figure(h)
h = figure(...)
Chú thích:
• figure: tạo một đối tượng đồ họa, đối tượng đồ họa ở đây là cửa sổ để
quản lý tất cả các kết quả của MATLAB khi xuất ra dưới dạng đồ họa.
• figure('PropertyName',PropertyValue,...): Cửa sổ với những thuộc tính
và giá trị mà người sử dụng sẽ cài đặt trong cửa sổ này.
• figure(h): Thực hiện một trong hai nhiệm vụ sau:
- Kiểm tra xem figure(h) tồn tại hay chưa.
- Nếu chưa có thì tạo một cửa sổ mới còn nếu có rồi ( đã tồn tại ) thì làm
figure này hiện hành.
Một vài property ( thuộc tính ) của figure:
- ‘Position’ : Xác định vị trí của figure ở đâu trên màn hình
- ‘Name’ : Tên của figure
- ‘NumberTitle’: Số của thứ tự của figure
- ‘Color’: màu nền của figure
Các lệnh liên quan đến figure:
clf: Xóa cửa sổ (figure) hiện hành.
gcf: Trả về cửa sổ (figure) hiện hành của figure hiện hành.
close(h): Đóng figure thứ h với h là một con số.
close all: Đóng tất cả các figure.
get(0,'ScreenSize'): Lấy chế độ phân giải màn hình, dùng để định vị vị trí của
figure trên màn hình.
Ví dụ:
scrsz = get(0,'ScreenSize');
figure('Position',[1 scrsz(4)/2 scrsz(3)/2 scrsz(4)/2])
set(0,'DefaultFigureProperty',PropertyValue...): Thiết lập giá trị hay thuộc tính
mặc định cho figure.
Lệnh axes
Cú pháp:
axes
axes('PropertyName',PropertyValue,...)
axes(h)
h = axes(...)
Chú thích:
Lệnh axis cho phép người dùng tạo ra một hệ trục mới để chứa đối tượng đồ
họa khác như : line, text, …
Matlab Căn bản
Nguyễn Hoài Sơn - Khoa Xây dựng và Cơ học Ứng dụng - ĐHSPKT Trang 49
Properties : thuộc tính của axes như : box( on/ off ), Position( [left bottom width
height]), Visible(on / off), …
Các lệnh liên quan đến axes:
cla: Xóa axes hiện hành.
gca: Trả về axes hiện hành của figure hiện hành.
set(0,'DefaultAxesPropertyName',PropertyValue,...): xác lập lại giá trị mặc định
cho axes gốc.
set(gcf,'DefaultAxesPropertyName',PropertyValue,...): xác lập lại giá trị mặc
định cho axes của cửa sổ hiện hành.
Lệnh subplot:
Cú pháp:
subplot(m,n,p)
subplot(h)
subplot('Position',[left bottom width height])
h = subplot(...)
Chú thích:
• subplot(m,n,p): Tạo ra một axes ở vị trí thứ p khi chia cửa sổ ra thành m xn
hình chữ nhật và axes này trở thành axes hiện hành.
MATLAB code:
%% Tạo dữ liệu
x=linspace(-50,50,250);
y1=real(besselj(1,x));
y2=real(besselj(2,x));
grid on;
% Vẽ hình ứng với dữ liệu trên
• subplot(h): tạo axes ứng với h làm hiện hành.
• subplot('Position',[left bottom width height]): Thiết lập vị trí cho axes
Lệnh hold: Dùng để vẽ được nhiều hình trên cùng một axes gồm có :
hold on : Cho phép vẽ nhiều hình trên một axes.
hold off : kết thúc việc cho vẽ nhiều hình trên một axes
Matlab Căn bản
Nguyễn Hoài Sơn - Khoa Xây dựng và Cơ học Ứng dụng - ĐHSPKT Trang 50
Lệnh title: Tạo tiêu đề cho đồ thị
Cú pháp lệnh:
title('string')
title(fname)
title(...,'PropertyName',PropertyValue,...)
Ví dụ:
Matlab code:
clear all;
clc;
[X,Y,Z]=peaks(10);
surf(X,Y,Z);
title('surf(X,Y,Z)');
Lệnh text: tạo đối tượng chữ ở một vị trí xác định trong hệ trục tọa độ.
Cú pháp:
text(x,y,'string')
text(x,y,z,'string')
text(...'PropertyName',PropertyValue...)
Ví dụ:
Matlab code:
plot(0:pi/20:2*pi,sin(0:pi/20:2*pi));
text(pi,0,' \leftarrow sin(\pi)','FontSize',18);
grid on;
Lệnh xlabel, ylabel, zlabel : tạo nhãn cho các hệ truc x, y, z
Lệnh axis: Xác định giới hạn trục của các trục tọa độ hoặc tắt các hệ gồm các lệnh
sau
axis([xmin xmax ymin ymax zmin zmax)
axis on/ off
axis square
axis auto
axis equal
Lệnh grid on/ off : bậc tắt lưới của axes hiện hành
Matlab Căn bản
Nguyễn Hoài Sơn - Khoa Xây dựng và Cơ học Ứng dụng - ĐHSPKT Trang 51
LỆNH ĐỒ HỌA 2D
1. Lệnh plot:
Cú pháp:
plot(Y)
plot(X1,Y1,...)
plot(X1,Y1,LineSpec,...)
plot(...,'PropertyName',PropertyValue,...)
h = plot(...)
Chú thích:
• plot(Y) : Nếu Y đều là số thực thì plot(Y) xây dựng đồ thị dựa trên tập dữ liệu
X=0:size(Y,2) và Y còn Y là số phức thì plot(Y) sẽ xây dựng đồ thị dựa vào tập dữ
liệu sau: X= real(Y), Y=imag(Y)
• plot(X1,Y1,...): đồ thị được xây dựng trên tập dữ liệu X, Y
• plot(X1,Y1,LineSpec,...): Giống như lệnh plot(X,Y) tuy nhiên LineSpec hổ trợ
ta định nghĩa (LineStyle, LineWidth,Color, Maker)
• plot(...,'PropertyName',PropertyValue,...): Thiết lập thuộc tính cho đồ thị
Ví dụ:
MATLAB code:
Đồ thị:
Matlab Căn bản
Nguyễn Hoài Sơn - Khoa Xây dựng và Cơ học Ứng dụng - ĐHSPKT Trang 52
Ví dụ 2:
Đồ thị:
LineSpec: gồm các loại sau
LineStyle
LineWidth
Color
Marker( type, size, face, Edge)
LineStyle:
Kí hiệu Kiểu đường Ví dụ
- solid line (Mặc định)
-- dashed line
: dotted line
-. dash-dot line
Matlab Căn bản
Nguyễn Hoài Sơn - Khoa Xây dựng và Cơ học Ứng dụng - ĐHSPKT Trang 53
Linewidth(LW):
Giá trị LW 1 3 5
Hình
Color:
Có ba cách trong MATLAB xác định màu sắc cho đối tượng đồ họa là
Các file đính kèm theo tài liệu này:
- matlab_canban_7106.pdf