1. Trang chủ
  2. » Công Nghệ Thông Tin

Giao trinh matlab v5.2 P7 potx

11 270 0

Đ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

Thông tin cơ bản

Định dạng
Số trang 11
Dung lượng 239,65 KB

Nội dung

Chơng 4 - Đồ hoạ hai chiều Phần 1 - Cơ sở 56 H H ì ì n n h h 4 4 . . 2 2 Q Q u u a a y y t t h h ự ự c c t t h h ể ể q q u u a a n n h h t t r r ụ ụ c c x x 3 3 Trong hệ toạ độ không gian thờng (x, y) để biểu diễn điẻm ở vô cùng ít nhất trong hai giá trị của điểm = . Nhng trong hệ toạ độ thuần nhất, việc biểu diễn chỉ thông qua bằng cách cho giá trị W = 0 với x 1 , y 1 l những số hữu hạn bất kỳ. Tuy nhiên chúng ta không đi sâu vo điểm ny, bạn đọc có thể tham khảo các ti liệu về đồ hoạ máy tính v các bi toán chiếu phối cảnh, ở đây chúng ta chỉ nói về phơng pháp tạo ra các phép biến đổi trong không gian đồ hoạ. Với Hình 4.3 các điểm tạo nên hình vuông đợc cho các giá trị nh sau: PPPP 1234 05 0 1 05 1 1 05 1 1 05 1 1 = = == . , . , . , . Nh chúng ta đã biết giá trị toạ độ thứ ba - W đợc cho bằng 1, ở đây chúng ta đã sử dụng đến kỹ thuật phổ biến trong các bi toán đồ hoạ v với Matlab chúng ta dễ dng thể hiện bằng các câu lệnh sau: >> P 1 = [-0.5; 0; 1]; P 2 = [-0.5; 1; 1]; >> P 3 = [0.5; 1; 1]; P 4 = [0.5; 0; 1]; (Chú ý rằng ma trận P chứa 2 vector P 1 dùng cho việc đóng hình vuông) Việc tạo ta hình vuông trên mn đồ hoạ thông qua biến square >> square = [ P 1 P 2 P 3 P 4 P 1 ] ; >> plot ( square( 1,: ), square( 2,: ) ) >> axis([-4 4 -1 5]); >> title ('hình vuông với tỉ lệ trục [ -4 4 -1 5 ]'); Chơng 4 - Đồ hoạ hai chiều Phần 1 - Cơ sở 57 H H ì ì n n h h 4 4 . . 3 3 a a . . H H ì ì n n h h v v u u ô ô n n g g c c h h u u ẩ ẩ n n b b . . H H ì ì n n h h v v u u ô ô n n g g s s a a u u k k h h i i t t h h a a y y đ đ ổ ổ i i t t ỉ ỉ l l ệ ệ t t r r ụ ụ c c t t o o ạ ạ đ đ ộ ộ việc tạo ta hình vuông trên mn đồ hoạ thông qua biến square >> square = [ P 1 P 2 P 3 P 4 P 1 ] ; >> plot ( square( 1,: ), square( 2,: ) ) >> axis([-4 4 -1 5]); >> title ('hình vuông với tỉ lệ trục [ -4 4 -1 5 ]') 4 4 . . 2 2 . . 2 2 P P h h é é p p c c h h u u y y ể ể n n d d ị ị c c h h Hm biến đổi chuyển vị với các khoảng dx v dy song song trên 2 trục x v y. function T = Translate ( dx , dy ) T = [1 0 dx; 0 1 dy; 0 0 1]; % ma trận dịch chuyển trong hệ toạ độ đồng nhất % 1 0 0 dy 1 0 dx 0 0 =T Việc dịch chuyển hình vuông 1 khoảng đơn vị theo x v 2 khoảng đơn vị theo y đuợc thể hiện bằng các dòng lệnh: >> P = translate ( 1 , 2) * square >> plot ( P( 1 , : ), P ( 2 , : ) ); >> axis ( [-3 3 -1 3] ) >> title (' Hình vuông thay đổi vị trí theo dx v dy ') -0.5 0 0.5 0 0.2 0.4 0.6 0.8 1 -4 -2 0 2 4 -1 0 1 2 3 4 5 hinh vuong voi ti le truc [ -4 4 -1 5 ] Ch−¬ng 4 - §å ho¹ hai chiÒu PhÇn 1 - C¬ së 58 H H × × n n h h 4 4 . . 4 4 H H × × n n h h v v u u « « n n g g d d Þ Þ c c h h c c h h u u y y Ó Ó n n t t h h e e o o ® ® é é d d μ μ i i d d x x v v μ μ d d y y 4 4 . . 2 2 . . 3 3 . . P P h h Ð Ð p p q q u u a a y y Hμm quay quanh gèc to¹ ®é víi mét gãc φ bÊt kú ng−îc chiÒu kim ®ång hå ®−îc viÕt. Function R = rotate (fi) %R = cos sin φ φ φφ − 0 sin cos 0 0 0 1 R = [cos(fi) -sin(fi) 0 sin(fi) cos(fi) 0 0 0 1] H H × × n n h h 4 4 . . 5 5 H H × × n n h h v v u u « « n n g g q q u u a a y y 1 1 g g ã ã c c 4 4 5 5 t t h h e e o o g g è è c c t t o o ¹ ¹ ® ® é é 1 2 3 4 H×nh vu«ng quay theo goc 45 -4 -2 0 2 4 -1 0 1 2 3 4 5 hinh vuong dich theo dx=1, dy=2 Chơng 4 - Đồ hoạ hai chiều Phần 1 - Cơ sở 59 Hình 4.5 thu đợc thông qua dòng lệnh dới Matlab nh sau, với góc quay = 45 0 . >> P = rotate (45*pi/180)*square >> plot (P( 1 , : ), P ( 2 , : ) ), axis ([-3 3 -1 3]) >> title ('Hình vuông quay theo goc 45 ') H H ì ì n n h h 4 4 . . 6 6 T T ổ ổ h h ợ ợ p p c c ủ ủ a a h h a a i i p p h h é é p p b b i i ể ể n n đ đ ổ ổ i i Hay hình 4.6 thu đợc 1 cách dễ dng trên cơ sở kết hợp của 2 phơng pháp chuyển đổi. >> P = rotate (30*Pi/180)*translate(1,2)*square >> plot (P( 1 , : ), P ( 2 , : ) ), axis ([-4 4 -1 5]) >> title ('Hình vuông quay v dịch chuyển ') 4 4 . . 2 2 . . 4 4 P P h h é é p p t t ỉ ỉ l l ệ ệ ( ( S S c c a a l l i i n n g g ) ) Hm dới đây cho phép biến đổi tỷ lệ của hình theo 1 tỷ lệ nhất định. Việc biến đổi tỷ lệ đợc thực hiện qua phép nhân ma trận S vơ Sx, Sy l 2 hệ số biến đổi. % S Sx Sy= 00 00 001 function S = scale (Sx, Sy) S = [ Sx 0 0; 0 Sy 0; 0 0 1 ] Ví dụ việc biến đổi hình vuông 2 lần theo x v 3 lần theo y đợc thực hiện nhờ các lệnh sau. >> P = scale (2,3)*square >> plot (P( 1 , : ), P ( 2 , : ) ) >> title ('Hình vuông thay đổi tỉ lệ theo x = 2 theo y = 3) -4 -2 0 2 4 -1 0 1 2 3 4 5 Quay theo goc 60 dich chuyen tren doan dx=1, dy=2 Chơng 4 - Đồ hoạ hai chiều Phần 1 - Cơ sở 60 H H ì ì n n h h 4 4 . . 7 7 P P h h é é p p b b i i ế ế n n đ đ ổ ổ i i t t ỉ ỉ l l ệ ệ Hình 4.7 cho thấy sự biến đổi của hình vuông qua hm scale. Việc thay đổi đó thực hiện qua gốc toạ độ. Phép chuyển vị, phép quay hay scale đều có thể hết hợp lẫn với nhau 1 cách dễ dng. Việc chuyển đổi vị trí của các phép biến đổi sẽ đem đến các hình ảnh khác nhau. >> P = Scale(2,2)*roate(30*Pi/180)translate(1,1)*square >> plot (P( 1 , : ), P ( 2 , : ) ), axis ([-4 4 -1 5]) >> title ('Hình vuông quay') H H ì ì n n h h 4 4 . . 8 8 H H ì ì n n h h 4 4 . . 9 9 ả ả n n h h 4 4 . . 8 8 k k h h á á c c v v ớ ớ i i ả ả n n h h 4 4 . . 9 9 v v ớ ớ i i p p h h é é p p đ đ ả ả o o v v ị ị t t r r í í p p h h é é p p t t o o á á n n >> P = translate(1,1) *rotate(30*Pi/180)*Scale(2,2) *square >> plot (P( 1 , : ), P ( 2 , : ) ), axis ([-4 4 -1 5]) >> title ('Hình vuông quay') -4 -2 0 2 4 -1 0 1 2 3 4 5 Hinh vuong bien doi ti le -3 -2 -1 0 1 2 3 -1 0 1 2 3 4 5 -3 -2 -1 0 1 2 3 -1 0 1 2 3 4 5 Chơng 4 - Đồ hoạ hai chiều Phần 1 - Cơ sở 61 4.3. Các hm chuẩn để biểu diễn đồ hoạ 2 chiều Nh đã giới thiệu qua với bạn đọc ở phần trên, Matlab l công cụ rất mạnh cho việc xử lý v thể hiện dới dạng đồ hoạ. Hm Plot trong Matlab thờng đợc sử dụng liên tục cho việc vẽ v tạo lập các dạng đồ thị 2 chiều. Dạng đơn giản nhất để thể hiện dữ liệu l Plot nhng kiểu đờng hay mầu của đờng đợc xác định trên biến str của hm. Bảng dới đây sẽ cho phép chúng ta nắm đầy đủ mọi thông tin về hm. 4 4 . . 3 3 . . 1 1 C C á á c c b b ộ ộ l l ệ ệ n n h h v v ẽ ẽ a a . . L L ệ ệ n n h h P P L L O O T T plot ( x,y ) Vẽ theo vector y v x (y trục tung của hệ, x trục honh). Đồ thị thu đợc sẽ l tập của các điểm (xi,yi). plot ( y ) Vẽ ra tập các điểm (i,yi) với y l các điểm trên trục tung v i l các điểm trên trục honh. plot ( z ) Vẽ theo tập các số ảo ( real( z ), image( z ) ). Trục honh l tập các số thực v trục tung l tập các số ảo. plot ( A) Vẽ ra theo các cột của A theo chỉ số tơng ứng xác định bởi tự chơng trình. plot ( x,A ) Vẽ ra theo các cột của A theo chỉ số tơng ứng xác định bởi vector x. plot ( A,x ) Vẽ x theo A. Nếu A l ma trận m hng n cột, vector x có thể theo chỉ số tơng ứng trên m hoặc n nếu chiều di của x = m hay bằng n. Vector x có thể l ma trận hng hay cột. plot ( A,B ) Vẽ các cột của A theo các cột của B. Nếu A v B l 2 ma trận có cùng độ lớn mxn thì chúng ta sẽ thu đợc m đồ thị n điểm . plot ( , str ) Vẽ hm có các biến số xác định nh trên v các chỉ số về mầu sắc v kiểu đờng theo biến str plot( x1, y1, str1, x2, y2, str2, ) Vẽ hm vector y1, y2, , yn theo vector x1, x2, , xn ( y trục tung của hệ, x trục honh ). Đồ thị thu đ ợc sẽ lấy giá trị về mầu sắc v kiểu đờng tơng ứng trong str1, str2, , str n Các giá trị của biến str trong hm Plot vầ mầu sắc hay kiểu dáng của đờng đợc liệt kê theo bảng dới đây. Kiểu đờng Kiểu đờng Mầu sắc Mầu sắc Chơng 4 - Đồ hoạ hai chiều Phần 1 - Cơ sở 62 . điểm - đờng liền nét Y vng C xanh lá mạ * sao đờng đứt nét G xanh lá cây W trắng X chữ cái x đờng chấm gạch M đỏ tơi R đỏ O chữ cái o : đờng chấm B xanh lam K đen + dấu cộng Kiểu đờng thẳng có thể l tổ hợp của 2 hay nhiều yếu tố. Ví dụ 'y- -' l ký hiệu cho đờng vng liền nét hay ' b+' l đờng xanh các dấu cộng. Độ rộng của đờng hay kích thớc các ký hiệu có thể thay đổi tuỳ ý. Các trục toạ độ sẽ tự động thay đổi phù hợp với đơn vị của đồ thị nếu không có sự tác động no khác của ngời sử dụng. Ví dụ: Vo dữ liệu cho các biến số x,y >> x = [ -4 -2 0 1 3 7 ] >> y = [ 15 4 0 1 9 20 ] >> plot( x,y,w); hold on >> plot( x,y/2 ); H H ì ì n n h h 4 4 . . 1 1 0 0 Đ Đ ồ ồ t t h h ị ị h h m m y y v v y y / / 2 2 t t h h e e o o x x b. Đồ thị hm sin(x) v x/2 + 1/2 >>x = 0 : 0 1 : 2; 5 10 15 20 Chơng 4 - Đồ hoạ hai chiều Phần 1 - Cơ sở 63 >>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) H H ì ì n n h h 4 4 . . 1 1 1 1 Đ Đ ồ ồ t t h h ị ị c c ủ ủ a a m m a a t t r r ậ ậ n n A A t t r r ê ê n n t t r r ụ ụ c c x x v v x x t t r r ê ê n n A 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 ); H H ì ì n n h h 4 4 . . 1 1 2 2 0 0.5 1 1.5 2 -1 -0.5 0 0.5 1 1.5 -1 -0.5 0 0.5 1 1.5 0 0.5 1 1.5 2 0 0.5 Chơng 4 - Đồ hoạ hai chiều Phần 1 - Cơ sở 64 d) Hm plot với tham số phức. H H ì ì n n h h 4 4 . . 1 1 3 3 S S ố ố p p h h ứ ứ c c đ đ ợ ợ c c b b i i ể ể u u d d i i ễ ễ n n d d ớ ớ i i d d ạ ạ n n g g x x o o ắ ắ n n ố ố c c . . >> R = linespace (0,2); % tạo vector >> tt = linespace (0,10*pi); % tạo vector của góc >> [x,y] = plot2cart(tt,r); % chuyển toạ độ >> z = x + i*y ; %tạo vector số phức >> plot(z) ; % in ra mn đồ hoạ e) Tạo một file *.m thực hiện chuỗi lệnh sau n = input ( Số điểm n = ); a = input ( Khoảng xác định trên a = ); b = input ( Khoảng xác định dới b = ); y = [ ]; e 1 = [ ]; e 2 = [ ]; e 3 = [ ]; e4 = [ ]; % xoá e 1 - e 4 for i = 1 : n xx = a + ( b - a ) * (i - 1) / (n - 1); x(i) = xx; e 1 (i) = exp( -(xx^2) ); e 2 (i) = xx^2 * exp ( -(xx^2) ); e 3 (i) = xx*exp ( -(xx^2) ); e 4 (i) = exp (-xx); end Script file trên sau khi thực hiện với tham số: Số điểm n = 50 -2 -1 0 1 2 -2 -1.5 -1 -0.5 0 0.5 1 1.5 2 Chơng 4 - Đồ hoạ hai chiều Phần 1 - Cơ sở 65 Khoảng xác định trên a = 0 Khoảng xác định dới b = 5 H H ì ì n n h h 4 4 . . 1 1 4 4 a a Đ Đ ồ ồ t t h h ị ị c c ủ ủ a a c c á á c c h h m m l l ấ ấ y y t t ừ ừ v v í í d d ụ ụ t t r r ê ê n n plot(x,e1,'w',x,e2,'w',x,e3,'w',x,e4,'w') Các lệnh trên tơng đơng với chuỗi các lệnh dới đây. Tuy nhiên với các bộ lệnh dới cho phép chúng ta dễ dng trong khi đọc cũng nh vo dữ liệu. >> x = linespace (a,b,u) >> e 1 = exp (-x^2); >> e 2 = (X^2) * exp (-x ^ 2); >> e 3 = x . * exp (-x^2); >> e4 = exp (-x) với u = 50 a = 0 b = 30 >> plot (x, e 1 , 't', x, e 2 , 't', x, e 3 , x, 't', x, e 3 , '0', x, e u , 'x') 0 1 2 3 4 0 0.2 0.4 0.6 0.8 1 . *rotate(30*Pi/180)*Scale (2, 2) *square >> plot (P( 1 , : ), P ( 2 , : ) ), axis ([-4 4 -1 5]) >> title ('Hình vuông quay') -4 -2 0 2 4 -1 0 1 2 3 4 5 Hinh vuong bien doi ti le -3 -2 -1. 1 2 3 4 H×nh vu«ng quay theo goc 45 -4 -2 0 2 4 -1 0 1 2 3 4 5 hinh vuong dich theo dx=1, dy =2 Chơng 4 - Đồ hoạ hai chiều Phần 1 - Cơ sở 59 Hình 4.5 thu đợc thông qua dòng lệnh dới Matlab. sau. >> P = scale (2, 3)*square >> plot (P( 1 , : ), P ( 2 , : ) ) >> title ('Hình vuông thay đổi tỉ lệ theo x = 2 theo y = 3) -4 -2 0 2 4 -1 0 1 2 3 4 5 Quay theo goc 60

Ngày đăng: 10/07/2014, 20:21

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN