1. Trang chủ
  2. » Kỹ Thuật - Công Nghệ

bài giảng MATLAB simulink

174 740 2

Đ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 174
Dung lượng 4,04 MB

Nội dung

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 1

CHƯƠ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 2

Trong 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 4

Hì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 5

1.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 7

Workspace 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 8

Hì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 10

Char ‘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 13

c3=

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 14

ans = 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 15

log(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 16

Khi 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 17

X = 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 19

Ngoà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 25

Eye 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 26

0 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 27

a(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 28

Ví 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 29

Ví 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 30

Ví 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 31

x = 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 33

Hì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 34

Hì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 35

Thự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 36

Hì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 37

c Xanh xám Đường nét đứt ^ Triangle (up)

Trang 38

Hì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 39

Hì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 40

Hì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)')

Ngày đăng: 05/11/2014, 22:40

HÌNH ẢNH LIÊN QUAN

Hình 1.2. Không gian làm việc với M-file - bài giảng MATLAB simulink
Hình 1.2. Không gian làm việc với M-file (Trang 4)
Hình 1.10. Đồ thị thu được với lệnh plot(x,w) - bài giảng MATLAB simulink
Hình 1.10. Đồ thị thu được với lệnh plot(x,w) (Trang 34)
Hình 1.16. Thay đổi nét vẽ trên đồ thị b) Lưới đồ thị, nhãn và lời chú giải - bài giảng MATLAB simulink
Hình 1.16. Thay đổi nét vẽ trên đồ thị b) Lưới đồ thị, nhãn và lời chú giải (Trang 38)
Hình 1.18. Đồ thị với các nhãn cho trục x, y và tên đồ thị - bài giảng MATLAB simulink
Hình 1.18. Đồ thị với các nhãn cho trục x, y và tên đồ thị (Trang 39)
Hình 1.22. Vẽ đồ thị sử dụng lệnh hold on e) Lệnh điều khiển figure - bài giảng MATLAB simulink
Hình 1.22. Vẽ đồ thị sử dụng lệnh hold on e) Lệnh điều khiển figure (Trang 42)
Hình 1.23. Sử dụng lệnh subplot để chia các khung vẽ - bài giảng MATLAB simulink
Hình 1.23. Sử dụng lệnh subplot để chia các khung vẽ (Trang 43)
Hình 1.25. Đồ thị dạng lưới hàm z = sin(x 2  + y 2 )/ (x 2  + y 2 ) - bài giảng MATLAB simulink
Hình 1.25. Đồ thị dạng lưới hàm z = sin(x 2 + y 2 )/ (x 2 + y 2 ) (Trang 46)
Hình 1.28. Thay đổi góc nhìn với đồ thị 3D - bài giảng MATLAB simulink
Hình 1.28. Thay đổi góc nhìn với đồ thị 3D (Trang 48)
Hình 1.29. Đồ thị khi sử dụng lệnh hidden off + Lệnh pcolor - bài giảng MATLAB simulink
Hình 1.29. Đồ thị khi sử dụng lệnh hidden off + Lệnh pcolor (Trang 49)
Hình 1.30. Lệnh pcolor thể hiện độ cao bằng màu sắc - bài giảng MATLAB simulink
Hình 1.30. Lệnh pcolor thể hiện độ cao bằng màu sắc (Trang 50)
Hình 1.31. Bảng màu jet - bài giảng MATLAB simulink
Hình 1.31. Bảng màu jet (Trang 52)
Hình 1.34. Nội suy đường cong y=f(x) với đạo hàm âm - bài giảng MATLAB simulink
Hình 1.34. Nội suy đường cong y=f(x) với đạo hàm âm (Trang 58)
Hình 1.39. Phương pháp biến đổi Euler - bài giảng MATLAB simulink
Hình 1.39. Phương pháp biến đổi Euler (Trang 64)
Hình 1.43. Đòng điện qua cuộn dây giải bằng phương pháp Rungle – Kutta - bài giảng MATLAB simulink
Hình 1.43. Đòng điện qua cuộn dây giải bằng phương pháp Rungle – Kutta (Trang 70)
Hình 1.46. Điện áp trên tụ C trong trường hợp mạch RLC nối tiếp E = sin(100πt) - bài giảng MATLAB simulink
Hình 1.46. Điện áp trên tụ C trong trường hợp mạch RLC nối tiếp E = sin(100πt) (Trang 73)
Hình 2.9. Giao diện Real-time workshop  2.2.5. Khởi động và ngừng quá trình mô phỏng - bài giảng MATLAB simulink
Hình 2.9. Giao diện Real-time workshop 2.2.5. Khởi động và ngừng quá trình mô phỏng (Trang 88)
Hình 2.14. Cửa sổ Initialization - bài giảng MATLAB simulink
Hình 2.14. Cửa sổ Initialization (Trang 95)
Hình 2.16. Các bước mô phỏng và các chương trình con tương ứng (do hàm S gọi) - bài giảng MATLAB simulink
Hình 2.16. Các bước mô phỏng và các chương trình con tương ứng (do hàm S gọi) (Trang 103)
Hình 2.32. Mô phỏng dòng điện động cơ trên hệ tọa độ dq - bài giảng MATLAB simulink
Hình 2.32. Mô phỏng dòng điện động cơ trên hệ tọa độ dq (Trang 120)
Hình 2.48. Điện áp xoay chiều đặt lên động cơ mô tả trên hệ dq - bài giảng MATLAB simulink
Hình 2.48. Điện áp xoay chiều đặt lên động cơ mô tả trên hệ dq (Trang 133)
Hình 2.52. Luật hợp thành về chiều cao của người theo tâp kinh điển và tập mở rộng - bài giảng MATLAB simulink
Hình 2.52. Luật hợp thành về chiều cao của người theo tâp kinh điển và tập mở rộng (Trang 138)
Hình 2.58. Minh họa quy tắc hơp thành Min b) Giải mờ (Fuzzy inference) - bài giảng MATLAB simulink
Hình 2.58. Minh họa quy tắc hơp thành Min b) Giải mờ (Fuzzy inference) (Trang 145)
Sơ đồ suy luận mờ - bài giảng MATLAB simulink
Sơ đồ suy luận mờ (Trang 151)
Hình 2.68. Các giao diện xây dựng bộ điều khiển mờ cho Matlab - bài giảng MATLAB simulink
Hình 2.68. Các giao diện xây dựng bộ điều khiển mờ cho Matlab (Trang 152)
Hình 2.71. Giao diện xây dựng hàm thuộc Membership Function Editor Giao diện này bao gồm các phần chính như sau: - bài giảng MATLAB simulink
Hình 2.71. Giao diện xây dựng hàm thuộc Membership Function Editor Giao diện này bao gồm các phần chính như sau: (Trang 155)
Hình 2.75. Giao diện Rule Editor - bài giảng MATLAB simulink
Hình 2.75. Giao diện Rule Editor (Trang 158)
Hình 2.84. Quan hệ biểu diễn truyền đạt cho trường hợp 1 - bài giảng MATLAB simulink
Hình 2.84. Quan hệ biểu diễn truyền đạt cho trường hợp 1 (Trang 164)
Hình 2.85. Quan hệ biểu diễn hàm truyền đặt cho trường hợp 2 - bài giảng MATLAB simulink
Hình 2.85. Quan hệ biểu diễn hàm truyền đặt cho trường hợp 2 (Trang 164)
Hình 2.89. Kết quả đáp ứng của hệ thống với bộ điều khiển mờ tỉ lệ - bài giảng MATLAB simulink
Hình 2.89. Kết quả đáp ứng của hệ thống với bộ điều khiển mờ tỉ lệ (Trang 168)
Hình 2.96. Hàm thuộc của đầu ra điều khiển - bài giảng MATLAB simulink
Hình 2.96. Hàm thuộc của đầu ra điều khiển (Trang 172)

TỪ KHÓA LIÊN QUAN

TRÍCH ĐOẠN

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

TÀI LIỆU LIÊN QUAN

w