Tài liệu MAT LAB cơ bản

26 635 1
Tài liệu MAT LAB cơ bản

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Tài liệu MAT LAB cơ bản

Chương 1: MATLAB Ð1 Khởi động MATLAB Khởi động MATLAB: MATLAB (Matrix laboratory) phần mềm dùng để giải loạt toán kĩ thuật, đặc biệt toán liên quan đến ma trận.MATLAB cung cấp toolboxes, tức hàm mở rộng môi trường MATLAB để giải vấn đề đặc biệt xử lí tín hiệu số, hệ thống điều khiển,mạng neuron, fuzzy logic, mô v.v Ðể khởi động MATLAB ta nhấn đúp vào icon hình 2.Ðánh lệnh cửa sổ lệnh : Khi ta đánh lệnh vào cửa sổ lệnh, thi hành kết lên hình Nếu ta khơng muốn cho kết lên hình sau lệnh ta đặt thêm dấu ; Nếu lệnh q dài, khơng vừa dịng dịng đánh lệnh nhiều dòng cuối dòng đặt thêm dấu xuống dòng Khi soạn thảo lệnh ta dùng phím tắt : ( Ctrl-P gọi lại lệnh trước ( Ctrl-N gọi lệnh sau ( Ctrl-B lùi lại kí tự ( Ctrl-F tiến lên kí tự Ctrl-( Ctrl-R sang phải từ Ctrl-( Crtl-L sang phải từ home Ctrl-A đầu dòng end Ctrl-E cuối dịng esc Ctrl-U xố dịng del Ctrl-D xố kí tự chỗ nháy đứng backspace Ctrl-H xố kí tự trước chỗ nháy đứng Set path:Khi chạy chương trình MATLAB thư mục khác thư mục hiện hành ta phải đổi thư mục lệnh File | Set Path Help Demo: Phần giúp hiểu biết hàm, lệnh MATLAB chạy thử chương trình demo Ð2 Các ma trận Các tốn tử: MATLAB khơng địi hỏi phải khai báo biến trước dùng MATLAB phân biệt chữ hoa chữ thường MATLAB sử dụng số thập phân Các toán tử : + , - , * , / , \ (chia trái) , ^ (mũ) , (chuyển vị hay số phức liên hiệp) x = 2+3 a=5 b=2 a/b a\b Các toán tử quan hệ :< , , >= , == , ~= Các toán tử logic : & , | (or) , ~ (not) Các : pi 3.14159265 i số ảo j tương tự i eps sai số 2-52 realmin số thực nhỏ 2-1022 realmax số thực lớn 21023 inf NaN vô lớn Not a number Các ma trận : a Nhập ma trận : Ma trận mảng số liệu có m hàng n cột Trường hợp ma trận có phần tử(ma trận 1-1) ta có số.Ma trận có cột gọi vectơ Ta nhập ma trận vào MATLAB nhiều cách: ( nhập danh sách phần tử từ bàn phím ( nạp ma trận từ file số liệu ( tạo ma trận nhờ hàm có sẵn MATLAB ( tạo ma trận nhờ hàm tự tạo Khi nhập ma trận từ bàn phím ta phải tuân theo quy định sau : ( ngăn cách phần tử ma trận dấu , hay dấu trống ( dùng dấu ; để kết thúc hàng ( bao phần tử ma trận cặp dấu ngoặc vng [ ] Ví dụ : Ta nhập ma trận A = [ 16 13 ; 10 11 ; 12 ; 15 14 1] Bây ta đánh lệnh: sum(A) ans = 34 34 34 34 nghĩa lấy tổng cột MATLAB viết để việc với cột Khi ta khơng biến chứa kết MATLAB dùng biến mặc định ans, viết tắt answer Muốn lấy tổng hàng ta cần chuyển vị ma trận cách đánh vào lệnh : A’ ans = 16 10 15 11 14 13 12 chuyển vị ma trận A Ma trận a = [] ma trận rỗng b Chỉ số : Phần tử hàng i cột j ma trận có kí hiệu A(i,j) Tuy nhiên ta tham chiếu tới phần tử mảng nhờ số, ví d A(k) Cỏch thờng dùng để tham chiếu vec tơ hàng hay cột Trong trờng hợp ma trận đầy đủ đợc xem ma trận cột dài tạo từ cột ma trận ban đầu Nh viết A(8) có nghĩa tham chiếu phần tư A(4, 2) c To¸n tư “:” : To¸n tư : toán tử quan trọng MATLAB Nó xuất nhiều dạng khác Biểu thức 1:10 vec tơ hàng chứa 10 số nguyên từ ®Õn 10 ans = 10 100:-7:50 t¹o mét d·y sè từ 100 đến 51, giảm lần ans = 100 93 86 79 72 65 58 51 0: pi/4: pi tạo dÃy số từ đến pi, cách pi/4 ans = 0.7854 1.5708 2.3562 3.1416 C¸c biĨu thøc chØ sè tham chiÕu tíi mét phần ma trận.Viết A(1:k,j) tham chiếu đến k phần tử cột j Ngoài toán tử :tham chiếu tới tất phần tử mét hµng hay mét cét A(:,3) ans = 11 14 vµ A(3, :) ans = 12 ViÕt B = A(:, [1 4]) sÏ tạo ma trận B từ ma trận A cách ®ỉi thø tù c¸c cét tõ [1 4] thµnh [ ] B= 16 13 11 10 12 14 15 Ví dụ: Cho điện trở 104 , 2ì104 , 3.5ì104 ,105 , 2ì105 Điện áp chúng lần lợt 120, 80, 110, 220, 350 V Tìm dòng điện công suất tiêu tán điện trở r = [ 10000, 20000, 35000, 100000, 200000]; u = [ 120, 80, 110, 200, 350]; i = v./r cs = v.^2/r VÝ dô: Mét nguån điện có điện áp u, điện trở r1 tải có điện trở r2 Tìm quan hệ điện trở để công suất tải max Dòng điện qua mạch : u i= r1 + r2 Công suất tải là: u r2 p = i r2 = ( r1 + r2 ) Muốn công suất đa phụ tải cực đại thì: r2 k= ( r1 + r2 ) phải đạt giá trị cực đại Vấn đề phải chọn giá trị điện trở r1 r2 k max Giả sử ta có giá trị cã cđa r2 lµ 10, 15, 20, 25 vµ 30Ω r1 10,15,20 25 Do có giá trị tải giá trị điện trở nguồn nên có tới 20 tổ hợp có thĨ Ta lËp ma trËn dïng ma trËn ®Ĩ tÝnh: a = [10; 15; 12; 25; 30]; r2 = [a, a, a, a]; b = [10, 15, 20 ,25]; r1 = [b; b; b ;b; b]; k = r2./((r1+r2).^2); Mỗi cột k tơng ng với giá trị r1 Ví dụ giá trị 0.0163 hàng cột k tơng ứng với giá trị thứ hai r1 = 15 gí trị thứ r2 = 20 Nh với giá trị r1 = 15 ta cã thĨ xem ë cét t−¬ng ứng k cột xem giá trị k max Giá trị 0.0167 hàng tơng ứng với r1 = 15 Nghĩa với r1 = 15 r2 phải 15 MATLAB lµm viƯc nµy nh− sau: [max,hang] = max(r); max = 0.025 0.0167 0.0125 0.0100 hang = Nh cột tơng ứng hàng 1,cột hàng v.v d.Tạo ma trận hàm có sẵn : MATLAB cung cấp số hàm để tạo ma trận bản: zeros tạo ma trận mà phần tử zeros z = zeros(2, 4) z= 0 0 0 0 ones t¹o ma trận mà phần tử x = ones(2, 3) x= 1 1 1 y = 5*ones(2, 2) y= 5 5 rand tạo ma trận mà phần tử ngẫu nhiên phân bố d=rand(4, 4) d= 0.9501 0.8913 0.8214 0.9218 0.2311 0.7621 0.4447 0.7382 0.6068 0.4565 0.6154 0.1763 0.4860 0.0185 0.7919 0.4057 randn tạo ma trận mà phần tử ngẫu nhiên phân bố trực giao e = randn(3, 3) e= - 0.4326 0.2877 1.1892 - 1.6656 -1.1465 -0.0376 0.1253 1.1909 0.3273 magic(n) t¹o ma trËn cấp n gồm số nguyên từ đến n2 với tổng hàng tổng cột.n phải lớn hay pascal(n) tạo ma trận xác định dơng mà phần tử lấy từ tam giác Pascal pascal(4) ans = 1 1 10 10 20 eye(n) tạo ma trận đơn vị eye(3) ans = 0 0 eye(m,n) t¹o ma trận đơn vị mở rông eye(3,4) ans = 0 0 0 0 e LƯnh load: LƯnh load dïng ®Ĩ ®äc mét file liệu Vì ta tạo file chứa ma trận nạp vào Ví dụ có file mtran.dat chứa ma trận ta nạp ma trËn nµy nh− sau : load mtran.dat Khi dïng mét trình soạn thảo văn để tạo ma trận cần chó ý : - file chøa ma trËn lµ mét bảng hình chữ nhật - hàng viết dòng - số phần tử hàng phải - phần tử phải cách dấu trèng f M-file : M-file lµ mét file text chøa mà MATLAB Để tạo ma trận ta viết m-file cho MATLAB đọc file Ví dơ ta t¹o file solieu.m nh− sau A=[ 3 4 ] nạp vào MATLAB cách đánh lệnh : solieu g Lắp ghép :Ta lắp ghép(concatenation) ma trận có sẵn thành ma trận Ví dụ : a = ones(3, 3) a= 1 1 1 1 b = 5*ones(3, 3) b= 5 5 5 5 5 c = [a+2; b] c= 3 3 3 3 5 5 5 5 h Xoá hàng cột :Ta xoá hµng vµ cét tõ ma trËn b»ng dïng dÊu [] VÝ dô : b= 5 5 5 5 Để xoá cột thứ ta viết : b(:, 2) = [] b= 5 5 5 Viết x(1:2:5) = [] nghĩa ta xoá phần tử đến phần tử thứ cách xếp lại ma trận C¸c lƯnh xư lÝ ma trËn : Céng : X= A + B Trõ : X= A - B Nhân : X= A * B : X.*A nhân phần tử tơng ứng với Chia : X = A/B lóc ®ã X*B = A : X = A\B lúc A*X = B : X=A./B chia phần tư t−¬ng øng víi L thõa : X = A^2 : X = A.^ Nghịch đảo : X = inv(A) Định thức : d = det(A) Hệ phơng trình AX = B cho nghiƯm X = A\B Ph©n tÝch Cholesky : Phơng pháp Cholesky phân tích ma trận A xác định dơng thành tích hai ma trận A = R*R với R ma trận tam giác Muốn nhận đợc ma trận R ta dùng hàm chol(A) Ph©n tÝch LU : Ta ph©n tÝch ma trËn A= L*U L ma trận tam giác dới U ma trận tam giác Ta viết [L,U]= lu(A) Ph©n tÝch QR: Ta ph©n tÝch ma trËn A =Q*R víi Q lµ ma trËn trùc giao vµ R ma trận tam giác Số mũ: Nếu có ma trận A vuông số p>0 A^p tích p lần A : Y= A^2 Giá trị riêng vec tơ riêng: eig(A) [d,r] = eig(A) Quay ma trËn: b = rot90(a) a = [2 0;-2 -1;3 6] a= -2 -1 b = rot90(a) b= -1 -2 Đảo ma trận: fliplr(a) đảo ma trận từ trái sang phải c = fliplr(a) c= -1 -2 flipud(a) đảo ma trận từ xuống d−íi d = flipud(a) d= -2 -1 reshape(a,m,n) định dạng lại ma trận a víi sè hµng míi m vµ sè cét míi n a = [1 ;5 7;8 1]; reshape(a,1,9) ans = diag(a) lấy phần tử đờng chÐo chÝnh cđa ma trËn a vµ l−u vµo mét vec tơ diag(a,k) chọn đờng chéo tuỳ theo giá trị cđa k k = - chän ®−êng chÐo chÝnh k > - chọn đờng chéo thứ k ®−êng chÐo chÝnh k < - chän ®−êng chÐo thø k d−íi ®−êng chÐo chÝnh a= v = diag(a,1) v= a = diag(v) v vec tơ a ma trận vuông với v đờng chÐo chÝnh b = triu(a) t¹o ma trËn b cỡ với ma trận a, chứa phần tử ma trận a nằm đờng chéo phía đờng chéo Các phần tử khác a = [1 3;4 6;7 9] a= b = triu(a) b= 0 b = triu(a, k) t¹o ma trËn b cïng cì víi ma trËn a, chøa phần tử ma trận a đờng chéo phía đờng chéo Các phần tử khác b = tril(a) tạo ma trận b cỡ với ma trận a, chứa phần tư cđa ma trËn a n»m d−íi ®−êng chÐo chÝnh Các phần tử khác b = tril(a, k) t¹o ma trËn b cïng cì víi ma trËn a, chứa phần tử ma trận a đờng chéo phía dới đờng chéo thứ k Các phần tử khác b = tril(a,-1) b= 0 0 Đa thức: Một đa thức đợc biểu diễn MATLAB vec tơ hàng chứa hệ số P = x3 - 2x2 + x + p = [ -2 1] conv nhân đa thức deconv chia đa thức poly tìm đa thức đặc tính ma trận polyder đạo hàm đa thức polyder(a,b) đạo hàm tích hai đa thức a b Ví dụ Cho ®a thøc (3x2 + 6x + 9)(x2 + 2x) a = [3 9]; b = [1 0]; k = polyder(a, b) k= 12 36 42 18 VÝ dơ Cho ®a thøc (3x2 + 6x + 9)/(x2 + 2x) a = [3 9]; b =[ 0]; [n, d]=polyder(a,b)% n lµ tư sè vµ d lµ mÉu sè n= -18 -18 d= 4 0 polyfit polyval polyvalm roots xÊp xØ b»ng ®a thøc x = [ ]; y = [ 5.5 43.1 128 290.7 498.4 ]; p = polyfit(x,y,3) p= -0.1917 31.5821 -60.3262 35.3400 tính trị đa thức tính trị đa thức mà biến ma trận tìm nghiệm đa thức Đ3 Lập trình MATLAB Các phát biểu điều kiện: if,else,elseif :Cú pháp if : if end Nếu cho kết phần lệnh thân if đợc thực Các phát biểu else leseif tơng tự Ví dụ: Ta xét chơng trinh test1 m để đoán tuæi nh− sau: disp(‘Xin chao! Han hanh duoc lam quen’); x = fix(30*rand); disp(‘Tuoi toi khoang - 30’); gu = input(‘Xin nhap tuoi cua ban: ‘); if gu < x disp(‘Ban tre hon toi’); elseif gu > x disp(‘Ban lon hon toi’); else disp(‘Ban bang tuoi toi’); end switch : Có ph¸p cđa switch nh− sau : switch case n1 : case n2 : case nn : otherwise : end while : vòng lặp while dùng trớc số lần lặp Cú ph¸p cđa nã nh− sau : while end Ví dụ: Xét chơng trình in chuoi Xin chao lên mà hình với số lần nhập từ bµn phÝm (test3.m) nh− sau: disp('xin chao'); gu = input('Nhap so lan in: '); i = 0; while i~=gu disp(['Xin chao' i]); i = i+1 end for : vßng lặp for dùng biết trớc số lần lặp Cú pháp nh sau : for = : : Ví dụ: Xây dựng chơng trình đoán số (test2.m) x = fix(100*rand); n = 7; t = 1; for k = 1:7 num = int2str(n); disp(['Ban co quyen du doan ',num,' lan']); disp('So can doan nam khoang - 100'); gu = input('Nhap so ma ban doan: '); if gu < x disp('Ban doan nho hon'); elseif gu>x disp('So ban doan lon hon'); else disp('Ban da doan dung.Xin chuc mung'); t = 0; break; end n = n-1; end if t > disp('Ban khong doan roi'); numx = int2str(x); disp(['Do la so: ',numx]); end break : ph¸t biểu break để kết thúc vòng lặp for hay while mà không quan tâm đến điều kiện kết thúc vòng lặp đà thoả mÃn hay cha Đ4 Các file hàm Script file: Kịch M-file đơn giản nhất, đối số Nó có ích thi hành loạt lệnh MATLAB theo trình tự định Ta xét ví dụ hàm fibno để tạo c¸c sè Fibonnaci f=[1 1]; i=1; while(f(i)+f(i+1)) p Kiểu đánh dấu dấu cộng vòng tròn dấu hạt kim cơng điểm tam giác hớng lên tam giác sang phải ngũ giác Mà x s v < h Kiểu đánh dấu điểm chữ thập hình vuông điểm tam gi¸c h−íng xng tam gi¸c sang tr¸i lơc gi¸c VÝ dô : x = -pi : pi/10 : pi; y = tan(sin(x)) - sin(tan(x)); plot(x,y,' rs’,'LineWidth',2,'MarkerEdgeColor','k', 'MarkerFaceColor','g','MarkerSize',10) sÏ vÏ đờng cong y = f(x) có đặc tả sau : - đờng vẽ đờng đứt nét( ) - khối đánh dấu hình vuông (s), đờng vẽ màu đỏ(r) - đờng vẽ rộng point - cạnh khối đánh màu đen - khối đánh dấu màu green - kích thớc khối đánh dấu 10 point 14 Thêm đờng vẽ vào đồ thị đà có : Để làm điều ta dùng lệnh hold Khi ta đánh lệnh hold on MATLAB không xoá đồ thị có Nó thêm số liệu vào đồ thị Nếu phạm vi giá trị đồ thị vợt giá trị trục toạ độ cũ định lại tỉ lệ xích 6.Chỉ vẽ điểm số liệu : Để vẽ điểm đánh dấu mà không nối chúng lại với ta dùng đặc tả nói đờng nối điểm ta gọi hàm plot với đặc tả màu điểm đánh dấu x = -pi : pi/10 : pi; y = tan(sin(x)) - sin(tan(x)); plot(x,y,'s','MarkerEdgeColor','k') 7.Vẽ điểm đờng: Để vẽ điểm đánh dấu đờng nối cần mô tả kiểu đờng kiểu điểm Ví dụ : x = 0:pi/15:4*pi; y = exp(2*sin(x)); plot(x,y,'-r',x,y,'ok') vẽ đờng cong y = f(x) Đờng nối liền, màu đỏ Điểm đánh dấu chữ o có màu đen 8.Vẽ với hai trục y :Lệnh plotyy cho phép tạo đồ thị có hai trục y Ta dùng plotyy giá trị hai trơc y cã kiĨu kh¸c nh»m tiƯn so s¸nh VÝ dơ : t = 0:900; A = 1000; b = 0.005; a = 0.005; z2 = sin(b*t); z1 = A*exp(-a*t); [haxes,hline1,hline2] = plotyy(t,z1,t,z2,'semilogy','plot') 9.VÏ ®−êng cong víi sè liệu 3-D : Nếu x,y,z vec tơ có độ dài plot3 vẽ đờng cong 3D VÝ dô : t = 0:pi/50:10*pi; plot3(sin(t),cos(t),t) axis square; grid on 10 Đặt thông số cho trục :Khi ta tạo hình vẽ, MATLAB tự động chọn giới hạn trục toạ độ khoảng cách đánh dấu dựa số liệu dùng để vẽ Tuy nhiên ta mô tả lại phạm vi giá trị trục khoảng cách đánh dấu theo ý riêng Ta dùng lệnh sau : axis đặt lại giá trị trục toạ độ axes tạo trục toạ độ với đặc tính đợc mô tả get set cho phép xác định đặt thuộc tính trục toạ độ có gca trở trục toạ độ cũ a Giới hạn trục chia vạch trục :MATLAB chọn giới hạn trục toạ độ khoảng cách đánh dấu dựa số liệu dùng để vẽ Dùng lệnh axis đặt lại giới hạn Cú pháp lÖnh : axis[ xmin , xmax , ymin , ymax] VÝ dô : x = 0:0.025:pi/2; plot(x,tan(x),'-ro') 15 axis([0 pi/2 5]) MATLAB chia vạch trục dựa phạm vi liệu chia Ta mô tả cách chia nhờ thông số xtick ytick vec tơ tăng dần Ví dụ: x = -pi:.1:pi; y = sin(x); plot(x,y) set(gca,'xtick',-pi:pi/2:pi)%gca-get current axis set(gca,'xticklabel',{'-pi','-pi/2','0','pi/2','pi'}) Ghi nhÃn lên trục toạ độ: MATLAB cung cấp lệnh ghi nhÃn lên đồ hoạ gồm : title thêm nhÃn vào đồ hoạ xlabel thêm nhÃn vào trục x ylabel thêm nhÃn vào trục y zlabel thêm nhÃn vào trục z legend thêm giải vào đồ thị text hiển thị chuỗi văn vị trí định gtext đặt văn lên đồ hoạ nhờ chuột \bf - bold font \it - italics font \sl - oblique font (rarely available) \rm - normal font C¸c kÝ tù đặc biệt xem Text properties Ta dùng lệnh xlabel , ylabel , zlabel để thêm nhÃn vào trục toạ độ Ví dụ : x = -pi:.1:pi; y = sin(x); plot(x,y) xlabel('t = to 2\pi','Fontsize',16) ylabel('sin(t)','Fontsize',16) title('\it{Gia tri cua sin tu zero đến pi}','Fontsize',16) Thêm văn vào đồ hoạ : Ta thêm văn vào chỗ hình vẽ nhờ hàm text Ví dụ text(3*pi/4,sin(3*pi/4),'\leftarrowsin(t)=0.707','FontSize',12) 10 Định vị văn hình vẽ: Ta sử dụng đối tợng văn để ghi trục vị trí MATLAB định vị văn theo đơn vị liệu trục Ví dụ để vẽ hµm y = Aeαt víi A = 0.25 , t = đến 900 = 0.005 ta viết : Ví dụ : t = 0:900; plot(t,0.25*exp(-0.005*t)) Để thêm ghi điểm t = 300 ta viết : text(300,.25*exp(-.005*300),\bullet\leftarrow\fontname{times}0.25{\itt}} att {\itt}=300,FontSize,14) Tham số HorizontalAlignment VerticalAlignment định vị văn so với toạ độ x, y, z đà cho 11 Đồ hoạ đặc biệt: a Khối vùng: Đồ hoạ khối vùng biểu diến số liệu vec tơ hay ma trận MATLAB cung cấp hàm đồhoạ khối vùng : bar hiển thị cột ma trận m*n nh m nhóm, nhóm có n bar 16 barh hiển thị cột ma trận m*n nh m nhóm, nhóm có n bar nằm ngang bar3 hiển thị cột ma trận m*n nh m nhóm, nhóm có n bar dạng 3D bar3h hiển thị cột ma trận m*n nh m nhóm, nhóm có n bar dạng 3D nằm ngang Mặc định, phần tử ma trận đợc biểu diễn bar VÝ dô : y = [5 5 5 8]; bar(y) b Mô tả liệu trục : Ta dùng hàm xlabel ylabel để môtả liệu trục Ví dụ : nhdo = [29 23 27 25 20 23 23 27]; = 0:5:35; bar(ngay,nhdo) xlabel('ngay') ylabel('Nhiet (^{o}C)') Mặc định,phạm vi giá trị trục y từ đến 30 Để xem nhiệt độ khoảng từ 15 đến 30 ta thay đổi phạm vi giá trị trục y set(gca,'YLim',[15 30],'Layer','top') c.Xếp chồng đồ thị :Ta xếp chồng số liệu đồ thị cách tạo trục khác vị trí nh ta cã mét trơc y ®éc lËp víi bé sè liƯu kh¸c VÝ dơ : TCE = [515 420 370 250 135 120 60 20]; temp = [29 23 27 25 20 23 23 27]; days = 0:5:35; bar(days,temp) xlabel('Day') ylabel('Temperature (^{o}C)') d.Xếp chồng đờng thẳng đồ thị thanh: Để xếp chồng số liệu lên đồ thị thanh, cã trơc thø ë cïng vÞ trÝ nh− trơc thø nhÊt ta viÕt : h1 = gca; vµ tạo trục thứ vị trí trục thứ tr−íc nhÊt vÏ bé sè liƯu thø h2 = axes('Position',get(h1,'Position')); plot(days,TCE,'LineWidth',3) Để trục thứ không gây trở ngại cho trơc thø nhÊt ta viÕt : set(h2,'YAxisLocation','right','Color','none','XTickLabel',[]) set(h2,'XLim',get(h1,'XLim'),'Layer','top') §Ĩ ghi lên đồ thị ta viết text(11,380,'Concentration','Rotation', 55,'FontSize',16) ylabel('TCE Concentration (PPM)') title('Bioremediation','FontSize',16) 17 e Đồ hoạ vùng:Hàm area hiển thị đờng cong tạo từ vec tơ hay từ cột ma trận Nó vẽ giá trị cột ma trận thành đờng cong riêng tô đầy vùng không gian đờng cong vµ trơc x VÝ dơ : Y = [5 837 968 555 3]; area(Y) hiÓn thị đồ thị có vùng, vùng cột Độ cao đồ thị vùng tổng phần tử hàng Mỗi đờng cong sau sử dụng đờng cong trớc làm sở Để hiển thị đờng chia lới ta dùng lệnh: set(gca,'Layer','top') set(gca,'XTick',1:5) f.Đồ thị pie :Đồ thị pie hiển thị theo tỉ lệ phần trăm phần tử vec tơ hay ma trận so với tổng phần tử pie pie3 tạo đồ thị 2D 3D VÝ dô : X = [19.3 22.1 51.6; 34.2 70.3 82.4; 61.4 82.9 90.8; 50.5 54.9 59.1; 29.4 36.3 47.0]; x = sum(X); explode = zeros(size(x)); [c,offset] = max(x); explode(offset) = 1; h = pie(x,explode) Khi tổng phần tử đối số thứ hay lớn 1, pie pie3 chuẩn hoá giá trị Nh cho vec tơ x,mỗi phần có diện tích x i/sum(x i) với x i phần tử x Giá trị đợc chuẩn hoá mô tả phần nguyên vùng Khi tổng phần tử đối số thứ nhỏ 1, pie pie3 không chuẩn hoá phần tử vec tơ x Chúng vẽ mét phÇn pie VÝ dơ ; x = [.19 22 41]; pie(x) g.Làm hình chuyển động :Ta tạo hình chuyển động cách : ã tạo lu nhiều hình khác lần lợt hiển thị chúng ã vẽ xoá liên tục đối tợng hình,mỗi lần vẽ lại có thay đổi Với cách thứ ta thực hình chuyển động qua bớc: ã dùng hàm moviein để dành bé nhí cho mét ma trËn ®đ lín nh»m l−u khung hình ã dùng hàm getframes để tạo khung hình ã dùng hàm movie để hiển thị khung hình Sau ví dụ sử dụng movie để quan sát hàm fft(eye(n)).Ta tạo hàm moviem.m nh sau : axis equal M=moviein(16,gcf); set(gca,'NextPlot','replacechildren') 18 h=uicontrol('style','slider','position',[100 10 500 20],'Min',1,'Max',16) for j=1:16 plot(fft(eye(j+16))) set(h,'Value',j) M(:,j)=getframe(gcf); end clf; axes('Position',[0 1]); movie(M,30) Bớc để tạo hình ảnh chuyển động khởi gán ma trận Tuy nhiên trớc gọi hàm moviein, ta cần tạo trục toạ ®é cã cïng kÝch th−íc víi kÝch th−íc mµ ta muốn hiển thị hình Do ví dụ ta hiển thị số liệu cách vòng tròn đơn vị nên ta dùng lệnh axis equal để xác định tỉ lệ trục Hàm moviein tạo ma trận đủ lớn để chứa 16 khung hình Phát biểu : set(gca,'NextPlot','replacechildren') ngăn hàm plot đa tỉ lệ trục axis normal đợc gọi Hàm getframe không đối số trả lại điểm ảnh trục hành hình có Mỗi khung hình gồm số liệu vec tơ cột Hàm getframe(gcf) chụp toàn phần cửa sổ hành Sau tạo hình ảnh ta chạy chúng số định ví dụ 30 lần nhờ hàm movie(M,30) Một phơng pháp để tạo hình chuyển động vẽ xoá, nghĩa vẽ đối tợng đồ hoạ thay đổi vị trí cách thay đổi toạ độ x,y z lợng nhỏ nhờ vòng lặp Ta tạo hiệu ứng khác nhờ cách xoá hình khác Chúng gồm: ã none MATLAB không xoá đối tợng di chuyển ã background MATLAB xoá đối tợng cách vẽ có màu ã xor MATLAB xoá đối tợng Ví dụ : Ta tạo M-file có tên moviem2.m nh− sau : A = [ -8/3 0; -10 10; 28 -1 ]; y = [35 -10 -7]'; h = 0.01; p = plot3(y(1),y(2),y(3),'.', 'EraseMode','none','MarkerSize',5); % Set EraseMode to none axis([0 50 -25 25 -25 25]) hold on for i=1:4000 A(1,3) = y(2); A(3,1) = -y(2); ydot = A*y; y = y + h*ydot; set(p,'XData',y(1),'YData',y(2),'ZData',y(3)) % Change coordinates drawnow i = i+1; end 12 Đồ hoạ 3D: a.Các lệnh :Lệnh mesh surf tạo mỈt 3D tõ ma trËn sè liƯu Gäi ma trận số liệu z mà phần tử z(i,j) xác định tung độ mặt mesh(z) tạo lới có màu thể mặt z surf(z) tạo mặt có màu z b Đồ thị hàm hai biến: Bớc thứ để thĨ hiƯn hµm biÕn z = f(x,y) 19 lµ tạo ma trận x y chứa toạ độ miền xác định hàm Hàm meshgrid biến đổi vùng xác định vec tơ x y thành ma trận x y Sau ta dùng ma trận để đánh giá hàm Ví dụ : ta khảo sát hàm sin(r)/r Để tính hàm khoảng -8 theo x y ta cần chuyển vec tơ đối số cho meshgrid : [x,y] = meshgrid(-8:.5:8); r = sqrt(x.^2+y.^2)+0.005; ma trËn r chøa khoảng cách từ tâm ma trận Tiếp theo ta dùng hàm mesh để vẽ hàm z = sin(r)./r; mesh(z) c.Đồ thị đờng đẳng mức: Các hàm contour tạo, hiển thị ghi đờng đẳng mức hay nhiều ma trận Chúng gồm : clabel tạo nhÃn sử dụng ma trận contour hiển thị nhÃn contour hiển thị đờng đẳng mức tạo giá trị cho trớc ma trận Z contour3 hiển thị mặt đẳng mức tạo giá trị cho trớc ma trận Z contourf hiển thị đồ thị contour 2D tô màu vùng ®−êng contourc hµm cÊp thÊp ®Ĩ tÝnh ma trËn contour Hàm meshc hiển thị contour lới surfc hiển thị mặt contour Ví dụ : [X,Y,Z] = peaks; contour(X,Y,Z,20) Mỗi contour có giá trị gắn với Hàm clabel dùng giá trị để hiển thị nhÃn đờng đồng mức 2D Ma trận contour chứa giá trị clabel dùng cho đờng contour 2D Ma trận đợc xác định contour,contour3 contourf Ví dụ : Để hiển thị 10 đờng đẳng mức hàm peak ta viÕt : Z = peaks; [C,h] = contour(Z,10); clabel(C,h) title({'Contour Labeled Using','clabel(C,h)'}) Hàm contourf hiển thị đồ thị đờng đẳng mức mặt phẳng tô màu vùng lại đờng đẳng mức Để kiểm soát màu tô ta dùng hàm caxis Ví dụ : Z = peaks; [C,h] = contourf(Z,10); caxis([-20 20]) title({'Filled Contour Plot Using','contourf(Z,10)'}) Các hàm contour(z,n) contour(z,v) cho phép ta rõ số lợng mức contour hay mức contour cần vẽ với z ma trận số liệu, n số đờng contour v vec tơ mức contour MATLAB không phân biệt đại lợng vec tơ phần tử hay đại lợng vô hớng Nh v vec tơ phần tử mô tả contour đơn mức hàm contour coi số lợng đờng contour mức contour Nh vậy,contour(z,v) nh contour(z,n) Để hiển thị đờng đẳng mức ta cần cho v vec tơ có phần tử với hai phần tử mức mong muốn.V í dụ để tạo đờng đẳng mức 3D hàm peaks Ví dô : xrange = -3:.125:3; yrange = xrange; [X,Y] = meshgrid(xrange,yrange); 20 ... để số liệu đa vào disp(a) hiển thị nội dung mảng a hay văn a=[1 3]; disp(a) t=''Xin chao''; disp(t) format điều khiển khuôn dạng sè LÖnh format format short format long format short e format long... format format short format long format short e format long e format short g format long g format hex format bank format rat format + KÕt qu¶ Default Same as short digit scaled fixed point 15... 5 5 8]; bar(y) b Mô tả liệu trục : Ta dùng hàm xlabel ylabel để môtả liệu trªn trơc VÝ dơ : nhdo = [29 23 27 25 20 23 23 27]; = 0:5:35; bar(ngay,nhdo) xlabel(''ngay'') ylabel(''Nhiet (^{o}C)'') Mặc

Ngày đăng: 13/09/2012, 09:20

Từ khóa liên quan

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan