Giáo trình cơ sở matlab v5 3 1 phần 1 cơ sở matlab chương 4

32 336 0
Giáo trình cơ sở matlab v5 3 1   phần 1 cơ sở matlab   chương 4

Đ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

Chơng - Đồ hoạ hai chiều Chơng Đồ hoạ chiều Matlab 4.1 Các phép biến đổi đồ hoạ Nghịch đảo ma trận v định thức đợc giới thiệu phần ny đợc hình dung nh phép biến đổi tạo nên phép chuyển vị thực thể hình học hay vector cửa sổ đồ hoạ Matlab Nội dung phép biến đổi nhằm mô tả phơng pháp đợc sử dụng hầu hết lĩnh vực kỹ thuật khác nh đồ hoạ máy tính hay robotic Ngoi để khai thác tiềm đồ hoạ Matlab xin liệt kê hm tơng tác cửa sổ đồ hoạ Matlab cách chi tiết nhằm đem đến cho bạn th viện hm, hiệu ứng hm nh phơng pháp tiếp cận hm 4.1.1 Quay hệ trục toạ độ mặt phẳng y y1 P x1 x Hình 4.1 Quay hệ trục mặt phẳng Phần - Cơ sở 50 Chơng - Đồ hoạ hai chiều Hình 4.1 hệ toạ độ điểm P đợc biểu diễn đờng liền nét x, y v điểm P hệ trục biểu diễn đờng đứt nét x1 v y1 x1 v y1 quay góc ngợc chiều kim đồng hồ so với trục x, y Quan hệ hai cặp hệ trục toạ độ đợc biểu diễn công thức sau: x1 = x cos + y sin (4.1) y1 = - x sin + y cos (4.2) với x1 cos sin x P = v P1 = ; A = -sin cos y y1 ta viết 4.1 v 4.2 dới dạn sau: P1 = AP (4.3) Quan hệ nghịch đảo hình 4.1 đợc thể nh sau: x = x1 cos + y1 sin (4.4) y = - x1 sin + y1 cos (4.5) Điều có nghĩa ma trận biểu diễn phép quay góc - từ hệ toạ độ x1, y1 đến hệ toạ độ x, y l: B = cos sin sin cos Lúc 4.4 v 4.5 đợc viết thnh P = B B1 (4.6) 4.1.2 Nghịch đảo ma trận Vậy quan hệ A v B đợc hiểu sao? Từ phơng trình (4.5), (4.6) ta thấy với điểm P bất kỳ, sau hai phép chuyển ta thu đợc P=BAP loại bỏ biến P ta viết nh sau: B A = cos sin sin cos = sin cos sin cos 0 tơng tự ta có: P1 = ABP1 Một lần ta thấy AB ma trận đơn vị v phát triển ma trận B l ma trận nghịch đảo A v thờng biểu diễn A-1 Định nghĩa đợc phát triển nh sau: Phần - Cơ sở 51 Chơng - Đồ hoạ hai chiều Cho ma trận vuông A, ma trận nghịch đảo A-1 A l ma trận cho nhân phải hay trái với A cho ta kết l ma trận đơn vị I A A-1 = A-1 A = I nghịch đảo ma trận x dễ dng tìm đợc theo cách sau Ví dụ a l phần tử ma trận nghịch đảo từ A, việc nhân A B cho kết nh sau: a11 a12 b11 b12 a a b b 21 22 21 22 = 0 (4.8) Từ phơng trình (4.8) cho kết sau: b11 = a 22 a11a 22 a 21a 22 b12 = a12 a11a 22 a 21a12 (4.10) b 21 = a 21 a11a 22 a 21a12 (4.11) b 22 = a11 a11a 22 a 21a12 (4.12) (4.9) Từ dễ dng thu đợ ma trận nghịch đảo B từ A Tuy Matlab hm nghịch đảo đợc viết sẵn th việc v đợc gọi thông qua lệnh inv Với lệnh inv (A) cho ma trận nghịch đảo A Ví dụ: - Quay hệ trục toạ độ góc 300 đợc viết nh sau: >> alpha = 30 >> A=[cos(pi*alpha/180) -sin(pi*alpha/180) A= 0.866 -0.500 sin(pi*alpha/180) cos(pi*alpha/180)] 0.500 0.866 - Ma trận nghịch đảo B tạo thnh từ A >> B = inv(A) B = 0.866 -0.500 0.500 0.866 - Nhân ma trận A v, kết thu đợc nh sau >> A * B ans = 1.000 0.000 Phần - Cơ sở 52 Chơng - Đồ hoạ hai chiều 0.000 1.000 - Quay trục qua điểm x = , y = >>P1 = A*[3 ; 7] P1 = 6.0981 4.5622 - Nghịch đảo lại ma trận hon trả lại toạ độ cho điểm >> P = B * P1 P= 4.1.3 Góc Euler Góc Euler l thao số quy ớc để mô tả việc quay hệ không gian chiều hay hệ toạ độ trực giác Những tham số có nhiều ứng dụng lĩnh vực khí Có vi cách định nghĩa khác góc Euler đợc biết đến nh: Meitrovitch (1970), Guggenheimer (1977) v Czichos (1989) bi toán toạ độ điểm P đợc xác định hệ giá trị x, y, z v phải xác định điểm tơng ứng x1, y1, z1 sau quay hệ toạ độ góc Việc xác định chiều quay âm/ dơng hệ trục toạ độ thông qua quy tắc bn tay phải Theo hình 4.2 với công thức đợc học phần đồ hoạ Khi ta qua hệ toạ độ xung quanh trục z với góc Điểm x*, y*, z* đợc tạo thnh đợc mô tả theo công thức sau: cos sin x* y * = X * = sin cos z* 0 x y = A.X z (4.13) Tiếp theo quay hệ trục quanh trục x với góc Hệ giá trị toạ độ điểm thu đợc đợc viết dới công thức: x ** 0 y * * = X * * = cos sin z ** - sin cos x* y * = B X * z* (4.14) Bớc quay hệ trục quanh trục z hớng ngợc lại góc Giá trị toạ độ cuối thu đợc l: Phần - Cơ sở 53 Chơng - Đồ hoạ hai chiều cos sin x * * x1 y1 = P1 = -sin cos y * * = CX * * z1 (4.15) z ** Kết tiến trình quay: P1 = A B C X = DX (4.16) % Đoạn chơng trình ví dụ cho việc quay ma trận dới góc si, theta, fi function R = Elrotate (si, theta, fi) A = [cos(si) sin(si) -sin(si) cos(si) 0 1]; 0 cos(theta) sin(theta) -sin(theta) cos(theta)]; B = [1 C = [cos(fi) sin(fi) -sin(fi) cos(fi) 0 1]; R = C * B * A; Phép biến đổi Czichos (1989) đợc biểu diễn dới công thức sau: Giả sử C = cos (), S = sin() ta có ma trận quay CC SCS R = SC CCS CC + SCS SS SS + CCC CS 4.17) SS S C C Ví dụ: Khi cho điểm P với giá trị toạ độ [2 3] cho góc quay l 30, 45, 200 Việc biểu diễn Matlab đợc viết nh sau: >> R = Elrotate( 30*pi/180 , 45*pi/180 , 20*pi/180 ) R= 0.6929 0.6793 0.2418 -0.6284 0.4044 0.6645 0.3536 -0.6124 0.7071 >> X1 = R*[ ; ; ] X1 = Phần - Cơ sở 54 Chơng - Đồ hoạ hai chiều 5.5077 2.7587 -0.2334 >> X = inv( R ) * X1 X= 2.0000 5.0000 3.0000 Trong hm Elrotate tạo biến A, B, C nhiên kiểm tra >> A hay dùng lệnh >>Who Các biến A, B, C không xuất A, B, C l tham biến hm Elrotate v có tác dụng hm 4.2 Phép biến đổi Affine không gian 2D Các đối tợng hình hoạ đợc mô tả chơng ny có ý nghĩa quan trọng ứng dụng lĩnh vực kỹ thuật đại nh đồ họa my tính hay robotics Một nhóm lệnh đợc sử dụng thờng xuyên gọi l Affine transformation Chúng bao gồm: translation, rotation, scaling xem xét việc thực chúng Matlab 4.2.1 Tọa độ Trong thực tế để biểu diễn phép biến đổi Affine ngời ta thờng sử dụng phép biến đổi ma trận Thờng đồ hoạ máy tính v kỹ thuật robotics đòi hỏi concatenation vi phép biến đổi Điều đợc thực loại phép nhân ma trận Việc nhân ma trận chuyển đổi đợc thực với việc sử dụng hệ toạ độ Để giới thiệu hệ toạ độ giả sử có điểm P hệ toạ độ Đề với giá trị toạ độ x, y Việc biểu diễn P dới dạng hệ toạ độ đợc viết nh sau: x1 P = y1 z1 x = x1 / W y = y1 / W Nguyên nhân quan trọng việc biểu diễn theo hệ toạ độ l chúng cho phép biểu diễn điểm xa vô Phần - Cơ sở 55 Chơng - Đồ hoạ hai chiều Hình 4.2 Quay thực thể quanh trục x3 Trong hệ toạ độ không gian thờng (x, y) để biểu diễn điẻm vô hai giá trị điểm = Nhng hệ toạ độ nhất, việc biểu diễn thông qua cách cho giá trị W = với x1, y1 l số hữu hạn Tuy nhiên không sâu vo điểm ny, bạn đọc tham khảo ti liệu đồ hoạ máy tính v bi toán chiếu phối cảnh, nói phơng pháp tạo phép biến đổi không gian đồ hoạ Với Hình 4.3 điểm tạo nên hình vuông đợc cho giá trị nh sau: 0.5 P1 = , 0.5 0.5 P2 = , P3 = , 1 0.5 P4 = 1 Nh biết giá trị toạ độ thứ ba - W đợc cho 1, sử dụng đến kỹ thuật phổ biến bi toán đồ hoạ v với Matlab dễ dng thể câu lệnh sau: >> P1 = [-0.5; 0; 1]; P2 = [-0.5; 1; 1]; >> P3 = [0.5; 1; 1]; P4 = [0.5; 0; 1]; (Chú ý ma trận P chứa vector P1 dùng cho việc đóng hình vuông) Việc tạo ta hình vuông mn đồ hoạ thông qua biến square >> square = [ P1 P2 P3 P4 P1 ] ; >> plot ( square( 1,: ), square( 2,: ) ) >> axis([-4 -1 5]); >> title ('hình vuông với tỉ lệ trục [ -4 -1 ]'); Phần - Cơ sở 56 Chơng - Đồ hoạ hai chiều 0.8 hinh vuong voi ti le truc [ -4 -1 ] 0.6 0.4 0.2 0 -0.5 Hình 4.3 -1 -4 0.5 a Hình vuông chuẩn -2 b Hình vuông sau thay đổi tỉ lệ trục toạ độ việc tạo ta hình vuông mn đồ hoạ thông qua biến square >> square = [ P1 P2 P3 P4 P1 ] ; >> plot ( square( 1,: ), square( 2,: ) ) >> axis([-4 -1 5]); >> title ('hình vuông với tỉ lệ trục [ -4 -1 ]') 4.2.2 Phép chuyển dịch Hm biến đổi chuyển vị với khoảng dx v dy song song trục x v y function T = Translate ( dx , dy ) T = [1 dx; dy; 0 1]; % ma trận dịch chuyển hệ toạ độ đồng %T = 0 dx dy 0 Việc dịch chuyển hình vuông khoảng đơn vị theo x v khoảng đơn vị theo y đuợc thể dòng lệnh: >> P = translate ( , 2) * square >> plot ( P( , : ), P ( , : ) ); >> axis ( [-3 -1 3] ) >> title (' Hình vuông thay đổi vị trí theo dx v dy ') Phần - Cơ sở 57 Chơng - Đồ hoạ hai chiều hinh vuong dich theo dx= 1, dy= -1 -4 -2 Hình 4.4 Hình vuông dịch chuyển theo độ di dx v dy 4.2.3 Phép quay Hm quay quanh gốc toạ độ với góc ngợc chiều kim đồng hồ đợc viết Function R = rotate (fi) c o s s in %R = s i n cos R= 0 [cos(fi) sin(fi) -sin(fi) cos(fi) 0 1] Hình vuông quay theo goc 45 Hình 4.5 Hình vuông quay góc 45 theo gốc toạ độ Phần - Cơ sở 58 Chơng - Đồ hoạ hai chiều Hình 4.5 thu đợc thông qua dòng lệnh dới Matlab nh sau, với góc quay = 450 >> P = rotate (45*pi/180)*square >> plot (P( , : ), P ( , : ) ), axis ([-3 -1 3]) >> title ('Hình vuông quay theo goc 45 ') Quay theo goc 60 dich chuyen tren doan dx=1, dy=2 -1 -4 -2 Hình 4.6 Tổ hợp hai phép biển đổi Hay hình 4.6 thu đợc cách dễ dng sở kết hợp phơng pháp chuyển đổi >> P = rotate (30*Pi/180)*translate(1,2)*square >> plot (P( , : ), P ( , : ) ), axis ([-4 -1 5]) >> title ('Hình vuông quay v dịch chuyển ') 4.2.4 Phép tỉ lệ (Scaling) Hm dới cho phép biến đổi tỷ lệ hình theo tỷ lệ định Việc biến đổi tỷ lệ đợc thực qua phép nhân ma trận S vơ Sx, Sy l hệ số biến đổi %S = Sx 0 0 Sy 0 function S = scale (Sx, Sy) S = [ Sx 0; Sy 0; 0 ] Ví dụ việc biến đổi hình vuông lần theo x v lần theo y đợc thực nhờ lệnh sau >> P = scale (2,3)*square >> plot (P( , : ), P ( , : ) ) >> title ('Hình vuông thay đổi tỉ lệ theo x = theo y = 3) Phần - Cơ sở 59 Chơng - Đồ hoạ hai chiều c Vẽ hoạt hình ( comet ) Lệnh comet plot cho phép ngời sử dụng vẽ theo điểm mn hình gây hiệu ứng hoạt hoạ vẽ Dới l số lệnh comet Comet (x, y) Vẽ vector y trục x Nếu tham số vo hay thiếu chơng trình tự định số Comet (x, y, l) Vẽ theo hm comet với phần kéo di l không khai báo số l chơng trình tự lấy giá trị = 0.1 d.Hm đồ hoạ Dùng để vẽ hm toán học đợc khai báo mảng ký tự Mảng ký tự l hm chuẩn hay đợc định nghĩa ngời sử dụng file M fku.m fplot (fku,lim,str) Vector lim = [Xmin Xmax] dùng để giới hạn khoảng xác định đồ hoạ Nó bao gồm thnh phần thnh phần thứ v l khoảng xác định trục y Nếu biến str không khai báo hm chơng trình tự lấy giá trị mặc định kiểu đờng hay mầu cho phần đồ hoạ Vẽ đồ thị nh với sai số liên quan nhỏ giá trị fplot tol ( fcu, lim, str, tol ) Ví dụ: Dùng hm fplot vẽ phơng trình sin x2 >> fplot( sin(x^2),[ , 10 ] ); 0.5 -0.5 Hình 4.16 Phơng trình sin x2 qua hm fplot() 4.3.2.Các hệ toạ độ mặt phẳng Phần - Cơ sở 67 Chơng - Đồ hoạ hai chiều Hm plot cho phép ngời sử dụng vẻtên toạ đồ Đề Tuy nhiên số bi toán kỹ thuật lại yêu cầu hệ toạ độ khác Để đáp ứng nhu cầu Matlab cung cấp loạt hm cho phép tạo dựng đồ họa loại hệ toạ độ polar ( thet, r ) - Vẽ hệ tọa độ cực Các phần từ vector theta l biến đo radian v phần tử vector r l khoảng cách đến điểm gốc semilogx ( x, y ) - Cho phép vẽ hệ toạ độ nửa trục loga, thay log10 đợc sử dụng cho trục x Điều tơng đơng với việc viết plot (log10(x,y) nhng lỗi với trờng hợp log10(0) semilogy ( x,y ) - Vẽ hệ toạ độ trục loga Thang đo log10 đợc sử dụng cho trục y Điều tơng đơng plot (x,log10(y) v không báo lỗi viết log10(0) loglog ( x,y ) - Hm cho phép vẽ hệ toạ độ loga trục hệ toạ độ dựa thang đo log10 Điều tơng đơng với việc plot(log10(x), log10(y)) v không báo lỗi ta sử dụng log10(0) Ví dụ: a) >> x = linespace (0,7); % tạo giá trị x >> y = exp(x) % tạo y theo x >> subplot (x,1,1); plot( x,y ); % vẽ hm chuẩn >> subplot(2,1,2); semilogy( x,y ); % vẽ hm loga 1200 10 1000 10 800 600 10 400 10 Hình 4.16 b)Vẽ hm sau toạ độ cực theo công thức sau: Phần - Cơ sở 68 Chơng - Đồ hoạ hai chiều R = ecost - 2cos4 + sin t5 12 >> t = linspace (0,22*pi,1100); >> r = exp ( cos( t ) ) - 2*cos (u*t)+sin ( t./12) ).^5; >> subplot (2,1,1); >> p = polar(t,r); % vẽ hệ toạ độ cực >> subplot (2,1,2) >> [ x , y ] = pol2cart(t,r) % giá trị từ hệ toạ độ cực sang hệ Đề >> plot(x,y); % polar_to_carttesian 120 150 90 60 30 180 210 240 270 0 330 -1 -2 300 -3 -4 -5 Hình 4.17 hệ toạ độ cực 4.3.3 Mặt phẳng đồ hoạ cho số phức quiver ( x , y ) Vẽ mũi tên cho cặp hệ toạ độ cho xij v yij biến số v độ lớn l dxi v dyi quiver Vẽ mũi tên với tọa độ xi yi biến số v độ lớn l tập dxij v dyij ( x , y , dx , dy ) quiver Vẽ mũi tên nh nhng hệ số tỷ lệ đợc cho giá Phần - Cơ sở 69 Chơng - Đồ hoạ hai chiều trị s ( x, y , , s ) Nếu s không đợc khai báo giá trị mặc định l quiver ( x, y, , str ) Vẽ mũi tên với kiểu mẫu đờng đợc xác định thông qua biến str Vẽ mũi tên phần thực v ảo phần tử hay ma trận số ảo z feather ( z ) feather ( x, y ) Tơng tự với feather(x+y*i) feather ( z, str ) Vẽ mũi tên với việc sử dụng kiểu đờng thẳng str Vẽ mũi tên khởi tạo từ gốc phần thực v ảo phần tử ma trận số ảo z compass ( z ) Tơng đơng hm compass (x + y*i) compass ( x, y ) compass (z, str) Vẽ mũi tên sử dụng kiểu đờng v mẫu sắc đợc định nghĩa str rose ( v ) Vẽ biểu đồ biểu đồ tròn cho phép thể tần suất đối số vector v Tơng tự nhng với khoảng xác định u rose ( u ) Vẽ biểu đồ đối số với x l vector khoảng xác định rose ( x ) Ví dụ: Ma trận z đợc xác định nh sau: 1+ i % z = + 3i i 2i 5i 5i i 3i (2 - i) (3 - 5*i) clf; z= [ (1 + i) (-4 + 3*i) (5 -5*i) (i) (-1 - i) (-1) (3 - 3*i) subplot(2,2,1); quiver(real(z), imag(z)); title('hm quiver); subplot(2,2,2);feather(z); title('hm feather); subplot(2,2,3); compass(z); Phần - Cơ sở 70 ] Chơng - Đồ hoạ hai chiều title('hm compass); subplot(2,2,4); rose(angle(z(:))); title ( 'ham rose ); hàm quiver hàm feather 2 -2 0 hàm compass 0 -5 10 ham rose 90 120 60 30 150 180 210 330 240 270 300 Hình 4.18 Đồ hoạ thu đợc từ hm Quiver, Teather, Compass, Rose 4.3.4 Lệnh kiểm soát figure ( gef ) Hiển thị cửa sổ graphics hnh Lệnh figure dùng để kích hoạt cửa sổ graphic hay tạo cửa sổ đồ hoạ clf Lệnh dùng để xoá cửa sổ đồ hoạ thời Việc xoá thực kể dùng lệnh hold on clg Lệnh xoá tơng tự nh elf v không tồn version Matlab clc Lệnh xoá mn hình lệnh home Chuyển trỏ đến vị trí 'home' l vị trí bên trái mn hình hold on Giữ lại tất mn hình vẽ Các lệnh sau thêm vo mn hình đồ hoạ không xoá mn hình cũ Phần - Cơ sở 71 Chơng - Đồ hoạ hai chiều hold off L trạng thái mặc định mn hình đồ hoạ trạng thái ny thừ thể đồ hoạ thay thực thể cũ mn hình Chuyển trạng thái từ on sang off v ngợc lại hold Trả giá trị vi trạng thái hold l on trờng hợp lại = ishold off subplot Lệnh subplot đợc sử dụng để vẽ nhiều đồ thị lên mn hình đồ hoạ subplot không dùng để vẽ m dùng để xác định hay chia vùng mu đồ hoạ subplot Chia mn hình đồ hoạ lm m hng, n cột v p l phần cửa sổ thời Các cửa sổ mn hình đồ hoạ đợc đánh số theo hm từ trái sang phải, từ xuống dới ( m, u, p ) subplot Đa mu đồ hoạ chế độ mặc định l mn hình đơn Điều tơng đờng subplot(1,1,1) Ví dụ: a) Tạo ma trận với số ngẫu nhiên Đoạn chơng trình đợc ghi vo file *.m clc; cfg; % xoá mn hình tơng tác v mn đồ hoạ for i = : 25 home % đa trỏ vị trí 'home' A = rand(5) % tạo v in ma trận end b) Tạo hm số sau: % f(x) = -xsinx % f'(x) = -xcosx-sinx x = linspace (-10,10,1000) % tạo ma trận x y11 = (-x) *sin(x); % tạo giá trị f y12 = (-x) * cos(x) - sin (x); % đạo hm y21 = diff(y11)./(x(2)-x(1)); % đạo hm xấp xỉ y22 = (y21 - y12 (1:999))./norm(y12); subplot(2,2,1); plot (x,y11); title ('hamf(x) = -xsin(x)'); Phần - Cơ sở 72 Chơng - Đồ hoạ hai chiều subplot(2,2,2); plot (x,y12); title ('đạo hm'); subplot (2,2,3); plot (x(1:999),y21); title ('đạo hm xấp xỉ'); subplot(2,2,u); plot (x(1:999),y22); title('sai số liên quan') 10 m f ( x) = - xs in 10 -1 -10 10 d a o m -1 -1 0 10 -4 x 1s0a i s o lie n q ua n 10 10 d a o m xa p xi 0 -1 -10 -5 -1 10 10 Hình 4.19 Hm -xsin(x) v hm liên quan Hm subplot sử dụng cho đồ hoạ chiều v subplot thay đổi kích thớc Ví dụ: Hm Mandelbrot v việc hiển thị phơng pháp khác với giá trị đặc trng phù hợp z0 = zi+1 = z i + c Nếu zi l sai số c l tậo Mandelbrot Số lặp lại điểm c mặt phẳng phức đợc ghi vo ma trận Madelbrot với việc giải vector clear; epsilon = 1e-14; % sai số renum=input('số điểm thực renum = '); imnum=input('số điểm ảo imnum = ' ); Phần - Cơ sở 73 Chơng - Đồ hoạ hai chiều remin=-2; immin=-15; % khoảng chặn dới remax=1; immax = 1.5; % khoảng chặn reval1 = linspace ( remin, remax, renum ); imval1 = linspace( immin, immax, imnum ); [reval, imval] = meshgrid(reval1,imval1); % tạo lới grid khoảng imvalreal =i mval; imval = imval*i ; cgrid = reval + imval; % -for reind =1: renum % Vòng lặp cho phần thực số disp( [' reind = ', int2str( reind )] ); for imind = : imnum % Vòng lặp cho phần thực số c = cgrid (reind, imind); numc = 0; zold = 0.0 + i * 0.0; z = zold^2 + c; while( ( abs(z) = epsilon ) & ( numc < 100 ) ) numc = numc + 1; zold = z; z = zold^2 + c; end; % End còng lặp while Mandelbrot (reind, imind) = numc; end end % Các chức đồ hoạ hiển thị hm Mandelbrot với % phơng pháp khác % -clf; % xoá mu đồ hoạ whitebg ( 'k' ); % thiết lập mn hình đen subplot ( 2, 2, ); mesh ( reval1, imval1, Mandelbrot ); axis( [-2 -1.5 1.5 100] ) subplot ( 2, 2, ); contour (reval1, imval1, Mandelbrot, 100); Phần - Cơ sở 74 Chơng - Đồ hoạ hai chiều grid; subplot ( 2, 1, 2) surf ( reval, imvalreal, Mandelbrot ); view ( ); shading flat; colormap ( flipud ( jet ) ); % Xác lập hệ mầu JET colorbar; % Hiển thị bar mầu axis ( [-2 -1.5 1.5] ); 1 0 5 0 -0 -1 -1 -2 -1 -1 -2 -1 Hình 4.15 hm Madelbrot hiển thị cách a In theo lới b Theo contour 100 80 60 40 c In theo phổ mầu Phần - Cơ sở 75 Chơng - Đồ hoạ hai chiều 4.3.5 Thao tác v kiểm soát mn hình đồ hoạ Axes , scaling v zooming Các trục vẽ thờng đợc tự động biến đổ tỷ lệ kích thớc cho khít với việc thể điểm mn hình cho phép có khung nhìn tốt Các giá trị thu đợc qua hm v max Ví dụ: [ min(x), min(y), max(x),min(y), min(x), max(y), max(x), max(y) ] Tuy nhiên số trờng hợp mục đích hiển thị ngời sử dụng khác so với việc tự động dn xếp Matlab Chính lệnh axis cho phép thay đổi tỷ lệ trục hay zoom sở sử dụng mouse a Axis: axis - Trả lại giá trị khoảng giới hạn lệnh in thời vo mảng Với không gian 2D ta có [xmin xmax ymin ymax] v [xmin xmax ymin ymax zmin zmax] cho không gian 3D axis ( ) - Xét tỷ lệ theo vector với xmin 1, xmax = 2, ymin = ymax = với không gian 3D zmin = v zmax = axis (axis) - Khoá tỷ lệ giữ không cho Matlab tự động thay đổi tỷ lệ thêm thực thể vo mn hình đồ hoạ axis (str) - Đa kết khác phụ thuộc vo chuỗi str 'auto' - Cho phép Matlab tự động thay đổi tỷ lệ 'equal' - Đa trục toạ độ có tỷ lệ x,y tơng đơng 'ij' 'x,y' 'image' - Quay trục y với hớng dới cho chiều dơng, cho chiều âm - Xét lại trục y với hớng ban đầu (ngợc với 'ij') - Thay đổi kích thớc mn hình đồ hoạ cho điểm có kích thớc chiều di v bề rộng nh 'square' - Thay đổi mn hình đồ hoạ để tạo cửa sổ vuông 'normal' - Thay đổi mn hình đồ hoạ cho kích thớc ban đầu 'off' - Dấu trục ghi kích thớc, không cho hiển thị 'on' - Hiển thị trục bị dấu b Grid grid on - Bật lới vẽ mn hình đồ hoạ grid off - Tắt lới Phần - Cơ sở 76 Chơng - Đồ hoạ hai chiều - Chuyển trạng thái lới từ on sang off hay ngợc lại grid c.zoom - Cho phép ngời sử dụng phóng to đồ hoạ chiều cách kích trái chuột lên mn hình, phải chuột sử dụng để thu nhỏ, cho phép lựa chọn vùng "click v drag" (kéo thả) Tỷ lệ thay đổi để vùng lựa chọn phù hợp với mn hình đồ hoạ zoom on zoom off - Loại bỏ lệnh zoom zoom out - Thay đổi cho đầy khít mn hình zoom - Chuyển trạng thái on v off Ví dụ: a) Ví dụ cho việc biểu diễn đờng tròn >> t = : 0.2 : 2*pi + 0.2; >> x = sin (t); >> y = cos (t); >> plot ( x,y,1,-1 ); grid on b) Thay đổi để tạo đờng tròn hình dạng >>axis ('square'); >>grid on c) Bộ lệnh sau cho mn hình 13.15b >> axis ('normal'); >> grid on; >> axis ( [-2 -3 3] ) 1 0.5 0.5 0 Hình 4.20 a) Trớc lúc chuẩn Phần - Cơ sở 77 b) Sau chuẩn square Chơng - Đồ hoạ hai chiều -1 -2 -3 -2 -1 c) Sau trả lại trạng thái normal 4.3.6 Văn mn hình đồ hoạ Trong phần ny đề cập đến lệnh tạo text lên mn hình đồ hoạ Tập lệnh nh title, zlabel cho phép viết chữ chuẩn Còn với text cho phép viết chữ lên nơi thuộc mn hình đồ hoạ Các lệnh viết chữ áp dụng sở lệnh subplot title ( txt ) Viết ký tự txt nh dòng tiêu đề đỉnh mn đồ hoạ xlabel ( txt ) Viết mảng ký tự txt nh nh trục x ylabel ( txt ) Viết mảng ký tự txt nh nh trục y zlabel ( txt ) Viết mảng ký tự txt nh nh trục z text( x, y , txt ) Viết chuỗi txt lên mn đồ hoạ vị trí x, y Giá trị toạ độ x,ycó tỷ lệ với lệnh plot Nếu x v y l vector giá trị txt đợc viết vị trí (xi, yi) Nếu txt l vector giá trị txt đợc viết vị trí xi, yi text(x,y,txt,'sc') Viết chuỗi ký tự txt vị trí x, y hệ toạ độ với điểm giới hạn l 0,0 v 1, gtext ( txt ) Viết chuỗi ký tự txt vị trí đợc xác định dấu+ hay trỏ đợc điều khiển chuột legend (st1,st2, ) Đa mn hình chuỗi ký tự st1, st2 hình hộp box m vị trí box đợc điều khiển bở chuột Dùng nh lệnh legend(st1, st2, ) với l1 v l2 l kiểu legend (l1, st1, l2, đờng thẳng st2 ) legen off Loại bỏ chức legend khỏi mn hình đồ hoạ Lệnh chuyển đổi từ số sang chuỗi đợc dùng việc in bao gồm sprinf, num2str, int2str Phần - Cơ sở 78 Chơng - Đồ hoạ hai chiều Ví dụ: Chơng trình mô tả chuyển động hỗn loạn bớc chuyển động tự n = input (' Nhap gia tri n = '); x = cumsum( rand ( n,1) - 0.5 ); y = cumsum( rand ( n,1 ) - 0.5 ); clf; plot (x,y); hold on; plot (x(1), y(1), '0', x(n), y(n),'0'); axs = axis; % lấy giá trị max scale = axs(2) - axs(1); text(x(1) + scale/30, y(1), 'start'); text(x(n) + scale/30, y y(n), 'kết thúc'); hold off; xlabel('trục x'); ylabel('trục y'); title ('chuyển độn hỗn loạn'); Vi du ve chuyen dong hon loan Start -1 End truc y -2 -3 -4 -5 Hình 4.21 cho với số bớc hoạt động n = 200 Phần - Cơ sở 79 Chơng - Đồ hoạ hai chiều 4.3.7 Đọc liệu từ mn đồ hoạ Lệnh ginput đợc sử dụng để lấy liệu từ mn hình đồ hoạ Lệnh ny dùng để thay trỏ cửa sổ Con trỏ đợc dịch chuyển thông qua chuột hay bn phím ngời sử dụng Khi ấn chuột hay phím enter giá trị toạ độ đợc chuyển vo Matlab Nếu giá trị toạ độ điểm không xác định Matlab giữ lại có lần liệu khác *[ x, y ] = ginput Đọc toạ độ điểm từ mn hình đồ hoạ v trao kết cho vector x, y Vị trí điểm đợc xác định mouse hay bn phím *[ x, y ] = ginput ( n ) Đọc n toạ độ điểm từ mn hình đồ hoạ *[ x, y, t ] = ginput ( ) Trả giá trị toạ độ cho x v y; t l mảng ký tự tơng ứng với l phím trái chuột, l phím phải, l phím Nếu bn phím đợc sử dụng t nhận giá trị cho mã ASCII phím *[ x, y ] = ginput( , 's' ) Đọc giá trị toạ độ với giới hạn mn đồ họa khoảng từ đến *Waitforbuttonpress Dừng Matlab tác động lên chuột hay bn phím Nếu ấn chuột lệnh trả giá trị bn phím trả giá trị Ví dụ: Ví dụ cho sau minh hoạ cho việc dùng ginput v waitforbuttonpress lập trình Matlab để tạo nên nhiều tơng tác đơn giản mn đồ họa n = figure; % tạo cửa sổ đồ hoạ disp ('vẽ đờng mn đồ hoạ'); disp ('bằng trái chuột'); disp ('kết thúc phím phải chuột'); [x, y, t] = input(1); % đọc toạ độ từ mn đồ hoạ plot (x, y, '0'); x = x; y = y; hold; axis ( [0 1] ) % khoá trục while t ~= % không ấn phải chuột [x, y, t] = ginput(1); plot ( x,y,'0' ); x = [x x]; y = [y y]; Phần - Cơ sở 80 Chơng - Đồ hoạ hai chiều end line ( x, y ); disp ( ' ấn vo hình vẽ ' ); waitforbuttonpress; % đợi ấn vo phím delete ( n) 0.8 0.6 0.4 0.2 0 0.2 0.4 0.6 0.8 Hình 4.22 Tơng tác mn hình đồ hoạ chuột v bn phím Phần - Cơ sở 81 [...]... Scale(2,2)*roate (30 *Pi /18 0)translate (1, 1)*square >> plot (P( 1 , : ), P ( 2 , : ) ), axis ([ -4 4 -1 5]) >> title ('Hình vuông quay') 5 5 4 4 3 3 2 2 1 1 0 0 -1 -3 -2 -1 0 1 2 -1 -3 3 -2 Hình 4. 8 -1 0 1 Hình 4. 9 ảnh 4. 8 khác với ảnh 4. 9 với phép đảo vị trí phép toán >> P = translate (1, 1) *rotate (30 *Pi /18 0)*Scale(2,2) *square >> plot (P( 1 , : ), P ( 2 , : ) ), axis ([ -4 4 -1 5]) >> title ('Hình vuông quay') Phần 1 - Cơ sở 60 2 3 Chơng... 2 1. 5 1 1.5 0.5 1 0 0.5 -0.5 -1 0 0.5 1 1.5 0 -1 2 -0.5 0 0.5 Hình 4 .11 Đồ thị của ma trận A trên trục x v x trên A c) Hm y = sin(x) cos(x) với các điểm l các vòng tròn nhỏ >> x = - pi0 : 0.05 : pi; >> A = sin(x).*cos(x) ; >> plot( x,A ); 0.5 0 Hình 4 .12 Phần 1 - Cơ sở 63 1 1.5 Chơng 4 - Đồ hoạ hai chiều d) Hm plot với tham số phức 2 1. 5 1 0.5 0 -0.5 -1 -1. 5 -2 -2 -1 0 1 2 Hình 4. 13 Số phức đợc biểu... y 21 = diff(y 11) ./(x(2)-x (1) ); % đạo hm xấp xỉ y22 = (y 21 - y12 (1: 999))./norm(y12); subplot(2,2 ,1) ; plot (x,y 11) ; title ('hamf(x) = -xsin(x)'); Phần 1 - Cơ sở 72 Chơng 4 - Đồ hoạ hai chiều subplot(2,2,2); plot (x,y12); title ('đạo hm'); subplot (2,2 ,3) ; plot (x (1: 999),y 21) ; title ('đạo hm xấp xỉ'); subplot(2,2,u); plot (x (1: 999),y22); title('sai số liên quan') 10 ha m f ( x) = - xs in 10 0 -1 0 -10 10 ... flipud ( jet ) ); % Xác lập hệ mầu JET colorbar; % Hiển thị thanh bar mầu axis ( [-2 1 -1. 5 1. 5] ); 1 5 1 1 0 0 0 5 5 0 0 -0 5 0 -1 1 0 -1 -2 -1 0 -1 5 -2 -1 0 Hình 4 .15 hm Madelbrot hiển thị 3 cách a In theo lới b Theo contour 1 5 10 0 1 80 0 5 60 0 40 0 5 c In theo phổ mầu Phần 1 - Cơ sở 75 Chơng 4 - Đồ hoạ hai chiều 4 .3. 5 Thao tác v kiểm soát mn hình đồ hoạ Axes , scaling v zooming Các trục khi vẽ thờng... sau: 1+ i % z = 4 + 3i 1 i 2i 3 5i 5 5i i 3 3i 1 (2 - i) (3 - 5*i) clf; z= [ (1 + i) ( -4 + 3* i) (5 -5*i) (i) ( -1 - i) ( -1) (3 - 3* i) subplot(2,2 ,1) ; quiver(real(z), imag(z)); title('hm quiver); subplot(2,2,2);feather(z); title('hm feather); subplot(2,2 ,3) ; compass(z); Phần 1 - Cơ sở 70 ] Chơng 4 - Đồ hoạ hai chiều title('hm compass); subplot(2,2 ,4) ; rose(angle(z(:))); title ( 'ham rose ); 4 hàm... >> plot ( x,y ,1, -1 ); grid on b) Thay đổi để tạo ra đờng tròn đúng hình dạng >>axis ('square'); >>grid on c) Bộ lệnh sau cho ra mn hình 13 . 15 b >> axis ('normal'); >> grid on; >> axis ( [-2 2 -3 3] ) 1 1 0.5 0.5 0 0 Hình 4. 20 a) Trớc lúc căn chuẩn Phần 1 - Cơ sở 77 b) Sau khi căn chuẩn square Chơng 4 - Đồ hoạ hai chiều 3 2 1 0 -1 -2 -3 -2 -1 0 1 2 c) Sau khi trả lại trạng thái normal 4 .3. 6 Văn bản trong... xx; e1(i) = exp( -(xx^2) ); e2(i) = xx^2 * exp ( -(xx^2) ); e3(i) = xx*exp ( -(xx^2) ); e4(i) = exp (-xx); end Script file trên sau khi thực hiện với tham số: Số điểm n = 50 Phần 1 - Cơ sở 64 % xoá e1 - e4 Chơng 4 - Đồ hoạ hai chiều Khoảng xác định trên a = 0 Khoảng xác định dới b = 5 1 0.8 0.6 0 .4 0.2 0 0 1 2 3 4 Hình 4 . 14 a Đồ thị của các hm lấy từ ví dụ trên plot(x,e1,'w',x,e2,'w',x,e3,'w',x,e4,'w')... trị từ hệ toạ độ cực sang hệ Đề các >> plot(x,y); % polar_to_carttesian 4 3 12 0 15 0 90 6 4 60 30 2 18 0 210 240 270 2 1 0 0 33 0 -1 -2 30 0 -3 -4 -5 0 5 Hình 4 .17 trên hệ toạ độ cực 4 .3. 3 Mặt phẳng đồ hoạ cho số phức quiver ( x , y ) Vẽ mũi tên cho mỗi cặp của hệ toạ độ cho bởi xij v yij cùng biến số v độ lớn l dxi v dyi quiver Vẽ 1 mũi tên với tọa độ xi yi cùng biến số v độ lớn l tập dxij v dyij ( x ,... -4 -2 0 1 3 7 ] >> y = [ 15 4 0 1 9 20 ] >> plot( x,y,w); hold on >> plot( x,y/2 ); 20 15 10 5 Hình 4 .10 Đồ thị hm y v y/2 theo x b Đồ thị hm sin(x) v x/2 + 1/ 2 >>x = 0 : 0 1 : 2; Phần 1 - Cơ sở 62 Chơng 4 - Đồ hoạ hai chiều >>A = [sin (pi*x); 0.5 + 0.5*x]; >>plot (x,A) * Trục của đồ thị xoay khi ta giao hoán vị trí cua A v A >>x = 0 : 0 1 : 2; >>A = [sin (pi*x); 0.5 + 0.5*x]; >>plot (A,x) 2 1. 5 1 1.5... vẽ hm loga 12 00 10 10 00 10 4 3 800 600 10 40 0 10 2 1 Hình 4 .16 b)Vẽ hm sau trên hê toạ độ cực theo công thức sau: Phần 1 - Cơ sở 68 Chơng 4 - Đồ hoạ hai chiều R = ecost - 2cos4 + sin t5 12 >> t = linspace (0,22*pi ,11 00); >> r = exp ( cos( t ) ) - 2*cos (u*t)+sin ( t. /12 ) ).^5; >> subplot (2 ,1, 1); >> p = polar(t,r); % vẽ trên hệ toạ độ cực >> subplot (2 ,1, 2) >> [ x , y ] = pol2cart(t,r) % giá ... sau: a 11 a12 b 11 b12 a a b b 21 22 21 22 = 0 (4. 8) Từ phơng trình (4. 8) cho kết sau: b 11 = a 22 a11a 22 a 21a 22 b12 = a12 a11a 22 a 21a12 (4 .10 ) b 21 = a 21 a11a 22 a 21a12 (4 .11 )... 0.6929 0.67 93 0.2 41 8 -0.62 84 0 .40 44 0.6 645 0 .35 36 -0. 612 4 0.70 71 >> X1 = R*[ ; ; ] X1 = Phần - Cơ sở 54 Chơng - Đồ hoạ hai chiều 5.5077 2.7587 -0. 233 4 >> X = inv( R ) * X1 X= 2.0000 5.0000 3. 0000... subplot(2,2,u); plot (x (1: 999),y22); title('sai số liên quan') 10 m f ( x) = - xs in 10 -1 -10 10 d a o m -1 -1 0 10 -4 x 1s0a i s o lie n q ua n 10 10 d a o m xa p xi 0 -1 -10 -5 -1 10 10 Hình 4 .19 Hm -xsin(x)

Ngày đăng: 03/12/2015, 13:47

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