Giáo trình Matlab Căn bản

LẬP TRÌNH VỚI MATLAB

MATLABcho phép người dùng lập trình theo hai loại : scriptsvà function

SCRIPTS:Là hình thức đơn giản nhất của M-file bởi vì nó không có thông số

vào và ra. Chúng là một tập hợp các lệnh và các hàm của MATLAB. Scripts hoạt

động dựa vào đối tượng tồn tạitrong Workspace. Tất cả cácbiến tạo ra trong scripts

đều có thể sử dụng sau khi scripts kết thúc.

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

Các file đính kèm theo tài liệu này:

  • pdfmatlab_canban_7106.pdf
Tài liệu liên quan