Bài giảng điện tử Matlab

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

 

ppt192 trang | Chia sẻ: netpro | Lượt xem: 33097 | Lượt tải: 1download
Bạn đang xem trước 20 trang tài liệu Bài giảng điện tử Matlab, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
er value’); end ĐỒ 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. ĐỒ HỌA CĂN BẢN (tt) Màu sắc và kiểu đường vẽ ĐỒ HỌA CĂN BẢN (tt) ĐỒ 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] ĐỒ 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ị ĐỒ HỌA CĂN BẢN – Plot() (tt) ĐỒ 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ị ĐỒ HỌA CĂN BẢN – Plot() (tt) >>legend(‘y = sin(x)’,’z=cos(x)’) ĐỒ 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 ĐỒ 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)) ĐỒ 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') ĐỒ 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]) ĐỒ 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. ĐỒ 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-') ĐỒ 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 = 2\t'); ĐỒ HỌA CĂN BẢN (tt) Thí dụ lệnh loglog(x,y) >> x = logspace(-1,2); >> loglog(x,exp(x)) ĐỒ 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() ĐỒ 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 ĐỒ 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) 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: 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: ĐỒ HỌA CĂN BẢN (tt) Các lệnh thao tác và điều khiển ĐỒ 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ỏ. ĐỒ 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) ĐỒ 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 ĐỒ 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) ĐỒ 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’) ĐỒ 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ụ: >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 ĐỒ 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.05tsint y =e-0.05tcost z = t [0,10] ĐỒ 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; ĐỒ 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 ĐỒ 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. ĐỒ 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. ĐỒ 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. ĐỒ 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'). ĐỒ 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’) Thí dụ lệnh MESHZ >> meshz(X,Y,Z) Thí dụ lệnh MESHC >> Meshc(X,Y,Z) Thí dụ lệnh WATERFALL >> waterfall(X,Y,Z) Thí dụ lệnh SURF >> surf(X,Y,Z) Thí dụ lệnh SURFC >> surfc(X,Y,Z) Thí dụ lệnh SURFNORM >> surfnorm(X,Y,Z) Thí dụ lệnh CONTOUR >> contour(X,Y,Z) ĐỒ HỌA TRONG KHÔNG GIAN 3 CHIỀU (tt) CÁC LỆNH QUAN SÁT View Rot90 Slice Colormap colorbar ĐỒ 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. ĐỒ 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) ĐỒ 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 ] ĐỒ 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]) ĐỒ 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 ĐỒ HỌA TRONG KHÔNG GIAN 3 CHIỀU (tt) ĐỒ 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. ĐỒ 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ổ Sau đó trở lại cửa sổ mà ta muốn chèn và nó vào một nơi ta mong muốn. 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ì Để 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: 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 … 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) 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 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 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’); M-FILE, or SCRIPT (tt) Giải PTB2 bằng M-FILE M-FILE, or SCRIPT (tt) >> ptb2 Nhap a = 1 Nhap b = -2 Nhap c = 1 Nghiem cua phuong trinh bac 2: 1 1 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) 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ả. 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. M-FILE, or SCRIPT (tt) Trong cửa sổ Editor/Debugger, ta soạn các dòng lệnh như sau: 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ự). 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) 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 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) Toolbox Symbolic Định nghĩa biểu thức symbolic Biểu thức Trong MATLAB ‘1/(2*x^n)’ M = sym(‘[a,b;c,d]’) f = int(‘x^3/sqrt(1-x)’,’a’,’b’) 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] 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 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) Toolbox Symbolic Toolbox Symbolic 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 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 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: SIMULINK Lấy một khối từ thư viện 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. 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 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 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 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) 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> v = [3 5 9 7]’ v = 3 5 9 7 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 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 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. 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 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 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 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. 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 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. 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. 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

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

  • ppt06 MATLAB.ppt
Tài liệu liên quan