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
Trang 1BÀ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
MATLAB
Trang 3CÁC VẤN ĐỀ NÂNG CAO TRONG MATLAB
Ma trận và đại số tuyến tính
Vấn đề tạo giao diện
Trang 4TỔ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.
Trang 5Sứ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
Trang 7Cá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
Trang 8Cá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 MATLAB701\work ( 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.
Trang 9Các khái niệm cơ bản
Một số lệnh hệ thống
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
Trang 10Các khái niệm cơ bản (tt)
• 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
Trang 11Các khái niệm cơ bản (tt)
Trang 12Các khái niệm cơ bản (tt)
Toán tử logic
• any True nếu mọi phần tử của vector
khác không
không
Trang 13Các khái niệm cơ bản (tt)
Trang 14Các khái niệm cơ bản (tt)
ctranspose(‘ ) Chuyển vị số phức liên hợp
horzcat [, ] Ghép chuỗi theo chiều ngang
Trang 15Cá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ự
Trang 16BIẾN (tt)
Một số biến được đĩnh nghĩa trước:
Warning: Divide by zero.
(Type "warning off MATLAB:divideByZero" to suppress this warning.)
ans = Inf
Warning: Divide by zero.
(Type "warning off MATLAB:divideByZero" to suppress this warning.)
ans = NaN
ans = 2.2204e-016
Trang 17Một số biến được định nghĩa trước (tt)
Ý
Trang 19>>size(A,1) ans = 2
Trang 20>> b = ‘MATLAB’
b = Matlab
Ta nói, a, b là các biến môi trường.
Trang 21BIẾ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
Trang 22BIẾ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
Trang 23BIẾ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
Trang 24BIẾ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
Trang 25BIẾN (tt)
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, …)
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
k = sym(‘p’,’positive’): Tạo biến symbolic k là biến thực,
dương.
Trang 262/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 >
Trang 27>> v = subs(u,{x,y},{3,4})
% Tính giá trị biểu thức khi x = 3; y = 4;
v = 5
>> syms
Trang 30− Để 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
Trang 31BIẾN (tt)
Nạp biến:
Workspace để dùng lại
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>
File ở cửa sổ lệnh chọn <Sace Workspace As>
Trang 32Câu chú thích
(%) đều là câu giải thích
Thí dụ:
heso_a =10
>> heso_b = 20 % Hệ số b ptb2heso_b =
20
Trang 33 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
Trang 34>> 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
Trang 35Mộ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
Trang 36Mộ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ũ e x
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.
Trang 37Một số hàm toán cơ bản
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)
Trang 38Mộ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
Trang 39Cá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.
Trang 40Hàm ĐA THỨC (tt)
Giải: Ta biểu diễn đa thức x4 + 10x 3 + 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];
>> R = roots(a)
R = -10.1971 0.5291 -0.1660 + 0.3972i -0.1660-0.3972i
Trang 42Hà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
Trang 45CÁC LỆNH ĐIỀU KIỆN VÀ LẶP
Lệnh if else elseif
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>
<Các lệnh>
end
Trang 47if (rem(nam,4)~=0) y=28
else y=29 end else y=31
Trang 50khi 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.
liệu trong chính môi trường MATLAB mà không cần đến môi trường windows
Trang 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
w White : Dotted line
k Black -. Dash-dot line
Dased line
Trang 52ĐỒ HỌA CĂN BẢN (tt)
Các kiểu data marker Ký hiệu trong plot
Vòng tròn (circle o) o (chữ o thường) Dấu cộng (plus sign + ) +
Hình vuông (square ) s
Trang 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’, [x x y y ]
Trang 54ĐỒ HỌA CĂN BẢN – Plot() (tt)
>>title(‘y = sin(x)’) % đặt tên đồ thị
>>grid on % Tạo lưới cho đồ thị
Trang 55ĐỒ HỌA CĂN BẢN – Plot() (tt)
Trang 56ĐỒ HỌA CĂN BẢN – Plot() (tt)
Để vẽ hai đồ thị trên cùng một trục tọa độ
Trang 57ĐỒ HỌA CĂN BẢN – Plot() (tt)
>> legend(‘y = sin(x)’,’z=cos(x)’)
Trang 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”
Trang 59ĐỒ HỌA CĂN BẢN (tt)
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))
Trang 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' )
Trang 61ĐỒ HỌA CĂN BẢN (tt)
>> f=' cos(tan(x))-tan(sin(x)) ';
>> fplot (f,[ 1 2 ])
Trang 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.
Trang 65ĐỒ HỌA CĂN BẢN (tt)
Thí dụ lệnh loglog(x,y)
>> x = logspace(-1,2);
>> loglog (x,exp(x))
Trang 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)
Trang 69Thí dụ-Lệnh quiver
Giả sử ta có một trường vector như sau trong không gian R 2 :
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:
Trang 70Thí 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:
Trang 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ỏ.
Trang 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
Trang 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 ’)
Trang 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’)
Trang 78ĐỒ HỌA CĂN BẢN (tt)
Kiến tạo hệ trục tọa độ
Axis([x min x max y min y max ])
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: [x
min x max y min y max ]
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
Trang 79Axissquare 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.
Trang 81ĐỒ HỌA TRONG KHÔNG GIAN 3 CHIỀU
plot3: Vẽ đường thẳng và điểm trong không gian 3
chiềuThí dụ:
Vẽ đường cong tham số:
x =e-0.05tsint
y =e-0.05tcost
z = t [0,10]
Trang 82ĐỒ HỌA TRONG KHÔNG GIAN 3 CHIỀU (tt)
Trang 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ứcclabel: Nhãn