1. Trang chủ
  2. » Cao đẳng - Đại học

chương 1 nhập môn matlab

195 2,3K 1

Đ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

Tiêu đề Chương 1 Nhập Môn Matlab
Trường học Trường Đại Học
Chuyên ngành Khoa Học Máy Tính
Thể loại Bài Giảng
Định dạng
Số trang 195
Dung lượng 1,56 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Chương trình trên Matlab • Matlab có thể làm việc như là một siêu máy tính cầm tay nếu chúng ta chỉ cần Matlab thực hiện một số lệnh bằng cách đánh trực tiếp trên của sổ lệnh… • Chương

Trang 1

Chương 1 NHẬP MÔN MATLAB

Trang 2

Nội dung

• Giới thiệu chung về MATLAB

• Làm việc với MATLAB

• Lập trình với MATLAB

• Các phép tính ma trận nâng cao

• Đồ thị nâng cao

• Vào ra dữ liệu

Trang 3

Giới thiệu chung về MATLAB

• MATLAB (Matrix Laboratory) là phần mềm của hóng MathWorks Inc

• Đối tượng là cỏc ma trận

• MATLAB tớch hợp các ph-ơng pháp tính toán, hiển thị và ngôn ngữ lập trỡnh mạnh để cung cấp cho ng-ời sử dụng một môi tr-ờng làm việc thuận tiện để giải các vấn đề tính toán khoa học

• Cấu trúc mở của MATLAB cho phép sử dụng MATLAB và các thành phần của nó để khảo sát dữ liệu, nghiên cứu các thuật toán và tạo các công cụ tiện ích của ng-ời sử dụng

Trang 4

Giới thiệu chung về MATLAB (tiếp)

• Ngoài ra Matlab cũng đã tạo sẵn rất nhiều công cụ tiện ích như:

Khai ph¸ d liÖu (Data acquisition)

Ph©n tÝch vµ kh¶o s¸t d liÖu (Data analysis and exploration)

HiÓn thÞ vµ xö lý ¶nh (Visualization and image processing)

Dùng mÉu vµ Ph¸t triÓn thuËt to¸n (Algorithm prototyping and

development)

M« hình hãa vµ m« pháng (Modeling and simulation)

• MATLAB là công cụ được các nhà khoa học, kỹ sư sử dụng để phát triển

các phần mềm giải các bài toán tính toán trong khoa học kỹ thuật

• Bản thân MATLAB cũng cung cấp công cụ để giải nhiều bài toán của

khoa học kỹ thuật

• MATLAB được dùng trong nhiều trường đại học để hỗ trợ việc giảng

Trang 5

Làm việc với MATLAB

Trang 6

Màn hình làm việc của Matlab

Cửa sổ lệnh Command Window

Các lệnh quá khứ

Command history

Thư mục hiện thời

Current Directory

Trang 7

Cửa sổ lệnh

Command Window

Vùng nhớ làm việc Workspace

Các lệnh quá khứ

Command History

Trang 8

Chương trình trên Matlab

• Matlab có thể làm việc như là một siêu máy tính cầm tay nếu

chúng ta chỉ cần Matlab thực hiện một số lệnh bằng cách đánh trực tiếp trên của sổ lệnh…

• Chương trình được thực hiện bằng cách nào?

• Chương trình trong Matlab có thể là:

Trang 9

Bộ soạn thảo của Matlab (Matlab Editor)

Tự động gán màu chữ và dóng hàng

Trang 10

Cơ cấu làm việc của Matlab

• Matlab là ngôn ngữ thông dịch (interpreted language)

– Các câu lệnh được đánh trực tiếp trong cửa sổ lệnh và được thực hiện tức thì

– Các biến được phân bố bộ nhớ ngay lần đầu tiên chúng được khởi tạo – Muốn thực hiện lại một lệnh chỉ việc gõ lại lệnh đó

• Tất cả các biến được sử dụng trong cửa sổ lệnh được cất giữ vào Vùng nhớ làm việc Base Workspace

– Có thể gán giá trị mới cho các biến nếu cần thiết

– Có thể chọn để xoá bỏ một số biến khỏi vùng nhớ làm việc

– Vùng nhớ làm việc có thể cất giữ vào một file dữ liệu

– Phần mở rộng của file dữ liệu là mat (ví dụ: mydata.mat )

– File là file nhị phân

Trang 11

Câu lệnh, Chỉ thị & Biến

• Tại dấu nhắc của cửa sổ lệnh, người sử dụng có thể gõ:

– Lệnh (Command) :

• save mydata (cất giữ vùng nhớ làm việc vào mydata.mat)

• whos (hiển thị danh mục các biến trong vùng nhớ làm việc)

– Chỉ thị gán (Assignment Statement):

• A = width * length;

• B = 267;

• Câu lệnh gán chỉ có một tên biến ở vế trái của toán tử gán (=)

• Vế phải sẽ được tính dựa vào giá trị hiện thời của các biến và kết quả tính được sẽ gán cho biến ở vế trái

Trang 12

Làm việc trong chế độ hội thoại

• Khi sử dụng chế độ hội thọai, ng-ời sử dụng đánh trực tiếp câu lệnh vào sau dấu nhắc của MATLAB Khi ấn nút “Enter”,

• Dấu chấm phảy ";" ở cuối dòng lệnh đ-ợc sử dụng để ngăn

MATLAB không đ-a kết quả của phép thao tác

Trang 13

Chương trỡnh trờn MATLAB

• Một cách làm việc khác với MATLAB là ta có thể viết ch-ơng trỡnh để thực hiện các tính toán

• Để làm điều này ta cần soạn thảo một file văn bản bằng bất kỳ

bộ soạn thảo văn bản nào, trong đó có bộ soạn thảo của

MATLAB

• File văn bản chứa các câu lệnh phải đ-ợc đặt tên với đuôi là

*.m, nếu không MATLAB sẽ không chấp nhận ch-ơng trỡnh

• Ch-ơng trỡnh đ-ợc soạn thảo cần cất giấu trong th- mục làm việc hiện thời của MATLAB.

Trang 14

• VÝ dô, néi dung cña file Tinhpi.m

% Program 1.1 (TÝnh sè )

% Ch-¬ng trình tÝnh gi¸ trÞ cña Pi = 3.14159265358979

% Mçi dßng b¾t ®Çu bëi % sÏ lµ dßng chó gi¶i vµ sÏ ®-îc

% MATLAB bá qua khi nã thùc hiÖn ch-¬ng trình

Trang 15

Các từ khoá…

• Matlab sử dụng một loạt các từ khoá (reserved

words) mà để tránh xung đột, không nên sử dụng để đặt tên biến…

try catch global persistent break

Trang 16

C¸c tªn biÕn vµ tªn hµm chuÈn cña MATLAB

Trang 17

C¸c tªn biÕn vµ tªn hµm chuÈn cña MATLAB

hµm ng-îc cña tang

sè phøc liªn hîp

hµm cosin

hµm mò

Trang 18

C¸c tªn biÕn vµ tªn hµm chuÈn cña MATLAB

Trang 19

• Khu«n d¹ng ®-îc chän nhê sö dông lÖnh format:

– FORMAT SHORT số dấu phảy động có 4 chữ số sau dấu – FORMAT LONG số dấu phảy động có 14 chữ số

– FORMAT SHORTE số dấu phảy động có 4 chữ số với số mũ – FORMAT LONGE số dấu phảy động có 15 chữ số với số

– FORMAT RAT biểu diễn đúng hoặc gần đúng dưới dạng

Trang 20

3.1416e+000

>> format rat, pi ans =

355/113

Trang 23

Khëi t¹o biÕn vect¬ vµ ma trËn

• Mét trong những ®iÓm m¹nh cña MATLAB lµ nã cho phÐp lµm viÖc víi c¸c ma trËn vµ vect¬ ĐÓ sö dông mét biÕn ta cÇn khëi t¹o nã Cã thÓ khëi t¹o biÕn

vect¬ vµ ma trËn theo nhiÒu c¸ch

• Đèi víi vect¬ (hay ma trËn chØ cã mét dßng) ta cã thÓ

sö dông c¸c c¸ch khëi t¹o sau

Trang 24

Khởi tạo biến vectơ và ma trận

• Một trong những cách khởi tạo vectơ th-ờng

dùng là sử dụng toán tử

first : increment : last

• Câu lệnh

a= first : increment : last

khởi tạo vectơ dòng a bắt đầu từ phần tử first

và kết thúc tại phần tử last với độ dài b-ớc là

increment Nếu không chỉ ra increment , thỡ giá trị ngầm định nó là bằng 1

Trang 25

Khëi t¹o biÕn vect¬ vµ ma trËn

Trang 26

Khởi tạo biến vectơ và ma trận

• Để khởi tạo ma trận ta có thể làm nh- sau

>> A = [1 2 3; 4 5 6; 7 8 9];

>> B = [x; y; z];

>> C = [A; 10 11 12];

• Chú ý là các dòng của ma trận đ-ợc phân tách nhau bởi dấu ";", trong khi đó các phần tử trên một dòng

đ-ợc phân tách bởi dấu cách (hoặc dấu phảy)

Trang 27

Địa chỉ của mảng (Array addressing)

• Các phần tử của một mảng tổng quát (là vectơ hay ma trận) có thể địa chỉ hóa theo nhiều cách

• Cách đơn giản nhất là chỉ ra phần tử bởi vị trí

dòng và cột của nó trong mảng

• Các dòng và cột đ-ợc đánh số bắt đầu từ 1

Trang 28

ĐÞa chØ cña m¶ng (Array addressing)

Trang 29

Địa chỉ của mảng (Array addressing)

• Trong tr-ờng hợp ma trận, có thể xác định

địa chỉ dòng hay cột bởi lệnh :

• Ví dụ: Nếu cần lấy các phần tử của cột thứ

hai và các phần tử của dòng thứ 3 trong ma trận A có thể dùng các lệnh

>> A(:,2)

>> A(3,:)

Trang 30

Địa chỉ của mảng (Array addressing)

• Thay vectơ chỉ số vào chỗ các chỉ số ta có thể sinh ra hoặc lấy

• Nếu chỉ số đ-ợc chỉ ra bởi ký tự : thỡ điều đó có nghĩa là tất

cả các giá trị có thể của chỉ số của chiều đó của mảng đều

đ-ợc chọn

• Ví dụ:

>> B = A(:,[3 1 2]);

Trang 31

ĐÞa chØ cña m¶ng (Array addressing)

- NÕu A vµ B lµ c¸c ma trËn cã cïng sè cét thì

>> C = [A; B]

cho ma trËn C cã sè cét b»ng sè cét cña A hoÆc B nh-ng

sè dßng cña C lµ b»ng tæng sè dßng cña A vµ B

Trang 32

Địa chỉ của mảng (Array addressing)

• Để xoá một dòng hay cột của ma trận ta sử dụng cặp

ngoặc vuông rỗng []:

• Ví dụ: Giả sử A là ma trận trong ví dụ tr-ớc Khi đó,

lệnh

>> A(:,2) = [];

cho ta ma trận thu được từ A bởi việc xoỏ đi cột thứ 2

• Không thể xoá bỏ một phần tử của ma trận, bởi vỡ khi

đó kết quả không còn là ma trận nữa

• Tuy nhiên, nhờ mô tả chỉ số bởi toán tử : có thể thực hiện việc xoá bỏ một phần tử hoặc một dãy phần tử và các phần tử còn lại đ-ợc sắp xếp lại trong một vectơ dòng

Trang 33

Các phép toán đối với vectơ và ma trận

• Tr-ớc xét một số hàm của MATLAB cho thông tin về

đặc tr-ng của mảng

• Hàm length cho phép xác định số phần tử của vectơ

Nếu gọi hàm đối với ma trận thỡ nó sẽ trả lại số lớn hơn trong số dòng và số cột của ma trận

• Hàm size, nó trả lại số dòng và số cột của ma trận hay

vectơ Kết quả của hàm size là một vectơ 12 chứa số dòng và số cột của ma trận Cách sử dụng chuẩn của hàm này là

>> [rows cols] = size(A);

Trang 34

Các phép toán đối với vectơ và ma trận

• Cộng (và trừ) cỏc ma trận cựng kớch thước được thực hiện từng thành phần

Trang 35

Các phép toán đối với vectơ và ma trận

• Nhõn với một số (chia cho một số khỏc khụng) cũng được thực hiện theo từng thành phần Vớ dụ:

Trang 36

semi-Các phép toán đối với vectơ và ma trận

• Cộng vectơ và nhõn vectơ với một số được thực hiện tương tự

Trang 37

Các phép toán đối với vectơ và ma trận

• Phộp nhõn hai ma trận cũng cú thể thực hiện được trờn Matlab

• Để nhõn hai ma trận hay nhõn ma trận với vector chỉ việc dựng toỏn tử * giống như

phộp nhõn của cỏc đại lượng vụ hướng

• Matlab nhận dạng kớch thước của đầu vào

và thực hiện phộp nhõn

• Điều mà người sử dụng quan tõm là kớch thước của cỏc ma trận và vector phải phự hợp để cú thể thực hiện được phộp toỏn

Trang 38

Các phép toán đối với vectơ và ma trận

Trang 39

Các phép toán đối với vectơ và ma trận

• Để thực hiện chuyển vị vectơ hoặc ma trận có thể dùng lệnh chuyển vị ' viết ngay sau tên

biến

>> A = [ 4 5; 5 4; 6 3]

>> A' ans =

4 5 6

5 4 3

Trang 40

Các phép toán đối với vectơ và ma trận

• Phép toán chuyển vị thực hiện đối với ma trận phức sẽ thực hiện chuyển vị liên hợp:

Trang 41

Các phép toán đối với vectơ và ma trận

• Một phép chuyển vị khác ít dùng đối với ma trận phức

đ-ợc thực hiện nhờ phép toán ".'" Ví dụ:

Trang 42

Các phép toán đối với vectơ và ma trận

• Nếu A là ma trận vuông còn m là số nguyên d-ơng thỡ A^m sẽ cho ta tích của m nhân tử là A

Trang 44

Các phép toán đối với vectơ và ma trận

• Phép toán luỹ thừa áp dụng với ma trận kích th-ớc 1  1 trở

thành phép toán luỹ thừa của đại l-ợng vô h-ớng

Trang 45

Gi¶i ph-¬ng trình ma trËn sö dông phÐp chia ma trËn

• NÕu A lµ ma trËn vu«ng kh«ng suy biÕn thì nghiÖm cña

nµy vµ ký hiÖu lµ to¸n tö "\"

Trang 46

Giải ph-ơng trỡnh ma trận sử dụng phép chia ma trận

• Chú ý: hàm rand tạo các số ngẫu nhiên với phân bố đều trên

đọan (0,1) Hãy sử dụng lệnh help rand để xem giải đáp chi tiết

về hàm này

• Nh- vậy A\b là t-ơng đ-ơng với việc nhân trái b với ma trận A

-1 (tuy nhiên, để đ-a ra kết quả, Matlab không tính ma trận

nghịch đảo mà giải trực tiếp hệ ph-ơng trỡnh)

• Khi sử dụng toán tử "\" đối với ma trận không vuông, Matlab

sẽ giải hệ ph-ơng trỡnh t-ơng ứng trong nghĩa bỡnh ph-ơng bé

nhất;

• Hãy sử dụng lệnh help slash để có đ-ợc giải đáp chi tiết hơn

• Giống nh- đối với các phép toán số học khác, các ma trận phải

có kích th-ớc phù hợp

Trang 47

Các phép toán đối với vectơ và ma trận

• Tớch theo từng thành phần của hai ma trận cựng kớch thước A và B là ma trận A.*B với cỏc phần tử

là tớch của cỏc phần tử tương ứng của A và B

• Vớ dụ:

>> A=[ 1 2 3; 4 5 6]; B=[3 2 1;-1 2 2];

>> A.*B ans = 3 4 3 -4 10 12

Trang 48

Các phép toán đối với vectơ và ma trận

• Phộp chia và luỹ thừa theo từng thành phần:

A./B và A.^B được định nghĩa tương tự Lưu ý

là cỏc phộp tớnh với cỏc thành phần phải là cú nghĩa, nếu khụng MATLAB sẽ bỏo lỗi

• Vớ dụ:

>> A./B ans = 1/3 1 3 -4 5/2 3

>> A.^B ans = 1 4 3 1/4 25 36

Trang 49

Các phép toán đối với vectơ và ma trận

• Phộp cộng ma trận với vụ hướng: Giỏ trị của

vụ hướng được cộng vào từng thành phần của

ma trận

• Vớ dụ:

>> A=[1 2 3; 2 3 4];

>> A+5 ans =

6 7 8

7 8 9

Trang 50

Các hàm và phép toán vectơ hóa

• Các hàm của Matlab đều là hàm đ-ợc vectơ hóa,

nghĩa là nếu áp dụng các hàm của Matlab đối với

mảng, nó sẽ tạo ra mảng mới có cùng kích th-ớc với các thành phần là giá trị hàm tại các thành phần t-ơng ứng của mảng ban đầu

• Ví dụ: Vẽ đồ thị hàm y=sin(x) trên đoạn [0, 2*pi]

>> x = (0:.1:2*pi);

>> y = sin(x);

>> plot(x,y)

Trang 51

C¸c hµm vµ phÐp to¸n vect¬ hãa

• Matlab còng cung cÊp c¸c phÐp to¸n sè häc ®-îc

vect¬ hãa, ®-îc ký hiÖu gièng nh- phÐp to¸n sè häc th«ng th-êng nh-ng cã thªm dÊu chÊm "." ë tr-íc

Trang 52

Các hàm tạo ma trận đặc biệt

zeros(m,n) tạo ma trận m  n gồm toàn số 0;

ones(m,n) tạo ma trận m  n gồm toàn số 1;

eye(n) tạo ma trận đơn vị n  n ;

diag(v) (giả thiết v là vectơ n chiều) tạo ma

đ-ờng chéo

Trang 53

Biến xâu trong MATLAB

• MATLAB cho phép sử dụng biến xâu ký tự: Sử dụng lệnh gán

Trang 54

Biến xâu trong MATLAB

• Lệnh S = [S1 S2 ] ghép các xâu S1, S2, thành một xâu mới S

Trang 55

Biến xâu trong MATLAB

Trang 56

Biến xâu trong MATLAB

• Để khởi tạo biến mảng mà mỗi phần tử là một xâu, sử dụng:

>> S = {'Hello' 'Yes' 'No' 'Goodbye'}

Trang 57

LẬP TRÌNH TRÊN MATLAB

Trang 58

Câu lệnh trong Matlab

• Câu lệnh hay gặp nhất trong Matlab có

dạng

variable = expression

Câu lệnh này sẽ gán giá trị của biểu thức

Ví dụ:

>> x=2^10*pi

x =

Trang 59

Câu lệnh trong Matlab

• Câu lệnh của Matlab cũng còn có thể có dạng đơn giản như sau:

expression

trong trường hợp này giá trị của biểu thức

sẽ được gán cho biến ngầm định có tên là

Trang 60

Câu lệnh trong Matlab

• Cuối cùng, một dạng nữa của câu lệnh trong

Matlab là

– Nếu như biến đã được gán giá trị trước đó thì nội

dung của biến được đưa ra màn hình,

– Nếu trái lại sẽ có thông báo rằng biến chưa được xác định

• Người sử dụng có thể tận dụng điều này để

kiểm tra xem một tên biến đã được dùng hay

chưa

Trang 61

Câu lệnh trong Matlab

• Câu lệnh của Matlab sẽ được thực hiện ngay sau khi nhấn phím Enter Nếu câu lệnh Matlab kết thúc bởi Enter, theo ngầm định, Matlab sẽ đưa kết quả thực hiện lên thiết bị ra chuẩn

(ngầm định là màn hình)

• Muốn tránh việc đưa kết quả ra ngay trực tiếp sau câu lệnh, cần kết thúc câu lệnh bởi dấu ; sau đó mới đến Enter

• Khi câu lệnh của Matlab quá dài có thể ngắt thành hai hoặc nhiều dòng sử dụng dấu nối

dòng … ở cuối mỗi dòng chứa câu lệnh

Trang 62

Câu lệnh trong Matlab

>> clear var1 var 2

trong đó var1, var2, Là các tên của cá biến cần xóa

Trang 63

Các phép toán quan hệ và logic trong Matlab

Phép toán quan hệ Ý nghĩa

Phép toán lôgic Ý nghĩa

& AND (hội)

| OR (tuyển)

~ NOT (phủ định)

Số khác không

Trang 64

• Nếu không có expr nào khác 0 thì nhóm lệnh sau else

elseif và else là tuỳ chọn

Trang 67

Câu lệnh vòng lặp for

• Vòng lặp for lặp lại các câu lệnh trong thân của

nó đối với các giá trị của biến chạy được lấy từ một vector dòng cho trước

Trang 68

Câu lệnh vòng lặp for

• Chú ý đến việc sử dụng hàm nội trú disp : hàm này đưa

ra màn hình nội dung của biến

• Vòng lặp, cũng giống như câu lệnh if, phải kết thúc bởi

end Vòng lặp ở trên thường được viết dưới dạng như sau

Trang 70

sẽ tạo ra ma trận Hilbert kích thước 4 x 5

• Dấu ; ở cuối câu lệnh trong thân của vòng lặp dùng để ngăn Matlab không đưa cá kết quả trung gian, ma trận

kết quả được đưa ra bởi lệnh h

Trang 71

• Các câu lệnh trong thân của vòng lặp

while sẽ được lặp lại chứng nào biểu thức

expr còn là true (có giá trị khác 0)

Trang 74

q = 1075

Tràn số nhỏ underflow

Hiện tượng tràn số nhỏ

Trang 75

Ví dụ: Tìm r nguyên dương nhỏ nhất để 2r = inf

Hiện tượng tràn số lớn

Trang 77

C©u lÖnh switch

• Câu lệnh switch cho phép thực hiện rẽ nhánh

dựa trên giá trị biểu thức

• Dạng tổng quát của câu lệnh switch là:

switch bieuthuc

case giatri

cac cau lenh

case {giatri1, giatri2, giatri3, } cac cau lenh

otherwise

cac cau lenh

end

Trang 78

disp(‘the workday.')

end

Trang 79

Câu lệnh break

• Lệnh break dùng để ngắt việc thực hiện vòng lặp WHILE hay là FOR Trong vòng lặp lồng nhau, BREAK sẽ chỉ thoát khỏi vòng lặp trong

• Nếu sử dụng lệnh break ngoài vòng lặp FOR hay WHILE trong kịch bản hoặc hàm của MATLAB, lệnh này sẽ chấm dứt việc thực hiện kịch bản hay hàm tại chính điểm đó Lệnh break sử dụng trong câu lệnh IF, SWITCH-CASE, sẽ ngắt câu lệnh tại điểm đó

Ngày đăng: 22/05/2014, 12:26

HÌNH ẢNH LIÊN QUAN

Đồ thị hàm sin(x) và sin(x 2 ) - chương 1 nhập môn matlab
th ị hàm sin(x) và sin(x 2 ) (Trang 92)
Đồ thị hàm số  y = x 3 - chương 1 nhập môn matlab
th ị hàm số y = x 3 (Trang 126)

TỪ KHÓA LIÊN QUAN

w