SlideShare ist ein Scribd-Unternehmen logo
1 von 192
BÀI GIẢNG ĐIỆN TỬ
TIN HỌC ỨNG DỤNG
TRONG KỸ THUẬT ĐỊA CHẤT & DẦU KHÍ
Tác giả: ThS. Đỗ Quang Khánh
ThS. Bùi Tử An
Bộ môn: Khoan & Khai thác dầu
khí©Copyright 2007
MATLAB
©Copyright 2007
MATLAB 2
MATLAB CĂN BẢN
 Tổng quan về MATLAB
 Các phép toán, biểu thức và hàm cơ bản
 Lập trình trong MATLAB
 Đồ họa cơ bản
 Cấu trúc chương trình
 BÀI TẬP
©Copyright 2007
MATLAB 3
CÁC VẤN ĐỀ NÂNG CAO TRONG MATLAB
 Symbolic trong MATLAB
 Ma trận và đại số tuyến tính
 Hàm số và phương trình
 Đồ họa nâng cao
 Vấn đề tạo giao diện
 BÀI TẬP
©Copyright 2007
MATLAB 4
TỔNG QUAN VỀ MATLAB
 MATLAB (Matrix Laboratory) là một ngôn ngữ thông dịch,
cho phép thực hiện nhanh chóng các giải thuật, hiển thị dữ
liệu (dưới dạng đồ thị 2D, 3D, hình ảnh và thậm chí chuỗi
hình ảnh) và thực hiện các giao tiếp đồ họa dễ dàng.
 Ưu điểm:
 Cung cấp một công cụ tính toán và lập trình bậc cao dễ
sử dụng, hiệu quả và thân thiện. SIMULINK giúp người
sử dụng thực hiện các bài toán mô hình hóa, mô phỏng
trên máy tính.
 Có tính mở, các hàm và các toolbox không ngừng được
bổ sung theo sự phát triển của khoa học bởi chính The
Mathworks Ins và cả người sử dụng trên toàn thế giới
 Có công cụ trợ giúp phong phú trực tuyến, trên mạng
hay các tài liệu dạng pdf.
©Copyright 2007
MATLAB 5
Sức mạnh của MATLAB
 Môi trường phát triển: gồm các công cụ và tiện
nghi giúp viết chương trình, sử dụng các hàm
Matlab và các file
 Thư viện các hàm toán học của Matlab: Các
hàm sơ cấp: tổng, sin, tính số phức… các
hàm phức tạp: Bessel, nghịch đảo ma trận,
tính trị riêng, biến đổi Fourier nhanh, wavelet…
 Ngôn ngữ Matlab: Các lệnh cao cấp xử lý ma
trận, lệnh rẻ nhánh, vòng lặp, xuất nhập, cấu
trúc dữ liệu, lập trình hướng đối tượng…
 Xử lý đồ họa: Hiển thị dữ liệu dạng đồ họa
2D, 3D, hoạt hình, xử lý ảnh và cả GUI
©Copyright 2007
MATLAB 6
Sức mạnh của MATLAB (tt)
 Thư viện API của Matlab: Cho phép liên kết các
chương trình C và Fortran… Các ngôn ngữ khác
có thể gọi các hàm dll được tạo bởi Matlab.
 Các hộp công cụ (Toolbox): Tập hợp các hàm
Matlab được viết sẵn để giải quyết các vấn đề
thuộc các chuyên ngành khác nhau. Các toolbox
khiến cho Matlab có thể ứng dụng vào nhiều lĩnh
vực kỹ thuật khác nhau: Điện tử, Điều khiển tự
động, Kỹ thuật điện, Viễn thông, Cơ khí, Động
lực, Dầu khí, Địa chất, hóa học,…
©Copyright 2007
MATLAB 7
Các khái niệm cơ bản
Khi chạy chương trình
MATLAB, thì cửa sổ
này sẽ xuất hiện
Cửa sổ lệnh
Cửa sổ không
gian làm việc
Cửa sổ lịch sử
lệnh
©Copyright 2007
MATLAB 8
Các khái niệm cơ bản (tt)
 Hoạt động trong MATLAB
 Command window (cửa sổ lệnh)
− Dấu “>>” dùng để chạy lệnh, viết chương trình, Chạy
chương trình.
 Command history window (cửa sổ lịch sử lệnh)
− Liệt kê tất cả các lệnh đã sử dụng trước đó kèm theo
thời gian làm việc.
 Current Directory (cửa sổ thư mục hiện tại)
− Cho biết thư mục hiện tại làm việc. Mặc định khi cài
MATLAB701work (Version 7.01)
 Workspace (cửa sổ không gian làm việc)
− Cho biết các biến được sử dụng trong chương trình.
©Copyright 2007
MATLAB 9
Các khái niệm cơ bản
 Một số lệnh hệ thống
Lệnh Ý nghĩa
 clc xóa cửa sổ lệnh
 clf xóa cửa sổ đồ họa
 help xem phần trợ giúp một số lệnh
 quit, exit Thoát Matlab
 Ctrl+c Dừng chương trình
 pause Ngừng tạm thời chương trình
 edit Gọi chương trình soạn thảo type đọc
nội dung file.m
 input Nhập dữ liệu từ bàn phím
 demo Gọi chương trình demo
 echo on/off Tắt mở hiển thị các lệnh trong M-files
©Copyright 2007
MATLAB 10
Các khái niệm cơ bản (tt)
 CÁC TOÁN TỬ VÀ KÍ TỰ ĐẶC BIỆT
• plus (+) cộng
• uplus (+) Cộng unary
• minus ( - ) Trừ
• uminus (-) Trừ unary
• mtimes(. *) Nhân ma trận
• times (*) Nhân mảng
• mpower (^) lũy thừa ma trận
• power (. ^ ) lũy thừa mảng
• mldivide ( ) Chia trái ma trận
• Mrdivide( /) Chia phải ma trận
• ldivide (. ) Chia trái mảng
• mdivide (./ ) Chia phải ma trận
• kron Sản phẩm cơ năng
©Copyright 2007
MATLAB 11
Các khái niệm cơ bản (tt)
 Toán tử quan hệ
• eq (== ) Bằng
• ne ( ~= ) Không bằng
• lt (< ) Nhỏ hơn
• gt (>) Lớn hơn
• le (<= ) Nhỏ hơn hoặc bằng
• ge (>= ) Lớn hơn hoặc bằng
©Copyright 2007
MATLAB 12
Các khái niệm cơ bản (tt)
 Toán tử logic
• and (&) Logic và
• or ( | ) Logic hoặc
• not ( ~ ) Logic phủ định
• xor Logic hoặc phủ định
• any True nếu mọi phần tử của vector
khác không.
• all True nếu tất cả các phần tử khác
không
©Copyright 2007
MATLAB 13
Các khái niệm cơ bản (tt)
 Các kí tự đặc biệt
: Dấu hai chấm
() Dấu ngoặc đơn
[ ] Dấu ngoặc vuông
{ } Dấu ngoặc nhọn
. Dấu thập phân
. Truy nhập cấu cấu trúc trường
.. Thư mục mẹ
... Dấu tiếp tục
, Dấu phẩy
; Dấu chấm phẩy
% Dấu chú thích
©Copyright 2007
MATLAB 14
Các khái niệm cơ bản (tt)
% Dấu chú thích
! Liên quan câu lệnh của hệ điều
hành
= Gán
‘ Nhảy
transpose(.’) Chuyển vị
ctranspose(‘ ) Chuyển vị số phức liên hợp
horzcat [, ] Ghép chuỗi theo chiều ngang
vertcat[; ] Ghép chuỗi theo chiều đứng
subsasgn Gán subscripted
bsref Tham chiếu subscripted
subsindex Chỉ số subscripted
©Copyright 2007
MATLAB 15
Các khái niệm cơ bản (tt)
 BIẾN
 Quy định về tên biến:
− Giống các ngôn ngữ khác, Matlab có những quy định về tên
biến phải là một từ, không chứa dấu cách, và phải tuân thủ
theo các quy tắc sau:
 Có thể chứa nhiều nhất 31 kí tự, còn các kí tự sau kí tự
31 sẽ bị lờ đi.
Ví du: Thoi_gian_dong_cua_vuaximang100, …
 Tên biến bắt đầu phải là chữ cái, tiếp theo có thể là chữ
số, dấu gạch dưới.
Thí dụ: Do_bien_thien, Heso, heso, Donhot,
donhot…
 Kí tự chấm “.” không được dùng vì nó có ý nghĩa đặc
biệt
©Copyright 2007
MATLAB 16
BIẾN (tt)
 Một số biến được đĩnh nghĩa trước:
− 1/0
Warning: Divide by zero.
(Type "warning off MATLAB:divideByZero" to suppress this
warning.)
ans = Inf
− 0/0
Warning: Divide by zero.
(Type "warning off MATLAB:divideByZero" to suppress this
warning.)
ans = NaN
− Eps
ans = 2.2204e-016
©Copyright 2007
MATLAB 17
Một số biến được định nghĩa trước (tt)
Ý
©Copyright 2007
MATLAB 18
 Độ lớn của biến
− Xác định độ lớn hay chiều dài của biến vector cũng
như ma trận thông qua một số hàm sau đây:
 Size(A) Trả về 1 vector chứa kích thước A,
gồm số hàng và số cột của A.
 Length(A) Trả về chiều dài của A, giá trị lớn nhất
của hàng và cột.
 Ngoài ra còn có các hàm: Size(A,p); [m,n] =
size(A)
©Copyright 2007
MATLAB 19
BIẾN (tt)
 Thí dụ:
>> A = [1 2 3; 4 5 6]
A = 1 2 3
4 5 6
>> [m,n] = size(A)
m = 2
n = 3
>> length(A)
ans = 3
>>size(A,1)
ans = 2
©Copyright 2007
MATLAB 20
BIẾN (tt)
 BIẾN MÔI TRƯỜNG (Environmental Variable)
Thí dụ:
>> a = 1
a =
1
>> b = ‘MATLAB’
b =
Matlab
Ta nói, a, b là các biến môi trường.
©Copyright 2007
MATLAB 21
BIẾN (tt)
 Khi làm việc trong MATLAB ở trong cửa sổ lệnh cũng
như các giá trị đã được tạo ra. Những lệnh và biến này
được thường trú trong môi trường làm việc của
MATLAB (Workspace) và có thể được nạp trở lại khi
muốn.
 Đời sống của những biến chấm dứt khi ta thoát khỏi
chương trình MATLAB.
 Như Thí dụ trên, a được hiểu la một biến số, b là một
chuỗi.
 Khi định nghĩa biến môi trường, nếu gán giá trị cho nó
thì kiểu biến sẽ phụ thuộc vào kiểu giá trị đã gán cho
nó.
©Copyright 2007
MATLAB 22
BIẾN (tt)
 BIẾN CỤC BỘ (Local Variable)
 Biến này chỉ tồn tại trong một hàm MATLAB và
không hiện hữu trong cửa sổ lệnh.
Thí dụ:
function[mean,stdev] = stat(x);
n = length(x);
mean = sum(x)/n;
stdev = sqrt(mean);
 Trong trường hợp này n là biến cục bộ và chỉ
được truy xuất trong một hàm.
©Copyright 2007
MATLAB 23
BIẾN (tt)
 BIẾN TOÀN CỤC (Global Variable)
 Được định nghĩa bằng từ khóa global. Việc
xóa biến toàn cục dùng lệnh clear global
 Isglobal(ten_bien): trả về 1 (ten_bien là biến
toàn cục), 0 (ten_bien không phải là biến toàn
cục)
Thí dụ:
Global x y z
x, y, z là các biến toàn cục.
©Copyright 2007
MATLAB 24
BIẾN (tt)
 Thường mỗi hàm trong MATLAB được viết dưới
dạng M File, có riêng những biến cục bộ cho
từng hàm và được lưu trữ trong một vùng biến
đặc biệt, việc gọi hàm trong một hàm đều có thể
truy xuất biến này.
 Nên dùng KÍ TỰ HOA để đặt tên biến toàn cục
để tránh trùng tên với các biến trong Workspace.
©Copyright 2007
MATLAB 25
BIẾN (tt)
BIẾN SYMBOLIC
 Symbolic processing là thuật ngữ dùng mô tả cách thức
máy tính thực hiện tính các biểu thức toán học (Thí dụ,
rút gọn một đa thức, đặt thừa số chung, tính giá trị một
biểu thức đại số, giải phương trình đại số, giải phương
trình vi phân, …)
 Khởi tạo biến symbolic:
x = sym(‘x’): Tạo biến symbolic có tên là x.
x = sym(‘x’,’real’): Tạo biến symbolic có tên x và là biến
không bị ràng buộc phải là biến thực.
k = sym(‘p’,’positive’): Tạo biến symbolic k là biến thực,
dương.
 Khởi tạo hằng symbolic: Nhằm tránh mắc sai lầm khi
làm tròn.
©Copyright 2007
MATLAB 26
BIẾN (tt)
Khởi tạo hằng symbolic
Thí dụ:
>> hai_phan_ba = sym(‘2/3’);
>> pi = sym(‘pi’);
>> hai_phan_ba =
hai_phan_ba =
2/3 % Không hiển thị giá trị xấp xỉ
>> Pi
Pi =
pi % không hiển thị giá trị xấp xỉ.
- Liệt kê các biên symbolic hiện hành, sử dụng hàm
<syms>
©Copyright 2007
MATLAB 27
BIẾN (tt) - Symbolic
 Liệt kê các biến Symbolic
>> syms x y;
>> p = 2*x + 3*y;
% Tạo biến symbolic p thông qua biểu thức symbolic
>> u = sqrt(x^2 + y^2);
% Tạo biến symbolic u thông qua biêu thức symbolic
>> d = subs(u, {x,y},{2,3})
% Tính giá trị biểu thức u khi x = 2, y = 3.
d =
13
>> v = subs(u,{x,y},{3,4})
% Tính giá trị biểu thức khi x = 3; y = 4;
v =
5
>> syms
‘r’ ‘s’ ‘x’ ‘y’
©Copyright 2007
MATLAB 28
BIẾN (tt) - Symbolic
 Khởi tạo ma trận symbolic bằng biến symbolic.
Thí dụ:
>> n = 3;
>> syms x;
>> A = x.^ [[0:n]’.* [0:n]];
% Dùng phép biến đổi lũy thừa mảng
A = [1, 1, 1, 1]
[1, x, x^2, x^3]
[1, x^2, x^4, x^6]
[1, x^3, x^6, x^9]
©Copyright 2007
MATLAB 29
BIẾN (tt) - Symbolic
 Tìm biến symbolic trong một hàm
Thí dụ:
>> syms b x y z;
>> findsym(5*b + 2*z)
% Hàm này tìm biến symbolic trong một hàm
ans =
b, z
©Copyright 2007
MATLAB 30
BIẾN (tt)
 LƯU và NẠP Biến
 Biến sẽ bị xóa sạch khi:
− Dùng lệnh: clear all
− Thoát chương trình MATLAB
 Lưu biến:
− Để sử dụng lại cho phiên làm việc sau; dùng
lệnh <save> (lưu tất cả các biến do
Workspace đang quản lý(tên, kích thước, giá
trị) vào một tập tin nhị phân (binary file) có
tên matlab.mat
©Copyright 2007
MATLAB 31
BIẾN (tt)
 Nạp biến:
− Dùng lệnh <load> Nạp tất cả các biến đã lưu vào
Workspace để dùng lại
 Nếu không muốn dùng tập tin mặc định
matlab.mat, ta sử dụng lệnh <Save filename> để
lưu tất cả biến vào tập tin có tên filename.mat và
muốn nạp lại biến khi dùng lệnh <load filename>
 Lưu một vài biến trong cửa sổ workspace
− Lệnh <Save filename var1 var2 …>
 Nói chung cách đơn giản nhất là: Từ cửa sổ Menu
File ở cửa sổ lệnh chọn <Sace Workspace As>
Đặt tên tập tin (có đuôi mở rộng là *.mat)
©Copyright 2007
MATLAB 32
Câu chú thích
 Tất cả các văn bản đằng sau kí hiệu phần trăm
(%) đều là câu giải thích.
 Thí dụ:
> heso_a = 10 % Hệ số a ptb2
heso_a =
10
>> heso_b = 20 % Hệ số b ptb2
heso_b =
20
©Copyright 2007
MATLAB 33
Số phức
 Một trong những điểm mạnh nhất của MATLAB là làm việc
với số phức.
 Các hàm đặc biệt của số phức:
 real(x) Phần thực của X
 imag(x) Phần ảo của X
 conj(x) Liên hợp phức của X
 abs(x) Độ lớn, trị tuyệt đối của X
 angle(x) Góc pha của số phức
 complex(x) Tạo số phức từ phần thực và ảo
©Copyright 2007
MATLAB 34
Số phức (tt)
 Thí dụ:
>> a=1+3i
a = 1.0000 + 3.0000i
>> b=2-4i
b = 2.0000 - 4.0000i
>> a+b
ans = 3.0000 - 1.0000i
>> abs(a)
ans = 3.1623 % độ lớn của a
>> real(b) % phần thực của số phức b
ans = 2
>> imag(b) %phần ảo của số phức b
ans = -4
>> complex(2,2)
ans = 2.0000 + 2.0000i
©Copyright 2007
MATLAB 35
Một số hàm toán học thông thường
Tên hàm Mô tả, kết quả trả về
Any(x) 1 hoặc vecto hàng đơn vị nếu bất kỳ phần tử nào
của vecto hoặc ma trận x khác 0.
All(x) là 1 hoặc vecto hàng đơn vị nếu tất cả các phần tử
nào của vecto hoặc ma trận x khác 0.
Isnan(x) Là một tại những vị trí NaN (Not a Number, Thí dụ
0/0) trong x
Isinf(x) Là 1 tại những vị trí Inf (Infinitive, 1/0) trong x.
Finite(x) Là 1 tại những vị trí có giá trị hữu hạn trong x.
Isstr(x) Là 1 nếu x là một string (chuỗi)
Issym(x) Là 1 nếu x là một biến sym
Abs(x) Trị truyệt đối hoặc biên độ số phức
Acos(x) Hàm cosin ngược
Acosh(x) Hyperbolic cosin ngược
Ceil(x) Làm tròn về phía trên
Atan(x) Hàm số tang ngược
Asin(x) Hàm số sin ngược
©Copyright 2007
MATLAB 36
Một số hàm toán học thông thường
Tên hàm Mô tả, kết quả trả về
cos(x) Hàm cosin
cosh(x) Hyperbol cosin
exp(x) Hàm mũ ex
fix(x) Xấp xỉ không
floor(x) Làm tròn về phía zero
log(x) Hàm logarit tự nhiên
log10(x) Hàm logarit thập phân
round(x) Làm tròn về số nguyên gần nhất
sign(x)
Hàm dấu, Thí dụ: sign(1.2) = 1,sign(-23.4) = -1, sign(0)
= 0
sin(x) Hàm sin
sinh(x) Hàm Hyperbol sin
sqrt(x) Căn khai căn bậc hai
gdc(x,y) Bội số chung lớn nhất của hai số nguyên x và y.
lcm(x,y) Bội số chung nhỏ nhất của hai số nguyên x và y.
x^y Hàm mũ
©Copyright 2007
MATLAB 37
Một số hàm toán cơ bản
Tên hàm Mô tả, kết quả trả về
rem(x,y) Số dư phép chia x/y
sum(v) Tổng các phần tử vector
prod(v) Tích các phần tử vector
min(v) Phần tử vector bé nhất
max(v) Phần tử vector lớn nhất
mean(v) Giá trị trung bình cộng
sign(x) Hàm dấu (= 1 nếu x>0;
= -1 nếu x<0;
= 0 nếu x=0)
©Copyright 2007
MATLAB 38
Một số hàm cơ bản (tt)
 Thí dụ:
>> x=4;
>> sqrt(x)
ans = 2
>> exp(x)
ans = 54.5982
>> sign(x)
ans = 1
>> rem(x,3)
ans = 1
>> v=[1 2 3];
>> min_v=min(x)
min_v = 1
>> mean(x)
ans = 2
>> sum(x)
ans = 6
©Copyright 2007
MATLAB 39
Các Hàm liên quan đến ĐA THỨC
 Đa thức được biểu diễn bằng vecto bậc một có bậc giảm
dần.
 Cho hai đa thức f, g lần lượt được biểu diễn bởi a và b. Ta
sẽ có các hàm sau:
Conv(a,b) Nhân hai đa thức
Deconv(a,b) Chia hai đa thức
a + b Tổng hai đa thức
a – b Hiệu hai đa thức
roots(a) nghiệm của đa thức f được biểu diễn
bởi vecto a.
poly(r) Trả về các hệ số của đa thức có
nghiệm là vecto r.
 Lưu ý: Khi cộng và trừ các đa thức phải có cùng kích thước.
©Copyright 2007
MATLAB 40
Hàm ĐA THỨC (tt)
 Thí dụ: Giải phương trình: x4
+ 10x3
+ 0x - 1 = 0
Giải: Ta biểu diễn đa thức x4
+ 10x3
+ 0x - 1 bằng một vectơ
hàng với các phần tử là các hệ số của đa thức sắp xếp
theo thứ tự bậc giảm dần.
>> a = [1 10 -2 0 -1];
Nghiệm của đa thức có thể được tính bằng hàm: roots(a)
>> R = roots(a)
R =
-10.1971
0.5291
-0.1660 + 0.3972i
-0.1660-0.3972i
©Copyright 2007
MATLAB 41
Hàm ĐA THỨC (tt)
 Từ các nghiệm của đa thức có thể xây dựng lại đa
thức bằng hàm: poly(a);
 Thí dụ:
>>a = poly(R)
a = 1.0000 10.0000 -2.0000 0.0000 -1.0000
>>a = [1 2 3 4]; % x3
+2x2
+3x+4
>>b = [5 6 7 8]; % 5x3
+6x2
+7x+8
>>Tich = conv(a,b)
Tich = 5 16 34 60 61 52 32
©Copyright 2007
MATLAB 42
Hàm ĐA THỨC (tt)
>>Thuong = deconv(a,b)
Thuong = 0.2000
>>Tong = a + b
Tong = 6 8 10 12
>>Hieu = a – b
Hieu = -4 -4 -4 -4
©Copyright 2007
MATLAB 43
CÁC LỆNH ĐIỀU KIỆN VÀ LẶP
 Vòng lặp FOR:
 Cấu trúc:
for i = n:m %n = phần tử đầu, m = phần tử cuối
<Lệnh>
end
 Thí dụ vòng lặp FOR: Tính giai thừa của 100?
©Copyright 2007
MATLAB 44
CÁC LỆNH ĐIỀU KIỆN VÀ LẶP
 Vòng lặp WHILE: lặp vòng khi biểu thức logic là true.
 Cấu trúc:
while <biểu thức logic>
<Các lệnh>
end
 Thí dụ 1:
n=1;
while prod(1:n) < 1e100
% prod tính tích các phần
n = n+1;% tử cột của vectơ hay
End % ma trận
©Copyright 2007
MATLAB 45
CÁC LỆNH ĐIỀU KIỆN VÀ LẶP
 Lệnh if else elseif
 Cấu trúc:
 Nếu <BT logic> là true thì <Các lệnh> được
thi hành, nếu không thì thực hiện các lệnh sau
end.
if <BT logic>
<lệnh 1>
else
<lệnh 2>
end
if <BT logic 1>
<lệnh 1>
elseif <BT logic 2>
<Lệnh 2>
…
end
if <BT logic>
<Các lệnh>
end
©Copyright 2007
MATLAB 46
CÁC LỆNH ĐIỀU KIỆN VÀ LẶP
 Thí dụ 1:
if rem(a,2)==0
disp('la mot so chan')
b=a/2;
End
if n<0
disp('la so duong')
elseif n==0
disp('la so 0')
else
disp('la so am')
end
©Copyright 2007
MATLAB 47
CÁC LỆNH ĐIỀU KIỆN VÀ LẶP
 Thí dụ 2: Hàm ngay_trong_thang.m
function y = ngay_trong_thang(th,nam)
if (th==4)|(th==6)|(th==9)|(th==11)
y = 30
elseif (th==2)
if (rem(nam,4)~=0)
y=28
else
y=29
end
else
y=31
end
©Copyright 2007
MATLAB 48
CÁC LỆNH ĐIỀU KIỆN VÀ LẶP
 Lệnh switch case: chọn nhiều trường hợp
 Cấu trúc:
switch <Biểu thức (vô hướng hay chuỗi)>
case <trị 1>
<Các phát biểu % thực hiện nếu biểu thức là trị 1>
case <trị 2>
<Các phát biểu % thực hiện nếu biểu thức là trị 2>
…
otherwise
<Các phát biểu % thực hiện nếu biểu thức không phù
hợp mọi trường hợp>
end
©Copyright 2007
MATLAB 49
CÁC LỆNH ĐIỀU KIỆN VÀ LẶP
 Thí dụ:
switch input_num
case -1
disp(‘negative one’);
case 0
disp(‘zero’);
case 1
disp(‘positive one’);
otherwise
disp(‘other value’);
end
©Copyright 2007
MATLAB 50
ĐỒ HỌA CĂN BẢN
 Tổng quát về đồ họa trong MATLAB
 MATLAB có các hàm đồ họa để vẽ các đặc
tuyến bất kỳ trên mặt phẳng 2D, 3D, cho phép
tạo ra đối tượng đồ họa điều khiển được.
 MATLAB cho phép người lập trình sử dụng “bộ
nhớ ảo”, khi đó có thể ghi các biến làm việc
thành tập tin *.mat trên đĩa và có thể nạp bộ
nhớ khi cần thiết. Nhờ vậy, MATLAB có thể giải
được các bài toán lớn và phức tạp.
 Ngoài ra, MATLAB còn phép quản lý tập tin dữ
liệu trong chính môi trường MATLAB mà không
cần đến môi trường windows.
©Copyright 2007
MATLAB 51
ĐỒ HỌA CĂN BẢN (tt)
 Màu sắc và kiểu đường vẽ
Ký hiệu Màu Ký hiệu Kiểu nét
y Yellow . Point
m Magenta o Circle
c Cyan x X-mark
r Red + Plus
g Green * Star
b Blue - Solid line
w White : Dotted line
k Black
-. Dash-dot line
-- Dased line
©Copyright 2007
MATLAB 52
ĐỒ HỌA CĂN BẢN (tt)
Các kiểu data marker Ký hiệu trong plot
Dấu chấm (dot .) .
Dấu sao (asterisk *) *
Dấu gạch chéo (cross x) x
Vòng tròn (circle o) o (chữ o thường)
Dấu cộng (plus sign + ) +
Hình vuông (square ) s
Diamond ( ) d
Ngôi sao () p
©Copyright 2007
MATLAB 53
ĐỒ HỌA CĂN BẢN (tt)
 Đồ họa không gian 2 chiều trong MATLAB
 Lệnh plot: Đồ thị tuyến tính X-Y, vẽ trong mặt
phẳng hai chiều.
 Lệnh fplot: được dùng để vẽ hàm số một cách
“thông minh”, nó tự động phân tích hàm phải vẽ
và chọn số điểm thích hợp cần phải thể hiện để
phản ánh các đặc điểm của hàm.
− Cú pháp: fplot(‘string’, [xmin,xmax])
− Dạng đầy đủ: fplot(‘string’, [xmin xmax ymin ymax]
©Copyright 2007
MATLAB 54
ĐỒ HỌA CĂN BẢN – Plot() (tt)
Thí dụ:
>>x = linspace(0,2*pi,30);
%Tạo mảng x gồm 30 phần tử có giá trị trong
khoảng 0 – 2*π
>>y = sin(x);
>>plot(x,y) %vẽ đồ thị hàm y theo x
>>xlabel(‘x [0-2*pi]); ylabel(‘y’);
%đặt nhãn trục tọa độ x và y
>>title(‘y = sin(x)’) % đặt tên đồ thị
>>grid on % Tạo lưới cho đồ thị
©Copyright 2007
MATLAB 55
ĐỒ HỌA CĂN BẢN – Plot() (tt)
©Copyright 2007
MATLAB 56
ĐỒ HỌA CĂN BẢN – Plot() (tt)
 Để vẽ hai đồ thị trên cùng một trục tọa độ
>>z = cos(x);
>>plot(x,y,’b-*’,x,z,’r’)
% Vẽ y và z trên cùng đồ thị, y là đường -* màu
xanh, z là đường -- màu đỏ
>>legend(‘y = sin(x)’,’z=cos(x)’) % chú thích trên
đồ thị
©Copyright 2007
MATLAB 57
ĐỒ HỌA CĂN BẢN – Plot() (tt)
>>legend(‘y = sin(x)’,’z=cos(x)’)
©Copyright 2007
MATLAB 58
ĐỒ HỌA CĂN BẢN (tt)
 Để vẽ nhiều hàm trên cùng một đồ thị ta có thể
dùng lệnh “hold on” và “hold off”
>> t=0:pi/20:2*pi;
>> plot(t,sin(t),'-r*')
>> hold on
>> plot(sin(t-pi/2),'mo')
>> plot(sin(t-pi),':bs')
>> hold off
©Copyright 2007
MATLAB 59
ĐỒ HỌA CĂN BẢN (tt)
 Lệnh plot vẽ trong SỐ PHỨC
 Nếu chỉ cố một đối số, hàm plot(y) sẽ vẽ các
giá trị của vector y theo chỉ số 1,2,3, … Nếu y là
số thực, hàm plot(y) trong trường hợp này sẽ
vẽ phần ảo theo phần thực tương ứng, nghĩa là
tương đương với plot(real(y),imag(y))
©Copyright 2007
MATLAB 60
ĐỒ HỌA CĂN BẢN (tt)
 Thí dụ:
>> x = .1+.9i;
>> u = [0:0.01:10];
>> plot(x.^u),xlabel('So thuc'),ylabel('Phan ao')
>> title('Do thi voi doi so phuc tap trong ham SO PHUC')
©Copyright 2007
MATLAB 61
ĐỒ HỌA CĂN BẢN (tt)
 Thí dụ lệnh fplot trong số phức:
>> f='cos(tan(x))-tan(sin(x))';
>> fplot(f,[1 2])
©Copyright 2007
MATLAB 62
ĐỒ HỌA CĂN BẢN (tt)
 Các lệnh vẽ trong các tọa độ đặc biệt
Polar(t,r): vẽ đồ thị trong tọa độ cực
Semilogx(x,y): Vẽ hàm y theo x với trục y vẽ theo thang log
Semilogy(x,y): Vẽ hàm y theo x với trục x vẽ theo thang log
Loglog(x,y) Vẽ hàm y theo x với thang log cho cả 2 trục tọa
độ
Plotyy(x,y,’function’): Vẽ đồ thị với 2 trục y theo kiểu vẽ
được chọn trong function. Trong đó function nhận các giá
trị plot, semilogy, semilogx…
Plot3(x,y,z): vẽ đường trong không gian 3 chiều.
Subplot(m,n,p): Chia cửa sổ figure ra nhiều ô, m ô theo
chiều đứng, n ô theo chiều ngang, vẽ đồ thị trong ô thứ p.
©Copyright 2007
MATLAB 63
ĐỒ HỌA CĂN BẢN (tt)
 Thí dụ:
 Lệnh polar(t,r): Vẽ đồ thị góc t (radian) trong tọa độ cực theo
bán kính r.
 Lệnh polar(t,r,’linestype’): Vẽ góc t với đường vẽ và nét xác
định ‘linestype’.
>>t = 0:.1:2*pi;
>>polar(t,sin(2*t)) >>polar(t,sin(2*t),'m-')
©Copyright 2007
MATLAB 64
ĐỒ HỌA CĂN BẢN (tt)
 Thí dụ, vẽ đường xoắn ốc Archimeder r = 2Ѳ với Ѳ thuộc [0,
4pi]
>> r = 2*t;
>> polar(t,r),title('Duong xoan oc Archimede r = 2t');
©Copyright 2007
MATLAB 65
ĐỒ HỌA CĂN BẢN (tt)
 Thí dụ lệnh loglog(x,y)
>> x = logspace(-1,2);
>> loglog(x,exp(x))
©Copyright 2007
MATLAB 66
ĐỒ HỌA CĂN BẢN (tt)
 Thí dụ lệnh semilogx(x,y)
>> x = logspace(-2,3);
>> y = x.^12 + 10;
>> semilogx(x,y) %tương tự cho lệnh semilogy()
©Copyright 2007
MATLAB 67
ĐỒ HỌA CĂN BẢN (tt)
Thí dụ :
>> t=0:pi/20:6*pi;
>> x=sin(t);
>> y=sin(t-pi/2);
>> z=t;
>> subplot(121)
>> plotyy(t,x,t,y,'plot')
>> grid on
>> subplot(122)
>> plot3(x,y,z)
>> grid on
©Copyright 2007
MATLAB 68
ĐỒ HỌA CĂN BẢN (tt)
 Các lệnh vẽ liên quan đến SỐ PHỨC
quiver(x,y): vẽ các vector xuất phát từ các vị trí khác
nhau.
fearther(x,y): Vẽ các vector xuất phát từ trục x.
compass(x,y): Vẽ các vector từ một điểm gốc trong
hệ tọa độ cực.
rose(x)
©Copyright 2007
MATLAB 69
Thí dụ-Lệnh quiver
 Giả sử ta có một trường vector như sau trong không gian R2
:
 P(x,y) = , Q(x,y) = , thử vẽ hình ảnh của trường
trong phạm vi x thuộc [1,5] và y thuộc [1,5].
 Trước hết ta viết một sript file (lưu file này với tên Quiver.m)
như sau:
x y
©Copyright 2007
MATLAB 70
Thí dụ-Lệnh quiver (tt)
 Sau đó, ta chạy file sript này(Gõ tên file này trong cửa sổ
lệnh->Enter), ta được hình ảnh sau:
©Copyright 2007
MATLAB 71
ĐỒ HỌA CĂN BẢN (tt)
 Các lệnh thao tác và điều khiển
figure
Hiển thị cửa sổ đồ họa hiện hành figure(gef)
Tạo ra cửa sổ đồ họa
figure(‘propertyname’,’propertyvalue’,…)
hold
Chuyển từ trạng thái hold là on sang off và ngược
lại
hold on Giữ lại tất cả màn hình đã vẽ
hold off
Xóa các màn hình đã vẽ chỉ thể hiện màn hình hiện
hành mới (Chế độ mặc định)
axis Cân chỉnh trục tọa độ và hình dạng của nó
grid Grid On/ grid off/ grid: Tạo/ tắt lưới cho đồ thị
shg Hiển thị đồ thị trên màn hình
clg Xóa đồ thị trên màn hình
zoom Co vào hoặc dãn ra của đồ thị
©Copyright 2007
MATLAB 72
ĐỒ HỌA CĂN BẢN (tt)
 CÁC LỆNH VĂN BẢN TRÊN MÀN HÌNH ĐỒ HỌA
title(‘text’,’property 1’,’property 2’,…): Tiêu đề cho đồ thị
xlabel(‘text’,’property 1’,’property 2’,…): Nhãn trục hoành độ
ylabel(‘text’,’property 1’,’property 2’,…): Nhãn trục tung độ
text(x,y,z,‘chuỗi ‘): Văn bản ở bất kỳ vị trí nào trên đồ thị. X, Y là
tọa độ tâm bên trái của đồ thị.
legend(x,y): Chú thích của đường trên đồ thị
gtext(‘C’): Văn bản ở vị trí con trỏ.
©Copyright 2007
MATLAB 73
ĐỒ HỌA CĂN BẢN (tt)
ĐỌC DỮ LIỆU TỪ MÀN HÌNH ĐỒ HỌA
 Lấy tọa độ diểm trên đồ thị, khi một đồ thị được vẽ
xong, nếu muốn lấy tọa độ của một số điểm trên
đường này, ta sẽ dùng lệnh [x,y] = ginput(n); n là
số điểm cần lấy tọa độ.
 Khi đồ thị hiện ra, ta nhấn phím trái chuột vào các
vị trí mong muốn lấy tọa độ trên đồ thị, các hoành
độ sẽ được chứa trong vector và tung độ trong
vector y.
 Nếu quan hệ giữa hai đại lượng x, y cần được vẽ
bằng các điểm rời rạc, thay vì là đường nối các
điểm (x,y) như vẽ hàm, hàm plot sẽ dùng các điểm
được đánh dấu (data makers)
©Copyright 2007
MATLAB 74
ĐỒ HỌA CĂN BẢN (tt)
 Thí dụ, vẽ đồ thị từ số liệu rời rạc bằng cách sử dụng điểm đánh
dấu.
>> x=[5:18];
>> y=[1,2,3,5,4,5,5,7,8,6,9,11,14,20];
>> plot(x,y,'r s')
R: màu đỏ, s: hình vuông
©Copyright 2007
MATLAB 75
ĐỒ HỌA CĂN BẢN (tt)
 Thí dụ:
Nếu muốn nối liền các điểm được đánh dấu này bằng các
đoạn thẳng, chúng ta có thể vẽ 2 lần.
>>plot(x,y,'r o',x,y)
©Copyright 2007
MATLAB 76
ĐỒ HỌA CĂN BẢN (tt)
 Ngoài ra trong lệnh plot ta có thể đưa các thông số ‘lineWidth’
để định độ rộng của đường vẽ, thông số ‘MarkerSize’ để định
độ lớn (chiều cao) của các điểm được đánh dấu và thông số
“Color” để định màu của đồ thị.
 Thí dụ:
>>plot(x,y,’o-’,’LineWidth’,3,’MarkerSize’,8,’Color’,’red’)
©Copyright 2007
MATLAB 77
ĐỒ HỌA CĂN BẢN (tt)
- Điền tiêu đề cho đồ thị, ta sử dụng lệnh: title(‘text’).
- Tạo lưới cho đồ thị: grid on
 Thí dụ: <<title(‘do thi roi rac dung data marker o’)
©Copyright 2007
MATLAB 78
ĐỒ HỌA CĂN BẢN (tt)
 Kiến tạo hệ trục tọa độ
Lệnh Mô tả
Axis([xmin xmax ymin ymax])
Thiết lập các giá trị min, max của hệ trục
dùng các giá trị được đưa ra trong vecto
hàng.
V= axis
V là vector cột có chứa thang chia cho đồ thị
hiện tại: [xmin xmax ymin ymax]
Axis auto trả lại giá trị mặc định thang chia
Axis(‘auto’) Xmin=min(x), xmax = max(x)…
Axismanual Giới hạn thang chia nh thang chia hiện tại
Axis xy
Sử dụng (mặc định) hệ tọa độ decac trong đó
gốc tọa độ ở góc thấp nhất bên trái, trục
ngang tăng từ trái qua phải, trục đứng tăng
từ dưới lên.
©Copyright 2007
MATLAB 79
ĐỒ HỌA CĂN BẢN (tt)
Lệnh Mô tả
Axis ij
Sử dụng hệ tọa độ ma trận, trong đó góc tọa độ ở
đỉnh góc trái, trục đứng tăng từ đỉnh xuống, trục
ngang từ trái qua phải.
Axissquare
Thiết lập đồ thị hiện tại là hình vuông, so với mặc
định là hình chữ nhật.
Axisequal Thiết lập thang chia giống nhau cho cả hai hệ trục
Axis tightequal
Tương tự như axisequal nhưng hộp đồ thị vừa đủ
đối với dữ liệu
Axis normal Tắt đi chế độ axis, equal, tight và vis3d
Axis off
Tắt bỏ chế độ nền trục, nhãn, lưới, và hộp, dấu.
Thoát khỏi chế độ lệnh title và bất cứ lệnh label nào
và thay đổi bởi lệnh text và gtext.
Axis on Ngược lại với axis off nếu chúng có thể
©Copyright 2007
MATLAB 80
ĐỒ HỌA CƠ BẢN (tt)
Thí dụ:
>>x=linspace(0,2*pi,30);
>>y=sin(x);
>>z=cos(x);
>>plot(x,y,x,z)
>>box off
% Sau khi sử dụng lệnh
>>axis off
>>axis ij
>>axis square equal
>>axis xy normal
©Copyright 2007
MATLAB 81
ĐỒ HỌA TRONG KHÔNG GIAN 3 CHIỀU
 Các lệnh vẽ trong tọa độ Đềcac ba chiều
plot3: Vẽ đường thẳng và điểm trong không gian 3
chiều
Thí dụ:
Vẽ đường cong tham số:
x =e-0.05t
sint
y =e-0.05t
cost
z = t ∈[0,10π]
©Copyright 2007
MATLAB 82
ĐỒ HỌA TRONG KHÔNG GIAN 3 CHIỀU (tt)
 Thực hiện
>> t = [0:pi/50:10*pi];
>> x = exp(-0.05*t).*sin(t);
>> y = exp(-0.05*t).*cos(t);
>> z = t;
>> plot3(x,y,z),xlabel(‘x’),ylabel(‘y’),zlabel(‘z’)
>> zlabel(‘z’),grid;
©Copyright 2007
MATLAB 83
ĐỒ HỌA TRONG KHÔNG GIAN 3 CHIỀU (tt)
 CÁC LỆNH VẼ BIÊN DẠNG (contour)
contour: Vẽ các đường đồng mức
clabel: Nhãn
©Copyright 2007
MATLAB 84
ĐỒ HỌA TRONG KHÔNG GIAN 3 CHIỀU (tt)
 CÁC LỆNH TẠO LƯỚI (grid)
Meshgrid(x,y)
Meshgrid(x,y,z)
Cylinder(r,u)
[X,Y,Z] = CYLINDER(R,N) forms the unit cylinder based on the
generator curve in the vector R. Vector R contains the radius at
equally spaced points along the unit height of the cylinder. The
cylinder has N points around the circumference. SURF(X,Y,Z)
displays the cylinder.
[X,Y,Z] = CYLINDER(R), and [X,Y,Z] = CYLINDER default to N
= 20 and R = [1 1].
Sphere(n)
SPHERE Generate sphere.
[X,Y,Z] = SPHERE(N) generates three (N+1)-by-(N+1) matrices
so that SURF(X,Y,Z) produces a unit sphere.
[X,Y,Z] = SPHERE uses N = 20.
©Copyright 2007
MATLAB 85
ĐỒ HỌA TRONG KHÔNG GIAN 3 CHIỀU (tt)
 Tạo một lưới các điểm trong mặt phẳng xy
 Cú pháp:
[X,Y] = meshgrid(x,y)
Trong đó:
x = [xmin,∆x,xmax]
y = [ymin,∆y,ymax]
 Chức năng:
− Hàm meshgrid sẽ phát sinh các tọa độ của một lưới chữ
nhật có m.n điểm với một góc (xmin,ymin) còn góc kia là (xmax,ymax).
− Ma trận X có kích thước m.n gồm n cột giống nhau là vector
x’ và ma trận Y cũng có kích thước m.n hàng giống nhau là
vector y.
− Mỗi ô lưới sẽ có kích thước ∆x, và ∆y.
©Copyright 2007
MATLAB 86
ĐỒ HỌA TRONG KHÔNG GIAN 3 CHIỀU (tt)
Các lệnh vẽ tương tự
meshc(X,Y,Z)
meshz(X,Y,Z)
MESHZ(...) or MESHC(…) is the same as MESH(...) except
that a "curtain" or reference plane is drawn beneath.
surf(X,Y,Z)
SURF('v6',...) creates a surface object instead of a surface
plot object for compatibility with MATLAB and earlier.
surfc(X,Y,Z) vẽ mặt giống như thực hiện mesh hay meshc
nhưng mặt được tô bóng (shaded surface).
surfnorm
[Nx,Ny,Nz] = SURFNORM(Z) returns the surface normal
components for the surface Z.
©Copyright 2007
MATLAB 87
ĐỒ HỌA TRONG KHÔNG GIAN 3 CHIỀU (tt)
 CÁC LỆNH VẼ MẶT LƯỚI TRONG 3D
 Mesh
− MESH returns a handle to a surface plot object.
 Meshz: Vẽ bề mặt với các đường thẳng đứng viền quanh
đồ thị.
 Waterfall: Vẽ bề mặt với các đường lưới theo một hướng
như thác đổ.
 WATERFALL(...) is the same as MESH(...) except that
the column lines of the mesh are not drawn - thus
producing a "waterfall" plot. For column-oriented data
analysis, use WATERFALL(Z') or WATERFALL(X',Y',Z').
©Copyright 2007
MATLAB 88
ĐỒ HỌA TRONG KHÔNG GIAN 3 CHIỀU (tt)
 Thí dụ: Vẽ mặt
 Thực hiện:
>> x = [-2:.1:2];
>> y = [-2:.1:2];
>> [X,Y] = meshgrid(x,y); % Tạo lưới các điểm trong mặt
phẳng xy
>> Z = X.* exp(-X.^2-Y.^2);
>> mesh(X,Y,Z) % Vẽ các đường đồng mức dưới mặt.
>> xlabel(‘Truc x’), ylabel(‘Truc y’),zlabel(‘Truc z’)
22
. yx
exz −−
=
©Copyright 2007
MATLAB 89
Thí dụ lệnh MESHZ
>> meshz(X,Y,Z)
©Copyright 2007
MATLAB 90
Thí dụ lệnh MESHC
>> Meshc(X,Y,Z)
©Copyright 2007
MATLAB 91
Thí dụ lệnh WATERFALL
>> waterfall(X,Y,Z)
©Copyright 2007
MATLAB 92
Thí dụ lệnh SURF
>> surf(X,Y,Z)
©Copyright 2007
MATLAB 93
Thí dụ lệnh SURFC
>> surfc(X,Y,Z)
©Copyright 2007
MATLAB 94
Thí dụ lệnh SURFNORM
>> surfnorm(X,Y,Z)
©Copyright 2007
MATLAB 95
Thí dụ lệnh CONTOUR
>> contour(X,Y,Z)
©Copyright 2007
MATLAB 96
ĐỒ HỌA TRONG KHÔNG GIAN 3 CHIỀU (tt)
 CÁC LỆNH QUAN SÁT
 View
 Rot90
 Slice
 Colormap
 colorbar
©Copyright 2007
MATLAB 97
ĐỒ HỌA TRONG KHÔNG GIAN 3 CHIỀU (tt)
 Lệnh view
view([α,β])
Trong đó:
α: Là góc phương vị tính bằng độ ngược chiều kim đồng hồ
từ phía trên của trục ngang (mặc định α = -37.5o
)
β: Góc nhìn tính bằng độ xuống mặt phẳng xy (mặc định β =
30o
)
Thí dụ: view([0,90]) : Vẽ 2D là một trường hợp đặc biệt của
phép vẽ 3D.
- Hiển thị đồ thị 3D đã tạo ra dưới dạng 2D theo góc
phương vị và góc nhìn.
©Copyright 2007
MATLAB 98
ĐỒ HỌA TRONG KHÔNG GIAN 3 CHIỀU (tt)
>> view([0,90]) và >> view([30,30])
% Hiển thị hình đã vẽ trong lệnh surfc(X,Y,Z)
©Copyright 2007
MATLAB 99
ĐỒ HỌA TRONG KHÔNG GIAN 3 CHIỀU (tt)
 Lệnh rot90
ROT90 Rotate matrix 90 degrees.
ROT90(A) is the 90 degree counterclockwise rotation of
matrix A..
ROT90(A,K) is the K*90 degree rotation of A, K = +-1,+-
2,...
Example:
A = [1 2 3 B = rot90(A) = [ 3 6
4 5 6 ] 2 5
1 4 ]
©Copyright 2007
MATLAB 100
ĐỒ HỌA TRONG KHÔNG GIAN 3 CHIỀU (tt)
>>[x,y,z] = meshgrid(-2:.2:2,-2:.25:2,-:.16:2);
v = x .* exp(-x.^2 - y.^2 - z.^2);
slice(x,y,z,v,[-1.2 .8 2],2,[-2 -.2])
©Copyright 2007
MATLAB 101
ĐỒ HỌA TRONG KHÔNG GIAN 3 CHIỀU (tt)
Thí dụ về lệnh Colormap và colorbar
>> [x,y] = meshgrid(-2:.2:2);
>> z = x.^(-x.^2-y.^2);
>> [C,h] = contour(x,y,z);
>> Clabel(C,h); %Nhãn biểu đồ contour
>> Surf(peaks(30))
>> Colormap cool; %Chọn biểu đồ màu
>> Colorbar % Hiển thị thanh biểu đồ màu
©Copyright 2007
MATLAB 102
ĐỒ HỌA TRONG KHÔNG GIAN 3 CHIỀU (tt)
©Copyright 2007
MATLAB 103
ĐỒ HỌA TRONG KHÔNG GIAN 3 CHIỀU (tt)
 Các lệnh đồ họa khác trong đồ họa 3D
1. fill3: Tô đa giác 3 mặt trong không gian 3D.
Cú pháp:
fill3(x,y,z,c): Tô đa giác 3D được định nghĩa bởi 3 vector x, y, z với
màu tô được xác định bởi c.
fill3(x1,y1,z1,c1,x2,y2,z2,c2,…): Tô đa giác 3D xác định nhiều vùng
tô.
2. comet3(z)
3. comet3(x,y,z)
4. comet3(x,y,z,p)
5. comet3
Các lệnh vẽ đườn viền 3 chiều trong 3D
6. contour3(z): Vẽ đường viền 3D cho tới mức z
7. contour3(z,n): Vẽ đường n viền 3D
8. contour3(x,y,z): Tương tự như trên, nhưng ma trận x,y để giới hạn
trục x,y.
©Copyright 2007
MATLAB 104
ĐỒ HỌA TRONG KHÔNG GIAN 3 CHIỀU (tt)
 Lưu ý:
 MATLAB cho phép chuyển đồ thị qua word…
 Cách làm:
− Từ cửa sổ <Figure> <Edit> <Copy Figure>
Sau đó trở lại cửa sổ mà ta muốn chèn và
<Paste> nó vào một nơi ta mong muốn.
©Copyright 2007
MATLAB 105
M-FILE, or SCRIPT
 Việc nhập lệnh từ dấu nhắc (>>) thì nhanh và hiệu quả, nhưng
khi thực hiện một lúc nhiều lệnh hoặc muốn thay đổi giá trị của
một hoặc nhiều biến và lặp lại một số lệnh thì việc nhập lệnh ở
dấu nhắc sẽ kém hiệu quả.
 M-FILE tiện dụng cho việc giải bài toán lớn, MATLAB cung cấp
thủ tục để tạo hàm riêng cho người sử dụng với hình thức một
text file.
 Giải pháp:
− Tập hợp các lệnh vào một file với phần mở rộng là (*.m)
 Cụ thể:
− Để soạn thảo một M-File thì <New> <M-FILE>
− Để hiển thị những lệnh trong M-File khi chúng được thực
thi thì sử dụng lệnh echo on.
− Hiệu chỉnh M-FILE: <Open>
©Copyright 2007
MATLAB 106
M-FILE, or SCRIPT (tt)
MỘT SỐ LÊNH QUẢN LÝ TẬP TIN
 Cho phép liệt kê, xem, xóa, sửa, chuyển đổi
thư mục …
− d: Chuyển đổi thư mục
− Chdir/cd
− dir: liệt kê tất cả thư mục hiện hành (tương
tự lệnh IS)
− delete: Xóa tập tin M-FILE
− type: Hiển thị tập tin M-FILE trong cửa sổ
lệnh.
− what: Hiển thị tất cả M-FILE trong thư mục
hiện hành.
− which: Hiển thị thư mục …
©Copyright 2007
MATLAB 107
M-FILE, or SCRIPT (tt)
 CẤU TRÚC MỘT CHƯƠNG TRÌNH
1. function[các biến đầu ra] = filename(các đối số)
function filename(các đối số)
function[các biến đầu ra] = filename
2. % là lời chú thích của chương trình
3. global ten_bien1 ten_bien2 …
4. Chương trình (các câu lệnh)
©Copyright 2007
MATLAB 108
M-FILE, or SCRIPT (tt)
 CẤU TRÚC MỘT CHƯƠNG TRÌNH
Thí dụ:
Giải phương trình bậc hai: ax2
+ by + c = 0
a. Khi biết các hệ số
b. Nhập 3 hệ số ở cửa sổ lệnh
©Copyright 2007
MATLAB 109
M-FILE, or SCRIPT (tt)
a. Chương trình có tên ptb2_a.m
function x = ptb2(a,b,c)
% Giải phương trình bậc hai khi biết hệ số
p = [a b c];
roots(p);
x0 = -b/(2*a);
x = (x0 -10):.1:(x0+10);
y = a*x.2 + b*x + 10;
plot(x,y), title(‘Do thi bac hai’);
Trong cửa sổ lệnh:
>> x = ptb2(1,2,1)
x =
0 -1 -1
©Copyright 2007
MATLAB 110
M-FILE, or SCRIPT (tt)
b. Chương trình có tên ptb2_b.m
% chú thích
a = input(‘Nhập a = ‘);
b = input(‘Nhập b = ‘);
c = input(‘Nhập c = ‘);
p = [a b c ]; % Khởi tạo vecto hệ số
x = roots(p);
disp(‘Nghiệm của phương trình bậc 2:’)
disp(x)
x = (x0 -10):.1:(x0+10);
y = a*x.^2 + b*x + 10;
plot(x,y)
title(‘Do thi bac hai’);
©Copyright 2007
MATLAB 111
M-FILE, or SCRIPT (tt)
 Giải PTB2 bằng M-FILE
©Copyright 2007
MATLAB 112
M-FILE, or SCRIPT (tt)
>> ptb2
Nhap a = 1
Nhap b = -2
Nhap c = 1
Nghiem cua phuong trinh bac 2:
1
1
©Copyright 2007
MATLAB 113
M-FILE, or SCRIPT (tt)
SỬ DỤNG FILE SCRIPT
 Chúng ta có thể soạn một script file theo cấu
trúc đề nghị như sau:
a. Phần chú thích (comments section): Viết
các dòng chú thích cho chương trình.
 Dòng 1: Tên của chương trình và các từ
khóa mô tả chương trình (dòng này được
MATLAB gọi là dòng H1 và lệnh lookfor
của MATLAB sẽ tìm thông tin ở dòng H1
này khi có yêu cầu)
©Copyright 2007
MATLAB 114
M-FILE, or SCRIPT (tt)
 Dòng 2: Tên người viết chương trình, ngày viết.
 Định nghĩa các tên biến đầu vào và đầu ra. Có
thể thêm vào định nghĩa tên các biến trung
gian. Lưu ý là phải xác định rõ đơn vị đo lường.
Cho tất cả các biến đầu vào và đầu ra.
 Tên của từng hàm tự tạo được sử dụng trong
chương trình.
b. Phần đưa vào các giá trị đầu vào (input section)
c. Phần tính toán (calculation section)
d. Phần trình bày kết quả: Dùng một số hàm của
MATLAB để trình bày kết quả.
©Copyright 2007
MATLAB 115
M-FILE, or SCRIPT (tt)
Thí dụ:
 Soạn Script file tính diện tích hình tam giác
ABC, khi biết tọa độ ba điểm trong không gian
R3. Diện tích tam giác được tính bằng công
thức:
 Trong đó, ký hiệu (^) chỉ tích có hướng của hai
vectơ AB và AC.
ACABS ∧=
2
1
©Copyright 2007
MATLAB 116
M-FILE, or SCRIPT (tt)
Trong cửa sổ Editor/Debugger, ta soạn các dòng lệnh như sau:
©Copyright 2007
MATLAB 117
M-FILE, or SCRIPT (tt)
 Trong chương trình trên hàm cross(u,v) sẽ trả về một vectơ
là vectơ tích có hướng của 2 vectơ u và v.
Lưu ý: vectơ u (hoặc v) được xác định bởi các thành phần
số của nó.
Thí dụ:
u = [1,-2,4], v = [-4,2,0]
 Hàm norm(p) sẽ tính module của vectơ p. Lệnh clear xuất
hiện trong đầu chương trình sẽ xóa toàn bộ các biến mà
WORKSPACE đang quản lý và dành vùng nhớ để quản lý
các biến của chương trình.
 Dòng lệnh disp(S) sẽ hiện thị giá trị biến S ra cửa sổ lệnh-
command windows(so sánh với lệnh disp(‘text’), hiển thị
chuỗi ký tự).
©Copyright 2007
MATLAB 118
M-FILE, or SCRIPT (tt)
THỰC HIỆN
% File dt_tamgiac.m: Chương trình tính diện tích hình tam giác,
% Tên người lập trình
% Dữ liệu đầu vào: Tọa ba điểm A,B,C
% Dữ liệu đầu ra: Diện tích S của ∆ABC
% Biến trung gian p chỉ vectơ tích có hướng của hai vectơ AB x AC
clear
disp(‘CHUONG TRINH TINH DIEN TICH HINH TAM GIAC’)
disp(‘KHI BIET TOA DO BA DIEM’)
disp(‘=========================================’)
a = input(‘Tọa điểm A = ‘);
b = input(‘Tọa điểm B = ‘);
c = input(‘Tọa điểm C = ‘);
p = cross(b-a,c-a); % Tích có hướng của hai vectơ AB x AC
S = 0.5*norm(p); % Diện tích ∆ABC
disp(‘Dien tich tam giac ABC:’)
disp(S)
©Copyright 2007
MATLAB 119
M-FILE, or SCRIPT (tt)
 Khi chạy chương trình cho kết quả:
>> DT_Tamgiac
CT TINH DIEN TICH HINH TAM GIAC
KHI BIET TOA DO BA DIEM
==================================
Toa do diem A = [2,0,0]
Toa do diem B = [4,0,0]
Toa do diem C = [3,2,0]
Dien tich tam giac ABC:
2
©Copyright 2007
MATLAB 120
Toolbox Symbolic
 MATLAB dùng các biểu thức ở dạng biểu tượng (symbolic)
như các chuỗi kí tự để phân biệt với các biến hay phép
toán dạng số học (numberic)
 Xem Thí dụ dưới đây:
>> x = sym('x'); %Tao bien symbolic x
>> eq = 'x^2+2*x+a=0'; %Dinh nghia PT voi bien symbolic x
>> solve(eq) %Ham dung de giai PT tren
ans =
-1+(1-a)^(1/2)
-1-(1-a)^(1/2)
©Copyright 2007
MATLAB 121
Toolbox Symbolic
 Định nghĩa biểu thức symbolic
Biểu thức Trong MATLAB






=
dc
ba
M
dx
x
x
f
b
a
∫ −
=
1
3
n
x.2
1 ‘1/(2*x^n)’
M = sym(‘[a,b;c,d]’)
f = int(‘x^3/sqrt(1-x)’,’a’,’b’)
©Copyright 2007
MATLAB 122
Toolbox Symbolic
 Hàm symbolic cho phép tính toán với các biểu
thức, Thí dụ:
>>diff(‘cos(x)’) % Tính đạo hàm của cos(x)
ans =
-sin(x)
>>M=sym(‘[a,b;c,d]’)
ans =
[a b]
[c d]
©Copyright 2007
MATLAB 123
Toolbox Symbolic
 Ở đây, ‘cos(x)’ là một chuỗi, diff(‘cos(x)’) là một
biểu thức symbolic chứ không phải là một hàm số
học. Ở Thí dụ 2, M=sym(‘[a,b;c,d]’) là một biểu
thức symbolic.
 Sử dụng symbolic để xây dựng các hàm toán học
dạng symbolic.
 Khai báo biến (như đã trình bày các slide trước)
− sym(x)
− sym x
− syms x
©Copyright 2007
MATLAB 124
Toolbox Symbolic
 Các lệnh toán học sử dụng symbolic
 f và g là hai hàm symbolic
− f+g symadd(f,g)
− f-g symsub(f,g)
− f*g symmul(f,g)
− f/g symdiv(f,g)
− f^g sympow(f,g)
©Copyright 2007
MATLAB 125
Toolbox Symbolic
diff(f) Đạo hàm bậc nhất theo biến x
diff(f,’a’) Đạo hàm bậc nhất theo biến a
diff(f,’a’,n) Đạo hàm bậc n theo biến n
int(f) Tính tích phân theo biến x
int(f,’a’) Tính tích phân theo biến a
int(f,1,2) Tính tích phân theo biến x từ 1 đến 2.
int(f,’a’,1,2) Tính tích phân theo biến a từ 1 đến 2.
int(f,’n’,’m’) Tính tích phân theo biến x từ n đến m
solve(f) Giải phương trình f = 0
dsolve(f) Giải phương trình vi phân
dsolve(f,’a’
)
Giải PT vi phân với ĐK ban đầu
ezplot(f) Vẽ đồ thị hàm mà không cần giá trị của biến.
©Copyright 2007
MATLAB 126
Toolbox Symbolic
F=fourier(f) Biến đổi Fourier f(x)->F(w)
f=ifourier(F) Biến đổi Fourier ngược F(w)->f(x)
F=fourier(f,v) Biến đổi Fourier f(x)->F(v)
F=fourier(f,t,v) Biến đổi Fourier ngược f(t)->F(v)
F=ztrans(f) Biến đổi z f(n)->F(z)
f=ztrans(F) Biến đổi z ngược F(z)->f(n)
F=ztrans(f,w) Biến đổi z f(n)->F(w)
F=ztrans(F,k,w) Biến đổi z ngược f(k)->F(w)
F=laplace(f) Biến đổi Laplace f(t)->F(s)
f=laplace(F) Biến đổi Laplace F(s)->f(t)
©Copyright 2007
MATLAB 127
SIMULINK
 Simulink 5.0 (Simulation and Link - R13) được MatWorks
giới thiệu vào tháng 6 năm 2003. Nó cho phép phân tích,
mô hình hóa và mô phỏng các hệ thống động tuyến tính và
phi tuyến, liên tục và rời rạc một cách trực quan trong môi
trường giao tiếp đồ họa, bằng các thao tác chuột đơn giản.
Có thể nói, không tận dụng được Simulink là một thiệt thòi
lớn cho người làm công tác mô phỏng!
 Khởi động Simulink bằng một trong các cách sau:
 nhập:
>>simulink
 hoặc nhấp chuột vào trên menubar của Matlab
©Copyright 2007
MATLAB 128
SIMULINK
 Thư viện simulink hiện ra như hình sau:
 Trước tiên, sinh viên hãy nhấp chuột vào các thanh
cuộn của thư viện để có cái nhìn thân thiện về simulink.
 Từ đây, để có thể tạo mô hình bằng simulink, hãy:
Nhấp chuột vào biểu tượng
của thư viện simulink
Chọn: File – New – Model trong
Menu của thư viện Simulink
Chọn: File – New – Model trong
cửa sổ lệnh của Matlab
©Copyright 2007
MATLAB 129
SIMULINK
 Môi trường soạn thảo của Simulink
 Cửa sổ này cho phép ta ‘nhấp - kéo - thả’ vào
từng khối chức năng trong thư viện simulink. Thí
dụ, đặt vào đây khối ‘Sine Wave’ trong thư viện
simulink như hình sau:
©Copyright 2007
MATLAB 130
SIMULINK
Lấy một khối từ thư viện
©Copyright 2007
MATLAB 131
MẢNG và MA TRẬN
 Mảng một chiều
 Mảng một chiều (vecto) là tập hợp các số được
sắp xếp có thứ tự.
 length(u): Tính số phần tử trong mảng một
chiều u.
 Muốn truy xuất phần tử thứ n trong mảng thì:
ten_mang(n);
 Các phần tử của mảng đựơc phân cách nhau
bởi dấu phẩy và được đặt trong đôi móc vuông
[ ] (kiểu dòng).
 Các phần tử trong mảng phân cách nhau dấu
chấm phẩy thì gọi là mảng kiểu cột.
©Copyright 2007
MATLAB 132
MẢNG và MA TRẬN
 Cách tạo mảng:
* Ten_mang = [m1, m2, m3, …] % Mảng kiểu dòng
* Ten_mang = [m1; m2; m3, …] % Mảng kiểu cột
* Ten_mang = [m1 m2 m3 …] % Vectơ dòng
* Ten_mang = [m1
m2
m3
…]
* Ten_mang = [a:∆:b] % Mảng kiểu cách đều.
 Thí dụ:
>> x = [0:2:9]
x =
0 2 4 6 8
©Copyright 2007
MATLAB 133
MẢNG và MA TRẬN
• x = linspace(x1,x2,n)
% Tạo một vectơ dòng có các phẩn tử cách
đều, với x1 là cận dưới, x2 là cận trên, và n là
số điểm của dãy (kể cả 2 điểm x1, x2). Nếu n bị
bỏ qua, giá trị mặc định của nó là 100.
Thí dụ:
>> z = linspace(2,8,7)
z = 2 3 4 5 6 7 8
©Copyright 2007
MATLAB 134
MẢNG và MA TRẬN
 x = logspace(a,b,n)
% Sẽ tạo ra 1 vectơ dòng có n phần tử cách
khoảng theo thang logarit, phần tử đầu là 10a và
phần tử cuối là 10b, các phần tử giữa có dạng
10x, trong đó x là 1 điểm cách đều giữa a và b.
Có (n-2) điểm như vậy. Nếu n bỏ đi trong câu lệnh
thì mặc định của nó là 50.
Thí dụ:
>> u = logspace(-1,1,4)
u =
0.1000 0.4642 2.1544 10.0000
©Copyright 2007
MATLAB 135
MẢNG và MA TRẬN
 Các hàm liên quan đến mảng một chiều
a. roots(Ten_mang)
Nghiệm của một đa thức Ten_mang là một đa
thức được mô tả là một mảng có các phần tử là
các hệ số đa thức, bắt đầu ở bậc cao nhất.
Mảng kiểu cột.
b. poly(r)
Trả về một mảng kiểu đòng với các phần tử là
các hệ số của đa thức có nghiệm trước là các
phần tử của mảng r (bài toán ngược)
©Copyright 2007
MATLAB 136
MẢNG và MA TRẬN
c. polyval(a,x)
Dùng để tính giá trị của một đa thức có các hệ số
chứa trong mảng a tại các điểm thuộc mảng x.
Kết quả là một mảng có kích thước bằng với mảng
x.
d. find(x)
Trả một mảng chứa các chỉ số của các phần tử
khác 0 trong mảng.
e. find(x<y)
Trả về một mảng chứa các chỉ số của các phần tử
trong mảng x (hay y) thỏa điều kiện x < y. x có kích
thước bằng y.
©Copyright 2007
MATLAB 137
MẢNG và MA TRẬN
f. Chuyển vectơ hàng sang vectơ cột:
Chuyển vị (transpose), dùng kí hiệu dấu nháy đơn
‘ bên phải vectơ (mảng một chiều) và ngược lại.
Thí dụ:
>> v = [3 5 9 7]’
v =
3
5
9
7
©Copyright 2007
MATLAB 138
MẢNG và MA TRẬN
g. Kết nối các vectơ:
Chúng ta có thể tạo vectơ mới bằng cách kết nối
các vectơ thành phần đã biết.
Thí dụ:
>> x = [2,5,6];
>> y = [7,8,1];
>> z = [x,y]
z = 2 5 6 7 8 1
©Copyright 2007
MATLAB 139
MẢNG và MA TRẬN
i. Truy xuất một phần tử từ một vectơ:
Chúng ta có thể truy xuất một phần tử vectơ hay trích ra một nhóm
các phần tử của vectơ theo một điều kiện nào đó (phát sinh ra
vectơ mới).
Thí dụ:
>> u = [0,2,4,6,8,10];
>> u(3) % truy xuất phần tử thứ 3 của vectơ u
ans =
4
>> u(2:5) %Truy xuất phần tử thứ 2 đến thứ 5 của vectơ u
ans =
2 4 6 8
>> u([1 3 5]) %Truy xuất phần tử thứ 1, thứ 3, thứ 5 của
vectơ u.
>> n = length(u) % Trả về số phần tử của vectơ u thuộc N.
n =
6
©Copyright 2007
MATLAB 140
MẢNG và MA TRẬN
 MẢNG 2 CHIỀU (MA TRẬN)
 Một mảng trong MATLAB còn có thể có nhiều dòng,
nhiều cột; một mảng 2 chiều như vậy được gọi là MA
TRẬN (matrix).
 Nếu một ma trận A có m dòng và n cột, ta nói kích thước
A là m.n. Đôi khi ma trận A còn được viết dưới dạng [aij],
trong đó i, j lần lượt là các chỉ số DÒNG và chỉ số CỘT
của phần tử aij.
 Hai ma trận A và B được gọi là BẰNG NHAU nếu chúng
có cùng kích thước và tất cả các phần tử tương ứng đều
bằng nhau (aij = bij, với mọi i, j)
 Các vectơ được MATLAB xem là các mảng 2 chiều đặc
biệt: Chúng có kích thước 1xn (vectơ dòng) hoặc mx1
(vectơ cột). MATLAB xếp vectơ và mà trận vào lớp
double array trong WORKSPACE.
©Copyright 2007
MATLAB 141
MẢNG và MA TRẬN
a. Cách tạo một ma trận trong MATLAB
 Các phần tử thuộc cùng một dòng được phân
cách nhau bởi dấu phẩy(,), còn các dòng thì
phân cách nhau bằng dấu chấm phẩy (;)
 Thí dụ:
>> A = [2,4,6;3,5,7]
A =
2 4 6
3 5 7
©Copyright 2007
MATLAB 142
MẢNG và MA TRẬN
b. Kết nối một vectơ vào 1 ma trận:
Nếu r = [-1, 0, 1] là một vectơ dòng có
cùng số cột với ma trận A thì lệnh B = [A:r]
sẽ nối vectơ dòng r vào ma trận A, để tạo
ra ma trận B có 3 dòng, 3 cột như sau:
B =
2 4 6
3 5 7
-1 0 1
©Copyright 2007
MATLAB 143
MẢNG và MA TRẬN
c. Ma trận chuyển vị (chuyển trí):
 Nếu A là một ma trận có kích thước m.n thì ma trận chuyển vị
(transpose) của A là một ma trận có kích thước n.m. Các cột
thứ 1, thứ 2, thứ 3… Trong AT chính là dòng thứ 1, 2, 3 trong
ma trận A.
 MATLAB dùng dấu nháy đơn đặt bên phải ma trận để tạo ma
trận chuyển vị.
Thí dụ:
>> A = [1 0;-4 2]
A =
-1 0
-4 2
>> AT=A’
AT =
1 -4
0 2
©Copyright 2007
MATLAB 144
MẢNG và MA TRẬN
d. Truy xuất một phần tử của ma trận (trích vectơ
dòng, cột, ma trận con)
 Khi tạo xong một ma trận A nào đó, phát hiện
phần tử dòng 2, cột 3 bị gõ sai và chúng ta
muốn sửa lại phần tử này là 6, ta chỉ cần gõ
lệnh A(2,3) = 6. Trong MATLAB A(2,3) là ký
hiệu chỉ phần tử dòng 2, cột 3 của ma trận.
 Với một ma trận cho trước, chúng ta có thể truy
xuất từng phần tử của ma trận, trích ra một
vectơ dòng hoặc một vectơ cột nào đó, hoặc
trích ra một ma trận con gồm nhiều dòng, nhiều
cột của ma trận A.
©Copyright 2007
MATLAB 145
MẢNG và MA TRẬN
 Thí dụ:
>> A = [1,2,3,4;6,7,8,9;0,5,10,15;-3,-4,-5,-6]
A =
1 2 3 4
6 7 8 9
0 5 10 15
-3 -4 -5 -6
>> A(2,3) % truy xuất phần tử dòng 2, cột 3.
ans =
8
>> A(:,2) %Trích vectơ cột thứ 2
ans =
2
7
5
-4
>> A(4,:) % Trích vectơ dòng thứ 4
ans =
-3 -4 -5 -6
©Copyright 2007
MATLAB 146
MẢNG và MA TRẬN
>> A(:,2:4) % Tạo một ma trận con gồm các cột 2,3,4 của A
ans =
2 3 4
7 8 9
5 10 15
-4 -5 -6
>> A(1:2,:) %Tạo 1 ma trận con gồm các dòng 1,2 của A
ans =
1 2 3 4
6 7 8 9
>> A([1 3], [2 4]) % Tạo một ma trận con gồm các phần
tử thuộc dòng 1,3 và cột 2,4.
©Copyright 2007
MATLAB 147
MẢNG và MA TRẬN
 Tóm tắt:
 A(k,:) : Véctơ dòng thứ k.
 A (:,l): Vectơ cột thứ l.
 A(k:m,:): Ma trận con có dòng thứ k, cột thứ m
 A([array1], [array2]): Vectơ dòng để ghi số dòng
nào, cột nào cần trích ra.
©Copyright 2007
MATLAB 148
MẢNG và MA TRẬN
 Mảng trống hoặc mảng không (empty or null
array)
 MATLAB dùng kí hiệu [ ] để chỉ 1 mảng trống
là mảng không có phần tử nào cả. Các hàng
hoặc các cột của một ma trận có thể được bỏ
đi, bằng cách gán chúng bằng với mảng trống.
 Thí dụ: A(2,:) = [ ], sẽ bỏ dòng thứ 2 của ma
trận A và như vậy sẽ làm thay đổi kích thước
của ma trận A ban đầu.
©Copyright 2007
MATLAB 149
MẢNG và MA TRẬN
Thí dụ:
>> A
A =
1 2 3 4
5 6 7 8
0 5 10 15
-3 -4 -5 -6
>> A(2,:) = [ ]; % Bỏ dòng thứ 2 của ma trận A
>> A
A =
1 2 3 4
0 5 10 15
-3 -4 -5 -6
©Copyright 2007
MATLAB 150
MẢNG và MA TRẬN
Thí dụ:
>> A
A =
1 2 3 4
0 5 10 15
-3 -4 -5 -6
>> A(:,4) = [ ]; % Bỏ tiếp cột thứ 4
>> A
A =
1 2 3
0 5 10
-3 -4 -5
©Copyright 2007
MATLAB 151
MẢNG và MA TRẬN
 Các ma trận đặc biệt
 M = eye(n): tạo ra ma trận đơn vị cấp n
 M = ones(m,n): Tạo ra ma trận có size = m.n,
có các phần tử đều bằng 1.
 M = zeros(m,n): Tạo ra ma trận có size = m.n,
có các phần tử đều bằng 0.
 M = zeros(n); M = ones(n): Tạo ra ma trận
vuông M cấp n có tất cả các phần tử đều bằng
o hoặc bằng 1.
©Copyright 2007
MATLAB 152
CÁC PHÉP TOÁN MA TRẬN
 Phép cộng trừ
 A+B
 A-B
% A và B là 2 ma trận có cùng kích thước, hoặc
1 trong hai là đại lượng vô hướng.
 Phép nhân
 A*B %Tích hai ma trận. Số cột của A bằng số
hàng của B.
 A.*B % Nhân từng phần tử của A với từng phần
tử của B tương ứng. A và B có cùng kích
thước.
©Copyright 2007
MATLAB 153
CÁC PHÉP TOÁN MA TRẬN
 Phép chia:
 AB % Chia trái ma trận.
 A.B % Chia trái mảng
 A/B % Chia phải ma trận
 A./B %Chia phải mảng
 Phép lũy thừa:
 A^k % Lũy thừa ma trận A bậc k. Lưu ý: Lỗi sẽ
phát sinh nếu cả A và k đều là ma trận.
 A.^B % Lũy thừa mảng. Là một ma trận mà các
số hạng là A(i,j)^B(i,j)
©Copyright 2007
MATLAB 154
CÁC PHÉP TOÁN MA TRẬN
 Ma trận chuyển vị:
 A’
 Ma trận nghịch đảo
 inv(a) % Tương đương kí hiệu A-1
 Định thức ma trận
 det(A) % A phải là ma trận vuông
 Phép quay ma trận
 Rot90(A,n) % Các phần tử của ma trận được quay đi một
góc 90o
theo ngược chiều kim đồng hồ. A là ma trận
vuông, n số lần quay.
 Phép đảo ma trận
 Fliplr(A) %đảo các phần tử của A từ trái sang phải.
 Flipud(A) %đảo các phần tử của A từ trên xuống dưới
©Copyright 2007
MATLAB 155
HỆ PHƯƠNG TRÌNH ĐẠI SỐ TUYẾN TÍNH
 Phương pháp nghịch đảo ma trận
 Inv(A)
 Invhilb(n):
 pinv(A): Tính giả nghịch đảo ma trận nxm với m ≠ n.
 Phương pháp khử Gauss
 rref([A f])
 Phương pháp khử Gauss-Jordan
 Phương pháp phân rã ma trận LU
 lu(A)
 Cú pháp: [L, U, P]=lu(A)
− trả về ma trận tam giác dưới L, tam giác trên U và ma
trận hoán đổi P (ma trận đơn vị mà các cột bị hoán
chuyển). Ta có, L*U = P*A => X = U(Lb)
©Copyright 2007
MATLAB 156
HỆ PHƯƠNG TRÌNH ĐẠI SỐ TUYẾN TÍNH
 Phương pháp phân rã ma trận LU
− lu(A)
− Cú pháp: [L, U, P]=lu(A)
 Trả về ma trận tam giác dưới L, tam giác
trên U và ma trận hoán đổi P (ma trận
đơn vị mà các cột bị hoán chuyển). Ta có,
L*U = P*A => X = U(Lb)
 Trả về ma trận tam giác trên U, còn ma
trận LP’=L*P. Ta có, LP*U = A => X = U 
(LPb)
©Copyright 2007
MATLAB 157
TẠO GIAO DIỆN
 Bài thí nghiệm này trang bị cho sinh viên một số
kiến thức cơ bản để xây dựng giao diện người
dùng trong môi trường Matlab, nhằm hoàn thiện
một chương trình ứng dụng nhất định.
 Cũng như các ngôn ngữ cấp cao khác, Matlab
hổ trợ nhiều công cụ chức năng cho phép lập
trình tạo giao diện sử dụng đẹp và nhanh chóng.
Thí dụ, các dạng nút ấn, cửa sổ soạn thảo, các
dạng menu, …
©Copyright 2007
MATLAB 158
TẠO GIAO DIỆN
Các công cụ hổ trợ giao diện
©Copyright 2007
MATLAB 159
TẠO GIAO DIỆN
 Để tạo GIAO DIỆN dùng công cụ GUIDE của MATLAB
>> guide
Hoặc File/Show GUI layout tool. Cửa sổ Guide Control Panel xuất
hiện. Từ cửa sổ này có thể truy xuất đến các cửa sổ khác.
Có thể chọn các mẫu giao
diện có sẵn hay bấm OK để
chọn GUI trống.
©Copyright 2007
MATLAB 160
TẠO GIAO DIỆN (tt)
 Cửa sổ biên soạn GUI hiện ra
Vùng bên trái chứa danh sách các thành
phần đối tượng, vùng có ô lưới là vùng
hiển thị, nơi đặt các component, bạn bấm
chuột trái vào các component muốn tạo,
sau đó đưa con chuột ra vùng layout nơi
muốn đặt component, bấm chuột trái dùng
kích thước component. Muốn thay đổi
kích chuột phải vào vùng layout, vào
menu chọn thuộc tính bấm chuột trái, cửa
sổ sau xuất hiện, vào BackGroundColor
chọn màu nền thích hợp.
Cửa sổ thuộc tính
©Copyright 2007
MATLAB 161
TẠO GIAO DIỆN (tt)
 Nếu muốn mở file.fig có sẵn, ta có thể chọn ngay từ cửa
sổ lệnh
>> guide ten_file.fig
Hay vào menu File rồi chọn Open. Hay Ctrl + O
©Copyright 2007
MATLAB 162
TẠO GIAO DIỆN (tt)
 Align Objects (căn lề các đối tượng)
 Tools/Align Objects…/
©Copyright 2007
MATLAB 163
TẠO GIAO DIỆN (tt)
 Bấm kép chuột component trong
vùng layout để soạn tính chất của
component, Thí dụ bấm kép vào
Push Buton sẽ hiện ra cửa sổ
Property Inspector hoặc cũng có
thể bấm chuột phải để hiện ra
Context Menu (hình bên), sau đó
bấm Property Inspector. Mỗi
component là mỗi Object được điều
khiển bởi uicontrol (User Interface
Control)
©Copyright 2007
MATLAB 164
TẠO GIAO DIỆN (tt)
 Các component mà GUI cho phép là:
 Axes: vẽ hệ trục
 Check box: là hộp kiểm tra cho phép đưa vào các chọn lựa khi
bấm chuột vào đó.
 Edit text: Là hộp văn bản đưa chuỗi kí tự vào đó.
 Frame: Khung bao một cửa sổ hình.
 List box: Gồm một bảng các mục để chọn lựa
 Pop-up menu: Menu sổ xuống trình bày một bảng các chọn lựa
khi bấm chuột vào.
 Push button: Tương tự Checkbox nhưng chỉ chọn được một,
 Radio button: (nút bật) giống push button nhưng có hiển thị
trạng thái thay đổi mỗi khi nhấn.
 Popup Menu: Tạo menu.
©Copyright 2007
MATLAB 165
TẠO GIAO DIỆN (tt)
 Một số component sẽ gây ra hành động khi tác
động vào nó bằng cách goi một hàm M mà người
dùng phải soạn thảo. Sau khi đã biên tập các
thuộc tính và gọi hàm, có thể cất figure và file áp
dụng M đi kèm bằng cách vào menu File-Save
hay File-Save as và đánh tên file.
 Muốn chạy chương trình gọi ten_file.m (hoặc
dùng các lệnh openfig, open, hgfile.fig), file này
sẽ khởi động file ten_file.fig và xuất hiện cửa sổ
hình ảnh ten_file.fig mà ta sẽ thao tác trên các
component đã soạn thảo.
©Copyright 2007
MATLAB 166
TẠO GIAO DIỆN (tt)
 Tool – GUI Options để chọn các option cho giao diện
Các chọn lựa cho GUI
©Copyright 2007
MATLAB 167
TẠO GIAO DIỆN (tt)
 Resize behavior có 3 lựa chọn:
 Non-resizable: không thay đổi kích thước cửa FIG (mặc định).
 Proportional: Người dùng có thể điều chỉnh kích thước cửa sổ
và các component trong đó sẽ tự điều chỉnh phù hợp
 Other: Dùng hàm ResizeFcn để điều chỉnh.
 Ô Command-Line accessibility có các lựa chọn:
 Off: Các lệnh đánh sau dâu >> không tác động đến cửa sổ FIG.
 On: Các dòng lệnh tác động đến cửa sổ FIG, GUI là current
figure
 Callback: GUI là current fugure đối với các lệnh callback
 Other: Phụ thuộc cửa sổ Property Inspector (thuộc tính
HandleVisibility và IntegerHandle)
©Copyright 2007
MATLAB 168
TẠO GIAO DIỆN (tt)
 XÂY DỰNG GIAO DIỆN
StartStart
Xác định công việcXác định công việc
Draw GUIDraw GUI
TEST DESIGNTEST DESIGN
Viết codeViết code
Test codeTest code
StopStop
©Copyright 2007
MATLAB 169
TẠO GIAO DIỆN (tt)
 Sau khi xác định được hình dáng của giao diện,
dùng chuột kéo các đối tượng cần sử dụng sang
figure, sắp xếp theo đúng ý tưởng thiết kế.
 Thay đổi các thuộc tính của đối tượng.
 Viết chương trình callback.
 Chuyển sang chế độ active để thử chương trình.
 Thí dụ 1: Tạo giao diện để giải và vẽ đồ thị
phương trình bậc 2. Giao diện gồm có 5 text, 5
edit, 2 push, 1check, 1 axes.
©Copyright 2007
MATLAB 170
TẠO GIAO DIỆN (tt)
 Bài tập:
 XÂY DỰNG GIAO DIỆN
EditA
EditB
EditC
EditX1
EditX2
Tag
a. Control b. Active
Giao diện ở chế độ thiết kế và thực thi
©Copyright 2007
MATLAB 171
TẠO GIAO DIỆN (tt)
 Thí dụ 2: xây dựng một giao diện đơn giản sau
©Copyright 2007
MATLAB 172
TẠO GIAO DIỆN (tt)
 Tạo cửa sổ chính figure – ‘Welcome to User Interface’s
Giude’ theo cách sau:
 Mở Matlab Editor
 Nhập nội dung sau:
% User Interface's Guide
% Matlab Experiments 2003
% TcAD, CIT, Cantho University
% ----------------------------------------------------------------------------------
% Initialize whole figure...
namefig = 'Welcome to User Interface''s Guide';
figpos = get(0,'DefaultFigurePosition'); % lay vi tri mac nhien
figpos(1)= figpos(1)-10; figpos(2)= figpos(2)-10;
figpos(3)= figpos(3)+10; figpos(4)= figpos(4)+10;
% Tao figure
fig=figure( ...
'Name', namefig, ...
'NumberTitle','off', ...
'Position',figpos);
©Copyright 2007
MATLAB 173
TẠO GIAO DIỆN (tt)
 Lưu thành file giaodien.m
>>giaodien <Enter> % thi hanh
>>set(fig) % xem thuộc
tính của figure trong cửa
sổ lệnh
 Quan sát kết quả trên hình
sau (Lưu ý các thuộc tính:
Name, Position)
©Copyright 2007
MATLAB 174
TẠO GIAO DIỆN (tt)
 Thêm vào figure một axes cho phép hiển thị đồ họa:
 Nhập tiếp nội dung sau vào file giaodien.m
% ----------------------------------------------------------------------------
% main axes
axs=axes('Position',[0.05 0.4 0.65 0.55]);
 Lưu và thi hành file này.
©Copyright 2007
MATLAB 175
TẠO GIAO DIỆN (tt)
 Hiển thị dòng ‘Matlab Experiments’ bên dưới axes:
Nhập tiếp nội dung sau vào file giaodien.m
% -------------------------------------------
% text
txtpos=[10 50 425 50];
txt=uicontrol(...
'Style','text',...
'BackgroundColor',[0.8 0.8 0.8],...
'ForegroundColor',[0.4 0.5 0.3],...
'String','Matlab Experiments',...
'Position',txtpos,...
'Fontname','Courier',...
'FontWeight','Bold',...
'FontSize',26);
©Copyright 2007
MATLAB 176
TẠO GIAO DIỆN (tt)
 Lưu và thi hành file này.
©Copyright 2007
MATLAB 177
TẠO GIAO DIỆN (tt)
 Tạo một frame có shadow bên phải figure để đặt các nút chức
năng. Nhập tiếp nội dung sau vào file giaodien.m
% ----------------------------------------------
% Console frames
p1=0.755; p2=0.05; p3=0.2; p4=0.90;
frm1pos = [p1 p2 p3 p4];
frm2pos = [p1-0.005 p2+0.005 p3 p4];
% shadow frame
frm1=uicontrol( ...
'Style','frame', ...
'Units','normalized', ...
'Position',frm1pos, ...
'ForegroundColor',[0.4 0.4 0.4],...
'BackgroundColor',[0.4 0.4 0.4]);
% main frame
frm2=uicontrol( ...
'Style','frame', ...
'Units','normalized', ...
'Position',frm2pos, ...
'ForegroundColor',[0.7 0.7 0.7],...
'BackgroundColor',[0.65 0.65 0.65]);
©Copyright 2007
MATLAB 178
TẠO GIAO DIỆN (tt)
 Lưu và thi hành file này.
©Copyright 2007
MATLAB 179
TẠO GIAO DIỆN (tt)
 Tạo nút ‘Close’ có chức năng đóng cửa sổ figure hiện hành:
 Nhập tiếp nội dung sau vào file giaodien.m
% ------------------------------------------------------------
% Close button
closeHndl=uicontrol(...
'Style','pushbutton', ...
'Units','normalized', ...
'Position',[p1+0.01 p2+0.05 p3-0.025 0.05], ...
'String','Close', ...
'Foregroundcolor','b',...
'Fontsize',9,...
'Callback','close');
 Lưu và thi hành file này.
©Copyright 2007
MATLAB 180
TẠO GIAO DIỆN (tt)
 Vấn đề quan trọng nhất đối với một nút chức
năng là thi hành công việc tương ứng khi
người sử dụng thao tác. Thuộc tính ‘CallBack’
cho phép: thi hành một lệnh của Matlab dưới
dạng chuỗi (bao gồm lệnh gọi hàm, script file,
biểu thức toán, …). Sinh viên thử thay lệnh
close bằng một lệnh khác, chẳng hạn demos
và quan sát đáp ứng.
 Tạo nút Sphere để vẽ một hình cầu 3D:
 Nhập tiếp nội dung sau vào file giaodien.m
©Copyright 2007
MATLAB 181
TẠO GIAO DIỆN (tt)
©Copyright 2007
MATLAB 182
TẠO GIAO DIỆN (tt)
 Lưu và thi hành file này.
©Copyright 2007
MATLAB 183
TẠO GIAO DIỆN (tt)
 Tạo nút Picture để hiển thị ảnh màu:
 Nhập tiếp nội dung sau vào file giaodien.m
% --------------------------------------------------------------
% Picture button
pic=uicontrol( ...
'Style','pushbutton', ...
'Units','normalized', ...
'Position',[p1+0.01 p4-0.125 p3-0.025 0.05], ...
'String','Picture', ...
'Foregroundcolor','b',...
'Fontsize',9,...
'Callback',['imshow(imread(''flowers.tif''))']);
©Copyright 2007
MATLAB 184
TẠO GIAO DIỆN (tt)
 Lưu và thi hành file này.
©Copyright 2007
MATLAB 185
TẠO GIAO DIỆN (tt)
 Sinh viên lưu ý cách biểu diễn nhiều lệnh ở dạng
chuỗi cho ‘CallBack’. Trong trường hợp có quá
nhiều lệnh phục vụ chức năng này, ta nên đưa
chúng vào một script file hoặc một hàm khác.
Ngoài ra, nếu ta tạo giao diện dưới dạng một hàm
(function) thì thuộc tính ‘CallBack’ cho phép gọi
một hàm con được viết ngay trong file này.
©Copyright 2007
MATLAB 186
TẠO GIAO DIỆN (tt)
 Sinh viên hãy tạo thêm nút ‘About’ sao cho khi người sử
dụng ấn nút sẽ mở cửa sổ mới nằm ngay giữa màn hình
©Copyright 2007
MATLAB 187
BÀI TẬP 1
 Cho hai ma trận:
1 2 1 0
A = ; B =
3 4 0 1
Dùng MATLAB để tính các biểu thức sau:
C = A + B; D = A – B; E = A*B; F = B*A; G = A.*B;
H = B.*A; I = AB; J = A.B; K = A/B; L = A./B;
M = A.^B; N = A^2,0; O = 2,0.^A
©Copyright 2007
MATLAB 188
BÀI TẬP 2
 Cho vectơ hàng A = [4 5 6] và B = [1 2 3]
 Dùng MATLAB để tính các biểu thức sau:
C = A+B; D = A – B; E = A*B; F = B*A;
 Cho ma trận A = [4 5 6;2 0 5;1 3 4 ]
và B = [1 0 0]
Dùng MATLAB tính các biểu thức sau:
C =3*A; D = A*3; E = A.*3; F = 3.^A;
G = A/5; H = A./5; I = A5; J = A.5
©Copyright 2007
MATLAB 189
BÀI TẬP
3. Viết chương trình giải phương trình bậc n và vẽ đồ thị của
hàm theo 2 phương pháp nhập biến: nhập khi gọi hàm và
nhập bằng câu lệnh input. So sanh ưu nhược điểm khi
dùng hai phương pháp này.
4. Viết chương trình cho phép chọn kiểu vẽ 2D (plot), 3D
(mesh) để vẽ đồ thị của hàm một biến và hai biến bất kỳ.
Người sử dụng sẽ phải cung cấp kiểu vẽ, hàm số và
khoảng giá trị của biến cần vẽ. Nếu kiểu vẽ là 2D và hàm
hai biến, yêu cầu nhập lai cho đúng.
5. Viết chương trình giải phương trình hoặc hệ phương trình
bằng biến symbolic. Người sử dụng sẽ chọn lựa giải
phương trình hoặc giải hệ phương trình. Nếu giải hệ phải
cung cấp số phương trình.
©Copyright 2007
MATLAB 190
BÀI TẬP
6. Viết chương trình tìm đạo hàm và tích phân của
một hàm và vẽ đồ thị của hàm, vi phân, tích phân
của hàm trên cùng một đồ thị. Người sử dụng có
thể chọn biến của hàm. Người sử dụng có thể
nhập khoảng giá trị biến cần vẽ hoặc không.
7. Viết chương trình giải phương trình vi phân.
8. Làm lại bài 2 với biến symbolic
©Copyright 2007
MATLAB 191
BÀI TẬP (tt)
9. Tạo giao diện như hình vẽ. Nhập các thông số a, b, c , d.
Nhấn ‘Vẽ’, vẽ đồ thị. Nhấn ‘Giải nghiệm’, thì xuất nghiệm
ở x1, x2, x3. Khi chọn ‘PTB2’ thì các ô d và x3 ở chế độ
enable off.
©Copyright 2007
MATLAB 192
BÀI TẬP (tt)
10. Tạo giao diện như ở hình dưới. Người sử dụng nhập hàm
cần vẽ vào ô edit, sau đó chọn lực kiểu vẽ, colormap.

Weitere ähnliche Inhalte

Was ist angesagt?

175 thuc-hanh-matlab-[dh-khoa-hoc-tu-nhien-hcm]
175 thuc-hanh-matlab-[dh-khoa-hoc-tu-nhien-hcm]175 thuc-hanh-matlab-[dh-khoa-hoc-tu-nhien-hcm]
175 thuc-hanh-matlab-[dh-khoa-hoc-tu-nhien-hcm]Vinh Phan
 
Nhom lenh co ban
Nhom lenh co banNhom lenh co ban
Nhom lenh co banVũ Tích
 
Matlab cho sv_tbd-dt_8-2007
Matlab cho sv_tbd-dt_8-2007Matlab cho sv_tbd-dt_8-2007
Matlab cho sv_tbd-dt_8-2007Xuantham Nguyen
 
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
 
Tính toán khoa học - Chương 1: Nhập môn Matlab
Tính toán khoa học - Chương 1: Nhập môn MatlabTính toán khoa học - Chương 1: Nhập môn Matlab
Tính toán khoa học - Chương 1: Nhập môn MatlabChien Dang
 
Huong danmatlab simulink
Huong danmatlab simulinkHuong danmatlab simulink
Huong danmatlab simulinkAnh Vu
 
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
 
Lttt matlab chuong 1
Lttt matlab chuong 1Lttt matlab chuong 1
Lttt matlab chuong 1Hoa Cỏ May
 
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
 
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
 
Lap trinh matlab_co_ban_1731
Lap trinh matlab_co_ban_1731Lap trinh matlab_co_ban_1731
Lap trinh matlab_co_ban_1731Vu Tuan
 
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
 
Lttt matlab chuong 3
Lttt matlab chuong 3Lttt matlab chuong 3
Lttt matlab chuong 3Hoa Cỏ May
 
Images compression using huffman algorithm matlab
Images compression using huffman algorithm matlabImages compression using huffman algorithm matlab
Images compression using huffman algorithm matlabTan Hoang Luu
 
Lttt matlab chuong 5
Lttt matlab chuong 5Lttt matlab chuong 5
Lttt matlab chuong 5Hoa Cỏ May
 
Các lệnh-cơ-bản-của-giải-tích-1
Các lệnh-cơ-bản-của-giải-tích-1Các lệnh-cơ-bản-của-giải-tích-1
Các lệnh-cơ-bản-của-giải-tích-1thaicuia
 
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
 
B%c3%a1o%20c%c3%a1o%20gi%e1%ba%a3i%20t%c3%a dch%202
B%c3%a1o%20c%c3%a1o%20gi%e1%ba%a3i%20t%c3%a dch%202B%c3%a1o%20c%c3%a1o%20gi%e1%ba%a3i%20t%c3%a dch%202
B%c3%a1o%20c%c3%a1o%20gi%e1%ba%a3i%20t%c3%a dch%202Tran Anh
 

Was ist angesagt? (19)

175 thuc-hanh-matlab-[dh-khoa-hoc-tu-nhien-hcm]
175 thuc-hanh-matlab-[dh-khoa-hoc-tu-nhien-hcm]175 thuc-hanh-matlab-[dh-khoa-hoc-tu-nhien-hcm]
175 thuc-hanh-matlab-[dh-khoa-hoc-tu-nhien-hcm]
 
Nhom lenh co ban
Nhom lenh co banNhom lenh co ban
Nhom lenh co ban
 
Matlab cho sv_tbd-dt_8-2007
Matlab cho sv_tbd-dt_8-2007Matlab cho sv_tbd-dt_8-2007
Matlab cho sv_tbd-dt_8-2007
 
2 matlab ly-thuyet_laptrinh_hamtoanhoc_
2 matlab ly-thuyet_laptrinh_hamtoanhoc_2 matlab ly-thuyet_laptrinh_hamtoanhoc_
2 matlab ly-thuyet_laptrinh_hamtoanhoc_
 
Tính toán khoa học - Chương 1: Nhập môn Matlab
Tính toán khoa học - Chương 1: Nhập môn MatlabTính toán khoa học - Chương 1: Nhập môn Matlab
Tính toán khoa học - Chương 1: Nhập môn Matlab
 
Huong danmatlab simulink
Huong danmatlab simulinkHuong danmatlab simulink
Huong danmatlab simulink
 
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
 
Lttt matlab chuong 1
Lttt matlab chuong 1Lttt matlab chuong 1
Lttt matlab chuong 1
 
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
 
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
 
Lap trinh matlab_co_ban_1731
Lap trinh matlab_co_ban_1731Lap trinh matlab_co_ban_1731
Lap trinh matlab_co_ban_1731
 
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
 
Lttt matlab chuong 3
Lttt matlab chuong 3Lttt matlab chuong 3
Lttt matlab chuong 3
 
Images compression using huffman algorithm matlab
Images compression using huffman algorithm matlabImages compression using huffman algorithm matlab
Images compression using huffman algorithm matlab
 
Lttt matlab chuong 5
Lttt matlab chuong 5Lttt matlab chuong 5
Lttt matlab chuong 5
 
Các lệnh-cơ-bản-của-giải-tích-1
Các lệnh-cơ-bản-của-giải-tích-1Các lệnh-cơ-bản-của-giải-tích-1
Các lệnh-cơ-bản-của-giải-tích-1
 
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
 
B%c3%a1o%20c%c3%a1o%20gi%e1%ba%a3i%20t%c3%a dch%202
B%c3%a1o%20c%c3%a1o%20gi%e1%ba%a3i%20t%c3%a dch%202B%c3%a1o%20c%c3%a1o%20gi%e1%ba%a3i%20t%c3%a dch%202
B%c3%a1o%20c%c3%a1o%20gi%e1%ba%a3i%20t%c3%a dch%202
 
Dieukhientuyentin hmoi
Dieukhientuyentin hmoiDieukhientuyentin hmoi
Dieukhientuyentin hmoi
 

Ähnlich wie Tailieu.vncty.com 06 matlab-osadq3_j2qu_20130412090644_577

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
 
Phan2 chuong5 ctrinhcon
Phan2 chuong5 ctrinhconPhan2 chuong5 ctrinhcon
Phan2 chuong5 ctrinhconLy hai
 
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
 
Lap trinh c_tu_co_ban_den_nang_cao
Lap trinh c_tu_co_ban_den_nang_caoLap trinh c_tu_co_ban_den_nang_cao
Lap trinh c_tu_co_ban_den_nang_caoHuy Nguyễn
 
Lap trinh c_tu_co_ban_den_nang_cao
Lap trinh c_tu_co_ban_den_nang_caoLap trinh c_tu_co_ban_den_nang_cao
Lap trinh c_tu_co_ban_den_nang_caoBác Luân
 
Nmlt c15 ham_nangcao_phan1_in
Nmlt c15 ham_nangcao_phan1_inNmlt c15 ham_nangcao_phan1_in
Nmlt c15 ham_nangcao_phan1_inHuy Nguyễn
 
Mo phong bang Matlab-Simulinhk_P1.ppt
Mo phong bang Matlab-Simulinhk_P1.pptMo phong bang Matlab-Simulinhk_P1.ppt
Mo phong bang Matlab-Simulinhk_P1.pptHaTrungKien2
 
Lua introduction Gioi thieu ve Lua
Lua introduction Gioi thieu ve LuaLua introduction Gioi thieu ve Lua
Lua introduction Gioi thieu ve LuaDa Mi
 
Giáo trình vb.net
Giáo trình vb.netGiáo trình vb.net
Giáo trình vb.netHung Pham
 
Hàm và Chuỗi
Hàm và ChuỗiHàm và Chuỗi
Hàm và Chuỗipnanhvn
 
Nhập môn lập trình - Vương Bá Thịnh
Nhập môn lập trình - Vương Bá ThịnhNhập môn lập trình - Vương Bá Thịnh
Nhập môn lập trình - Vương Bá Thịnhsilverclaw
 

Ähnlich wie Tailieu.vncty.com 06 matlab-osadq3_j2qu_20130412090644_577 (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
 
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
 
matlab co ban
matlab co banmatlab co ban
matlab co ban
 
Chuong1 c
Chuong1 c Chuong1 c
Chuong1 c
 
Phan2 chuong5 ctrinhcon
Phan2 chuong5 ctrinhconPhan2 chuong5 ctrinhcon
Phan2 chuong5 ctrinhcon
 
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
 
Chuong1
Chuong1Chuong1
Chuong1
 
Lap trinh c_tu_co_ban_den_nang_cao
Lap trinh c_tu_co_ban_den_nang_caoLap trinh c_tu_co_ban_den_nang_cao
Lap trinh c_tu_co_ban_den_nang_cao
 
Lap trinh c_tu_co_ban_den_nang_cao
Lap trinh c_tu_co_ban_den_nang_caoLap trinh c_tu_co_ban_den_nang_cao
Lap trinh c_tu_co_ban_den_nang_cao
 
Nmlt c15 ham_nangcao_phan1_in
Nmlt c15 ham_nangcao_phan1_inNmlt c15 ham_nangcao_phan1_in
Nmlt c15 ham_nangcao_phan1_in
 
Mo phong bang Matlab-Simulinhk_P1.ppt
Mo phong bang Matlab-Simulinhk_P1.pptMo phong bang Matlab-Simulinhk_P1.ppt
Mo phong bang Matlab-Simulinhk_P1.ppt
 
Lua introduction Gioi thieu ve Lua
Lua introduction Gioi thieu ve LuaLua introduction Gioi thieu ve Lua
Lua introduction Gioi thieu ve Lua
 
Giáo trình vb.net
Giáo trình vb.netGiáo trình vb.net
Giáo trình vb.net
 
Hàm và Chuỗi
Hàm và ChuỗiHàm và Chuỗi
Hàm và Chuỗi
 
Chuong 01
Chuong 01Chuong 01
Chuong 01
 
Chuong 01 mo dau
Chuong 01 mo dauChuong 01 mo dau
Chuong 01 mo dau
 
Nmlt c06 ham_in
Nmlt c06 ham_inNmlt c06 ham_in
Nmlt c06 ham_in
 
Nhập môn lập trình - Vương Bá Thịnh
Nhập môn lập trình - Vương Bá ThịnhNhập môn lập trình - Vương Bá Thịnh
Nhập môn lập trình - Vương Bá Thịnh
 
Chapter03 function
Chapter03 functionChapter03 function
Chapter03 function
 

Mehr von Trần Đức Anh

Tailieu.vncty.com nst gioi-tinh_va_di_truyen_lien_ket_gioi_tinh_747
Tailieu.vncty.com   nst gioi-tinh_va_di_truyen_lien_ket_gioi_tinh_747Tailieu.vncty.com   nst gioi-tinh_va_di_truyen_lien_ket_gioi_tinh_747
Tailieu.vncty.com nst gioi-tinh_va_di_truyen_lien_ket_gioi_tinh_747Trần Đức Anh
 
Tailieu.vncty.com nhom 6-de_tai_flo_9602
Tailieu.vncty.com   nhom 6-de_tai_flo_9602Tailieu.vncty.com   nhom 6-de_tai_flo_9602
Tailieu.vncty.com nhom 6-de_tai_flo_9602Trần Đức Anh
 
Tailieu.vncty.com lai phan-tu_2413
Tailieu.vncty.com   lai phan-tu_2413Tailieu.vncty.com   lai phan-tu_2413
Tailieu.vncty.com lai phan-tu_2413Trần Đức Anh
 
Tailieu.vncty.com duong hoa-hoc_3666
Tailieu.vncty.com   duong hoa-hoc_3666Tailieu.vncty.com   duong hoa-hoc_3666
Tailieu.vncty.com duong hoa-hoc_3666Trần Đức Anh
 
Tailieu.vncty.com do an-nhan_giong_in_vi_tro_cay_co_ngot_stevia_4562
Tailieu.vncty.com   do an-nhan_giong_in_vi_tro_cay_co_ngot_stevia_4562Tailieu.vncty.com   do an-nhan_giong_in_vi_tro_cay_co_ngot_stevia_4562
Tailieu.vncty.com do an-nhan_giong_in_vi_tro_cay_co_ngot_stevia_4562Trần Đức Anh
 
Tailieu.vncty.com tieu luanc4v-1324
Tailieu.vncty.com   tieu luanc4v-1324Tailieu.vncty.com   tieu luanc4v-1324
Tailieu.vncty.com tieu luanc4v-1324Trần Đức Anh
 
Tailieu.vncty.com do an-cong_nghe_san_xuat_sua_tiet_trung_9366
Tailieu.vncty.com   do an-cong_nghe_san_xuat_sua_tiet_trung_9366Tailieu.vncty.com   do an-cong_nghe_san_xuat_sua_tiet_trung_9366
Tailieu.vncty.com do an-cong_nghe_san_xuat_sua_tiet_trung_9366Trần Đức Anh
 

Mehr von Trần Đức Anh (20)

Tailieu.vncty.com 5275 1261
Tailieu.vncty.com   5275 1261Tailieu.vncty.com   5275 1261
Tailieu.vncty.com 5275 1261
 
Tailieu.vncty.com 5249 5591
Tailieu.vncty.com   5249 5591Tailieu.vncty.com   5249 5591
Tailieu.vncty.com 5249 5591
 
Tailieu.vncty.com 5219 0449
Tailieu.vncty.com   5219 0449Tailieu.vncty.com   5219 0449
Tailieu.vncty.com 5219 0449
 
Tailieu.vncty.com 5208 2542
Tailieu.vncty.com   5208 2542Tailieu.vncty.com   5208 2542
Tailieu.vncty.com 5208 2542
 
Tailieu.vncty.com 5145 0887
Tailieu.vncty.com   5145 0887Tailieu.vncty.com   5145 0887
Tailieu.vncty.com 5145 0887
 
Tailieu.vncty.com 5142 5647
Tailieu.vncty.com   5142 5647Tailieu.vncty.com   5142 5647
Tailieu.vncty.com 5142 5647
 
Tailieu.vncty.com 5138 529
Tailieu.vncty.com   5138 529Tailieu.vncty.com   5138 529
Tailieu.vncty.com 5138 529
 
Tailieu.vncty.com 5125 4608
Tailieu.vncty.com   5125 4608Tailieu.vncty.com   5125 4608
Tailieu.vncty.com 5125 4608
 
Tailieu.vncty.com 5117 1019
Tailieu.vncty.com   5117 1019Tailieu.vncty.com   5117 1019
Tailieu.vncty.com 5117 1019
 
Tailieu.vncty.com 5106 4775
Tailieu.vncty.com   5106 4775Tailieu.vncty.com   5106 4775
Tailieu.vncty.com 5106 4775
 
Tailieu.vncty.com 5089 2417
Tailieu.vncty.com   5089 2417Tailieu.vncty.com   5089 2417
Tailieu.vncty.com 5089 2417
 
Tailieu.vncty.com 5088 8018
Tailieu.vncty.com   5088 8018Tailieu.vncty.com   5088 8018
Tailieu.vncty.com 5088 8018
 
Tailieu.vncty.com 5067 1967
Tailieu.vncty.com   5067 1967Tailieu.vncty.com   5067 1967
Tailieu.vncty.com 5067 1967
 
Tailieu.vncty.com nst gioi-tinh_va_di_truyen_lien_ket_gioi_tinh_747
Tailieu.vncty.com   nst gioi-tinh_va_di_truyen_lien_ket_gioi_tinh_747Tailieu.vncty.com   nst gioi-tinh_va_di_truyen_lien_ket_gioi_tinh_747
Tailieu.vncty.com nst gioi-tinh_va_di_truyen_lien_ket_gioi_tinh_747
 
Tailieu.vncty.com nhom 6-de_tai_flo_9602
Tailieu.vncty.com   nhom 6-de_tai_flo_9602Tailieu.vncty.com   nhom 6-de_tai_flo_9602
Tailieu.vncty.com nhom 6-de_tai_flo_9602
 
Tailieu.vncty.com lai phan-tu_2413
Tailieu.vncty.com   lai phan-tu_2413Tailieu.vncty.com   lai phan-tu_2413
Tailieu.vncty.com lai phan-tu_2413
 
Tailieu.vncty.com duong hoa-hoc_3666
Tailieu.vncty.com   duong hoa-hoc_3666Tailieu.vncty.com   duong hoa-hoc_3666
Tailieu.vncty.com duong hoa-hoc_3666
 
Tailieu.vncty.com do an-nhan_giong_in_vi_tro_cay_co_ngot_stevia_4562
Tailieu.vncty.com   do an-nhan_giong_in_vi_tro_cay_co_ngot_stevia_4562Tailieu.vncty.com   do an-nhan_giong_in_vi_tro_cay_co_ngot_stevia_4562
Tailieu.vncty.com do an-nhan_giong_in_vi_tro_cay_co_ngot_stevia_4562
 
Tailieu.vncty.com tieu luanc4v-1324
Tailieu.vncty.com   tieu luanc4v-1324Tailieu.vncty.com   tieu luanc4v-1324
Tailieu.vncty.com tieu luanc4v-1324
 
Tailieu.vncty.com do an-cong_nghe_san_xuat_sua_tiet_trung_9366
Tailieu.vncty.com   do an-cong_nghe_san_xuat_sua_tiet_trung_9366Tailieu.vncty.com   do an-cong_nghe_san_xuat_sua_tiet_trung_9366
Tailieu.vncty.com do an-cong_nghe_san_xuat_sua_tiet_trung_9366
 

Tailieu.vncty.com 06 matlab-osadq3_j2qu_20130412090644_577

  • 1. BÀI GIẢNG ĐIỆN TỬ TIN HỌC ỨNG DỤNG TRONG KỸ THUẬT ĐỊA CHẤT & DẦU KHÍ Tác giả: ThS. Đỗ Quang Khánh ThS. Bùi Tử An Bộ môn: Khoan & Khai thác dầu khí©Copyright 2007 MATLAB
  • 2. ©Copyright 2007 MATLAB 2 MATLAB CĂN BẢN  Tổng quan về MATLAB  Các phép toán, biểu thức và hàm cơ bản  Lập trình trong MATLAB  Đồ họa cơ bản  Cấu trúc chương trình  BÀI TẬP
  • 3. ©Copyright 2007 MATLAB 3 CÁC VẤN ĐỀ NÂNG CAO TRONG MATLAB  Symbolic trong MATLAB  Ma trận và đại số tuyến tính  Hàm số và phương trình  Đồ họa nâng cao  Vấn đề tạo giao diện  BÀI TẬP
  • 4. ©Copyright 2007 MATLAB 4 TỔNG QUAN VỀ MATLAB  MATLAB (Matrix Laboratory) là một ngôn ngữ thông dịch, cho phép thực hiện nhanh chóng các giải thuật, hiển thị dữ liệu (dưới dạng đồ thị 2D, 3D, hình ảnh và thậm chí chuỗi hình ảnh) và thực hiện các giao tiếp đồ họa dễ dàng.  Ưu điểm:  Cung cấp một công cụ tính toán và lập trình bậc cao dễ sử dụng, hiệu quả và thân thiện. SIMULINK giúp người sử dụng thực hiện các bài toán mô hình hóa, mô phỏng trên máy tính.  Có tính mở, các hàm và các toolbox không ngừng được bổ sung theo sự phát triển của khoa học bởi chính The Mathworks Ins và cả người sử dụng trên toàn thế giới  Có công cụ trợ giúp phong phú trực tuyến, trên mạng hay các tài liệu dạng pdf.
  • 5. ©Copyright 2007 MATLAB 5 Sức mạnh của MATLAB  Môi trường phát triển: gồm các công cụ và tiện nghi giúp viết chương trình, sử dụng các hàm Matlab và các file  Thư viện các hàm toán học của Matlab: Các hàm sơ cấp: tổng, sin, tính số phức… các hàm phức tạp: Bessel, nghịch đảo ma trận, tính trị riêng, biến đổi Fourier nhanh, wavelet…  Ngôn ngữ Matlab: Các lệnh cao cấp xử lý ma trận, lệnh rẻ nhánh, vòng lặp, xuất nhập, cấu trúc dữ liệu, lập trình hướng đối tượng…  Xử lý đồ họa: Hiển thị dữ liệu dạng đồ họa 2D, 3D, hoạt hình, xử lý ảnh và cả GUI
  • 6. ©Copyright 2007 MATLAB 6 Sức mạnh của MATLAB (tt)  Thư viện API của Matlab: Cho phép liên kết các chương trình C và Fortran… Các ngôn ngữ khác có thể gọi các hàm dll được tạo bởi Matlab.  Các hộp công cụ (Toolbox): Tập hợp các hàm Matlab được viết sẵn để giải quyết các vấn đề thuộc các chuyên ngành khác nhau. Các toolbox khiến cho Matlab có thể ứng dụng vào nhiều lĩnh vực kỹ thuật khác nhau: Điện tử, Điều khiển tự động, Kỹ thuật điện, Viễn thông, Cơ khí, Động lực, Dầu khí, Địa chất, hóa học,…
  • 7. ©Copyright 2007 MATLAB 7 Các khái niệm cơ bản Khi chạy chương trình MATLAB, thì cửa sổ này sẽ xuất hiện Cửa sổ lệnh Cửa sổ không gian làm việc Cửa sổ lịch sử lệnh
  • 8. ©Copyright 2007 MATLAB 8 Các khái niệm cơ bản (tt)  Hoạt động trong MATLAB  Command window (cửa sổ lệnh) − Dấu “>>” dùng để chạy lệnh, viết chương trình, Chạy chương trình.  Command history window (cửa sổ lịch sử lệnh) − Liệt kê tất cả các lệnh đã sử dụng trước đó kèm theo thời gian làm việc.  Current Directory (cửa sổ thư mục hiện tại) − Cho biết thư mục hiện tại làm việc. Mặc định khi cài MATLAB701work (Version 7.01)  Workspace (cửa sổ không gian làm việc) − Cho biết các biến được sử dụng trong chương trình.
  • 9. ©Copyright 2007 MATLAB 9 Các khái niệm cơ bản  Một số lệnh hệ thống Lệnh Ý nghĩa  clc xóa cửa sổ lệnh  clf xóa cửa sổ đồ họa  help xem phần trợ giúp một số lệnh  quit, exit Thoát Matlab  Ctrl+c Dừng chương trình  pause Ngừng tạm thời chương trình  edit Gọi chương trình soạn thảo type đọc nội dung file.m  input Nhập dữ liệu từ bàn phím  demo Gọi chương trình demo  echo on/off Tắt mở hiển thị các lệnh trong M-files
  • 10. ©Copyright 2007 MATLAB 10 Các khái niệm cơ bản (tt)  CÁC TOÁN TỬ VÀ KÍ TỰ ĐẶC BIỆT • plus (+) cộng • uplus (+) Cộng unary • minus ( - ) Trừ • uminus (-) Trừ unary • mtimes(. *) Nhân ma trận • times (*) Nhân mảng • mpower (^) lũy thừa ma trận • power (. ^ ) lũy thừa mảng • mldivide ( ) Chia trái ma trận • Mrdivide( /) Chia phải ma trận • ldivide (. ) Chia trái mảng • mdivide (./ ) Chia phải ma trận • kron Sản phẩm cơ năng
  • 11. ©Copyright 2007 MATLAB 11 Các khái niệm cơ bản (tt)  Toán tử quan hệ • eq (== ) Bằng • ne ( ~= ) Không bằng • lt (< ) Nhỏ hơn • gt (>) Lớn hơn • le (<= ) Nhỏ hơn hoặc bằng • ge (>= ) Lớn hơn hoặc bằng
  • 12. ©Copyright 2007 MATLAB 12 Các khái niệm cơ bản (tt)  Toán tử logic • and (&) Logic và • or ( | ) Logic hoặc • not ( ~ ) Logic phủ định • xor Logic hoặc phủ định • any True nếu mọi phần tử của vector khác không. • all True nếu tất cả các phần tử khác không
  • 13. ©Copyright 2007 MATLAB 13 Các khái niệm cơ bản (tt)  Các kí tự đặc biệt : Dấu hai chấm () Dấu ngoặc đơn [ ] Dấu ngoặc vuông { } Dấu ngoặc nhọn . Dấu thập phân . Truy nhập cấu cấu trúc trường .. Thư mục mẹ ... Dấu tiếp tục , Dấu phẩy ; Dấu chấm phẩy % Dấu chú thích
  • 14. ©Copyright 2007 MATLAB 14 Các khái niệm cơ bản (tt) % Dấu chú thích ! Liên quan câu lệnh của hệ điều hành = Gán ‘ Nhảy transpose(.’) Chuyển vị ctranspose(‘ ) Chuyển vị số phức liên hợp horzcat [, ] Ghép chuỗi theo chiều ngang vertcat[; ] Ghép chuỗi theo chiều đứng subsasgn Gán subscripted bsref Tham chiếu subscripted subsindex Chỉ số subscripted
  • 15. ©Copyright 2007 MATLAB 15 Các khái niệm cơ bản (tt)  BIẾN  Quy định về tên biến: − Giống các ngôn ngữ khác, Matlab có những quy định về tên biến phải là một từ, không chứa dấu cách, và phải tuân thủ theo các quy tắc sau:  Có thể chứa nhiều nhất 31 kí tự, còn các kí tự sau kí tự 31 sẽ bị lờ đi. Ví du: Thoi_gian_dong_cua_vuaximang100, …  Tên biến bắt đầu phải là chữ cái, tiếp theo có thể là chữ số, dấu gạch dưới. Thí dụ: Do_bien_thien, Heso, heso, Donhot, donhot…  Kí tự chấm “.” không được dùng vì nó có ý nghĩa đặc biệt
  • 16. ©Copyright 2007 MATLAB 16 BIẾN (tt)  Một số biến được đĩnh nghĩa trước: − 1/0 Warning: Divide by zero. (Type "warning off MATLAB:divideByZero" to suppress this warning.) ans = Inf − 0/0 Warning: Divide by zero. (Type "warning off MATLAB:divideByZero" to suppress this warning.) ans = NaN − Eps ans = 2.2204e-016
  • 17. ©Copyright 2007 MATLAB 17 Một số biến được định nghĩa trước (tt) Ý
  • 18. ©Copyright 2007 MATLAB 18  Độ lớn của biến − Xác định độ lớn hay chiều dài của biến vector cũng như ma trận thông qua một số hàm sau đây:  Size(A) Trả về 1 vector chứa kích thước A, gồm số hàng và số cột của A.  Length(A) Trả về chiều dài của A, giá trị lớn nhất của hàng và cột.  Ngoài ra còn có các hàm: Size(A,p); [m,n] = size(A)
  • 19. ©Copyright 2007 MATLAB 19 BIẾN (tt)  Thí dụ: >> A = [1 2 3; 4 5 6] A = 1 2 3 4 5 6 >> [m,n] = size(A) m = 2 n = 3 >> length(A) ans = 3 >>size(A,1) ans = 2
  • 20. ©Copyright 2007 MATLAB 20 BIẾN (tt)  BIẾN MÔI TRƯỜNG (Environmental Variable) Thí dụ: >> a = 1 a = 1 >> b = ‘MATLAB’ b = Matlab Ta nói, a, b là các biến môi trường.
  • 21. ©Copyright 2007 MATLAB 21 BIẾN (tt)  Khi làm việc trong MATLAB ở trong cửa sổ lệnh cũng như các giá trị đã được tạo ra. Những lệnh và biến này được thường trú trong môi trường làm việc của MATLAB (Workspace) và có thể được nạp trở lại khi muốn.  Đời sống của những biến chấm dứt khi ta thoát khỏi chương trình MATLAB.  Như Thí dụ trên, a được hiểu la một biến số, b là một chuỗi.  Khi định nghĩa biến môi trường, nếu gán giá trị cho nó thì kiểu biến sẽ phụ thuộc vào kiểu giá trị đã gán cho nó.
  • 22. ©Copyright 2007 MATLAB 22 BIẾN (tt)  BIẾN CỤC BỘ (Local Variable)  Biến này chỉ tồn tại trong một hàm MATLAB và không hiện hữu trong cửa sổ lệnh. Thí dụ: function[mean,stdev] = stat(x); n = length(x); mean = sum(x)/n; stdev = sqrt(mean);  Trong trường hợp này n là biến cục bộ và chỉ được truy xuất trong một hàm.
  • 23. ©Copyright 2007 MATLAB 23 BIẾN (tt)  BIẾN TOÀN CỤC (Global Variable)  Được định nghĩa bằng từ khóa global. Việc xóa biến toàn cục dùng lệnh clear global  Isglobal(ten_bien): trả về 1 (ten_bien là biến toàn cục), 0 (ten_bien không phải là biến toàn cục) Thí dụ: Global x y z x, y, z là các biến toàn cục.
  • 24. ©Copyright 2007 MATLAB 24 BIẾN (tt)  Thường mỗi hàm trong MATLAB được viết dưới dạng M File, có riêng những biến cục bộ cho từng hàm và được lưu trữ trong một vùng biến đặc biệt, việc gọi hàm trong một hàm đều có thể truy xuất biến này.  Nên dùng KÍ TỰ HOA để đặt tên biến toàn cục để tránh trùng tên với các biến trong Workspace.
  • 25. ©Copyright 2007 MATLAB 25 BIẾN (tt) BIẾN SYMBOLIC  Symbolic processing là thuật ngữ dùng mô tả cách thức máy tính thực hiện tính các biểu thức toán học (Thí dụ, rút gọn một đa thức, đặt thừa số chung, tính giá trị một biểu thức đại số, giải phương trình đại số, giải phương trình vi phân, …)  Khởi tạo biến symbolic: x = sym(‘x’): Tạo biến symbolic có tên là x. x = sym(‘x’,’real’): Tạo biến symbolic có tên x và là biến không bị ràng buộc phải là biến thực. k = sym(‘p’,’positive’): Tạo biến symbolic k là biến thực, dương.  Khởi tạo hằng symbolic: Nhằm tránh mắc sai lầm khi làm tròn.
  • 26. ©Copyright 2007 MATLAB 26 BIẾN (tt) Khởi tạo hằng symbolic Thí dụ: >> hai_phan_ba = sym(‘2/3’); >> pi = sym(‘pi’); >> hai_phan_ba = hai_phan_ba = 2/3 % Không hiển thị giá trị xấp xỉ >> Pi Pi = pi % không hiển thị giá trị xấp xỉ. - Liệt kê các biên symbolic hiện hành, sử dụng hàm <syms>
  • 27. ©Copyright 2007 MATLAB 27 BIẾN (tt) - Symbolic  Liệt kê các biến Symbolic >> syms x y; >> p = 2*x + 3*y; % Tạo biến symbolic p thông qua biểu thức symbolic >> u = sqrt(x^2 + y^2); % Tạo biến symbolic u thông qua biêu thức symbolic >> d = subs(u, {x,y},{2,3}) % Tính giá trị biểu thức u khi x = 2, y = 3. d = 13 >> v = subs(u,{x,y},{3,4}) % Tính giá trị biểu thức khi x = 3; y = 4; v = 5 >> syms ‘r’ ‘s’ ‘x’ ‘y’
  • 28. ©Copyright 2007 MATLAB 28 BIẾN (tt) - Symbolic  Khởi tạo ma trận symbolic bằng biến symbolic. Thí dụ: >> n = 3; >> syms x; >> A = x.^ [[0:n]’.* [0:n]]; % Dùng phép biến đổi lũy thừa mảng A = [1, 1, 1, 1] [1, x, x^2, x^3] [1, x^2, x^4, x^6] [1, x^3, x^6, x^9]
  • 29. ©Copyright 2007 MATLAB 29 BIẾN (tt) - Symbolic  Tìm biến symbolic trong một hàm Thí dụ: >> syms b x y z; >> findsym(5*b + 2*z) % Hàm này tìm biến symbolic trong một hàm ans = b, z
  • 30. ©Copyright 2007 MATLAB 30 BIẾN (tt)  LƯU và NẠP Biến  Biến sẽ bị xóa sạch khi: − Dùng lệnh: clear all − Thoát chương trình MATLAB  Lưu biến: − Để sử dụng lại cho phiên làm việc sau; dùng lệnh <save> (lưu tất cả các biến do Workspace đang quản lý(tên, kích thước, giá trị) vào một tập tin nhị phân (binary file) có tên matlab.mat
  • 31. ©Copyright 2007 MATLAB 31 BIẾN (tt)  Nạp biến: − Dùng lệnh <load> Nạp tất cả các biến đã lưu vào Workspace để dùng lại  Nếu không muốn dùng tập tin mặc định matlab.mat, ta sử dụng lệnh <Save filename> để lưu tất cả biến vào tập tin có tên filename.mat và muốn nạp lại biến khi dùng lệnh <load filename>  Lưu một vài biến trong cửa sổ workspace − Lệnh <Save filename var1 var2 …>  Nói chung cách đơn giản nhất là: Từ cửa sổ Menu File ở cửa sổ lệnh chọn <Sace Workspace As> Đặt tên tập tin (có đuôi mở rộng là *.mat)
  • 32. ©Copyright 2007 MATLAB 32 Câu chú thích  Tất cả các văn bản đằng sau kí hiệu phần trăm (%) đều là câu giải thích.  Thí dụ: > heso_a = 10 % Hệ số a ptb2 heso_a = 10 >> heso_b = 20 % Hệ số b ptb2 heso_b = 20
  • 33. ©Copyright 2007 MATLAB 33 Số phức  Một trong những điểm mạnh nhất của MATLAB là làm việc với số phức.  Các hàm đặc biệt của số phức:  real(x) Phần thực của X  imag(x) Phần ảo của X  conj(x) Liên hợp phức của X  abs(x) Độ lớn, trị tuyệt đối của X  angle(x) Góc pha của số phức  complex(x) Tạo số phức từ phần thực và ảo
  • 34. ©Copyright 2007 MATLAB 34 Số phức (tt)  Thí dụ: >> a=1+3i a = 1.0000 + 3.0000i >> b=2-4i b = 2.0000 - 4.0000i >> a+b ans = 3.0000 - 1.0000i >> abs(a) ans = 3.1623 % độ lớn của a >> real(b) % phần thực của số phức b ans = 2 >> imag(b) %phần ảo của số phức b ans = -4 >> complex(2,2) ans = 2.0000 + 2.0000i
  • 35. ©Copyright 2007 MATLAB 35 Một số hàm toán học thông thường Tên hàm Mô tả, kết quả trả về Any(x) 1 hoặc vecto hàng đơn vị nếu bất kỳ phần tử nào của vecto hoặc ma trận x khác 0. All(x) là 1 hoặc vecto hàng đơn vị nếu tất cả các phần tử nào của vecto hoặc ma trận x khác 0. Isnan(x) Là một tại những vị trí NaN (Not a Number, Thí dụ 0/0) trong x Isinf(x) Là 1 tại những vị trí Inf (Infinitive, 1/0) trong x. Finite(x) Là 1 tại những vị trí có giá trị hữu hạn trong x. Isstr(x) Là 1 nếu x là một string (chuỗi) Issym(x) Là 1 nếu x là một biến sym Abs(x) Trị truyệt đối hoặc biên độ số phức Acos(x) Hàm cosin ngược Acosh(x) Hyperbolic cosin ngược Ceil(x) Làm tròn về phía trên Atan(x) Hàm số tang ngược Asin(x) Hàm số sin ngược
  • 36. ©Copyright 2007 MATLAB 36 Một số hàm toán học thông thường Tên hàm Mô tả, kết quả trả về cos(x) Hàm cosin cosh(x) Hyperbol cosin exp(x) Hàm mũ ex fix(x) Xấp xỉ không floor(x) Làm tròn về phía zero log(x) Hàm logarit tự nhiên log10(x) Hàm logarit thập phân round(x) Làm tròn về số nguyên gần nhất sign(x) Hàm dấu, Thí dụ: sign(1.2) = 1,sign(-23.4) = -1, sign(0) = 0 sin(x) Hàm sin sinh(x) Hàm Hyperbol sin sqrt(x) Căn khai căn bậc hai gdc(x,y) Bội số chung lớn nhất của hai số nguyên x và y. lcm(x,y) Bội số chung nhỏ nhất của hai số nguyên x và y. x^y Hàm mũ
  • 37. ©Copyright 2007 MATLAB 37 Một số hàm toán cơ bản Tên hàm Mô tả, kết quả trả về rem(x,y) Số dư phép chia x/y sum(v) Tổng các phần tử vector prod(v) Tích các phần tử vector min(v) Phần tử vector bé nhất max(v) Phần tử vector lớn nhất mean(v) Giá trị trung bình cộng sign(x) Hàm dấu (= 1 nếu x>0; = -1 nếu x<0; = 0 nếu x=0)
  • 38. ©Copyright 2007 MATLAB 38 Một số hàm cơ bản (tt)  Thí dụ: >> x=4; >> sqrt(x) ans = 2 >> exp(x) ans = 54.5982 >> sign(x) ans = 1 >> rem(x,3) ans = 1 >> v=[1 2 3]; >> min_v=min(x) min_v = 1 >> mean(x) ans = 2 >> sum(x) ans = 6
  • 39. ©Copyright 2007 MATLAB 39 Các Hàm liên quan đến ĐA THỨC  Đa thức được biểu diễn bằng vecto bậc một có bậc giảm dần.  Cho hai đa thức f, g lần lượt được biểu diễn bởi a và b. Ta sẽ có các hàm sau: Conv(a,b) Nhân hai đa thức Deconv(a,b) Chia hai đa thức a + b Tổng hai đa thức a – b Hiệu hai đa thức roots(a) nghiệm của đa thức f được biểu diễn bởi vecto a. poly(r) Trả về các hệ số của đa thức có nghiệm là vecto r.  Lưu ý: Khi cộng và trừ các đa thức phải có cùng kích thước.
  • 40. ©Copyright 2007 MATLAB 40 Hàm ĐA THỨC (tt)  Thí dụ: Giải phương trình: x4 + 10x3 + 0x - 1 = 0 Giải: Ta biểu diễn đa thức x4 + 10x3 + 0x - 1 bằng một vectơ hàng với các phần tử là các hệ số của đa thức sắp xếp theo thứ tự bậc giảm dần. >> a = [1 10 -2 0 -1]; Nghiệm của đa thức có thể được tính bằng hàm: roots(a) >> R = roots(a) R = -10.1971 0.5291 -0.1660 + 0.3972i -0.1660-0.3972i
  • 41. ©Copyright 2007 MATLAB 41 Hàm ĐA THỨC (tt)  Từ các nghiệm của đa thức có thể xây dựng lại đa thức bằng hàm: poly(a);  Thí dụ: >>a = poly(R) a = 1.0000 10.0000 -2.0000 0.0000 -1.0000 >>a = [1 2 3 4]; % x3 +2x2 +3x+4 >>b = [5 6 7 8]; % 5x3 +6x2 +7x+8 >>Tich = conv(a,b) Tich = 5 16 34 60 61 52 32
  • 42. ©Copyright 2007 MATLAB 42 Hàm ĐA THỨC (tt) >>Thuong = deconv(a,b) Thuong = 0.2000 >>Tong = a + b Tong = 6 8 10 12 >>Hieu = a – b Hieu = -4 -4 -4 -4
  • 43. ©Copyright 2007 MATLAB 43 CÁC LỆNH ĐIỀU KIỆN VÀ LẶP  Vòng lặp FOR:  Cấu trúc: for i = n:m %n = phần tử đầu, m = phần tử cuối <Lệnh> end  Thí dụ vòng lặp FOR: Tính giai thừa của 100?
  • 44. ©Copyright 2007 MATLAB 44 CÁC LỆNH ĐIỀU KIỆN VÀ LẶP  Vòng lặp WHILE: lặp vòng khi biểu thức logic là true.  Cấu trúc: while <biểu thức logic> <Các lệnh> end  Thí dụ 1: n=1; while prod(1:n) < 1e100 % prod tính tích các phần n = n+1;% tử cột của vectơ hay End % ma trận
  • 45. ©Copyright 2007 MATLAB 45 CÁC LỆNH ĐIỀU KIỆN VÀ LẶP  Lệnh if else elseif  Cấu trúc:  Nếu <BT logic> là true thì <Các lệnh> được thi hành, nếu không thì thực hiện các lệnh sau end. if <BT logic> <lệnh 1> else <lệnh 2> end if <BT logic 1> <lệnh 1> elseif <BT logic 2> <Lệnh 2> … end if <BT logic> <Các lệnh> end
  • 46. ©Copyright 2007 MATLAB 46 CÁC LỆNH ĐIỀU KIỆN VÀ LẶP  Thí dụ 1: if rem(a,2)==0 disp('la mot so chan') b=a/2; End if n<0 disp('la so duong') elseif n==0 disp('la so 0') else disp('la so am') end
  • 47. ©Copyright 2007 MATLAB 47 CÁC LỆNH ĐIỀU KIỆN VÀ LẶP  Thí dụ 2: Hàm ngay_trong_thang.m function y = ngay_trong_thang(th,nam) if (th==4)|(th==6)|(th==9)|(th==11) y = 30 elseif (th==2) if (rem(nam,4)~=0) y=28 else y=29 end else y=31 end
  • 48. ©Copyright 2007 MATLAB 48 CÁC LỆNH ĐIỀU KIỆN VÀ LẶP  Lệnh switch case: chọn nhiều trường hợp  Cấu trúc: switch <Biểu thức (vô hướng hay chuỗi)> case <trị 1> <Các phát biểu % thực hiện nếu biểu thức là trị 1> case <trị 2> <Các phát biểu % thực hiện nếu biểu thức là trị 2> … otherwise <Các phát biểu % thực hiện nếu biểu thức không phù hợp mọi trường hợp> end
  • 49. ©Copyright 2007 MATLAB 49 CÁC LỆNH ĐIỀU KIỆN VÀ LẶP  Thí dụ: switch input_num case -1 disp(‘negative one’); case 0 disp(‘zero’); case 1 disp(‘positive one’); otherwise disp(‘other value’); end
  • 50. ©Copyright 2007 MATLAB 50 ĐỒ HỌA CĂN BẢN  Tổng quát về đồ họa trong MATLAB  MATLAB có các hàm đồ họa để vẽ các đặc tuyến bất kỳ trên mặt phẳng 2D, 3D, cho phép tạo ra đối tượng đồ họa điều khiển được.  MATLAB cho phép người lập trình sử dụng “bộ nhớ ảo”, khi đó có thể ghi các biến làm việc thành tập tin *.mat trên đĩa và có thể nạp bộ nhớ khi cần thiết. Nhờ vậy, MATLAB có thể giải được các bài toán lớn và phức tạp.  Ngoài ra, MATLAB còn phép quản lý tập tin dữ liệu trong chính môi trường MATLAB mà không cần đến môi trường windows.
  • 51. ©Copyright 2007 MATLAB 51 ĐỒ HỌA CĂN BẢN (tt)  Màu sắc và kiểu đường vẽ Ký hiệu Màu Ký hiệu Kiểu nét y Yellow . Point m Magenta o Circle c Cyan x X-mark r Red + Plus g Green * Star b Blue - Solid line w White : Dotted line k Black -. Dash-dot line -- Dased line
  • 52. ©Copyright 2007 MATLAB 52 ĐỒ HỌA CĂN BẢN (tt) Các kiểu data marker Ký hiệu trong plot Dấu chấm (dot .) . Dấu sao (asterisk *) * Dấu gạch chéo (cross x) x Vòng tròn (circle o) o (chữ o thường) Dấu cộng (plus sign + ) + Hình vuông (square ) s Diamond ( ) d Ngôi sao () p
  • 53. ©Copyright 2007 MATLAB 53 ĐỒ HỌA CĂN BẢN (tt)  Đồ họa không gian 2 chiều trong MATLAB  Lệnh plot: Đồ thị tuyến tính X-Y, vẽ trong mặt phẳng hai chiều.  Lệnh fplot: được dùng để vẽ hàm số một cách “thông minh”, nó tự động phân tích hàm phải vẽ và chọn số điểm thích hợp cần phải thể hiện để phản ánh các đặc điểm của hàm. − Cú pháp: fplot(‘string’, [xmin,xmax]) − Dạng đầy đủ: fplot(‘string’, [xmin xmax ymin ymax]
  • 54. ©Copyright 2007 MATLAB 54 ĐỒ HỌA CĂN BẢN – Plot() (tt) Thí dụ: >>x = linspace(0,2*pi,30); %Tạo mảng x gồm 30 phần tử có giá trị trong khoảng 0 – 2*π >>y = sin(x); >>plot(x,y) %vẽ đồ thị hàm y theo x >>xlabel(‘x [0-2*pi]); ylabel(‘y’); %đặt nhãn trục tọa độ x và y >>title(‘y = sin(x)’) % đặt tên đồ thị >>grid on % Tạo lưới cho đồ thị
  • 55. ©Copyright 2007 MATLAB 55 ĐỒ HỌA CĂN BẢN – Plot() (tt)
  • 56. ©Copyright 2007 MATLAB 56 ĐỒ HỌA CĂN BẢN – Plot() (tt)  Để vẽ hai đồ thị trên cùng một trục tọa độ >>z = cos(x); >>plot(x,y,’b-*’,x,z,’r’) % Vẽ y và z trên cùng đồ thị, y là đường -* màu xanh, z là đường -- màu đỏ >>legend(‘y = sin(x)’,’z=cos(x)’) % chú thích trên đồ thị
  • 57. ©Copyright 2007 MATLAB 57 ĐỒ HỌA CĂN BẢN – Plot() (tt) >>legend(‘y = sin(x)’,’z=cos(x)’)
  • 58. ©Copyright 2007 MATLAB 58 ĐỒ HỌA CĂN BẢN (tt)  Để vẽ nhiều hàm trên cùng một đồ thị ta có thể dùng lệnh “hold on” và “hold off” >> t=0:pi/20:2*pi; >> plot(t,sin(t),'-r*') >> hold on >> plot(sin(t-pi/2),'mo') >> plot(sin(t-pi),':bs') >> hold off
  • 59. ©Copyright 2007 MATLAB 59 ĐỒ HỌA CĂN BẢN (tt)  Lệnh plot vẽ trong SỐ PHỨC  Nếu chỉ cố một đối số, hàm plot(y) sẽ vẽ các giá trị của vector y theo chỉ số 1,2,3, … Nếu y là số thực, hàm plot(y) trong trường hợp này sẽ vẽ phần ảo theo phần thực tương ứng, nghĩa là tương đương với plot(real(y),imag(y))
  • 60. ©Copyright 2007 MATLAB 60 ĐỒ HỌA CĂN BẢN (tt)  Thí dụ: >> x = .1+.9i; >> u = [0:0.01:10]; >> plot(x.^u),xlabel('So thuc'),ylabel('Phan ao') >> title('Do thi voi doi so phuc tap trong ham SO PHUC')
  • 61. ©Copyright 2007 MATLAB 61 ĐỒ HỌA CĂN BẢN (tt)  Thí dụ lệnh fplot trong số phức: >> f='cos(tan(x))-tan(sin(x))'; >> fplot(f,[1 2])
  • 62. ©Copyright 2007 MATLAB 62 ĐỒ HỌA CĂN BẢN (tt)  Các lệnh vẽ trong các tọa độ đặc biệt Polar(t,r): vẽ đồ thị trong tọa độ cực Semilogx(x,y): Vẽ hàm y theo x với trục y vẽ theo thang log Semilogy(x,y): Vẽ hàm y theo x với trục x vẽ theo thang log Loglog(x,y) Vẽ hàm y theo x với thang log cho cả 2 trục tọa độ Plotyy(x,y,’function’): Vẽ đồ thị với 2 trục y theo kiểu vẽ được chọn trong function. Trong đó function nhận các giá trị plot, semilogy, semilogx… Plot3(x,y,z): vẽ đường trong không gian 3 chiều. Subplot(m,n,p): Chia cửa sổ figure ra nhiều ô, m ô theo chiều đứng, n ô theo chiều ngang, vẽ đồ thị trong ô thứ p.
  • 63. ©Copyright 2007 MATLAB 63 ĐỒ HỌA CĂN BẢN (tt)  Thí dụ:  Lệnh polar(t,r): Vẽ đồ thị góc t (radian) trong tọa độ cực theo bán kính r.  Lệnh polar(t,r,’linestype’): Vẽ góc t với đường vẽ và nét xác định ‘linestype’. >>t = 0:.1:2*pi; >>polar(t,sin(2*t)) >>polar(t,sin(2*t),'m-')
  • 64. ©Copyright 2007 MATLAB 64 ĐỒ HỌA CĂN BẢN (tt)  Thí dụ, vẽ đường xoắn ốc Archimeder r = 2Ѳ với Ѳ thuộc [0, 4pi] >> r = 2*t; >> polar(t,r),title('Duong xoan oc Archimede r = 2t');
  • 65. ©Copyright 2007 MATLAB 65 ĐỒ HỌA CĂN BẢN (tt)  Thí dụ lệnh loglog(x,y) >> x = logspace(-1,2); >> loglog(x,exp(x))
  • 66. ©Copyright 2007 MATLAB 66 ĐỒ HỌA CĂN BẢN (tt)  Thí dụ lệnh semilogx(x,y) >> x = logspace(-2,3); >> y = x.^12 + 10; >> semilogx(x,y) %tương tự cho lệnh semilogy()
  • 67. ©Copyright 2007 MATLAB 67 ĐỒ HỌA CĂN BẢN (tt) Thí dụ : >> t=0:pi/20:6*pi; >> x=sin(t); >> y=sin(t-pi/2); >> z=t; >> subplot(121) >> plotyy(t,x,t,y,'plot') >> grid on >> subplot(122) >> plot3(x,y,z) >> grid on
  • 68. ©Copyright 2007 MATLAB 68 ĐỒ HỌA CĂN BẢN (tt)  Các lệnh vẽ liên quan đến SỐ PHỨC quiver(x,y): vẽ các vector xuất phát từ các vị trí khác nhau. fearther(x,y): Vẽ các vector xuất phát từ trục x. compass(x,y): Vẽ các vector từ một điểm gốc trong hệ tọa độ cực. rose(x)
  • 69. ©Copyright 2007 MATLAB 69 Thí dụ-Lệnh quiver  Giả sử ta có một trường vector như sau trong không gian R2 :  P(x,y) = , Q(x,y) = , thử vẽ hình ảnh của trường trong phạm vi x thuộc [1,5] và y thuộc [1,5].  Trước hết ta viết một sript file (lưu file này với tên Quiver.m) như sau: x y
  • 70. ©Copyright 2007 MATLAB 70 Thí dụ-Lệnh quiver (tt)  Sau đó, ta chạy file sript này(Gõ tên file này trong cửa sổ lệnh->Enter), ta được hình ảnh sau:
  • 71. ©Copyright 2007 MATLAB 71 ĐỒ HỌA CĂN BẢN (tt)  Các lệnh thao tác và điều khiển figure Hiển thị cửa sổ đồ họa hiện hành figure(gef) Tạo ra cửa sổ đồ họa figure(‘propertyname’,’propertyvalue’,…) hold Chuyển từ trạng thái hold là on sang off và ngược lại hold on Giữ lại tất cả màn hình đã vẽ hold off Xóa các màn hình đã vẽ chỉ thể hiện màn hình hiện hành mới (Chế độ mặc định) axis Cân chỉnh trục tọa độ và hình dạng của nó grid Grid On/ grid off/ grid: Tạo/ tắt lưới cho đồ thị shg Hiển thị đồ thị trên màn hình clg Xóa đồ thị trên màn hình zoom Co vào hoặc dãn ra của đồ thị
  • 72. ©Copyright 2007 MATLAB 72 ĐỒ HỌA CĂN BẢN (tt)  CÁC LỆNH VĂN BẢN TRÊN MÀN HÌNH ĐỒ HỌA title(‘text’,’property 1’,’property 2’,…): Tiêu đề cho đồ thị xlabel(‘text’,’property 1’,’property 2’,…): Nhãn trục hoành độ ylabel(‘text’,’property 1’,’property 2’,…): Nhãn trục tung độ text(x,y,z,‘chuỗi ‘): Văn bản ở bất kỳ vị trí nào trên đồ thị. X, Y là tọa độ tâm bên trái của đồ thị. legend(x,y): Chú thích của đường trên đồ thị gtext(‘C’): Văn bản ở vị trí con trỏ.
  • 73. ©Copyright 2007 MATLAB 73 ĐỒ HỌA CĂN BẢN (tt) ĐỌC DỮ LIỆU TỪ MÀN HÌNH ĐỒ HỌA  Lấy tọa độ diểm trên đồ thị, khi một đồ thị được vẽ xong, nếu muốn lấy tọa độ của một số điểm trên đường này, ta sẽ dùng lệnh [x,y] = ginput(n); n là số điểm cần lấy tọa độ.  Khi đồ thị hiện ra, ta nhấn phím trái chuột vào các vị trí mong muốn lấy tọa độ trên đồ thị, các hoành độ sẽ được chứa trong vector và tung độ trong vector y.  Nếu quan hệ giữa hai đại lượng x, y cần được vẽ bằng các điểm rời rạc, thay vì là đường nối các điểm (x,y) như vẽ hàm, hàm plot sẽ dùng các điểm được đánh dấu (data makers)
  • 74. ©Copyright 2007 MATLAB 74 ĐỒ HỌA CĂN BẢN (tt)  Thí dụ, vẽ đồ thị từ số liệu rời rạc bằng cách sử dụng điểm đánh dấu. >> x=[5:18]; >> y=[1,2,3,5,4,5,5,7,8,6,9,11,14,20]; >> plot(x,y,'r s') R: màu đỏ, s: hình vuông
  • 75. ©Copyright 2007 MATLAB 75 ĐỒ HỌA CĂN BẢN (tt)  Thí dụ: Nếu muốn nối liền các điểm được đánh dấu này bằng các đoạn thẳng, chúng ta có thể vẽ 2 lần. >>plot(x,y,'r o',x,y)
  • 76. ©Copyright 2007 MATLAB 76 ĐỒ HỌA CĂN BẢN (tt)  Ngoài ra trong lệnh plot ta có thể đưa các thông số ‘lineWidth’ để định độ rộng của đường vẽ, thông số ‘MarkerSize’ để định độ lớn (chiều cao) của các điểm được đánh dấu và thông số “Color” để định màu của đồ thị.  Thí dụ: >>plot(x,y,’o-’,’LineWidth’,3,’MarkerSize’,8,’Color’,’red’)
  • 77. ©Copyright 2007 MATLAB 77 ĐỒ HỌA CĂN BẢN (tt) - Điền tiêu đề cho đồ thị, ta sử dụng lệnh: title(‘text’). - Tạo lưới cho đồ thị: grid on  Thí dụ: <<title(‘do thi roi rac dung data marker o’)
  • 78. ©Copyright 2007 MATLAB 78 ĐỒ HỌA CĂN BẢN (tt)  Kiến tạo hệ trục tọa độ Lệnh Mô tả Axis([xmin xmax ymin ymax]) Thiết lập các giá trị min, max của hệ trục dùng các giá trị được đưa ra trong vecto hàng. V= axis V là vector cột có chứa thang chia cho đồ thị hiện tại: [xmin xmax ymin ymax] Axis auto trả lại giá trị mặc định thang chia Axis(‘auto’) Xmin=min(x), xmax = max(x)… Axismanual Giới hạn thang chia nh thang chia hiện tại Axis xy Sử dụng (mặc định) hệ tọa độ decac trong đó gốc tọa độ ở góc thấp nhất bên trái, trục ngang tăng từ trái qua phải, trục đứng tăng từ dưới lên.
  • 79. ©Copyright 2007 MATLAB 79 ĐỒ HỌA CĂN BẢN (tt) Lệnh Mô tả Axis ij Sử dụng hệ tọa độ ma trận, trong đó góc tọa độ ở đỉnh góc trái, trục đứng tăng từ đỉnh xuống, trục ngang từ trái qua phải. Axissquare Thiết lập đồ thị hiện tại là hình vuông, so với mặc định là hình chữ nhật. Axisequal Thiết lập thang chia giống nhau cho cả hai hệ trục Axis tightequal Tương tự như axisequal nhưng hộp đồ thị vừa đủ đối với dữ liệu Axis normal Tắt đi chế độ axis, equal, tight và vis3d Axis off Tắt bỏ chế độ nền trục, nhãn, lưới, và hộp, dấu. Thoát khỏi chế độ lệnh title và bất cứ lệnh label nào và thay đổi bởi lệnh text và gtext. Axis on Ngược lại với axis off nếu chúng có thể
  • 80. ©Copyright 2007 MATLAB 80 ĐỒ HỌA CƠ BẢN (tt) Thí dụ: >>x=linspace(0,2*pi,30); >>y=sin(x); >>z=cos(x); >>plot(x,y,x,z) >>box off % Sau khi sử dụng lệnh >>axis off >>axis ij >>axis square equal >>axis xy normal
  • 81. ©Copyright 2007 MATLAB 81 ĐỒ HỌA TRONG KHÔNG GIAN 3 CHIỀU  Các lệnh vẽ trong tọa độ Đềcac ba chiều plot3: Vẽ đường thẳng và điểm trong không gian 3 chiều Thí dụ: Vẽ đường cong tham số: x =e-0.05t sint y =e-0.05t cost z = t ∈[0,10π]
  • 82. ©Copyright 2007 MATLAB 82 ĐỒ HỌA TRONG KHÔNG GIAN 3 CHIỀU (tt)  Thực hiện >> t = [0:pi/50:10*pi]; >> x = exp(-0.05*t).*sin(t); >> y = exp(-0.05*t).*cos(t); >> z = t; >> plot3(x,y,z),xlabel(‘x’),ylabel(‘y’),zlabel(‘z’) >> zlabel(‘z’),grid;
  • 83. ©Copyright 2007 MATLAB 83 ĐỒ HỌA TRONG KHÔNG GIAN 3 CHIỀU (tt)  CÁC LỆNH VẼ BIÊN DẠNG (contour) contour: Vẽ các đường đồng mức clabel: Nhãn
  • 84. ©Copyright 2007 MATLAB 84 ĐỒ HỌA TRONG KHÔNG GIAN 3 CHIỀU (tt)  CÁC LỆNH TẠO LƯỚI (grid) Meshgrid(x,y) Meshgrid(x,y,z) Cylinder(r,u) [X,Y,Z] = CYLINDER(R,N) forms the unit cylinder based on the generator curve in the vector R. Vector R contains the radius at equally spaced points along the unit height of the cylinder. The cylinder has N points around the circumference. SURF(X,Y,Z) displays the cylinder. [X,Y,Z] = CYLINDER(R), and [X,Y,Z] = CYLINDER default to N = 20 and R = [1 1]. Sphere(n) SPHERE Generate sphere. [X,Y,Z] = SPHERE(N) generates three (N+1)-by-(N+1) matrices so that SURF(X,Y,Z) produces a unit sphere. [X,Y,Z] = SPHERE uses N = 20.
  • 85. ©Copyright 2007 MATLAB 85 ĐỒ HỌA TRONG KHÔNG GIAN 3 CHIỀU (tt)  Tạo một lưới các điểm trong mặt phẳng xy  Cú pháp: [X,Y] = meshgrid(x,y) Trong đó: x = [xmin,∆x,xmax] y = [ymin,∆y,ymax]  Chức năng: − Hàm meshgrid sẽ phát sinh các tọa độ của một lưới chữ nhật có m.n điểm với một góc (xmin,ymin) còn góc kia là (xmax,ymax). − Ma trận X có kích thước m.n gồm n cột giống nhau là vector x’ và ma trận Y cũng có kích thước m.n hàng giống nhau là vector y. − Mỗi ô lưới sẽ có kích thước ∆x, và ∆y.
  • 86. ©Copyright 2007 MATLAB 86 ĐỒ HỌA TRONG KHÔNG GIAN 3 CHIỀU (tt) Các lệnh vẽ tương tự meshc(X,Y,Z) meshz(X,Y,Z) MESHZ(...) or MESHC(…) is the same as MESH(...) except that a "curtain" or reference plane is drawn beneath. surf(X,Y,Z) SURF('v6',...) creates a surface object instead of a surface plot object for compatibility with MATLAB and earlier. surfc(X,Y,Z) vẽ mặt giống như thực hiện mesh hay meshc nhưng mặt được tô bóng (shaded surface). surfnorm [Nx,Ny,Nz] = SURFNORM(Z) returns the surface normal components for the surface Z.
  • 87. ©Copyright 2007 MATLAB 87 ĐỒ HỌA TRONG KHÔNG GIAN 3 CHIỀU (tt)  CÁC LỆNH VẼ MẶT LƯỚI TRONG 3D  Mesh − MESH returns a handle to a surface plot object.  Meshz: Vẽ bề mặt với các đường thẳng đứng viền quanh đồ thị.  Waterfall: Vẽ bề mặt với các đường lưới theo một hướng như thác đổ.  WATERFALL(...) is the same as MESH(...) except that the column lines of the mesh are not drawn - thus producing a "waterfall" plot. For column-oriented data analysis, use WATERFALL(Z') or WATERFALL(X',Y',Z').
  • 88. ©Copyright 2007 MATLAB 88 ĐỒ HỌA TRONG KHÔNG GIAN 3 CHIỀU (tt)  Thí dụ: Vẽ mặt  Thực hiện: >> x = [-2:.1:2]; >> y = [-2:.1:2]; >> [X,Y] = meshgrid(x,y); % Tạo lưới các điểm trong mặt phẳng xy >> Z = X.* exp(-X.^2-Y.^2); >> mesh(X,Y,Z) % Vẽ các đường đồng mức dưới mặt. >> xlabel(‘Truc x’), ylabel(‘Truc y’),zlabel(‘Truc z’) 22 . yx exz −− =
  • 89. ©Copyright 2007 MATLAB 89 Thí dụ lệnh MESHZ >> meshz(X,Y,Z)
  • 90. ©Copyright 2007 MATLAB 90 Thí dụ lệnh MESHC >> Meshc(X,Y,Z)
  • 91. ©Copyright 2007 MATLAB 91 Thí dụ lệnh WATERFALL >> waterfall(X,Y,Z)
  • 92. ©Copyright 2007 MATLAB 92 Thí dụ lệnh SURF >> surf(X,Y,Z)
  • 93. ©Copyright 2007 MATLAB 93 Thí dụ lệnh SURFC >> surfc(X,Y,Z)
  • 94. ©Copyright 2007 MATLAB 94 Thí dụ lệnh SURFNORM >> surfnorm(X,Y,Z)
  • 95. ©Copyright 2007 MATLAB 95 Thí dụ lệnh CONTOUR >> contour(X,Y,Z)
  • 96. ©Copyright 2007 MATLAB 96 ĐỒ HỌA TRONG KHÔNG GIAN 3 CHIỀU (tt)  CÁC LỆNH QUAN SÁT  View  Rot90  Slice  Colormap  colorbar
  • 97. ©Copyright 2007 MATLAB 97 ĐỒ HỌA TRONG KHÔNG GIAN 3 CHIỀU (tt)  Lệnh view view([α,β]) Trong đó: α: Là góc phương vị tính bằng độ ngược chiều kim đồng hồ từ phía trên của trục ngang (mặc định α = -37.5o ) β: Góc nhìn tính bằng độ xuống mặt phẳng xy (mặc định β = 30o ) Thí dụ: view([0,90]) : Vẽ 2D là một trường hợp đặc biệt của phép vẽ 3D. - Hiển thị đồ thị 3D đã tạo ra dưới dạng 2D theo góc phương vị và góc nhìn.
  • 98. ©Copyright 2007 MATLAB 98 ĐỒ HỌA TRONG KHÔNG GIAN 3 CHIỀU (tt) >> view([0,90]) và >> view([30,30]) % Hiển thị hình đã vẽ trong lệnh surfc(X,Y,Z)
  • 99. ©Copyright 2007 MATLAB 99 ĐỒ HỌA TRONG KHÔNG GIAN 3 CHIỀU (tt)  Lệnh rot90 ROT90 Rotate matrix 90 degrees. ROT90(A) is the 90 degree counterclockwise rotation of matrix A.. ROT90(A,K) is the K*90 degree rotation of A, K = +-1,+- 2,... Example: A = [1 2 3 B = rot90(A) = [ 3 6 4 5 6 ] 2 5 1 4 ]
  • 100. ©Copyright 2007 MATLAB 100 ĐỒ HỌA TRONG KHÔNG GIAN 3 CHIỀU (tt) >>[x,y,z] = meshgrid(-2:.2:2,-2:.25:2,-:.16:2); v = x .* exp(-x.^2 - y.^2 - z.^2); slice(x,y,z,v,[-1.2 .8 2],2,[-2 -.2])
  • 101. ©Copyright 2007 MATLAB 101 ĐỒ HỌA TRONG KHÔNG GIAN 3 CHIỀU (tt) Thí dụ về lệnh Colormap và colorbar >> [x,y] = meshgrid(-2:.2:2); >> z = x.^(-x.^2-y.^2); >> [C,h] = contour(x,y,z); >> Clabel(C,h); %Nhãn biểu đồ contour >> Surf(peaks(30)) >> Colormap cool; %Chọn biểu đồ màu >> Colorbar % Hiển thị thanh biểu đồ màu
  • 102. ©Copyright 2007 MATLAB 102 ĐỒ HỌA TRONG KHÔNG GIAN 3 CHIỀU (tt)
  • 103. ©Copyright 2007 MATLAB 103 ĐỒ HỌA TRONG KHÔNG GIAN 3 CHIỀU (tt)  Các lệnh đồ họa khác trong đồ họa 3D 1. fill3: Tô đa giác 3 mặt trong không gian 3D. Cú pháp: fill3(x,y,z,c): Tô đa giác 3D được định nghĩa bởi 3 vector x, y, z với màu tô được xác định bởi c. fill3(x1,y1,z1,c1,x2,y2,z2,c2,…): Tô đa giác 3D xác định nhiều vùng tô. 2. comet3(z) 3. comet3(x,y,z) 4. comet3(x,y,z,p) 5. comet3 Các lệnh vẽ đườn viền 3 chiều trong 3D 6. contour3(z): Vẽ đường viền 3D cho tới mức z 7. contour3(z,n): Vẽ đường n viền 3D 8. contour3(x,y,z): Tương tự như trên, nhưng ma trận x,y để giới hạn trục x,y.
  • 104. ©Copyright 2007 MATLAB 104 ĐỒ HỌA TRONG KHÔNG GIAN 3 CHIỀU (tt)  Lưu ý:  MATLAB cho phép chuyển đồ thị qua word…  Cách làm: − Từ cửa sổ <Figure> <Edit> <Copy Figure> Sau đó trở lại cửa sổ mà ta muốn chèn và <Paste> nó vào một nơi ta mong muốn.
  • 105. ©Copyright 2007 MATLAB 105 M-FILE, or SCRIPT  Việc nhập lệnh từ dấu nhắc (>>) thì nhanh và hiệu quả, nhưng khi thực hiện một lúc nhiều lệnh hoặc muốn thay đổi giá trị của một hoặc nhiều biến và lặp lại một số lệnh thì việc nhập lệnh ở dấu nhắc sẽ kém hiệu quả.  M-FILE tiện dụng cho việc giải bài toán lớn, MATLAB cung cấp thủ tục để tạo hàm riêng cho người sử dụng với hình thức một text file.  Giải pháp: − Tập hợp các lệnh vào một file với phần mở rộng là (*.m)  Cụ thể: − Để soạn thảo một M-File thì <New> <M-FILE> − Để hiển thị những lệnh trong M-File khi chúng được thực thi thì sử dụng lệnh echo on. − Hiệu chỉnh M-FILE: <Open>
  • 106. ©Copyright 2007 MATLAB 106 M-FILE, or SCRIPT (tt) MỘT SỐ LÊNH QUẢN LÝ TẬP TIN  Cho phép liệt kê, xem, xóa, sửa, chuyển đổi thư mục … − d: Chuyển đổi thư mục − Chdir/cd − dir: liệt kê tất cả thư mục hiện hành (tương tự lệnh IS) − delete: Xóa tập tin M-FILE − type: Hiển thị tập tin M-FILE trong cửa sổ lệnh. − what: Hiển thị tất cả M-FILE trong thư mục hiện hành. − which: Hiển thị thư mục …
  • 107. ©Copyright 2007 MATLAB 107 M-FILE, or SCRIPT (tt)  CẤU TRÚC MỘT CHƯƠNG TRÌNH 1. function[các biến đầu ra] = filename(các đối số) function filename(các đối số) function[các biến đầu ra] = filename 2. % là lời chú thích của chương trình 3. global ten_bien1 ten_bien2 … 4. Chương trình (các câu lệnh)
  • 108. ©Copyright 2007 MATLAB 108 M-FILE, or SCRIPT (tt)  CẤU TRÚC MỘT CHƯƠNG TRÌNH Thí dụ: Giải phương trình bậc hai: ax2 + by + c = 0 a. Khi biết các hệ số b. Nhập 3 hệ số ở cửa sổ lệnh
  • 109. ©Copyright 2007 MATLAB 109 M-FILE, or SCRIPT (tt) a. Chương trình có tên ptb2_a.m function x = ptb2(a,b,c) % Giải phương trình bậc hai khi biết hệ số p = [a b c]; roots(p); x0 = -b/(2*a); x = (x0 -10):.1:(x0+10); y = a*x.2 + b*x + 10; plot(x,y), title(‘Do thi bac hai’); Trong cửa sổ lệnh: >> x = ptb2(1,2,1) x = 0 -1 -1
  • 110. ©Copyright 2007 MATLAB 110 M-FILE, or SCRIPT (tt) b. Chương trình có tên ptb2_b.m % chú thích a = input(‘Nhập a = ‘); b = input(‘Nhập b = ‘); c = input(‘Nhập c = ‘); p = [a b c ]; % Khởi tạo vecto hệ số x = roots(p); disp(‘Nghiệm của phương trình bậc 2:’) disp(x) x = (x0 -10):.1:(x0+10); y = a*x.^2 + b*x + 10; plot(x,y) title(‘Do thi bac hai’);
  • 111. ©Copyright 2007 MATLAB 111 M-FILE, or SCRIPT (tt)  Giải PTB2 bằng M-FILE
  • 112. ©Copyright 2007 MATLAB 112 M-FILE, or SCRIPT (tt) >> ptb2 Nhap a = 1 Nhap b = -2 Nhap c = 1 Nghiem cua phuong trinh bac 2: 1 1
  • 113. ©Copyright 2007 MATLAB 113 M-FILE, or SCRIPT (tt) SỬ DỤNG FILE SCRIPT  Chúng ta có thể soạn một script file theo cấu trúc đề nghị như sau: a. Phần chú thích (comments section): Viết các dòng chú thích cho chương trình.  Dòng 1: Tên của chương trình và các từ khóa mô tả chương trình (dòng này được MATLAB gọi là dòng H1 và lệnh lookfor của MATLAB sẽ tìm thông tin ở dòng H1 này khi có yêu cầu)
  • 114. ©Copyright 2007 MATLAB 114 M-FILE, or SCRIPT (tt)  Dòng 2: Tên người viết chương trình, ngày viết.  Định nghĩa các tên biến đầu vào và đầu ra. Có thể thêm vào định nghĩa tên các biến trung gian. Lưu ý là phải xác định rõ đơn vị đo lường. Cho tất cả các biến đầu vào và đầu ra.  Tên của từng hàm tự tạo được sử dụng trong chương trình. b. Phần đưa vào các giá trị đầu vào (input section) c. Phần tính toán (calculation section) d. Phần trình bày kết quả: Dùng một số hàm của MATLAB để trình bày kết quả.
  • 115. ©Copyright 2007 MATLAB 115 M-FILE, or SCRIPT (tt) Thí dụ:  Soạn Script file tính diện tích hình tam giác ABC, khi biết tọa độ ba điểm trong không gian R3. Diện tích tam giác được tính bằng công thức:  Trong đó, ký hiệu (^) chỉ tích có hướng của hai vectơ AB và AC. ACABS ∧= 2 1
  • 116. ©Copyright 2007 MATLAB 116 M-FILE, or SCRIPT (tt) Trong cửa sổ Editor/Debugger, ta soạn các dòng lệnh như sau:
  • 117. ©Copyright 2007 MATLAB 117 M-FILE, or SCRIPT (tt)  Trong chương trình trên hàm cross(u,v) sẽ trả về một vectơ là vectơ tích có hướng của 2 vectơ u và v. Lưu ý: vectơ u (hoặc v) được xác định bởi các thành phần số của nó. Thí dụ: u = [1,-2,4], v = [-4,2,0]  Hàm norm(p) sẽ tính module của vectơ p. Lệnh clear xuất hiện trong đầu chương trình sẽ xóa toàn bộ các biến mà WORKSPACE đang quản lý và dành vùng nhớ để quản lý các biến của chương trình.  Dòng lệnh disp(S) sẽ hiện thị giá trị biến S ra cửa sổ lệnh- command windows(so sánh với lệnh disp(‘text’), hiển thị chuỗi ký tự).
  • 118. ©Copyright 2007 MATLAB 118 M-FILE, or SCRIPT (tt) THỰC HIỆN % File dt_tamgiac.m: Chương trình tính diện tích hình tam giác, % Tên người lập trình % Dữ liệu đầu vào: Tọa ba điểm A,B,C % Dữ liệu đầu ra: Diện tích S của ∆ABC % Biến trung gian p chỉ vectơ tích có hướng của hai vectơ AB x AC clear disp(‘CHUONG TRINH TINH DIEN TICH HINH TAM GIAC’) disp(‘KHI BIET TOA DO BA DIEM’) disp(‘=========================================’) a = input(‘Tọa điểm A = ‘); b = input(‘Tọa điểm B = ‘); c = input(‘Tọa điểm C = ‘); p = cross(b-a,c-a); % Tích có hướng của hai vectơ AB x AC S = 0.5*norm(p); % Diện tích ∆ABC disp(‘Dien tich tam giac ABC:’) disp(S)
  • 119. ©Copyright 2007 MATLAB 119 M-FILE, or SCRIPT (tt)  Khi chạy chương trình cho kết quả: >> DT_Tamgiac CT TINH DIEN TICH HINH TAM GIAC KHI BIET TOA DO BA DIEM ================================== Toa do diem A = [2,0,0] Toa do diem B = [4,0,0] Toa do diem C = [3,2,0] Dien tich tam giac ABC: 2
  • 120. ©Copyright 2007 MATLAB 120 Toolbox Symbolic  MATLAB dùng các biểu thức ở dạng biểu tượng (symbolic) như các chuỗi kí tự để phân biệt với các biến hay phép toán dạng số học (numberic)  Xem Thí dụ dưới đây: >> x = sym('x'); %Tao bien symbolic x >> eq = 'x^2+2*x+a=0'; %Dinh nghia PT voi bien symbolic x >> solve(eq) %Ham dung de giai PT tren ans = -1+(1-a)^(1/2) -1-(1-a)^(1/2)
  • 121. ©Copyright 2007 MATLAB 121 Toolbox Symbolic  Định nghĩa biểu thức symbolic Biểu thức Trong MATLAB       = dc ba M dx x x f b a ∫ − = 1 3 n x.2 1 ‘1/(2*x^n)’ M = sym(‘[a,b;c,d]’) f = int(‘x^3/sqrt(1-x)’,’a’,’b’)
  • 122. ©Copyright 2007 MATLAB 122 Toolbox Symbolic  Hàm symbolic cho phép tính toán với các biểu thức, Thí dụ: >>diff(‘cos(x)’) % Tính đạo hàm của cos(x) ans = -sin(x) >>M=sym(‘[a,b;c,d]’) ans = [a b] [c d]
  • 123. ©Copyright 2007 MATLAB 123 Toolbox Symbolic  Ở đây, ‘cos(x)’ là một chuỗi, diff(‘cos(x)’) là một biểu thức symbolic chứ không phải là một hàm số học. Ở Thí dụ 2, M=sym(‘[a,b;c,d]’) là một biểu thức symbolic.  Sử dụng symbolic để xây dựng các hàm toán học dạng symbolic.  Khai báo biến (như đã trình bày các slide trước) − sym(x) − sym x − syms x
  • 124. ©Copyright 2007 MATLAB 124 Toolbox Symbolic  Các lệnh toán học sử dụng symbolic  f và g là hai hàm symbolic − f+g symadd(f,g) − f-g symsub(f,g) − f*g symmul(f,g) − f/g symdiv(f,g) − f^g sympow(f,g)
  • 125. ©Copyright 2007 MATLAB 125 Toolbox Symbolic diff(f) Đạo hàm bậc nhất theo biến x diff(f,’a’) Đạo hàm bậc nhất theo biến a diff(f,’a’,n) Đạo hàm bậc n theo biến n int(f) Tính tích phân theo biến x int(f,’a’) Tính tích phân theo biến a int(f,1,2) Tính tích phân theo biến x từ 1 đến 2. int(f,’a’,1,2) Tính tích phân theo biến a từ 1 đến 2. int(f,’n’,’m’) Tính tích phân theo biến x từ n đến m solve(f) Giải phương trình f = 0 dsolve(f) Giải phương trình vi phân dsolve(f,’a’ ) Giải PT vi phân với ĐK ban đầu ezplot(f) Vẽ đồ thị hàm mà không cần giá trị của biến.
  • 126. ©Copyright 2007 MATLAB 126 Toolbox Symbolic F=fourier(f) Biến đổi Fourier f(x)->F(w) f=ifourier(F) Biến đổi Fourier ngược F(w)->f(x) F=fourier(f,v) Biến đổi Fourier f(x)->F(v) F=fourier(f,t,v) Biến đổi Fourier ngược f(t)->F(v) F=ztrans(f) Biến đổi z f(n)->F(z) f=ztrans(F) Biến đổi z ngược F(z)->f(n) F=ztrans(f,w) Biến đổi z f(n)->F(w) F=ztrans(F,k,w) Biến đổi z ngược f(k)->F(w) F=laplace(f) Biến đổi Laplace f(t)->F(s) f=laplace(F) Biến đổi Laplace F(s)->f(t)
  • 127. ©Copyright 2007 MATLAB 127 SIMULINK  Simulink 5.0 (Simulation and Link - R13) được MatWorks giới thiệu vào tháng 6 năm 2003. Nó cho phép phân tích, mô hình hóa và mô phỏng các hệ thống động tuyến tính và phi tuyến, liên tục và rời rạc một cách trực quan trong môi trường giao tiếp đồ họa, bằng các thao tác chuột đơn giản. Có thể nói, không tận dụng được Simulink là một thiệt thòi lớn cho người làm công tác mô phỏng!  Khởi động Simulink bằng một trong các cách sau:  nhập: >>simulink  hoặc nhấp chuột vào trên menubar của Matlab
  • 128. ©Copyright 2007 MATLAB 128 SIMULINK  Thư viện simulink hiện ra như hình sau:  Trước tiên, sinh viên hãy nhấp chuột vào các thanh cuộn của thư viện để có cái nhìn thân thiện về simulink.  Từ đây, để có thể tạo mô hình bằng simulink, hãy: Nhấp chuột vào biểu tượng của thư viện simulink Chọn: File – New – Model trong Menu của thư viện Simulink Chọn: File – New – Model trong cửa sổ lệnh của Matlab
  • 129. ©Copyright 2007 MATLAB 129 SIMULINK  Môi trường soạn thảo của Simulink  Cửa sổ này cho phép ta ‘nhấp - kéo - thả’ vào từng khối chức năng trong thư viện simulink. Thí dụ, đặt vào đây khối ‘Sine Wave’ trong thư viện simulink như hình sau:
  • 130. ©Copyright 2007 MATLAB 130 SIMULINK Lấy một khối từ thư viện
  • 131. ©Copyright 2007 MATLAB 131 MẢNG và MA TRẬN  Mảng một chiều  Mảng một chiều (vecto) là tập hợp các số được sắp xếp có thứ tự.  length(u): Tính số phần tử trong mảng một chiều u.  Muốn truy xuất phần tử thứ n trong mảng thì: ten_mang(n);  Các phần tử của mảng đựơc phân cách nhau bởi dấu phẩy và được đặt trong đôi móc vuông [ ] (kiểu dòng).  Các phần tử trong mảng phân cách nhau dấu chấm phẩy thì gọi là mảng kiểu cột.
  • 132. ©Copyright 2007 MATLAB 132 MẢNG và MA TRẬN  Cách tạo mảng: * Ten_mang = [m1, m2, m3, …] % Mảng kiểu dòng * Ten_mang = [m1; m2; m3, …] % Mảng kiểu cột * Ten_mang = [m1 m2 m3 …] % Vectơ dòng * Ten_mang = [m1 m2 m3 …] * Ten_mang = [a:∆:b] % Mảng kiểu cách đều.  Thí dụ: >> x = [0:2:9] x = 0 2 4 6 8
  • 133. ©Copyright 2007 MATLAB 133 MẢNG và MA TRẬN • x = linspace(x1,x2,n) % Tạo một vectơ dòng có các phẩn tử cách đều, với x1 là cận dưới, x2 là cận trên, và n là số điểm của dãy (kể cả 2 điểm x1, x2). Nếu n bị bỏ qua, giá trị mặc định của nó là 100. Thí dụ: >> z = linspace(2,8,7) z = 2 3 4 5 6 7 8
  • 134. ©Copyright 2007 MATLAB 134 MẢNG và MA TRẬN  x = logspace(a,b,n) % Sẽ tạo ra 1 vectơ dòng có n phần tử cách khoảng theo thang logarit, phần tử đầu là 10a và phần tử cuối là 10b, các phần tử giữa có dạng 10x, trong đó x là 1 điểm cách đều giữa a và b. Có (n-2) điểm như vậy. Nếu n bỏ đi trong câu lệnh thì mặc định của nó là 50. Thí dụ: >> u = logspace(-1,1,4) u = 0.1000 0.4642 2.1544 10.0000
  • 135. ©Copyright 2007 MATLAB 135 MẢNG và MA TRẬN  Các hàm liên quan đến mảng một chiều a. roots(Ten_mang) Nghiệm của một đa thức Ten_mang là một đa thức được mô tả là một mảng có các phần tử là các hệ số đa thức, bắt đầu ở bậc cao nhất. Mảng kiểu cột. b. poly(r) Trả về một mảng kiểu đòng với các phần tử là các hệ số của đa thức có nghiệm trước là các phần tử của mảng r (bài toán ngược)
  • 136. ©Copyright 2007 MATLAB 136 MẢNG và MA TRẬN c. polyval(a,x) Dùng để tính giá trị của một đa thức có các hệ số chứa trong mảng a tại các điểm thuộc mảng x. Kết quả là một mảng có kích thước bằng với mảng x. d. find(x) Trả một mảng chứa các chỉ số của các phần tử khác 0 trong mảng. e. find(x<y) Trả về một mảng chứa các chỉ số của các phần tử trong mảng x (hay y) thỏa điều kiện x < y. x có kích thước bằng y.
  • 137. ©Copyright 2007 MATLAB 137 MẢNG và MA TRẬN f. Chuyển vectơ hàng sang vectơ cột: Chuyển vị (transpose), dùng kí hiệu dấu nháy đơn ‘ bên phải vectơ (mảng một chiều) và ngược lại. Thí dụ: >> v = [3 5 9 7]’ v = 3 5 9 7
  • 138. ©Copyright 2007 MATLAB 138 MẢNG và MA TRẬN g. Kết nối các vectơ: Chúng ta có thể tạo vectơ mới bằng cách kết nối các vectơ thành phần đã biết. Thí dụ: >> x = [2,5,6]; >> y = [7,8,1]; >> z = [x,y] z = 2 5 6 7 8 1
  • 139. ©Copyright 2007 MATLAB 139 MẢNG và MA TRẬN i. Truy xuất một phần tử từ một vectơ: Chúng ta có thể truy xuất một phần tử vectơ hay trích ra một nhóm các phần tử của vectơ theo một điều kiện nào đó (phát sinh ra vectơ mới). Thí dụ: >> u = [0,2,4,6,8,10]; >> u(3) % truy xuất phần tử thứ 3 của vectơ u ans = 4 >> u(2:5) %Truy xuất phần tử thứ 2 đến thứ 5 của vectơ u ans = 2 4 6 8 >> u([1 3 5]) %Truy xuất phần tử thứ 1, thứ 3, thứ 5 của vectơ u. >> n = length(u) % Trả về số phần tử của vectơ u thuộc N. n = 6
  • 140. ©Copyright 2007 MATLAB 140 MẢNG và MA TRẬN  MẢNG 2 CHIỀU (MA TRẬN)  Một mảng trong MATLAB còn có thể có nhiều dòng, nhiều cột; một mảng 2 chiều như vậy được gọi là MA TRẬN (matrix).  Nếu một ma trận A có m dòng và n cột, ta nói kích thước A là m.n. Đôi khi ma trận A còn được viết dưới dạng [aij], trong đó i, j lần lượt là các chỉ số DÒNG và chỉ số CỘT của phần tử aij.  Hai ma trận A và B được gọi là BẰNG NHAU nếu chúng có cùng kích thước và tất cả các phần tử tương ứng đều bằng nhau (aij = bij, với mọi i, j)  Các vectơ được MATLAB xem là các mảng 2 chiều đặc biệt: Chúng có kích thước 1xn (vectơ dòng) hoặc mx1 (vectơ cột). MATLAB xếp vectơ và mà trận vào lớp double array trong WORKSPACE.
  • 141. ©Copyright 2007 MATLAB 141 MẢNG và MA TRẬN a. Cách tạo một ma trận trong MATLAB  Các phần tử thuộc cùng một dòng được phân cách nhau bởi dấu phẩy(,), còn các dòng thì phân cách nhau bằng dấu chấm phẩy (;)  Thí dụ: >> A = [2,4,6;3,5,7] A = 2 4 6 3 5 7
  • 142. ©Copyright 2007 MATLAB 142 MẢNG và MA TRẬN b. Kết nối một vectơ vào 1 ma trận: Nếu r = [-1, 0, 1] là một vectơ dòng có cùng số cột với ma trận A thì lệnh B = [A:r] sẽ nối vectơ dòng r vào ma trận A, để tạo ra ma trận B có 3 dòng, 3 cột như sau: B = 2 4 6 3 5 7 -1 0 1
  • 143. ©Copyright 2007 MATLAB 143 MẢNG và MA TRẬN c. Ma trận chuyển vị (chuyển trí):  Nếu A là một ma trận có kích thước m.n thì ma trận chuyển vị (transpose) của A là một ma trận có kích thước n.m. Các cột thứ 1, thứ 2, thứ 3… Trong AT chính là dòng thứ 1, 2, 3 trong ma trận A.  MATLAB dùng dấu nháy đơn đặt bên phải ma trận để tạo ma trận chuyển vị. Thí dụ: >> A = [1 0;-4 2] A = -1 0 -4 2 >> AT=A’ AT = 1 -4 0 2
  • 144. ©Copyright 2007 MATLAB 144 MẢNG và MA TRẬN d. Truy xuất một phần tử của ma trận (trích vectơ dòng, cột, ma trận con)  Khi tạo xong một ma trận A nào đó, phát hiện phần tử dòng 2, cột 3 bị gõ sai và chúng ta muốn sửa lại phần tử này là 6, ta chỉ cần gõ lệnh A(2,3) = 6. Trong MATLAB A(2,3) là ký hiệu chỉ phần tử dòng 2, cột 3 của ma trận.  Với một ma trận cho trước, chúng ta có thể truy xuất từng phần tử của ma trận, trích ra một vectơ dòng hoặc một vectơ cột nào đó, hoặc trích ra một ma trận con gồm nhiều dòng, nhiều cột của ma trận A.
  • 145. ©Copyright 2007 MATLAB 145 MẢNG và MA TRẬN  Thí dụ: >> A = [1,2,3,4;6,7,8,9;0,5,10,15;-3,-4,-5,-6] A = 1 2 3 4 6 7 8 9 0 5 10 15 -3 -4 -5 -6 >> A(2,3) % truy xuất phần tử dòng 2, cột 3. ans = 8 >> A(:,2) %Trích vectơ cột thứ 2 ans = 2 7 5 -4 >> A(4,:) % Trích vectơ dòng thứ 4 ans = -3 -4 -5 -6
  • 146. ©Copyright 2007 MATLAB 146 MẢNG và MA TRẬN >> A(:,2:4) % Tạo một ma trận con gồm các cột 2,3,4 của A ans = 2 3 4 7 8 9 5 10 15 -4 -5 -6 >> A(1:2,:) %Tạo 1 ma trận con gồm các dòng 1,2 của A ans = 1 2 3 4 6 7 8 9 >> A([1 3], [2 4]) % Tạo một ma trận con gồm các phần tử thuộc dòng 1,3 và cột 2,4.
  • 147. ©Copyright 2007 MATLAB 147 MẢNG và MA TRẬN  Tóm tắt:  A(k,:) : Véctơ dòng thứ k.  A (:,l): Vectơ cột thứ l.  A(k:m,:): Ma trận con có dòng thứ k, cột thứ m  A([array1], [array2]): Vectơ dòng để ghi số dòng nào, cột nào cần trích ra.
  • 148. ©Copyright 2007 MATLAB 148 MẢNG và MA TRẬN  Mảng trống hoặc mảng không (empty or null array)  MATLAB dùng kí hiệu [ ] để chỉ 1 mảng trống là mảng không có phần tử nào cả. Các hàng hoặc các cột của một ma trận có thể được bỏ đi, bằng cách gán chúng bằng với mảng trống.  Thí dụ: A(2,:) = [ ], sẽ bỏ dòng thứ 2 của ma trận A và như vậy sẽ làm thay đổi kích thước của ma trận A ban đầu.
  • 149. ©Copyright 2007 MATLAB 149 MẢNG và MA TRẬN Thí dụ: >> A A = 1 2 3 4 5 6 7 8 0 5 10 15 -3 -4 -5 -6 >> A(2,:) = [ ]; % Bỏ dòng thứ 2 của ma trận A >> A A = 1 2 3 4 0 5 10 15 -3 -4 -5 -6
  • 150. ©Copyright 2007 MATLAB 150 MẢNG và MA TRẬN Thí dụ: >> A A = 1 2 3 4 0 5 10 15 -3 -4 -5 -6 >> A(:,4) = [ ]; % Bỏ tiếp cột thứ 4 >> A A = 1 2 3 0 5 10 -3 -4 -5
  • 151. ©Copyright 2007 MATLAB 151 MẢNG và MA TRẬN  Các ma trận đặc biệt  M = eye(n): tạo ra ma trận đơn vị cấp n  M = ones(m,n): Tạo ra ma trận có size = m.n, có các phần tử đều bằng 1.  M = zeros(m,n): Tạo ra ma trận có size = m.n, có các phần tử đều bằng 0.  M = zeros(n); M = ones(n): Tạo ra ma trận vuông M cấp n có tất cả các phần tử đều bằng o hoặc bằng 1.
  • 152. ©Copyright 2007 MATLAB 152 CÁC PHÉP TOÁN MA TRẬN  Phép cộng trừ  A+B  A-B % A và B là 2 ma trận có cùng kích thước, hoặc 1 trong hai là đại lượng vô hướng.  Phép nhân  A*B %Tích hai ma trận. Số cột của A bằng số hàng của B.  A.*B % Nhân từng phần tử của A với từng phần tử của B tương ứng. A và B có cùng kích thước.
  • 153. ©Copyright 2007 MATLAB 153 CÁC PHÉP TOÁN MA TRẬN  Phép chia:  AB % Chia trái ma trận.  A.B % Chia trái mảng  A/B % Chia phải ma trận  A./B %Chia phải mảng  Phép lũy thừa:  A^k % Lũy thừa ma trận A bậc k. Lưu ý: Lỗi sẽ phát sinh nếu cả A và k đều là ma trận.  A.^B % Lũy thừa mảng. Là một ma trận mà các số hạng là A(i,j)^B(i,j)
  • 154. ©Copyright 2007 MATLAB 154 CÁC PHÉP TOÁN MA TRẬN  Ma trận chuyển vị:  A’  Ma trận nghịch đảo  inv(a) % Tương đương kí hiệu A-1  Định thức ma trận  det(A) % A phải là ma trận vuông  Phép quay ma trận  Rot90(A,n) % Các phần tử của ma trận được quay đi một góc 90o theo ngược chiều kim đồng hồ. A là ma trận vuông, n số lần quay.  Phép đảo ma trận  Fliplr(A) %đảo các phần tử của A từ trái sang phải.  Flipud(A) %đảo các phần tử của A từ trên xuống dưới
  • 155. ©Copyright 2007 MATLAB 155 HỆ PHƯƠNG TRÌNH ĐẠI SỐ TUYẾN TÍNH  Phương pháp nghịch đảo ma trận  Inv(A)  Invhilb(n):  pinv(A): Tính giả nghịch đảo ma trận nxm với m ≠ n.  Phương pháp khử Gauss  rref([A f])  Phương pháp khử Gauss-Jordan  Phương pháp phân rã ma trận LU  lu(A)  Cú pháp: [L, U, P]=lu(A) − trả về ma trận tam giác dưới L, tam giác trên U và ma trận hoán đổi P (ma trận đơn vị mà các cột bị hoán chuyển). Ta có, L*U = P*A => X = U(Lb)
  • 156. ©Copyright 2007 MATLAB 156 HỆ PHƯƠNG TRÌNH ĐẠI SỐ TUYẾN TÍNH  Phương pháp phân rã ma trận LU − lu(A) − Cú pháp: [L, U, P]=lu(A)  Trả về ma trận tam giác dưới L, tam giác trên U và ma trận hoán đổi P (ma trận đơn vị mà các cột bị hoán chuyển). Ta có, L*U = P*A => X = U(Lb)  Trả về ma trận tam giác trên U, còn ma trận LP’=L*P. Ta có, LP*U = A => X = U (LPb)
  • 157. ©Copyright 2007 MATLAB 157 TẠO GIAO DIỆN  Bài thí nghiệm này trang bị cho sinh viên một số kiến thức cơ bản để xây dựng giao diện người dùng trong môi trường Matlab, nhằm hoàn thiện một chương trình ứng dụng nhất định.  Cũng như các ngôn ngữ cấp cao khác, Matlab hổ trợ nhiều công cụ chức năng cho phép lập trình tạo giao diện sử dụng đẹp và nhanh chóng. Thí dụ, các dạng nút ấn, cửa sổ soạn thảo, các dạng menu, …
  • 158. ©Copyright 2007 MATLAB 158 TẠO GIAO DIỆN Các công cụ hổ trợ giao diện
  • 159. ©Copyright 2007 MATLAB 159 TẠO GIAO DIỆN  Để tạo GIAO DIỆN dùng công cụ GUIDE của MATLAB >> guide Hoặc File/Show GUI layout tool. Cửa sổ Guide Control Panel xuất hiện. Từ cửa sổ này có thể truy xuất đến các cửa sổ khác. Có thể chọn các mẫu giao diện có sẵn hay bấm OK để chọn GUI trống.
  • 160. ©Copyright 2007 MATLAB 160 TẠO GIAO DIỆN (tt)  Cửa sổ biên soạn GUI hiện ra Vùng bên trái chứa danh sách các thành phần đối tượng, vùng có ô lưới là vùng hiển thị, nơi đặt các component, bạn bấm chuột trái vào các component muốn tạo, sau đó đưa con chuột ra vùng layout nơi muốn đặt component, bấm chuột trái dùng kích thước component. Muốn thay đổi kích chuột phải vào vùng layout, vào menu chọn thuộc tính bấm chuột trái, cửa sổ sau xuất hiện, vào BackGroundColor chọn màu nền thích hợp. Cửa sổ thuộc tính
  • 161. ©Copyright 2007 MATLAB 161 TẠO GIAO DIỆN (tt)  Nếu muốn mở file.fig có sẵn, ta có thể chọn ngay từ cửa sổ lệnh >> guide ten_file.fig Hay vào menu File rồi chọn Open. Hay Ctrl + O
  • 162. ©Copyright 2007 MATLAB 162 TẠO GIAO DIỆN (tt)  Align Objects (căn lề các đối tượng)  Tools/Align Objects…/
  • 163. ©Copyright 2007 MATLAB 163 TẠO GIAO DIỆN (tt)  Bấm kép chuột component trong vùng layout để soạn tính chất của component, Thí dụ bấm kép vào Push Buton sẽ hiện ra cửa sổ Property Inspector hoặc cũng có thể bấm chuột phải để hiện ra Context Menu (hình bên), sau đó bấm Property Inspector. Mỗi component là mỗi Object được điều khiển bởi uicontrol (User Interface Control)
  • 164. ©Copyright 2007 MATLAB 164 TẠO GIAO DIỆN (tt)  Các component mà GUI cho phép là:  Axes: vẽ hệ trục  Check box: là hộp kiểm tra cho phép đưa vào các chọn lựa khi bấm chuột vào đó.  Edit text: Là hộp văn bản đưa chuỗi kí tự vào đó.  Frame: Khung bao một cửa sổ hình.  List box: Gồm một bảng các mục để chọn lựa  Pop-up menu: Menu sổ xuống trình bày một bảng các chọn lựa khi bấm chuột vào.  Push button: Tương tự Checkbox nhưng chỉ chọn được một,  Radio button: (nút bật) giống push button nhưng có hiển thị trạng thái thay đổi mỗi khi nhấn.  Popup Menu: Tạo menu.
  • 165. ©Copyright 2007 MATLAB 165 TẠO GIAO DIỆN (tt)  Một số component sẽ gây ra hành động khi tác động vào nó bằng cách goi một hàm M mà người dùng phải soạn thảo. Sau khi đã biên tập các thuộc tính và gọi hàm, có thể cất figure và file áp dụng M đi kèm bằng cách vào menu File-Save hay File-Save as và đánh tên file.  Muốn chạy chương trình gọi ten_file.m (hoặc dùng các lệnh openfig, open, hgfile.fig), file này sẽ khởi động file ten_file.fig và xuất hiện cửa sổ hình ảnh ten_file.fig mà ta sẽ thao tác trên các component đã soạn thảo.
  • 166. ©Copyright 2007 MATLAB 166 TẠO GIAO DIỆN (tt)  Tool – GUI Options để chọn các option cho giao diện Các chọn lựa cho GUI
  • 167. ©Copyright 2007 MATLAB 167 TẠO GIAO DIỆN (tt)  Resize behavior có 3 lựa chọn:  Non-resizable: không thay đổi kích thước cửa FIG (mặc định).  Proportional: Người dùng có thể điều chỉnh kích thước cửa sổ và các component trong đó sẽ tự điều chỉnh phù hợp  Other: Dùng hàm ResizeFcn để điều chỉnh.  Ô Command-Line accessibility có các lựa chọn:  Off: Các lệnh đánh sau dâu >> không tác động đến cửa sổ FIG.  On: Các dòng lệnh tác động đến cửa sổ FIG, GUI là current figure  Callback: GUI là current fugure đối với các lệnh callback  Other: Phụ thuộc cửa sổ Property Inspector (thuộc tính HandleVisibility và IntegerHandle)
  • 168. ©Copyright 2007 MATLAB 168 TẠO GIAO DIỆN (tt)  XÂY DỰNG GIAO DIỆN StartStart Xác định công việcXác định công việc Draw GUIDraw GUI TEST DESIGNTEST DESIGN Viết codeViết code Test codeTest code StopStop
  • 169. ©Copyright 2007 MATLAB 169 TẠO GIAO DIỆN (tt)  Sau khi xác định được hình dáng của giao diện, dùng chuột kéo các đối tượng cần sử dụng sang figure, sắp xếp theo đúng ý tưởng thiết kế.  Thay đổi các thuộc tính của đối tượng.  Viết chương trình callback.  Chuyển sang chế độ active để thử chương trình.  Thí dụ 1: Tạo giao diện để giải và vẽ đồ thị phương trình bậc 2. Giao diện gồm có 5 text, 5 edit, 2 push, 1check, 1 axes.
  • 170. ©Copyright 2007 MATLAB 170 TẠO GIAO DIỆN (tt)  Bài tập:  XÂY DỰNG GIAO DIỆN EditA EditB EditC EditX1 EditX2 Tag a. Control b. Active Giao diện ở chế độ thiết kế và thực thi
  • 171. ©Copyright 2007 MATLAB 171 TẠO GIAO DIỆN (tt)  Thí dụ 2: xây dựng một giao diện đơn giản sau
  • 172. ©Copyright 2007 MATLAB 172 TẠO GIAO DIỆN (tt)  Tạo cửa sổ chính figure – ‘Welcome to User Interface’s Giude’ theo cách sau:  Mở Matlab Editor  Nhập nội dung sau: % User Interface's Guide % Matlab Experiments 2003 % TcAD, CIT, Cantho University % ---------------------------------------------------------------------------------- % Initialize whole figure... namefig = 'Welcome to User Interface''s Guide'; figpos = get(0,'DefaultFigurePosition'); % lay vi tri mac nhien figpos(1)= figpos(1)-10; figpos(2)= figpos(2)-10; figpos(3)= figpos(3)+10; figpos(4)= figpos(4)+10; % Tao figure fig=figure( ... 'Name', namefig, ... 'NumberTitle','off', ... 'Position',figpos);
  • 173. ©Copyright 2007 MATLAB 173 TẠO GIAO DIỆN (tt)  Lưu thành file giaodien.m >>giaodien <Enter> % thi hanh >>set(fig) % xem thuộc tính của figure trong cửa sổ lệnh  Quan sát kết quả trên hình sau (Lưu ý các thuộc tính: Name, Position)
  • 174. ©Copyright 2007 MATLAB 174 TẠO GIAO DIỆN (tt)  Thêm vào figure một axes cho phép hiển thị đồ họa:  Nhập tiếp nội dung sau vào file giaodien.m % ---------------------------------------------------------------------------- % main axes axs=axes('Position',[0.05 0.4 0.65 0.55]);  Lưu và thi hành file này.
  • 175. ©Copyright 2007 MATLAB 175 TẠO GIAO DIỆN (tt)  Hiển thị dòng ‘Matlab Experiments’ bên dưới axes: Nhập tiếp nội dung sau vào file giaodien.m % ------------------------------------------- % text txtpos=[10 50 425 50]; txt=uicontrol(... 'Style','text',... 'BackgroundColor',[0.8 0.8 0.8],... 'ForegroundColor',[0.4 0.5 0.3],... 'String','Matlab Experiments',... 'Position',txtpos,... 'Fontname','Courier',... 'FontWeight','Bold',... 'FontSize',26);
  • 176. ©Copyright 2007 MATLAB 176 TẠO GIAO DIỆN (tt)  Lưu và thi hành file này.
  • 177. ©Copyright 2007 MATLAB 177 TẠO GIAO DIỆN (tt)  Tạo một frame có shadow bên phải figure để đặt các nút chức năng. Nhập tiếp nội dung sau vào file giaodien.m % ---------------------------------------------- % Console frames p1=0.755; p2=0.05; p3=0.2; p4=0.90; frm1pos = [p1 p2 p3 p4]; frm2pos = [p1-0.005 p2+0.005 p3 p4]; % shadow frame frm1=uicontrol( ... 'Style','frame', ... 'Units','normalized', ... 'Position',frm1pos, ... 'ForegroundColor',[0.4 0.4 0.4],... 'BackgroundColor',[0.4 0.4 0.4]); % main frame frm2=uicontrol( ... 'Style','frame', ... 'Units','normalized', ... 'Position',frm2pos, ... 'ForegroundColor',[0.7 0.7 0.7],... 'BackgroundColor',[0.65 0.65 0.65]);
  • 178. ©Copyright 2007 MATLAB 178 TẠO GIAO DIỆN (tt)  Lưu và thi hành file này.
  • 179. ©Copyright 2007 MATLAB 179 TẠO GIAO DIỆN (tt)  Tạo nút ‘Close’ có chức năng đóng cửa sổ figure hiện hành:  Nhập tiếp nội dung sau vào file giaodien.m % ------------------------------------------------------------ % Close button closeHndl=uicontrol(... 'Style','pushbutton', ... 'Units','normalized', ... 'Position',[p1+0.01 p2+0.05 p3-0.025 0.05], ... 'String','Close', ... 'Foregroundcolor','b',... 'Fontsize',9,... 'Callback','close');  Lưu và thi hành file này.
  • 180. ©Copyright 2007 MATLAB 180 TẠO GIAO DIỆN (tt)  Vấn đề quan trọng nhất đối với một nút chức năng là thi hành công việc tương ứng khi người sử dụng thao tác. Thuộc tính ‘CallBack’ cho phép: thi hành một lệnh của Matlab dưới dạng chuỗi (bao gồm lệnh gọi hàm, script file, biểu thức toán, …). Sinh viên thử thay lệnh close bằng một lệnh khác, chẳng hạn demos và quan sát đáp ứng.  Tạo nút Sphere để vẽ một hình cầu 3D:  Nhập tiếp nội dung sau vào file giaodien.m
  • 182. ©Copyright 2007 MATLAB 182 TẠO GIAO DIỆN (tt)  Lưu và thi hành file này.
  • 183. ©Copyright 2007 MATLAB 183 TẠO GIAO DIỆN (tt)  Tạo nút Picture để hiển thị ảnh màu:  Nhập tiếp nội dung sau vào file giaodien.m % -------------------------------------------------------------- % Picture button pic=uicontrol( ... 'Style','pushbutton', ... 'Units','normalized', ... 'Position',[p1+0.01 p4-0.125 p3-0.025 0.05], ... 'String','Picture', ... 'Foregroundcolor','b',... 'Fontsize',9,... 'Callback',['imshow(imread(''flowers.tif''))']);
  • 184. ©Copyright 2007 MATLAB 184 TẠO GIAO DIỆN (tt)  Lưu và thi hành file này.
  • 185. ©Copyright 2007 MATLAB 185 TẠO GIAO DIỆN (tt)  Sinh viên lưu ý cách biểu diễn nhiều lệnh ở dạng chuỗi cho ‘CallBack’. Trong trường hợp có quá nhiều lệnh phục vụ chức năng này, ta nên đưa chúng vào một script file hoặc một hàm khác. Ngoài ra, nếu ta tạo giao diện dưới dạng một hàm (function) thì thuộc tính ‘CallBack’ cho phép gọi một hàm con được viết ngay trong file này.
  • 186. ©Copyright 2007 MATLAB 186 TẠO GIAO DIỆN (tt)  Sinh viên hãy tạo thêm nút ‘About’ sao cho khi người sử dụng ấn nút sẽ mở cửa sổ mới nằm ngay giữa màn hình
  • 187. ©Copyright 2007 MATLAB 187 BÀI TẬP 1  Cho hai ma trận: 1 2 1 0 A = ; B = 3 4 0 1 Dùng MATLAB để tính các biểu thức sau: C = A + B; D = A – B; E = A*B; F = B*A; G = A.*B; H = B.*A; I = AB; J = A.B; K = A/B; L = A./B; M = A.^B; N = A^2,0; O = 2,0.^A
  • 188. ©Copyright 2007 MATLAB 188 BÀI TẬP 2  Cho vectơ hàng A = [4 5 6] và B = [1 2 3]  Dùng MATLAB để tính các biểu thức sau: C = A+B; D = A – B; E = A*B; F = B*A;  Cho ma trận A = [4 5 6;2 0 5;1 3 4 ] và B = [1 0 0] Dùng MATLAB tính các biểu thức sau: C =3*A; D = A*3; E = A.*3; F = 3.^A; G = A/5; H = A./5; I = A5; J = A.5
  • 189. ©Copyright 2007 MATLAB 189 BÀI TẬP 3. Viết chương trình giải phương trình bậc n và vẽ đồ thị của hàm theo 2 phương pháp nhập biến: nhập khi gọi hàm và nhập bằng câu lệnh input. So sanh ưu nhược điểm khi dùng hai phương pháp này. 4. Viết chương trình cho phép chọn kiểu vẽ 2D (plot), 3D (mesh) để vẽ đồ thị của hàm một biến và hai biến bất kỳ. Người sử dụng sẽ phải cung cấp kiểu vẽ, hàm số và khoảng giá trị của biến cần vẽ. Nếu kiểu vẽ là 2D và hàm hai biến, yêu cầu nhập lai cho đúng. 5. Viết chương trình giải phương trình hoặc hệ phương trình bằng biến symbolic. Người sử dụng sẽ chọn lựa giải phương trình hoặc giải hệ phương trình. Nếu giải hệ phải cung cấp số phương trình.
  • 190. ©Copyright 2007 MATLAB 190 BÀI TẬP 6. Viết chương trình tìm đạo hàm và tích phân của một hàm và vẽ đồ thị của hàm, vi phân, tích phân của hàm trên cùng một đồ thị. Người sử dụng có thể chọn biến của hàm. Người sử dụng có thể nhập khoảng giá trị biến cần vẽ hoặc không. 7. Viết chương trình giải phương trình vi phân. 8. Làm lại bài 2 với biến symbolic
  • 191. ©Copyright 2007 MATLAB 191 BÀI TẬP (tt) 9. Tạo giao diện như hình vẽ. Nhập các thông số a, b, c , d. Nhấn ‘Vẽ’, vẽ đồ thị. Nhấn ‘Giải nghiệm’, thì xuất nghiệm ở x1, x2, x3. Khi chọn ‘PTB2’ thì các ô d và x3 ở chế độ enable off.
  • 192. ©Copyright 2007 MATLAB 192 BÀI TẬP (tt) 10. Tạo giao diện như ở hình dưới. Người sử dụng nhập hàm cần vẽ vào ô edit, sau đó chọn lực kiểu vẽ, colormap.