1 GIỚI THIỆU CHUNG .1 1.1 Tổng quan đặc điểm Matlab 1.2 Giao diện cửa sổ Matlab 2 CÁC KHÁI NIỆM CƠ BẢN 2.1 Hoạt động Matlab cửa sổ lệnh 2.1.1 Những đặc điểm cửa sổ lệnh 2.2 Các loại biến, hàm tốn học Matlab 2.2.1 Biến Matlab 2.2.2 Các hàm tốn học thơng thường .5 2.2.3 Số phức MA TRẬN VÀ CÁC PHÉP TỐN MA TRẬN .8 3.1 Mảng đơn 3.2 Địa mảng .10 3.3 Cấu trúc mảng .11 3.4 Vector hàng vector cột 12 3.5 Các phép tốn mảng .14 3.5.1 Phép tốn mảng với số đơn .14 3.5.2 Phép tốn mảng với mảng .14 3.5.3 Mảng với lũy thừa 16 3.6 Mảng có phần tử 16 3.7 Thao tác mảng 17 3.8 Tìm kiếm mảng 21 3.9 So sánh mảng .22 3.10 Kích cỡ mảng .24 3.11 Mảng nhiều chiều .25 3.12 Các ma trận đặc biệt 27 LẬP TRÌNH TRONG MATLAB 29 4.1 Script M_file .29 4.2 Các phép tính logic quan hệ 31 4.2.1 Tốn tử quan hệ .31 4.2.2 Tốn tử logic 32 4.2.3 Các hàm quan hệ hàm logic .33 4.3 Vòng lặp điều kiện 34 4.3.1 Vòng lặp for .34 4.3.2 Vòng lặp while 36 4.4 Cấu trúc điều kiện 37 4.4.1 Cấu trúc if-else-end 37 4.4.2 Cấu trúc switch-case 38 ĐỒ HỌA CHIỀU TRONG MATLAB 40 5.1 Sử dụng lệnh Plot .40 5.2 Kiểu đường, dấu màu 42 5.3 Kiểu đồ thị 43 5.3.1 Đồ thị lưới, hộp chứa trục, nhãn lời giải .43 i 5.3.2 Kiến tạo hệ trục tọa độ 45 5.4 In hình 48 5.5 Thao tác với đồ thị 49 5.6 Một số đặc điểm khác đồ thị hệ tọa độ phẳng 51 ĐỒ HỌA CHIỀU TRONG MATLAB 55 6.1 Đồ thị đường thẳng 55 6.2 Đồ thị bề mặt lưới 56 6.3 Thao tác với đồ thị 58 6.4 Các đặc điểm khác đồ thị khơng gian 3D 60 6.5 Bảng màu 62 6.6 Sử dụng bảng màu .62 6.7 Sử dụng màu để thêm thơng tin 63 6.8 Hiển thị bảng màu 64 6.9 Thiết lập thay đổi bảng màu 65 CÁC THƯ VIỆN TRỢ GIÚP VÀ XỬ LÝ TÍN HIỆU TRONG MATLAB .67 ii GIỚI THIỆU CHUNG 1.1 Tổng quan đặc điểm Matlab Chương trình MATLAB chương trình viết cho máy tính PC nhằm hỗ trợ cho tính toán khoa học kó thuật với phần tử ma trận máy tính cá nhân công ty "The MATHWORKS" viết Thuật ngữ MATLAB có hai từ MATRIX LABORATORYghép lại Chương trình sử dụng nhiều nghiên cứu vấn đề tính toán toán kó thuật như: Lý thuyết điều khiển tự động, kó thuật thống kê xác suất, xử lý số tín hiệu, phân tích liệu, dự báo chuổi quan sát, v.v… MATLAB điều khiển tập lệnh, tác động qua bàn phím Nó cho phép khả lập trình với cú pháp thông dòch lệnh – gọi Script file Các lệnh hay lệnh MATLAB lên đến số hàng trăm ngày mở rộng phần TOOLS BOX( thư viện trợ giúp) hay thông qua hàm ứng dụng xây dựng từ người sử dụng MATLAB có 25 TOOLS BOX để trợ giúp cho việc khảo sát vấn đề có liên quan TOOL BOX SIMULINK phần mở rộng MATLAB, sử dụng để mô hệ thống động học cách nhanh chóng tiện lợi MATLAB 3.5 trở xuống hoạt động môi trường MS-DOS MATLAB 4.0, 4.2, 5.1, 5.2, … hoạt động môi trường WINDOWS Các version 4.0, 4.2 muốn hoạt động tốt phải sử dụng với WINWORD 6.0 Hiện có version 5.31 (kham khảo từ Website công ty) Chương trình Matlab chạy liên kết với chương trình ngôn ngữ cấp cao C, C++, Fortran, … Việc cài đặt MATLAB thật dễ dàng ta cần ý việc dùng thêm vào thư viện trợ giúp hay muốn liên kết phần mềm với vài ngôn ngữ cấp cao 1.2 Giao diện cửa sổ Matlab Matlab sử dụng cửa số giao diện: cửa số để nhập câu lệnh, liệu in kết Cửa số thứ 2: sử dụng cho việc truy xuất đồ họa, thể kết quả, lệnh dạng đồ họa 2 CÁC KHÁI NIỆM CƠ BẢN 2.1 Hoạt động Matlab cửa sổ lệnh Cửa sổ lệnh phần giao diện Matlab sử dụng để nhập câu lệnh Trong cửa số lệnh, Matlab thực phép tốn từ đơn giản (giống máy tính thơng thường) đến phức tạp Trong Matlab giải phép tốn đơn giản sau: >> + + ans= 12 >> 4*25 + 6*52 + 2*99 ans= 610 Chú ý Matlab khơng ý đến khoảng trống phép nhân ưu tiên phép cộng Trong Matlab kết gọi ans (viết tắt answer – phần biến Matlab nói rõ vấn đề này) Tuy nhiên, ta lưu giá trị vào biến đó, ta viết câu lệnh cửa số lệnh sau: >> erasers = erasers= >> pads = pads= >> tape = 2; >> iterms = erases + pads + tape iterms= 12 >> cost = erases*25 + pads*52 + tape*99 cost= 610 >> everage_cost = cost/iterms everage_cost= 50.8333 2.1.1 Những đặc điểm cửa sổ lệnh 2.1.1.1 Quản lý khơng gian làm việc Matlab Các liệu biến tạo bên cửa sổ lệnh lưu trữ khơng gian làm việc Matlab Khi muốn xem lại biến sử dụng chương trình ta dùng lệnh who: >> who Your variables are: delta i y Để xem chi tiết biến, ta dùng lệnh whos: >> whos Name Size delta i y Bytes 1x1 1x1 1x1 8 Class double array double array double array Grand total is elements using 24 bytes Các biến bị xóa khỏi khơng gian làm việc lệnh clear, ví dụ >> clear i Chỉ xóa biến i >> clear Xóa tất biến khơng gian làm việc Lưu ý, thực lệnh clear, Matlab khơng có câu hỏi u cầu xác nhận việc thực lệnh, vậy, tất biến bị xóa Cần ý sử dụng lệnh clear Một vài lệnh hệ thống Casesen off Bỏ thuộc tính phân biệt chữ hoa, chữ thường Casesen on Sử dụng thuộc tính phân biệt chữ hoa chữ thường Clc Xóa cửa sổ dòng lệnh Clf Xóa cửa sổ đồ họa Computer Lệnh in xâu ký tự cho biết loại máy tính Demo Lệnh cho phép xem chương trình mẫu Exit, quit Thốt khỏi Matlab Ctrl+C Dừng chương trình bị rơi vào trạng thái lặp khơng kết thúc Input Nhập liệu từ bàn phím Pause Ngừng tạm thời chương trình Save Lưu giữ biến vào file có tên matlab.mat Load Tải biến lưu từ file vào vùng làm việc 2.1.1.2 Khn dạng hiển thị Khi MATLAB hiĨn thÞ kÕt qu¶ d¹ng sè, nã tu©n theo mét sè quy ®Þnh sau: MỈc ®Þnh, nÕu kÕt qu¶ lµ sè nguyªn th× MATLAB hiĨn thÞ nã lµ mét sè nguyªn, kÕt qu¶ lµ mét sè thùc th× MATLAB hiĨn thÞ sè xÊp xØ víi ch÷ sè sau dÊu phÈy, cßn c¸c sè d¹ng khoa häc th× MATLAB hiĨn thÞ còng gièng nh c¸c m¸y tÝnh khoa häc B¹n cã thĨ kh«ng dïng d¹ng mỈc ®Þnh, mµ t¹o mét khu«n d¹ng riªng tõ mơc Preferences, b¶ng chän file, cã thĨ mỈc ®Þnh hc ®¸nh d¹ng xÊp xØ t¹i dÊu nh¾c Chóng ta dïng biÕn average_cost ( vÝ dơ tríc) lµm vÝ dơ, d¹ng sè nµy lµ: LƯnh cđa MATLAB format short format long format short e format long e format short g Average_cost 50.833 50.83333333333334 5.0833e+01 5.083333333333334e+01 50.833 Chó thÝch sè 16 sè sè víi sè mò 16 sè víi sè mò chÝnh x¸c h¬n format short hc format long g 50.83333333333333 format hex format bank format + format rat 40496aaaaaaaaaab 50.83 + 305/ format short e chÝnh x¸c h¬n format long hc format long e hƯ c¬ sè 16 hai sè hƯ 10 d¬ng, ©m hc b»ng kh«ng d¹ng ph©n sè Mét chó ý quan träng lµ MATLAB kh«ng thay ®ỉi sè ®Þnh l¹i khu«n d¹ng hiĨn thÞ ®ỵc chän, mµ chØ thay ®ỉi mµn h×nh thay ®ỉi 2.2 Các loại biến, hàm tốn học Matlab 2.2.1 Biến Matlab Tất biến Matlab dài tới 31 ký tự Tên biến phải từ khơng chứa dấu cách, bao gồm chữ cái, chữ số dấu gạch phải bắt đầu chữ Một vài biến đặc biệt Matlab: Các biến đặc biệt Giá trị ans Tên biến mặc định dùng để trả kết pi = 3.1415 Eps Số nhỏ nhất, dùng cộng với để số nhỏ lớn flops Số phép tốn số thực inf Để số vơ NaN nan Dùng để số khơng xác định kết 0/0 i (và) j i2 = j2 =-1 nargin Số đối số đưa vào hàm sử dụng narout Số đối số hàm đưa realmin Số nhỏ số thực realmax Số lớn số thực 2.2.2 Các hàm tốn học thơng thường abs(x) acos(x) acosh(x) angle(x) asin(x) asinh(x) atan(x) atan2(x, y) atanh(x) ceil(x) conj(x) cos(x) cosh(x) exp(x) fix(x) floor(x) gcd(x, y) imag(x) lcm(x, y) log(x) TÝnh argument cđa sè phøc x Hµm ngỵc cđa cosine Hµm ngỵc cđa hyperbolic cosine TÝnh gãc cđa sè phøc x Hµm ngỵc cđa sine Hµm ngỵc cđa hyperbolic sine Hµm ngỵc cđa tangent Lµ hµm arctangent cđa phÇn thùc cđa x vµ y Hµm ngỵc cđa hyperbolic tangent XÊp xØ d¬ng v« cïng Sè phøc liªn hỵp Hµm cosine cđa x Hµm hyperbolic cosine cđa x Hµm ex XÊp xØ kh«ng XÊp xØ ©m v« cïng ¦íc sè chung lín nhÊt cđa hai sè nguyªn x vµ y Hµm tr¶ vỊ phÇn ¶o cđa sè phøc Béi sè chung nhá nhÊt cđa hai sè nguyªn x vµ y Logarithm tù nhiªn log10(x) real(x) rem(x, y) round(x) sign(x) Logarithm c¬ sè 10 Hµm tr¶ vỊ phÇn thùc cđa x PhÇn d cđa phÐp chia x/ y Hµm lµm trßn vỊ sè nguyªn tè Hµm dÊu: tr¶ vỊ dÊu cđa argument nh: sign(-23.4)=-1; sign(0)=0 Hµm tÝnh sine cđa x Hµm tÝnh hyperbolic sine cđa x Hµm khai c¨n bËc hai Tangent Hyperbolic tangent sin(x) sinh(x) sqrt(x) tan(x) tanh(x) >> 4*atan(1) ans= 3.1416 >> help atant2 sign(1.2)=1; % Mét c¸ch tÝnh xÊp xØ gi¸ trÞ cđa pi % Yªu cÇu gióp ®ì ®èi víi hµm atan2 ATAN2 four quadrant inverse tangent ATAN2(Y, X) is the four quadrant arctangent of the real parts of the elements of X and Y -pi 180/pi*atan(-2/ 3) ans= -33.69 >> 180/pi*atan2(2, -3) ans= 146.31 >> 180/pi*atan2(-2, 3) ans= -33.69 >> 180/pi*atan2(2, 3) ans= 33.69 >> 180/pi*atan2(-2, -3) ans= -146.31 Mét sè vÝ dơ kh¸c: >> y = sqrt(3^2 + 4^2) % TÝnh c¹nh hun cđa tam gi¸c pitago 3-4-5 y= >> y = rem(23,4) % 23/4 cã phÇn d lµ y= >> x = 2.6,y1 = fix(x),y2 = floor(x),y3 = ceil(x),y4 round(x) x= 2.6000 y1= = y2= y3= y4= >> gcd(18,81) ans= >> lcm(18,81) ans= 162 % lµ íc sè chung lín nhÊt cđa 18 vµ 81 % 162 lµ béi sè chung lín nhÊt cđa 18 vµ 81 2.2.3 Số phức Mét nh÷ng ®Ỉc ®iĨm m¹nh mÏ nhÊt cđa MATLAB lµ lµm viƯc víi sè phøc Sè phøc MATLAB ®ỵc ®Þnh nghÜa theo nhiỊu c¸ch, vÝ dơ nh sau: >> c1 = - 2i % ChÌn thªm kÝ tù i vµo phÇn ¶o c1= 1.0000 - 2.0000i >> c1 = - 2j % j ë ®©y t¬ng tù nh i ë trªn c1= 1.0000 - 2.0000i >> c2 = 3*(2-sqrt(-1)*3) c2= 6.0000 - 9.0000i >> c3 = sqrt(-2) c3= + 1.4142i >> c4 = + sin(.5)*i c4= 6.0000 + 0.4794i >> c5 = + sin(.5)*j c5= 6.0000 + 0.4794i Trong hai vÝ dơ ci, MATLAB mỈc ®Þnh gi¸ trÞ cđa i = j = dïng cho phÇn ¶o Nh©n víi i hc j ®ỵc yªu cÇu trêng hỵp nµy, sin(.5)i vµ sin(.5)j kh«ng cã ý nghÜa ®èi víi MATLAB Ci cïng víi c¸c kÝ tù i vµ j, nh ë hai vÝ dơ ®Çu ë trªn chØ lµm viƯc víi sè cè ®Þnh, kh«ng lµm viƯc ®ỵc víi biĨu thøc Mét sè ng«n ng÷ yªu cÇu sù ®iỊu khiĨn ®Ỉc biƯt cho sè phøc nã xt hiƯn, MATLAB th× kh«ng cÇu nh vËy TÊt c¶ c¸c phÐp tÝnh to¸n häc ®Ịu thao t¸c ®ỵc nh ®èi víi sè thùc th«ng thêng: >> c6 = (c1 + c2)/c3 % Tõ c¸c d÷ liƯu ë trªn c6= -7.7782 - 4.9497i >> check_it_out = i^2 % B×nh ph¬ng cđa i ph¶i lµ -1 check_it_out= -1.0000 + 0.0000i vÝ dơ nµy chØ cßn l¹i phÇn thùc, phÇn ¶o b»ng kh«ng Chóng ta cã thĨ dïng hµm real vµ imag ®Ĩ kiĨm tra tõng phÇn thùc vµ ¶o Chóng ta cã thĨ biĨu diƠn sè phøc d¹ng ®é lín vµ gãc (d¹ng cùc): M M.ej = a+bi ë trªn sè phøc ®ỵc biĨu diƠn b»ng ®é lín M vµ gãc , quan hƯ gi÷a c¸c ®¹i lỵng nµy vµ phÇn thùc, phÇn ¶o cđa sè phøc biĨu diƠn díi d¹ng ®¹i sè lµ: M = = tan-1(b/ a) a = Mcos b = Msin Trong MATLAB, ®Ĩ chun tõ d¹ng cùc sang d¹ng ®¹i sè, dïng c¸c hµm real, imag, vµ angle: >> c1 c1= 1.0000 - 2.0000i >> M_c1 = abs(c1) M_c1= 2.2361 >> angle_c1 = angle(c1) angle_c1= -1.1071 >> deg_c1 = angle_c1*180/ pi -63.4349 >> real_c1 = real(c1) real_c1= >> imag_c1 = imag(c1) imag_c1= -2 % Gäi l¹i c1 % TÝnh argument cđa sè phøc % TÝnh gãc cđa sè phøc theo radian % Chun tõ radian sang ®é % TÝnh phÇn thùc % TÝnh phÇn ¶o MA TRẬN VÀ CÁC PHÉP TỐN MA TRẬN Trong phần này, ta xem xét biến đơn, đại lượng vơ hướng, biến ma trận phép tính bản, hàm chức sẵn có tốn tử sử dụng Hầu hết liệu có dạng cấu trúc ma trận Các phần tử ma trận xếp theo hàng cột Một giá trị đơn coi ma trận có hàng cột hay gọi đại lượng vơ hướng (scalar) Ma trận có hàng cột gọi vector Để truy nhập đến phần tử ma trận, ta sử dụng số hàng cột phần tử Cách nhập giá trị cho ma trận hay đại lượng vơ hướng Có bốn cách nhập giá trị cho đại lượng vơ hướng hay ma trận >> title('Bar chart of bell Curve') >> subplot(2,2,2) >> bar3(x,y) >> title('3-D Bar Chart of a Bell Cuve') >> subplot(2,2,3) >> stairs(x,y) >> title('Stair Chart of a Bell Curve') >> subplot(2,2,4) >> barh(x,y) >> title('Horizontal Bar Chart') • rose(V) vÏ mét biĨu ®å to¹ ®é cùc cho c¸c gãc vector v, t ¬ng tù ta còng cã c¸c lƯnh rose(v,n) vµ rose(v,x) ®ã x lµ mét vector Díi ®©y lµ mét vÝ dơ: >> v = randn(100,1)*pi; >> rose(v) >> title('Angle Histogram of Random Angle') 53 54 ĐỒ HỌA CHIỀU TRONG MATLAB MATLAB cung cÊp mét sè hµm ®Ĩ hiĨn thÞ d÷ liƯu chiỊu nh c¸c hµm vÏ ®êng th¼ng kh«ng gian chiỊu, c¸c hµm vÏ bỊ mỈt vµ vµ khung d©y vµ mµu cã thĨ ®ỵc sư dơng thay thÕ cho chiỊu thø t 6.1 Đồ thị đường thẳng LƯnh plot tõ kh«ng gian hai chiỊu cã thĨ më réng cho kh«ng gian chiỊu b»ng lƯnh plot3 Khu«n d¹ng cđa plot3 nh sau: plot3 ( x1, y1, z1, S1, x2, y2, z2, S2, ), ®ã xn, yn vµ zn lµ c¸c vector hc ma trËn, vµ Sn lµ x©u kÝ tù t chän dïng cho viƯc khai b¸o mµu, t¹o biĨu tỵng hc kiĨu ®êng Sau ®©y lµ mét sè vÝ dơ: >> >> >> >> t = linspace (0, 10*pi); plot3(sin(t),cos(t),t) title ('Helix'),xlabel('sin(t)') ylabel('cos(t)'),zlabel('t') Chó ý r»ng: hµm zlabel t¬ng øng víi hµm hai chiỊu xlabel vµ ylabel T¬ng tù nh vËy, lƯnh axis còng cã khu«n d¹ng: axis ( [xmin xmax ymin ymax zmin zmax ] ) thiÕt lËp giíi h¹n cho c¶ trơc VÝ dơ : >> axis('ij') % thay ®ỉi híng trơc tõ sau tríc 55 Hµm text còng cã khu«n mÉu nh sau: text ( x, y, z, string ) sÏ ®Ỉt vÞ trÝ x©u ‘string ‘ vµo to¹ ®é x, y, z 6.2 Đồ thị bề mặt lưới MATLAB ®Þnh nghÜa bỊ mỈt líi b»ng c¸c ®iĨm theo híng trơc z ë trªn ®êng kỴ « h×nh vu«ng trªn mỈt ph¼ng x-y Nã t¹o lªn mÉu mét ®å thÞ b»ng c¸ch ghÐp c¸c ®iĨm gÇn kỊ víi c¸c ®êng th¼ng KÕt qu¶ lµ nã tr«ng nh mét m¹ng líi ®¸nh c¸ víi c¸c m¾t líi lµ c¸c ®iĨm d÷ liƯu §å thÞ líi nµy thêng ®ỵc sư dơng ®Ĩ quan s¸t nh÷ng ma trËn lín hc vÏ nh÷ng hµm cã hai biÕn Bíc ®Çu tiªn lµ ®a ®å thÞ líi cđa hµm hai biÕn z = f (x, y ), t¬ng øng víi ma trËn X vµ Y chøa c¸c hµng vµ c¸c cét lỈp ®i lỈp l¹i MATLAB cung cÊp hµm meshgrid cho mơc ®Ých nµy [ X, Y ] = meshgrid(x, y ), t¹o mét ma trËn X, mµ c¸c hµng cđa nã lµ b¶n cđa vector x, vµ ma trËn Y cã c¸c cét cđa nã lµ b¶n cđa vector y CỈp ma trËn nµy sau ®ã ®ỵc sư dơng ®Ĩ íc lỵng hµm hai biÕn sư dïng ®Ỉc tÝnh to¸n häc vỊ m¶ng cđa MATLAB Sau ®©y lµ mét vÝ dơ vỊ c¸ch dïng hµm meshgrid >> x = -7.5:.5:7.5; >> y = x; >> [X,Y] = meshgrid(x,y); X, Y lµ mét cỈp cđa ma trËn t¬ng øng mét líi ch÷ nhËt mỈt ph¼ng x-y Mäi hµm z=f(x,y) cã thĨ sư dơng tÝnh chÊt nµy >> R = sqrt(X.^2+Y.^2)+eps; >> % find the distance from the origin (0,0) >> Z = sin(R)./R; % calculate sin(r)/ r Ma trËn R chøa b¸n kÝnh cđa mçi ®iĨm [X,Y], nã lµ kho¶ng c¸ch tõ mçi ®iĨm ®Õn t©m ma trËn Céng thªm eps ®Ĩ kh«ng ®Ĩ x¶y phÐp chia cho Ma trËn Z chøa sine cđa b¸n kÝnh chia cho b¸n kÝnh mçi ®iĨm s¬ ®å C©u lƯnh sau vÏ ®å thÞ líi: >> mesh(X,Y,Z) 56 §å thÞ trªn lµ ®¬n s¾c Tuy nhiªn b¹n cã thĨ thay ®ỉi mµu s¾c víi sù trỵ gióp cđa MATLAB rÊt rƠ dµng nÕu b¹n ®äc ®Õn phÇn colormaps Trong vÝ dơ nµy, hµm mesh x¾p xÕp gi¸ trÞ cđa c¸c phÇn tư cđa ma trËn vµo c¸c ®iĨm (XÞ,,ZÞ) kh«ng gian ba chiỊu mesh còng cã thĨ vÏ mét ma trËn ®¬n t¬ng tù nh víi mét ®èi sè; mesh(Z), sư dơng c¸c ®iĨm (i,j,ZÞ) Nh vËy Z ®ỵc vÏ ngỵc l¹i víi c¸c chØ sè cđa nã, trêng hỵp nµy mesh(Z) chØ ®¬n gi¶n lµ chia l¹i ®é kh¾c c¸c trơc x, y theo c¸c chØ sè cđa ma trËn Z B¹n h·y thư t¹o vÝ dơ cho trêng hỵp nµy? §å thÞ bỊ mỈt cđa cïng mét ma trËn Z tr«ng nh ®å thÞ líi tríc ®ã, ngo¹i trõ kho¶ng c¸ch gi÷a hai ®êng lµ kh¸c (gäi lµ patchs) §å thÞ lo¹i nµy dïng hµm surf, nã cã tÊt c¶ c¸c ®èi sè nh hµm mesh H·y xem vÝ dơ díi ®©y (H×nh 18.4): >> surf(X,Y,Z) §Ĩ lµm râ thªm mét vµi chđ ®Ị, chóng ta cïng quay l¹i hµm peaks ®· ®a ë phÇn tríc §å thÞ líi kh«ng gian chiỊu cđa hµm nµy ®ỵc ®a nh sau (h×nh 18.5): >> mesh(peaks) 57 >> title('Mesh Plot of Peaks function') §å thÞ ®êng viỊn cho ta thÊy ®ỵc ®é n©ng hc ®é cao cđa h×nh Trong MATLAB ®å thÞ ®êng viỊn kh«ng gian hai chiỊu t¬ng tù nh kh«ng gian ba chiỊu nhng hµm gäi cđa nã lµ contour3 §å thÞ sư dơng c¸c lƯnh sÏ ®ỵc minh ho¹ b¶ng kh¾c mµu 6.3 Thao tác với đồ thị MATLAB cho phÐp b¹n khai b¸o gãc ®Ĩ tõ ®ã quan s¸t ®ỵc ®å thÞ kh«ng gian ba chiỊu Hµm view(azimuth, elevation ) thiÕt lËp gãc xem b»ng viƯc khai b¸o azimuth vµ elevation “Elevation “ m« t¶ vÞ trÝ ngêi quan s¸t, xem nh lµ gãc ®o b»ng ®é trªn hƯ trơc x-y ”Azimut m« t¶ gãc hƯ trơc n¬i ngêi quan s¸t ®øng Azimuth ®ỵc ®o b»ng ®é tõ phÇn ©m trơc y PhÝa ©m trơc y cã thĨ quay theo chiỊu kim ®ång hå mét gãc -37.5 ®é tõ phÝa b¹n Elevation lµ gãc mµ t¹i ®ã m¾t b¹n thÊy ®ỵc mỈt ph¼ng x-y Sư dơng hµm view cho phÐp b¹n cã thĨ quan s¸t h×nh vÏ tõ c¸c gãc ®é kh¸c VÝ dơ nÕu elevation thiÕt lËp lµ ©m, th× view sÏ nh×n h×nh tõ phÝa díi lªn NÕu azimuth thiÕt lËp d¬ng, th× h×nh sÏ quay ngỵc chiỊu kim ®ång hå tõ ®iĨm nh×n mỈc ®Þnh.ThËm chÝ b¹n cã thĨ nh×n trùc tiÕp tõ trªn b»ng c¸ch thiÕt lËp view(0,90 ) Thùc th× ®©y lµ ®iĨm nh×n mỈc ®Þnh chiỊu, ®ã x t¨ng tõ tr¸i qua ph¶i, vµ y t¨ng tõ trªn xng díi, khu«n d¹ng view(2) hoµn toµn gièng nh mỈc ®Þnh cđa view(0, 90 ), vµ view(3) thiÕt lËp mỈc ®Þnh kh«ng gian chiỊu LƯnh view cã mét d¹ng kh¸c mµ rÊt tiƯn Ých sư dơng lµ view([X,Y,Z ]) cho phÐp b¹n quan s¸t trªn mét vector chøa hƯ trơc to¹ ®é decac kh«ng gian chiỊu Kho¶ng c¸ch tõ vÞ trÝ b¹n quan s¸t ®Õn gèc to¹ ®é kh«ng bÞ ¶nh hëng VÝ dơ, view([0 10 ]), view([0 -1 ]) vµ view(0, ) cho c¸c kÕt qu¶ nh C¸c th«ng sè azimuth vµ elevation mµ b¹n ®ang quan s¸t cã thĨ lÊy l¹i ®ỵc b»ng c¸ch dïng [az, e] = view VÝdơ: >> view([-7 -9 7]) >> [az,el] = view az = -37.8750 el = 31.5475 58 Mét c«ng h÷u dơng kh¸c lµ quan s¸t ®å thÞ kh«ng gian chiỊu bëi hµm rotate3d C¸c th«ng sè Azimtuh vµ elevation cã thĨ ®ỵc t¸c ®éng bëi cht, rotate3d on cho phÐp cht can thiƯp, rotate3d off kh«ng cho phÐp LƯnh hidden dÊu c¸c nÐt kht Khi b¹n vÏ ®å thÞ, th× mét sè phÇn cđa nã bÞ che kht bëi c¸c phÇn kh¸c, ®ã nÕu dïng lƯnh nµy th× c¸c nÐt kht sÏ bÞ dÊu ®i, b¹n chØ cã thĨ nh×n phÇn nµo ë tÇm nh×n cđa b¹n NÕu b¹n chun ®Õn hidden off, b¹n cã thĨ thÊy phÇn kht ®ã qua m¹ng líi Díi ®©y lµ vÝ dơ: >> >> >> >> >> mesh(peaks(20)+7) hold on pcolor(peaks(20)) hold off title('Mesh with hiden on') B©y giê h·y bá chÕ ®é dÊu c¸c nÐt kht ®i ta sÏ thÊy sù kh¸c nhau: >> hidden off >> title('Mesh with Hidden Off ') 59 6.4 Các đặc điểm khác đồ thị khơng gian 3D Hµm ribbon(x, y ) t¬ng tù nh plot(x, y ) ngo¹i trõ cét cđa y ®ỵc vÏ nh lµ mét d¶i riªng biƯt kh«ng gian ba chiỊu Díi ®©y lµ ®å thÞ h×nh sine: >> x=linspace(0,10,50); >> y=sin(pi*x); >> ribbon(y,x) 60 • Hµm clabel t¨ng thªm ®é cao cho ®å thÞ ®êng viỊn Cã ba mÉu clabel(cs), clabel(cs, V ) vµ clabel( cs, manual) clabel(cs), ®ã cs lµ cÊu tróc ®êng viỊn ®ỵc tr¶ vỊ tõ lƯnh contour, cs=contour(z), lÊy nh·n tÊt c¶ c¸c ®å thÞ ®êng viỊn víi ®é cao cđa nã VÞ trÝ cđa nh·n ®ỵc lÊy ngÉu nhiªn clabel (c, manual) ®Þnh vÞ nh·n ®êng viỊn ë vÞ trÝ kÝch cht t¬ng tù nh lƯnh ginput ®· nãi ë trªn NhÊn phÝm Return kÕt thóc viƯc t¹o nh·n nµy • Hµm contourf sÏ vÏ mét ®å thÞ ®êng viỊn kÝn, kh«ng gian gi÷a ®êng viỊn ®ỵc lÊp ®Çy b»ng mµu • Hai mÉu tr¹ng th¸i cđa lƯnh mesh dïng víi ®å thÞ líi lµ: meshc vÏ ®å thÞ líi vµ thªm ®êng viỊn bªn díi, meshz vÏ ®å thÞ líi vµ ®å thÞ cã d¹ng nh mµn che • Hµm waterfall ®ỵc xem nh mesh ngo¹i trõ mét ®iỊu lµ hµm mesh chØ xt hiƯn ë híng x • Cã hai mÉu tr¹ng th¸i cđa lƯnh surf, ®ã lµ surfc vÏ mét ®å thÞ surf vµ thªm ®êng bao bªn díi, surflvex vÏ mét ®å thÞ surf nhng thªm vµo sù chiÕu s¸ng bỊ mỈt tõ ngn s¸ng CÊu tróc tỉng qu¸t lµ surfl( X,Y, Z, S, K ) ®ã X, Y,vµ Z t¬ng tù nh surf, S lµ mét vector t chän hƯ to¹ ®é decac (S=[Sx Sy Sz]) hc to¹ ®é cÇu (S=[az,el]) chØ híng cđa ngn s¸ng NÕu kh«ng khai b¸o, gi¸ trÞ mỈc ®Þnh cđa S lµ 45 ®é theo chiỊu kim ®ång hå tõ vÞ trÝ ngêi quan s¸t, S lµ mét vector t chän chØ phÇn ®ãng gãp t thc vµo ngn s¸ng bao quanh, sù ph¶n chiÕu ¸nh s¸ng vµ hƯ sè ph¶n chiÕu (K=[ka,kd,ks,spread]) >> colormap(gray) >> surfl(peaks) >> title('surf1 plot of peaks with default lighting') • fill3, phiªn b¶n chiỊu cđa fill, vÏ mét ®a gi¸c ®Ịu kh«ng gian ba chiỊu Khu«n d¹ng tỉng qu¸t cđa nã lµ fill3(x, y, z, c), ®ã chiỊu ®øng cđa ®a gi¸c ®ỵc chØ bëi ba thµnh phÇn x, y, z NÕu c lµ mét kÝ tù, ®a gi¸c sÏ ®ỵc lÊp ®Çy mµu nh ë b¶ng mµu c còng cã thĨ lµ mét vector hµng cã thµnh phÇn ([r g b]) ®ã r, g vµ b lµ c¸c gi¸ trÞ gi÷a vµ thay cho c¸c mµu ®á, xanh l¸ c©y vµ xanh da trêi NÕu c lµ mét vector hc ma trËn, nã ®ỵc sư dơng nh mét chØ sè chØ s¬ ®å mµu 61 NhiỊu ®a gi¸c cã thĨ ®ỵc t¹o b»ng c¸ch cho thªm nhiỊu ®èi sè nh fill3 (x1, y1, z1,c1, x2, y2, z2, c2, ) VÝ dơ sau sÏ vÏ ngÉu nhiªn tam gi¸c víi mµu: >> color(cool) >> fill3(rand(3,4),rand(3,4),rand(3,4),rand(3,4)) • bar3 vµ bar3h lµ phiªn b¶n chiỊu cđa bar vµ barh, bie3 lµ phiªn ban cđa pie 6.5 Bảng màu Mµu vµ biĨu ®å mµu ®ỵc ®Ị cËp ®Õn mét sè vÝ dơ ë phÇn tríc Trong phÇn nµy chóng ta sÏ nãi râ vỊ chóng MATLAB ®Þnh nghÜa mét biĨu ®å mµu nh lµ mét ma trËn cã cét Mçi hµng cđa ma trËn ®Þnh nghÜa mét mµu riªng biƯt sư dơng c¸c sè d¶i vµ Nh÷ng sè nµy chØ c¸c gi¸ trÞ RGB, ®é nh¹y cđa c¸c mµu thµnh phÇn ®á, xanh l¸ c©y, vµ xanh da trêi mét mµu c¸c thµnh phÇn ®ã t¹o Mét sè mÉu c¬ b¶n ®ỵc cho b¶ng díi ®©y: §á 1 0 1 -5 -5 -49 Xanh l¸ c©y 1 1 -5 -62 Xanh da trêi 0 1 -5 -40 -83 mµu ®en tr¾ng ®á xanh l¸ c©y xanh da trêi vµng tÝm ®á lam x¸m x¸m trung b×nh ®á tèi ®á ®ång ngäc xanh biĨn Díi ®©y lµ mét sè hµm cđa MATLAB ®Ĩ t¹o b¶ng mµu ë trªn: Function M« t¶ b¶ng mµu hsv Gi¸ trÞ mµu b·o hoµ (HSV) hot ®en-®á-vµng-tr¾ng gray x¸m c©n b»ng tun tÝnh bone x¸m cã pha nhĐ víi mµu xanh copper s¾c th¸i cđa mµu ®ång pink mµu hång nh¹t nhĐ white tr¾ng hoµn toµn flag xen kÏ ®á, tr¾ng, xanh da trêi, vµ ®en jet sù thay ®ỉi mµu b·o hoµ prism cã mµu s¾c l¨ng kÝnh cool mµu xanh tÝm lines mµu cđa nÐt vÏ summe Bãng cđa xanh l¸ c©y vµ vµng autumn Bãng cđa ®á vµ vµng winter Bãng cđa xanh l¸ c©y vµ xanh da trêi spring Bãng cđa magenta vµ yellow 6.6 Sử dụng bảng màu C©u lƯnh colormap(M) cµi ®Ỉt ma trËn M nh lµ b¶ng mµu ®ỵc sư dơng bëi h×nh hiƯn t¹i 62 VÝ dơ: colormap(cool) cµi ®Ỉt mét version 64 ®Çu vµo cđa b¶ng mµu cool Hµm plot vµ plot3 kh«ng dïng b¶ng mµu ë trªn, chóng sư dơng c¸c mµu liƯt kª b¶ng kiĨu ®êng, ®iĨm ®¸nh dÊu, mµu cđa plot PhÇn lín c¸c hµm vÏ kh¸c nh mesh, surf, contour, fill, pcolor vµ c¸c biÕn cđa nã, sư dơng b¶ng mµu hiƯn t¹i Sau ®©y lµ mét vÝ dơ dïng tham sè mµu cho hµm surf ®Ĩ hiĨn thÞ gãc quan s¸t : >> >> >> >> >> [X,Y,Z]=peaks(30); surf(X,Y,Z,atan2(X,Y)) colormap(hsv),shading flat axis([-3 -3 -6.5 8.1]),axis off title('using a color Argument to surf') 6.7 Sử dụng màu để thêm thơng tin Mµu cã thĨ ®ỵc dïng ®Ĩ thªm th«ng tin vµo ®å thÞ chiỊu nÕu nã ®ỵc sư dơng ®Ĩ t¹o thµnh chiỊu thø t C¸c hµm nh mesh vµ surf biÕn ®ỉi mµu däc theo trơc z, trõ mét ®èi sè mµu ®ỵc ®a nh surf(X,Y,Z) hoµn toµn t¬ng ®¬ng víi surf(X,Y,Z,t ) ®ã thµnh phÇn thø t ®ỵc dïng nh mét chØ sè biªu ®å mµu §iỊu nµy khiÕn cho ®å thÞ ®Çy mµu nhng l¹i kh«ng th«ng tin mµ trơc z ®· tån t¹i Díi ®©y lµ mét sè c¸ch sư dơng ®èi sè mµu ®Ĩ thªm th«ng tin hc nhÊn m¹nh th«ng tin ®· tån t¹i ®å thÞ >> >> >> >> >> >> >> >> >> 63 x=-7.5: 5:7.5; y=x % create a data set [X,Y]=meshgrid(x,y); %create plaid data R=sqrt(X.^2+Y.^2) +eps % create radial data Z=sin(R)./R; % create a sombrero subplot(2,2,1),surf(X,Y,Z), title('Color Varies with the Z_axis') subplot(2,2,2),surf(X,Y,Z,R), title('Color Varies With the Radius') subplot(2,2,3),surf(X,Y,Z,del2(Z)), >> >> >> >> >> title('Color Varies with Curvature') [dZdx,dZdy]=gradient(Z); %compute the slope dZ=sqrt(dZdx.^2+dZdy.^2) %compute the slope's manitude subplot(2,2,4),surf(X,Y,Z,dZ) title('Color Varies With the slope Magnitude') 6.8 Hiển thị bảng màu B¹n cã thĨ hiĨn thÞ b¶ng mµu theo mét sè c¸ch sau Mét nh÷ng c¸ch ®ã lµ xem tÊt c¶ c¸c phÇn tư trong mét ma trËn b¶ng mµu mét c¸ch trùc tiÕp: >> hot(8) ans = 0.3333 0.6667 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 0 0.3333 0.6667 1.0000 1.0000 1.0000 0 0 0 0.5000 1.0000 Thªm vµo ®ã, hµm pcolor cã thĨ ®ỵc sư dơng ®Ĩ biĨu diƠn mét b¶ng mµu H·y thư vÝ dơ nµy mét vµi lÇn b»ng c¸ch dïng c¸c hµm colormap kh¸c vµ thay ®ỉi tham sè n: >> colormap(jet(n)) >> n=8; 64 >> colormap(jet(n)) >> pcolor([1:n+1;1 :n+1]') >> title('using pcolor to display a colormap') Hµm colorbar thªm mét mµu ®øng hc mµu ngang (c©n chØnh mµu ) vµo cưa sỉ h×nh vÏ cđa b¹n, ®a biĨu ®å mµu cho trơc hiƯn t¹i colorbar( h) ®Þnh vÞ mµu ngang díi h×nh vÏ hiƯn t¹i cđa b¹n colorbar( v) ®Þnh vÞ mµu ®øng vỊ bªn ph¶i h×nh vÏ cđa b¹n colorbar kh«ng cã ®èi sè th× lµ thªm mét mµu ngang, nÕu mµu nµy kh«ng tån t¹i hc lµ cËp nhËt nÕu nã tån t¹i >> [X,Y,Z] = peaks; >> mesh(X,Y,Z ); >> colormap(hsv) >> axis([-3 -3 -6 8]) >> colorbar 6.9 Thiết lập thay đổi bảng màu Thùc tÕ colormaps lµ c¸c ma trËn, cã nghÜa lµ b¹n cã thĨ thao t¸c chóng gièng nh bÊt k× mét ma trËn nµo kh¸c Hµm brighten nhê vµo ®¨c ®iĨm nµy thay ®ỉi colormap ®é 65 t¨ng hc gi¶m ®é nh¹y cđa c¸c mµu ®Ëm bighten(n) cïng víi bighten(-n) phơc håi colormap ban ®Çu LƯnh newmap=brighten(n) t¹o mét mµu s¸ng h¬n hc tèi h¬n cđa colormap hiªn t¹i mµ kh«ng lµm thay ®ỉi biªđ ®å mµu hiƯn t¹i LƯnh newmap=brighten(cmap,n) ®iỊu chØnh phiªn b¶n cđa mµu ®· ®ỵc khai b¸o mµ kh«ng lµm ¶nh hëng ®Õn colormap hiƯn t¹i hc cmap brighten(gcf, n) lµm s¸ng tÊt c¶ c¸c ®èi tỵng h×nh vÏ hiƯn t¹i B¹n cã thĨ t¹o mét colormap cđa riªng b¹n b»ng c¸ch ®a mét ma trËn mymap m hµng,3 cét vµ cµi ®Ỉt nã cïng víi colormap(mymap) mçi gi¸ trÞ mét ma trËn colormap ph¶i thc kho¶ng tõ ®Õn NÕu b¹n cè g¾ng sư dơng mét ma trËn víi nhiỊu h¬n hc Ýt h¬n cét hc chøa mét gi¸ trÞ nµo ®ã bÐ thua hc lín h¬n1 colormap sÏ ®a th«ng b¸o lçi B¹n cã thĨ kÕt nèi c¸c colormap theo kiĨu to¸n häc MỈc dï kÕt qu¶ ®«i kh«ng thĨ ®o¸n tríc ®ỵc VÝ dơ, biĨu ®å cã tªn gäi lµ pink : >> pinkmap = sqrt (2/3*gray+1/3*hot); Bëi v× colormap lµ c¸c ma trËn, chóng cã thĨ ®ỵc vÏ ®å thÞ LƯnh rgbplot sÏ vÏ ®å thÞ c¸c gi¸ trÞ cđa colormap t¬ng tù nh lƯnh plot, nhng sư dơng mµu ®á, mµu xanh l¸ c©y vµ xanh da trêi cho nÐt vÏ rgbplot(gray) cho biÕt c¶ ba mµu t¨ng tun tÝnh vµ ®ång ®Ịu LƯnh rgbplot víi mét sè colormap kh¸c nh jet, hsv, vµ prism Gi¸ trÞ hiƯn t¹i cđa cmin vµ cmax ®ỵc tr¶ l¹i b»ng caxis kh«ng cã ®èi sè Chóng thêng lµ nh÷ng gi¸ trÞ lín nhÊt vµ nhá nhÊt cđa d÷ liƯu, caxis([cmin cmax ]) sư dơng colormap nguyªn b¶n cho d÷ liƯu d¶i gi÷a cmin vµ cmax, nh÷ng ®iĨm d÷ liƯu lín h¬n cmax sÏ bÞ chia thµnh c¸c mµu kÕt hỵp víi cmax Vµ nh÷ng ®iĨm d÷ liƯu cã gi¸ trÞ nhá h¬n cmin sÏ bÞ chia thµnh c¸c mµu kÕt hỵp víi cmin NÕu cmin nhá h¬n min(data) hc cmax lín h¬n max(data ), th× c¸c mµu kÕt hỵp víi cmin hc cmax sÏ kh«ng bao giê ®ỵc sư dơng ; chØ mét phÇn nhá cđa colormap ®ỵc sư dơng caxis(auto) sÏ håi phơc gi¸ trÞ mỈc ®Þnh cđa cmin vµ cmax VÝ dơ sau ®ỵc minh ho¹ colorplate4 >> pcolor([1:17;1:17]') >> title('Default color range') >> colormap(hsv(8)) >> axis('auto') >> colorbar >> caxis ans = 17 66 CÁC THƯ VIỆN TRỢ GIÚP VÀ XỬ LÝ TÍN HIỆU TRONG MATLAB 67 ... đặc điểm Matlab Chương trình MATLAB chương trình viết cho máy tính PC nhằm hỗ trợ cho tính toán khoa học kó thuật với phần tử ma trận máy tính cá nhân công ty "The MATHWORKS" viết Thuật ngữ MATLAB... 60 6.5 Bảng màu 62 6.6 Sử dụng bảng màu .62 6.7 Sử dụng màu để thêm thơng tin 63 6.8 Hiển thị bảng màu 64 6.9 Thiết lập thay đổi bảng màu 65 CÁC... khảo sát vấn đề có liên quan TOOL BOX SIMULINK phần mở rộng MATLAB, sử dụng để mô hệ thống động học cách nhanh chóng tiện lợi MATLAB 3.5 trở xuống hoạt động môi trường MS-DOS MATLAB 4.0, 4.2,