CHƯƠNG 1: MATLAB CƠ BẢNMATLAB viết tắt cho Matrix Laboratory Phòng thí nghiệm ma trận. Ban đầu Matlab được thiết kế bởi Cleve Moler vào những năm 1970 để sử dụng như một công cụ dạy học. Từ đó đến nay nó đã được phát triển thành một bộ phần mềm thương mại rất thành công.Hiện nay MATLAB R14 là một bộ phần mềm cho công việc tính toán trong các ngành kỹ thuật, trong khoa học và trong lĩnh vực toán học ứng dụng. Matlab cho ta mộ t ngôn ngữ lập trình mạnh, giao diện đồ họa xuất sắc, và một phạm vi rất rộng các kiến thức chuyên môn. Matlab là một thương hiệu đã được thương mại hóa của tập đoàn MathWorks, Massachusetts, USA (hiện là nhà cung cấp hàng đầu thế giới cho các phần mềm tính toán kỹ thuật và thiết kế dựa trên mô hình).Có lẽ cách dễ nhất để hìng dung về MATLAB là nó có đầy đủ các đặc điểm của máy tính cá nhân: giống như các máy tính cơ bản, nó làm tất cả các phép tính toán học cơ bản như cộng, trừ, nhân, chia; giống như máy tính kỹ thuật, nó bao gồm: số phức, căn thức, số mũ, logarithm, các phép toán lượng giác như sine, cosine, tang; nó cũng giống như máy tính có khả năng lập trình, có thể lưu trữ, tìm kiếm lại dữ liệu, cũng có thể tạo, bảo vệ và ghi trình tự các lệnh để tự động phép toán khi giải quyết các vấn đề, bạn có thể so sánh logic, điều khiển thực hiên lệnh để đảm bảo tính đúng đắn của phép toán. Giống như các máy tính hiện đại nhất, nó cho phép bạn biểu diễn dữ liệu dới nhiều dạng như: biểu diễn thông thường, ma trân đại số, các hàm tổ hợp và có thể thao tác với dữ liệu thường cũng như đối với ma trận. Trong thực tế MATLAB còn ứng dụng rất rộng rãi trong nhiều lĩnh vực và nó cũng sử dụng rất nhiều các phép tính toán học. Với những đặc điểm đó và khả năng thân thiện với người sử dụng nên nó dễ dàng sử dụng hơn các ngôn ngữ khác như Basic, Pascal, C. Nó cung cấp một môi trường phong phú cho biểu diễn dữ liệu, và có khả năng mạnh mẽ về đồ hoạ, bạn có thể tạo các giao diện riêng cho người sử dụng(GUIs) để gải quyết những vấn đề riêng cho mình. Thêm vào đó MATLAB đưa ra những công cụ để giải quyết những vấn đề đặc biệt, gọi là Toolbox (hộp công cụ). Ví dụ Student Edition của MATLAB bao gồm cả Toolbox điều khiển hệ thống, Toolbox xử lí tín hiệu, Toolbox biểu tượng toán học. Ngoài ra bạn có thể tạo Toolbox cho riêng mình. Trong quá trình học, Matlab sẽ được giới thiệu một số các chức năng sau: “Matrix laboratory” Hệ thống tính toán khoa học kỹ thuật Ngôn ngữ lập trình cấp cao Thư viện hàm phong phú Mô phỏng, vẽ đồ thị, biểu đồ Phân tích dữ liệu Phát triển phần mềm kỹ thuật Phiên bản mới nhất: Matlab 2008.1.1. Cài đặt chương trình MatlabMatlab là một chương trình ứng dụng tương thích với các bộ vi xử lý intel với bộ đồng xử lý 487, pentium hoặc pentium professor. Chương trình này có thể chạy tốt trên các hệ điều hành như Window98, Window xp, Window NT, Window Vita.Yêu cầu tối thiểu cho một hệ thống khi cài đặt Matlab 7.0 như sau:Windows 2000, XP, NT, Vita đều có thể chạy được MatabCard đồ họa tối thiểu 8 bit (256 màu)Ram tối thiểu 128MbCDROMHDD từ 25Mb đến hơn 1Gb tùy thuộc vào cách chọn cấu hình cài đặt cho Matlab, và tới 2.1Gb nếu cài Matlab và Simulink1.2. Không gian làm việc của MatlabKhi bạn chạy chương trình MATLAB, nó sẽ tạo một hoặc nhiều cửa sổ trên màn hình. Về cơ bản, không gian làm việc của Matlab bao gồm các phần sau:Cửa sổ trợ giúp (Help Window)Cửa sổ lệnh (Command Window)Cửa sổ không gian làm việc (Workspace Window)Cửa sổ quá trình lệnh (Command History Window)Cửa sổ biến (Array Editor Window)Cửa sổ địa chỉ thư mục hiện thời (Current Directory Window) Hình 1.1. Không gian làm việc trong MatlabKhông gian làm việc trong Matlab chia làm nhiều cửa sổ khác nhau nhưng chủ yêu là 3 của sổ chính. Đó là của sổ lệnh (Command Window) là nơi giao tiếp trực tiếp với người viết chương trình. Các lệnh được gõ vào Matlab được thực hiện sau dâu “>>” của của sổ này. Của sổ History Window lưu trữ lại các lệnh mà người thực hiện đã sử dụng, cho phép sử dụng lại bất kỳ thời điểm nào khi thực hiện chương trình. Việc này làm cho quá trình thao tác và thực hiện công việc trở nên nhanh chóng hơn. Cửa sổ thứ 3 là cửa sổ biến (Variable Window) là nơi lưu trữ lại các biến hiện hành của chương trình. Giúp dễ dàng giám sát và gỡ rối khi tiến hành mô phỏng.Bên cạnh các không giam làm việc chính, Matlab còn cho phép mở rộng và xây dựng các bài mô phỏng với các không gian làm việc khác như Mfile, simulink, các thư viện mở rộng với các thư viện liên kết có sẵn giúp dễ dàng mô phỏng và thiết kế dự án.
Trang 1CHƯƠNG 1: MATLAB CƠ BẢN
MATLAB viết tắt cho "Matrix Laboratory" - Phòng thí nghiệm ma trận Ban đầuMatlab được thiết kế bởi Cleve Moler vào những năm 1970 để sử dụng như một công cụdạy học Từ đó đến nay nó đã được phát triển thành một bộ phần mềm thương mại rấtthành công
Hiện nay MATLAB R14 là một bộ phần mềm cho công việc tính toán trong cácngành kỹ thuật, trong khoa học và trong lĩnh vực toán học ứng dụng Matlab cho ta mộ tngôn ngữ lập trình mạnh, giao diện đồ họa xuất sắc, và một phạm vi rất rộng các kiến thứcchuyên môn Matlab là một thương hiệu đã được thương mại hóa của tập đoànMathWorks, Massachusetts, USA (hiện là nhà cung cấp hàng đầu thế giới cho các phầnmềm tính toán kỹ thuật và thiết kế dựa trên mô hình)
Có lẽ cách dễ nhất để hìng dung về MATLAB là nó có đầy đủ các đặc điểm của máytính cá nhân: giống như các máy tính cơ bản, nó làm tất cả các phép tính toán học cơ bảnnhư cộng, trừ, nhân, chia; giống như máy tính kỹ thuật, nó bao gồm: số phức, căn thức, số
mũ, logarithm, các phép toán lượng giác như sine, cosine, tang; nó cũng giống như máytính có khả năng lập trình, có thể lưu trữ, tìm kiếm lại dữ liệu, cũng có thể tạo, bảo vệ và ghitrình tự các lệnh để tự động phép toán khi giải quyết các vấn đề, bạn có thể so sánh logic,điều khiển thực hiên lệnh để đảm bảo tính đúng đắn của phép toán Giống như các máy tínhhiện đại nhất, nó cho phép bạn biểu diễn dữ liệu dới nhiều dạng như: biểu diễn thông thường,
ma trân đại số, các hàm tổ hợp và có thể thao tác với dữ liệu thường cũng như đối với matrận
Trong thực tế MATLAB còn ứng dụng rất rộng rãi trong nhiều lĩnh vực và nó cũng
sử dụng rất nhiều các phép tính toán học Với những đặc điểm đó và khả năng thân thiện vớingười sử dụng nên nó dễ dàng sử dụng hơn các ngôn ngữ khác như Basic, Pascal, C
Nó cung cấp một môi trường phong phú cho biểu diễn dữ liệu, và có khả năng mạnh
mẽ về đồ hoạ, bạn có thể tạo các giao diện riêng cho người sử dụng(GUIs) để gải quyếtnhững vấn đề riêng cho mình Thêm vào đó MATLAB đưa ra những công cụ để giải quyếtnhững vấn đề đặc biệt, gọi là Toolbox (hộp công cụ) Ví dụ Student Edition của MATLAB
Trang 2Trong quá trình học, Matlab sẽ được giới thiệu một số các chức năng sau:
Phiên bản mới nhất: Matlab 2008
1.1 Cài đặt chương trình Matlab
Matlab là một chương trình ứng dụng tương thích với các bộ vi xử lý intel với bộđồng xử lý 487, pentium hoặc pentium professor Chương trình này có thể chạy tốt trêncác hệ điều hành như Window98, Window xp, Window NT, Window Vita
Yêu cầu tối thiểu cho một hệ thống khi cài đặt Matlab 7.0 như sau:
- Windows 2000, XP, NT, Vita đều có thể chạy được Matab
- Card đồ họa tối thiểu 8 bit (256 màu)
- Ram tối thiểu 128Mb
- CD-ROM
- HDD từ 25Mb đến hơn 1Gb tùy thuộc vào cách chọn cấu hình cài đặt choMatlab, và tới 2.1Gb nếu cài Matlab và Simulink
1.2 Không gian làm việc của Matlab
Khi bạn chạy chương trình MATLAB, nó sẽ tạo một hoặc nhiều cửa sổ trên màn hình
Về cơ bản, không gian làm việc của Matlab bao gồm các phần sau:
- Cửa sổ trợ giúp (Help Window)
- Cửa sổ lệnh (Command Window)
Trang 3- Cửa sổ quá trình lệnh (Command History Window)
- Cửa sổ biến (Array Editor Window)
- Cửa sổ địa chỉ thư mục hiện thời (Current Directory Window)
Hình 1.1 Không gian làm việc trong MatlabKhông gian làm việc trong Matlab chia làm nhiều cửa sổ khác nhau nhưng chủ yêu
là 3 của sổ chính Đó là của sổ lệnh (Command Window) là nơi giao tiếp trực tiếp vớingười viết chương trình Các lệnh được gõ vào Matlab được thực hiện sau dâu “>>” củacủa sổ này Của sổ History Window lưu trữ lại các lệnh mà người thực hiện đã sử dụng,cho phép sử dụng lại bất kỳ thời điểm nào khi thực hiện chương trình Việc này làm choquá trình thao tác và thực hiện công việc trở nên nhanh chóng hơn Cửa sổ thứ 3 là cửa sổbiến (Variable Window) là nơi lưu trữ lại các biến hiện hành của chương trình Giúp dễdàng giám sát và gỡ rối khi tiến hành mô phỏng
Bên cạnh các không giam làm việc chính, Matlab còn cho phép mở rộng và xâydựng các bài mô phỏng với các không gian làm việc khác như M-file, simulink, các thưviện mở rộng với các thư viện liên kết có sẵn giúp dễ dàng mô phỏng và thiết kế dự án
Trang 4Hình 1.2 Không gian làm việc với M-fileMột trong các thế mạnh của Matlab chính là các thư viện mô tả toán học có sắn, làgiao diện đồ họa với người sử dụng Giao diện quen thuộc được sử dụng nhiều đối với các
kỹ sư điều khiển tự động là giao diện làm việc mới Simulink như hình dưới đây
Hình 1.3 Một số thư viện có sẵn trong Simulink
Hình 1.4 Không gian làm việc với Simulink
Trang 51.3 Biến trong Matlab
1.3.1 Tạo biến trong Matlab
Giống như những ngôn ngữ lập trình khác, MATLAB có những quy định riêng vềtên biến Trước tiên tên biến phải là một từ, không chứa dấu cách, và tên biến phải cónhững quy tuân thủ những quy tắc sau:
- Tên biến có phân biệt chữ hoa chữ thường Ví dụ: Iterms, iterms, itErms, vàITERMS là các biến khác nhau
- Tên biến có thể chứa nhiều nhất 31 kí tự, còn các kí tự sau kí tự thứ 31 bị lờ đi
- Tên biến bắt đầu phải là chữ cái, tiếp theo có thể là chữ số, số gạch dưới
- Kí tự chấm câu không được phép dùng vì nó có những ý nghĩa đặc biệt
Bảng 1: Các biến đặc biệt
Các biến đặc biệt Giá trị
ans Tên biến mặc định trả về kết quả
pi = 3.1425… Số pi
Eps Số nhỏ nhất, được cộng với 1 để được số nhỏ nhất
lớn hơn 1floors Số của phép toán số thực
inf Để chỉ số vô cùng hoặc kết quả 1/0
NaN Dùng để chỉ số không xác định như kết quả 0/0
i và j Chỉ các số thuộc trục ảo
nargin Số các đói số đa vào hàm được sử dụng
narout Số các sối số hàm đa ra
realmin Số nhỏ nhất có thể được của số thực
realmax Số lớn nhất có thể được của số thực
Cùng với những quy định trên, MATLAB có những biến đặc biệt trong bảng sau:
Trang 6>> erases = 6 erases=
6
>>itermsiterms=
12Như ví dụ trên, khi biến erases thay đổi thì giá trị của biến iterms vẫn không thây đổi
Đó là do khi MATLAB thực hiện một phép tính, nó lấy giá trị của các biến hiện thời, nênnếu muốn tính giá trị mới của iterms, cost, average_cost, ta phải gọi lại các lệnh tính cácgiá trị đó
Đối với các biến đặc biệt như đã chỉ ra ở trên, nó có sẵn giá trị, như vậy khi bạn khởiđộng MATLAB; nếu bạn thay đổi giá trị của nó thì những giá trị đặc biệt ban đầu sẽ bị mấtcho đến khi bạn xoá biến đó đi hoặc khởi động lại MATLAB Do đó bạn không nên thayđổi giá trị của biến đặc biệt, trừ khi nó thực sự cần thiết
1.3.2 Các lệnh kiểm soát biến
* Kiểm tra các biến hiện có trong không gian làm việc
Các dữ liệu và biến được tạo lên trong cửa sổ lệnh, được lưu trong một phần gọi làkhông gian làm việc của MATLAB Muốn xem tên biến trong không gian làm việc củaMATLAB ta dùng lệnh who:
>> who Your variables are:
buiding_height thetaMỗi biến được liệt kê với kích cỡ của nó, số bytes sử dụng, và các lớp của chúng(class), trong ví dụ đặc biệt này, các biến đều là số đơn, có độ chính xác hai số sau dấu phẩy.Lệnh whos đặc biệt có ích khi nghiên cứu đến phần mảng và các kiểu dữ liệu khác
>> whos
Name Size Bytes Class
a 1x1 8 double array
b 1x1 8 double array
Trang 7Workspace Browser, nó chứa các thông tin tương tự như lệnh whos Thêm nữa nó tạocho bạn khả năng xoá, làm sạch các biến mà bạn chọn
* Xóa biến trong không gian làm việc
Ngoài ra ta có thể dùng lệnh clear để xoá biến từ không gian làm việc củaMATLAB
Ví dụ:
>> clear h D % Xoá các biến h và D
>> whoYour variables are:
buiding_height theta
* Lưu và phục hồi dữ liệu
Để nhớ các biến, Matlab có thể ghi lại dữ liệu từ file trong máy trình bằng cáchchọn File\Save workspace as… để ghi lại tất cả các biến hiện tại
Tương tự, ta có thể lấy lại tất cả các biến đã ghi từ trước bằng cách lựa chọnFile\Load work space với Matlab 6.0 và 6.5; hay File\Import data với matlab 7.0, 7.5
Ngoài ra, Matlab còn sử dụng hai lệnh Save và Load để thực hiện lưu và lấy lại cácbiến trong không gian làm việc
>> Save Lưu tất cả các biến với tên file là matlab.mat
>> Save dulieu Lưu tất cả các biến trong file dulieu.mat
>> Save dulieu A B C D Lưu các biến A, B, C, D trong file dulieu.mat
1.4 Quản lý tệp
Trang 8Hình 1.5 Cửa sổ thư mục hiện thời của MatlabMatlab cung cấp cho ta một hệ thống các lệnh cho phép bạn xem, xóa M_file, hiểnthị và thay đổi các thư mục chứa của nó Để thực hiện được việc này cách đơn giản nhất làvào của sổ thư mục hiện thời (current directory) của Matlab Khi đó các biến, chương trìnhđược tạo ra sẽ được lưu lại trong cửa sổ hiện thời này
Khi gọi lên một biến, hàm hoặc một chương trình con thì Matlab sẽ thực hiện kiểmtra các biến, hàm, chương trình con này trong đường dẫn thư mục hiện thời và các đườngdẫn đã được thiết lập trước Khi tìm thấy các hàm, chương trình con thì Matlab sẽ tiếnhành thực hiện chương trình tương ứng Nếu không tìm thấy Matlab sẽ báo lỗi chươngtrình Trong trường hợp đó ta phải thêm đường dẫn cho Matlab bằng cách chọn File/setpath và thêm các đường dẫn trong của sổ Set path của Matlab
Trang 9
1.5 Các kiểu dữ liệu
Có 15 kiểu dữ liệu chính trong Matlab, các kiểu dữ liệu này đều được định dạng trongmột ma trận hoặc một mảng Các mảng hay ma trận này có kích thước nhỏ nhất là 0x0 và độlớn chỉ phụ thuộc vào bộ nhớ của máy Các kiểu dữ liệu được chỉ ra như hình dưới đây
Hình 2 Các kiểu dữ liệu trong matlabCác kiểu dữ liệu User classes và Java classes là các kiểu do người dùng tự định nghĩa,kiểu dữ liệu hướng đối tượng được sử dụng với giao diện Java của Matlab (gọi là Java fromMatlab)
Kiểu dữ liệu Ví dụ Giải thích
Int8, uint8,
Int16, uint16,
Int32, uint32,
Int64, uint64
Uint16 (65000) Là các số nguyên (interger) có dấu (int) và các
số nguyên không dấu (uint) Một số loại yêucầu không gian lưu trữ ít hơn so với số single
và double Tất cả các kiểu số nguyên trừ int64
và uint64 đều được sử dụng trong các hàmtoán học của Matlab
Single Single (3*10^38) Là kiểu số thực Kiểu này có không gian lưu
trữ nhỏ hơn kiểu double nhưng độ chính xáccũng nhỏ hơn kiểu double
5 + 6i
Là kiểu số thực có giá trị lớn nhất trongMatlab Đây là kiểu dữ liệu mặc định trongmatlab
Trang 10Char ‘Hello’ Kiểu ký tự
Cell array A{1,1} = 12;
A{1,2} = ‘red’
Kiểu cell Kiểu này dữ liệu được cất trong các
ô nhớ có chỉ số xác định, các ô nhớ có thể chứacác kiểu dữ liệu khác nhau
Function handle @sin Con trỏ chức năng (pointer to a function, you
can pas function handles to other function)User class Polymom ([0 -2
-5]
Đối tượng được cấu trúc từ các lớp do người
sử dụng định nghĩaJava class Java.awt.frame Kiểu đối tượng được thành lập từ java class
1.5.1 Kiểu Integer
Integer 8 bit có dấu -27 – (27-1) Int8
Integer 16 bit có dấu -215 – (215-1) Int16
Integer 32 bit có dấu -231 – (231-1) Int32
Integer 64 bit có dấu -263 – (263-1) Int64
Integer 8 bit không dấu 0 – (28-1) Uint8
Integer 16 bit không dấu 0 – (216-1) Uint16
Integer 32 bit không dấu 0 – (232-1) Uint32
Integer 64 bit không dấu 0 – (264-1) Uint64
VD: tạo số 325 là kiểu số nguyên 16 bít có dấu cho biến x như sau:
Matlab sử dụng cách mã hõa số thực theo chuẩn IEEE 754 cho số thực Bất kỳ số thựcnào cũng được mã hóa bởi 64 bít định dạng như sau:
51 – 0 22-0 Biểu diễn số thực dấu phẩy động 1.f
Số thực dấu phẩu động có giá trị nằm trong dải -3.4 x 1038 – 3.4 x1038 Với các số nằm
Trang 11* Các lỗi thường xẩy ra với sô các phép toán số thực dấu phẩu động
Hầu hết các phép tính trong Matlab được thực hiện với số thực thực kiểu double Domáy tính chỉ có một độ chính xác nhất định (với số thực double thì phần định giá trị là 52bits) Việc tính toán bằng máy tính đôi lúc đưa ra các kết quả không đúng với toán học, tuynhiên đây không phải là lỗi của chương trình Matlab
Làm tròn xuống (round off) hay kết quả thu được không chính xác
Số thập phân 4/3 là một số không thể biểu diễn chính xác được bằng các số binary Vì
lý do này, việc tính toán như ví dụ sau đây sẽ không cho kết quả là 0
>> e = 1 - 3*(4/3 - 1)
e =
2.2204e-016Tương tự như vậy, số 0.1 cũng không thể biểu diễn một cách chính xác khi sử dụngcác số binary Do đó, phép toán sau đây không thu được kết quả như mong muốn:
Trang 13c3=
0 + 1.4142i
>> c4 = 6 + sin(.5)*i c4=
6.0000 + 0.4794i
>> c5 = 6 + sin(.5)*j c5=
6.0000 + 0.4794i Trong hai ví dụ cuối, MATLAB mặc định giá trị của i, j dùng cho phần ảo Nhân với
i hoặc j được yêu cầu trong trường hợp này, sin(.5)i và sin(.5)j không có ý nghĩa đốivới MATLAB Cuối cùng với các kí tự i và j, như ở trong hai ví dụ đầu ở trên chỉ làm việcvới số cố định, không làm việc được với biểu thức
1.5.3 Các kiểu ký tự, chuỗi và văn bản
Khả năng tính toán rất hữu ích cho việc xuất/nhập kết quả từ/tới màn hình và filelưu trên đĩa Để có thể quản lý được văn bản, một loại dữ liệu “character” được sử dụngtrong Matlab, một văn bản đơn giản là một chuỗi (vector) hya một mảng ký tư
Kiểu dữ liệu logic được đại diện cho giá trị logic đúng hoặc sai bằng các số 1 (đúng)
và 0 (sai) Các hàm của Matlab trả về giá trị đúng hoặc sai tương ứng với các biểu thứcđiều kiện của nó, ví dụ như phép toán (5*10)>40 sẽ trả về giá trị đúng
Khi làm việc với mảng, Matlab sẽ trả về một vecto các giá trị logic tương ứng vớicác giá trị đúng và sai trong mảng đó Ví dụ như sau:
Trang 14ans = 0 0 1 1 1 1
* Tạo ra một mảng logic
Các phép toán với kiểu dữ liệu logic
1.6 Các hàm toán học thông thường trong Matlab
Các hàm toán học của MATLAB được liệt kê trong bảng dưới đây: Các phép toán làm việc với Matlab
exp(x) Tính ex
fix(x), floor(x) Làm tròn xuống
gdc(x, y) Ước số chung lớn nhất của x, yimag(x) Trả về phần ảo của số x
Trang 15log(x) Tính logarit cơ só tự nhiênReal(x) Trả về phần thực của xrem(x, y) Trả về phần dư của phép chia x/yround(x) Làm tròn x
sign(x) Tả về dầu của xsin(x) Tính sin (x)sqrt(x) Tính căn bậc hai của xtan(x) Tính tan
Chúng đều có chung một cách gọi hàm như ví dụ sau:
>> x = sqrt(2)/2 x=
0.7071
>> y = sin(x) y=
0.7854
>> y_deg = y*180/pi y_deg=
45.0000
>> y=sqrt(3^2+4^2)
y = 5
Ví dụ 1: Tính chiều cao của ngôi nhà khi biết chiều dài bóng của ngôi nhà là 100m và gócgiữa tia nắng mặt trời với mặt đất là 600
Ví dụ 2: Sự phân rã của phân tử polonium có chu kỳ phân rã là 140 ngày Tức là sau 140ngày thì lượng polonium còn lại ½ lượng ban đầu Hỏi nếu có 10g polonium thì nó còn lạibao nhiêu sau 250 ngày?
Ví dụ 3: Bạn mua một o tô mới với giá là 18.500$ Người bán hàng đưa ra hai giải pháp vềtài chính là: thứ nhất, trả lãi của số tiền trên là 2.9% trong vòng 4 năm Thứ 2 là trả lãi8.9% số tiền trên trong vòng 4 năm và giá bán được giảm đi một khoản là 1500$ Hỏi giảipháp nào bạn mua được ô tô với giá rẻ hơn
Trang 16Khi Matlab hiển thị kết quả, nó thường dùng cách hiển thị mặc định Nếu kết quả là
số nguyên thì nó hiển thị là số nguyên, khi kết quả là số thực thì Matlab hiển thị số xấp xỉvới bốn chữ số sau dấu phẩy, còn khi là số dạng khoa học thì Matlab hiển thị giống như sốtrong các máy tính khoa học
Tuy nhiên chúng ta có thể định lại cách hiển thị bằng cách chọn File/Preferences…hoặc sử dụng lệnh trong bảng sau:
format long 50.33333333333333 16 số
format long e 5.033333333333333e+1 16 số với số mũ
format short g 50.333 Chính xác hơn format
short hoặc format short eformat long g 50.33333333333333 Chính xác hơn format
long hoặc format long eformat hex 40492a9fbe76c8b4 Hệ cơ số 16
1.2 Làm việc với mảng
1.2.1 Giới thiệu chung
Thực tế, Matlab là chữ viết tắt của “matrix laboratory”, vì vậy hơn bất kỳ ngôn ngữnào khác, Matlab khuyến khích bạn tận dụng mọi khả năng các mảng, vecto và ma trận
Mảng (array): là một tập hợp các số, được gọi là các phần tử
Số chiều: là các chỉ số cần thiết để định nghĩa một phần tử trong mảng Chảng hạnmảng 2 chiều sẽ cần 2 chỉ số để đặc trưng cho một phần tử của mảng
Kích thước: là một danh sách các kích thước của các tập hợp chỉ số
Ma trận: là một mảng hai chiều (có kích thước m x n với các quy luật đặc biệt chophép cộng, nhân và các tính toán khác Nó đặc trưng cho sự biến đổi tuyến tính về toánhọc Hai chiều ma trận là hàng và cột
Vector: là một ma trận một chiều, có thể là ma trận hàng hoặc ma trận cột
Trang 17X = first : last Tạo véc tơ hàng x bắt đầu tại first, phần tử sau
được tính bằng phần tử trước cộng với 1, kết thúc
là phần tử last
X = first : increment : last Tạo vec tơ hàng x bắt đầu tại first, phần tử sau
được tính bằng phần tử trước cộng với increment
>> y = 1 : 9
y =
1 2 3 4 5 6 7 8 9
Trang 18>> a = 1:5
a =
Trang 19Ngoài ra, việc tạo ra các ma trạn hàng, cột có thể thực hiện được bằng các ghép các
ma trận hàng, cột với nhau hoặc tách các phần tử hàng, cột từ các ma trận đã có sẵn
1.2.4 Các phép toán với mảng đơn
Các phép toán với mảng đơn được trình bầy như trong bảng sau:
Dữ liệu minh họa a = [a1 a2 … an]; b = [b1 b2 … b3]; c : hằng số
Cộng cố với mảng đơn a + c = [a1+c a2+c … an+c]
Nhân số với mảng đơn a*c = [a1*c a2*c … an*c]
Cộng mảng a + b = [a1+b1 a2+b2 … an+bn]
Chia phải mảng a./b = [a1/b1 a2/b2 … an/bn]
Chia trái mảng a.\b = [a1\b1 a2\b2 … an\bn]
Lũy thừa mảng a.^c = [a1^c a2^c … an^c]
c.^a = [c^a1 c^a2 … c^an];
a.^b = [a1^b1 a2^b2 … an^bn]Khai báo các mảng a, b và hằng số c như sau:
Trang 21>> a(3,3) = 0 % Truy cập qua chỉ số hàng và cột
Trang 22Đôi khi, để tiện lợi hơn ta chỉ dùng chỉ số đơn để truy nhập đến các phần tử củamảng Khi chỉ số đơn được dùng trong Matlab thì thứ tự các phần tử được tính bắt đầu từphần tử đầu tiên của cột 1 hàng 1, và tính hết một cột thì đến cột tiếp theo.
>> a(5) = -1 % Truy cập qua chỉ số đơn
Trang 24>> c = a(b) % Tạo ma trận c từ ma trận a và ma trận logic b
c =
-3 -2 2 3
Ví dụ 1: Tìm các số nguyên nhỏ hơn 1000 mà chia hết cho 7, chia cho 2,3,4,5,6 dư 1
* Các phép toán và lệnh làm việc với ma trận
Các phép toán với ma trận Với các phép toán giữa ma trận và một hằng sô thì tương
tự như phần véc tơ, nên ở đây chỉ giới thiệu các phép toán để tính toán 2 ma trận
A + B Cộng hai ma trận Yêu cầu kích thước 2 ma trận phải giống
nhau
A - B Trừ hai ma trận Yêu cầu kích thước 2 ma trận phải giống
nhauA*B Nhân 2 ma trận Yêu cầu số cột của ma trận A phải bằng số
hàng của ma trận BA/B; A\B Chia hai ma trận
A^-1 Tính ma trận nghịch đảo của ma trận A
Det(a) Tính định thức ma trận a
Inv(a) Tính ma trận chuyền vị
Rank(a) Tìm hạng của ma trận a
isequal(a,b) Cho giá trị đúng nếu a, b giống nhau
ismember(a, b) Cho giá trị đúng khi phần tử của a cũng là phần tử của b
intersect(a, b) Các phần tử chung giữa a, b
setdiff(a, b) Các phần tử có trong a mà không có trong b
setxor(a, b) Các phần tử không thuộc phần chung giữa a và b
union(a,b) Tất cả các phần tử có trong a và b
* Các ma trận đặc biệt
Trang 25Eye Tạo mà trận đồng nhất (ma trận đơn
vị)
bằng 1 đến trị số phần tử
Rand Tạo ma trận với các phần tử ngẫu
nhiên từ 0 đến 1
với giá trị trung bình bằng 0
Ma trận đặc biệt thường có ững ứng đụng rộng rãi trong các phép toán Khi thựchiện một phép toán mà không có kết quả thì Matlab trả về một ma trận rỗng Ma trận rỗngkhông có kích cỡ, nhưng tên biến của chúng vẫn tồn tại trong không gian làm việc
Ma trận 0 là ma trận có các phần tử đều mang giá trị 0
Trang 260 1 0
0 0 1
1.3 Vòng lặp và lệnh điều kiện
1.3.1 Cấu trúc if – elseif – else – end
Thông thường, khi cần thực thi các lệnh rẽ nhánh, Matlab cung cấp cho ta cong cụ
để làm việc này như các ngôn ngữ lập trình khác
Cấu trúc lệnh: if – elseif – else – end
If biểu thức điều kiện 1
Trong trường hợp, chỉ có một biểu thức điều kiện thì ta có cấu trúc quen thuộc nhưsau:
If biểu thức điều kiện
Trang 27a(1,1) = 0end
1.3.2 Cấu trúc switch – case
Khi một lệnh đánh giá dựa trên một biểu thức hoặc biểu thức điều kiện với nhiều giátrị khác nhau, người ta thường sử dụng cấu trúc switch – case Cấu trúc này có dạng nhưsau:
Case giá trị thử 1
Khối lệnh 1
Case {giá trị thử 2, giá trị thử 3, giá trị thử 4}
Khối lệnh 2
Trang 28Ví dụ: Tìm xem mã màu được nhập vào có còn trong kho không
switch x
case 'd'
m = 'con it'case {'x','v'}
m = 'con nhieu'otherwise
m = 'het hang'end
Các câu lệnh trong vòng for được thực hiện một lần cho tất cả các cột của mảng(array) Tại mỗi lần lặp, x được gán giá trị của phần tử cột tiếp theo trong suốt n lần của
Trang 29Ví dụ: tính tổng S = 1 + 2 + … + 1000
For x = 0:1000
S = S + xEnd
Cần chú ý là vòng lặp for không thể bị kết thúc bằng cách gán lại biến chạy trongvòng lặp:
Trang 30Ví dụ: Viết chương trình tìm ra các số nguyên tố từ <100
Disp(‘ chương trình tim ra cac so nguyen to <100’)
x = x + 1;
for m = 3:100
for k = 2 : m-1
if mod(m,k) == 0break
end
if k == m-1
Trang 31x = x+1fprintf (m, count)end
+ Lệnh return
Việc thi hành các M-file sẽ kết thúc khi gặp dòng lệnh cuối cùng của file đó, hoặcgặp dòng lệnh return Lệnh này giúp ta kết thúc một hàm mà không cần phải thi hành hếtcác lệnh của hàm đó
+ Hàm error
Hàm error sẽ hiển thị một chuỗi lên cửa sổ lệnh và dừng thực hiện hàm, trả điềukhiển về cho cửa sổ lệnh Hàm này rất hữu dụng để cách báo việc sử dụng hàm khôngđúng mục đích
error (‘dong nhan’): kết thúc thực thi lệnh và hiển thị dòng nhắn trên màn hìnherrordlg (‘dong nhan’): kết thúc thực thi lệnh và hiển thị hộp thoại chứa dòng nhắn
1.4 Đồ họa trong Matlab
Trang 32* Vẽ đồ thị
Biểu diễn đồ thị trong không gian 2 chiều là một trong những yêu cầu không thểthiếu của quá trình biểu diễn, tìm hiểu hay đánh giá các số liệu Về cơ bản, Matlab hỗ trợcác kiểu vẽ đồ thị trong không gian 2D với các lệnh vẽ cơ bản sau
Plot Plot(x,y) Vẽ đồ thị bằng cách nối các điểm tương
ứng của các ma trận x và yFplot Fplot(‘x^2 + 2*x -1’) Vẽ đồ thị là hàm y =f(x) trong một
khoảng xác địnhEzplot Ezplot(f(x,y))
Trang 33Hình 2.3 Vẽ đồ thị y = sin(x) bằng lệnh plotTrong ví dụ này tạo ra 30 điểm trong khoảng từ 0 – 2*pi và tạo ra một vec tơ y làhàm của sin(x) Khi sử dụng lệnh plot, một figure được tạo ra với giá trị trên các trục đượccập nhật tự động với đồ thị được vẽ Nếu của sổ figure đã tồn tại thì lệnh plot sẽ xóa nó đi
và thay bằng đồ thị mới
Khi muốn vẽ nhiều đồ thị với lệnh plot thì ta sử dụng cấu trúc sau:
Plot (x1, y1, x2, y2,…)
Trong đó, các đồ thị được hình thành từ các cặp điểm cảu (x1, y1), (x2, y2)… sẽđược vẽ trên cùng một đồ thị Ta xem xét ví dụ vẽ đồ thì của sin(x) và cos(x) trên cùngmột figure như sau:
ma trận với vec tơ đó
>> w = [y; z];
Trang 34Hình 1.10 Đồ thị thu được với lệnh plot(x,w)Lệnh plot quy định đối số thứ 1 tương ứng với trục hoành còn đối số thứ 2 tươngứng với trục tung Vì thế, khi đảo trật tự của các đối số thì đồ thị sẽ bị quay đi một góc 900.
Trang 35Thực hiện chức năng vễ hàm fun với giá trị của x năm trong khoảng lims = [xmin
xmax] Nếu sử dụng giá trị lims = [xmin xmax ymin ymax] thì đồ thị khi vẽ sẽ giới hạn cả trục vẽ y
= [ymin ymax] Nếu lims không được khai báo thì hàm sẽ vẽ đồ thị với giá trị mặc định là -2π
ezplot (f, [xmin xmax ymin ymax]) với f = f(x,y)
ezplot(y,[ xmin xmax])
ezplot (x, y, [tmin tmax]) với x = x(t), y = y(t)
Khi các giá trị giới hạn không được khai báo thì đồ thị sẽ được vẽ mặc định trongkhoảng [-2 π, 2 π] Để làm rõ hơn vấn đề này ta xem xét ví dụ sau:
>> ezplot('x^2 - y^2 - 1')
Trang 36Hình 1.13 Đồ thị 'x^2 - y^2 - 1' = 0
>> ezplot('sin(t)','cos(t)')
Hình 1.14 Đồ thị x= sin(t); y = cos(t)
* Chỉnh sửa đồ thị 2D
a) Kiểu đường, dấu và màu
Khi làm việc với đồ thi, ta có thể khai báo các kiểu màu, nét vẽ bằng việc thêm cáckhai báo cho lệnh plot Các đối số này có thể là ký tự, có thể chứa một hoặc nhiều hơn mộttheo bảng dưới đây:
Trang 37c Xanh xám Đường nét đứt ^ Triangle (up)
Trang 38Hình 1.16 Thay đổi nét vẽ trên đồ thịb) Lưới đồ thị, nhãn và lời chú giải
Lệnh grid on sẽ thêm lưới vào đồ thị hiện tại Lệnh grid off sẽ bỏ các nét này đi.Lệnh grid không có tham số đi kèm thì sẽ thực hiện xen kẽ giữa các chế độ on và off
Hình 1.1 Lệnh grid
Để thêm các thông tin cho trục và tiêu đề cho đồ thị ta có thể sử dụng các lệnh sau:Xlabel : thêm vào tên trục x
Ylable : thêm vào tên trục y
Tillte : thêm vào tên của đồ thị
>> xlabel('x')
>> ylabel('do thi sin(x) va cos(x)')
>> title('ve do thi')
Trang 39Hình 1.18 Đồ thị với các nhãn cho trục x, y và tên đồ thịBênh cạnh đó, ta có thể thêm các chuỗi ký tự vào bất kỳ vị trí nào trên đồ thị bằng cách sử dụng lệnh text(x,y, string) : trong đó (x,y) là tọa độ thêm ký tự, string là chuỗi ký
Trang 40Hình 1.20 Thêm các đối tượng vào đồ thịNếu ta vẫn muốn thêm vào các ghi chú chẳng hạn như mốn chỉ ra trên biểu đồ các
vị trí quan trọng, ta có thể vào menu Insert và lựa chọn các đối tượng cần thêm để có đượckết quả như mong muốn Ở ví dụ hình 1.20 biểu đồ được thêm vào 3 đối tượng là ellipse,arrow và textbox
Trên một đồ thị, khi có nhiều đường khác nhau, để phân biệt các đường này ta dùng lệnh legend hoặc thêm vào từ menu Insert/legend Khi sử dụng lệnh thì cấu trúc như sau:
Legend (‘đường 1’, ‘đường 2’, ‘đường 3’)
Sau đay ta sẽ thêm vào chỉ dẫn cho đồ thị trên bằng lệnh legend như sau:
>> legend('sin(x)', 'cos(x)')