1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Giáo trình MATLAB SIMULINK

96 1,3K 26
Tài liệu đã được kiểm tra trùng lặp

Đ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 đề Giáo Trình MATLAB - Simulink
Trường học Trường Đại Học Khoa Học Tự Nhiên
Chuyên ngành Kỹ Thuật Điện
Thể loại Giáo Trình
Thành phố Thành Phố Hồ Chí Minh
Định dạng
Số trang 96
Dung lượng 3,52 MB

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

Nội dung

MATLAB (viết tắt từ matrix laboratory) được phát triển từ dự án LINPACK & EISPACK nhằm tạo ra thư viện ma trận phục vụ cho tính toán. Qua quá trình phát triển lâu dài, MATLAB được phát triển thành một công cụ rất mạnh, được ứng dụng khá phổ biến trong các trường đại học ở khắp thế giới, đặc biệt là các nước như Mỹ, Bỉ, Canada, ... như là công cụ không thể thiếu trong các giáo trình từ cơ bản đến nâng cao trong các lĩnh vực: toán học cao cấp, khoa học và kỹ thuật. Trong công nghiệp, MATLAB công cụ lựa chọn cho nghiên cứu nâng cao hiệu quả sản xuất, phân tích đánh giá và ứng dụng. Với MATLAB, bài toán tính toán, phân tích, thiết kế và mô phỏng trở nên dễ dàng hơn trong nhiều lĩnh vực chuyên ngành như: Điện, Điện tử, Cơ khí, Cơ điện tử, Vật lý, ...  MATLAB là công cụ tính toán rất mạnh dễ dùng, trực quan dễ mở rộng và phát triển.  MATLAB có khả năng liên kết đa môi trường, liên kết dễ dàng với ngôn ngữ lập trình C++, Visual C, FORTRAN, JAVA, ...  MATLAB có khả năng xử lý đồ hoạ mạnh trong không gian hai chiều và ba chiều.  Các TOOLBOX trong MATLAB rất phong phú, đa năng là công cụ nghiên cứu, thiết kế cực kỳ hiệu quả trong các lĩnh vực chuyên ngành.  Công cụ mô phỏng trực quan SIMULINK chạy trong môi trường MATLAB giúp cho bài toán phân tích thiết kế dễ dàng, sinh động hơn.  MATLAB có kiến trúc mở, dễ dàng trong việc xây dựng thêm các module tính toán kỹ thuật theo tiêu chuẩn công nghiệp và truyền thông. MATLAB xây dựng sẵn các phép tính xử lý ma trận, các hàm toán học, các phép xử lý đồ hoạ với thư viện phong phú. Từ đó cho phép người dùng viết các chương trình (m-files), xây dựng các hàm chuyên tính toán cho mỗi lĩnh vực (gọi là các TOOLBOXS) như: Điều khiển tự động, Kỹ thuật điện, Điện tử, truyền thông, xử lý ảnh, xử lý tín hiệu số, tối ưu hoá, mô phỏng các quá trình thực tế ... Trên cơ sở các thư viện có sẵn, người dùng lập nên các chương trình ứng dụng riêng theo nhu cầu riêng với cấu trúc chương trình dễ hiểu, rõ ràng và tận dụng sức mạnh các công cụ có sẵn, đặc biệt công cụ xử lý ma trận để viết nên các ứng dụng mà thời gian lập trình tiết kiệm rất nhiều. Ngoài ra MATLAB cho phép viết ngôn ngữ C/C++, FORTRAN trong cửa sổ MATLAB và biên dịch chương trình viết bằng MATLAB sang C/C++, FORTRAN. Từ đó ta có thể biên dịch sang chương trình ứng dụng (*.exe) chạy độc lập (stand-alone application).

Trang 1

GIÁO TRÌNH MATLAB - SIMULINK

Trang 2

CHƯƠNG 0 TỔNG QUAN VỀ MATLAB0.1 Cấu trúc chung và các lĩnh vực ứng dụng của MATLAB:

MATLAB (viết tắt từ matrix laboratory) được phát triển từ dự án LINPACK &

EISPACK nhằm tạo ra thư viện ma trận phục vụ cho tính toán Qua quá trình phát triển

lâu dài, MATLAB được phát triển thành một công cụ rất mạnh, được ứng dụng khá phổ

biến trong các trường đại học ở khắp thế giới, đặc biệt là các nước như Mỹ, Bỉ,Canada, như là công cụ không thể thiếu trong các giáo trình từ cơ bản đến nâng caotrong các lĩnh vực: toán học cao cấp, khoa học và kỹ thuật Trong công nghiệp,

MATLAB công cụ lựa chọn cho nghiên cứu nâng cao hiệu quả sản xuất, phân tích đánh

giá và ứng dụng

Với MATLAB, bài toán tính toán, phân tích, thiết kế và mô phỏng trở nên dễ dàng

hơn trong nhiều lĩnh vực chuyên ngành như: Điện, Điện tử, Cơ khí, Cơ điện tử, Vật lý,

MATLAB là công cụ tính toán rất mạnh dễ dùng, trực quan dễ mở rộng và phát triển.

MATLAB có khả năng liên kết đa môi trường, liên kết dễ dàng với ngôn ngữ lập

trình C++, Visual C, FORTRAN, JAVA,

MATLAB có khả năng xử lý đồ hoạ mạnh trong không gian hai chiều và ba chiều.

Các TOOLBOX trong MATLAB rất phong phú, đa năng là công cụ nghiên cứu, thiết

kế cực kỳ hiệu quả trong các lĩnh vực chuyên ngành

Công cụ mô phỏng trực quan SIMULINK chạy trong môi trường MATLAB giúp cho

bài toán phân tích thiết kế dễ dàng, sinh động hơn

MATLAB có kiến trúc mở, dễ dàng trong việc xây dựng thêm các module tính toán

kỹ thuật theo tiêu chuẩn công nghiệp và truyền thông

MATLAB xây dựng sẵn các phép tính xử lý ma trận, các hàm toán học, các phép xử

lý đồ hoạ với thư viện phong phú Từ đó cho phép người dùng viết các chương trình files), xây dựng các hàm chuyên tính toán cho mỗi lĩnh vực (gọi là các TOOLBOXS)như: Điều khiển tự động, Kỹ thuật điện, Điện tử, truyền thông, xử lý ảnh, xử lý tín hiệu

(m-số, tối ưu hoá, mô phỏng các quá trình thực tế

Trên cơ sở các thư viện có sẵn, người dùng lập nên các chương trình ứng dụng riêngtheo nhu cầu riêng với cấu trúc chương trình dễ hiểu, rõ ràng và tận dụng sức mạnh cáccông cụ có sẵn, đặc biệt công cụ xử lý ma trận để viết nên các ứng dụng mà thời gian lập

trình tiết kiệm rất nhiều Ngoài ra MATLAB cho phép viết ngôn ngữ C/C++,

Trang 3

FORTRAN trong cửa sổ MATLAB và biên dịch chương trình viết bằng MATLAB

sang C/C++, FORTRAN Từ đó ta có thể biên dịch sang chương trình ứng dụng (*.exe)chạy độc lập (stand-alone application)

Đặc biệt, ta có thể viết chương trình C/C++, Fortran, LabView, gọi MATLABchạy ngầm để tính toán sau đó trả kết quả về chương trình

Ngoài ra MATLAB có thể chạy trên các máy tính khác nhau, với các hệ điều hànhkhác nhau như: MS Windows, X Windows (Unix/Linux) và Macintosh mà vẫn giữnguyên các chương trình và dữ liệu, không cần một sự biến đổi nào

0.2 Giới thiệu SIMULINK và TOOLBOXS trong MATLAB

SIMULINK là công cụ mô phỏng trực quan trong môi trường MATLAB, kết hợp với

thư viện TOOLBOXS rất phong phú cho các ngành, các lĩnh vực kỹ thuật, giúp cho bàitoán phân tích thiết kế dễ dàng, sinh động hơn Do đó rất thích hợp cho sinh viên nghiêncứu khoa học, làm báo cáo đồ án môn học, đặc biệt đồ án tốt nghiệp, Các kỹ sư làm việctrong các lĩnh vực nghiên cứu, điều khiển các hệ thống kỹ thuật, phân tích hệ thống, Các Toolboxs:

- Control System Toolbox cho lĩnh vực điều khiển - Tự động hoá, Điện tử, Cơ khí.

- Power System Toolbox cho chuyên ngành Hệ thống điện, Thiết bị điện, Tự động

hoá, Cơ khí

- Nonlinear control Design blocksets để mô phỏng, phân tích, thiết kế tối ưu hệ

thống điều khiển phi tuyến

- Signal Processing Toolbox và Image procesing Toolbox dành cho ngành ngành

Điện tử viễn thông, Công nghệ thông tin và Cơ điện tử

- Communication Toolbox dành cho ngành điện tử viễn thông- TĐH Đo lường

- Data acquisition Toolbox thu thập dữ liệu, xây dựng hệ thu thập dữ liệu vào/ra

với thiết bị bên ngoài

- Fuzzy logic và Neural Network Toolbox phân tích thiết kế hệ thống trên cơ sở

logic mờ và mạng nơ ron nhân tạo

- Aerospace Toolbox và Math Toolbox cho ngành Cơ khí - Cơ điện tử.

Trang 4

CHƯƠNG 1 CÁC THAO TÁC LẬP TRÌNH TRÊN MATLAB

1.1 Các lệnh cơ bản quản lý MATLAB

1.1.1 Quản lý lệnh và các hàm

- Cửa sổ MATLAB: bao gồm các phần sau:

Từ cửa sổ dòng lệnh, ta có thể gọi lệnh thi hành:

»path cho đường dẫn các thư mục trong danh mục tìm kiếm (search path)

»addpath <path> Bổ sung các thư mục <path> vào search path của MATLAB

»rmpath <path> xoá thư mục <path> khỏi search path của MATLAB

»pathtool mở cửa sổ giao diện cho phép xem và sửa đổi đường dẫn tìm kiếm search path giống như editpath (hình 1.2)

Hình 2.2 Cửa sổ path Browser soạn đường dẫn tìm kiếm tệp M-file

»ver hiển thị version của MATLAB, Simulink và Toolboxes

path browser (mở cửa sổ quan sát các đường dẫn tìm kiến của MATLAB và

có thể xoá hoặc bổ sung đường dẫn tìm kiếm)

Simulink (mở cửa sổ soạn thảo

chương trình mô phỏng simulink)

Hình 2.1 Cửa sổ dòng lệnh MATLAB

Trang 5

»help <tênlệnh> hướng dẫn sử dụng <tênlệnh> sau help

»helpwin danh sách các lệnh và hướng dẫn sử dụng

»helpdesk cửa sổ trợ giúp trong môi trường Internet Explorer

»demo chạy các chương trình demo cho nhiều lĩnh vực

Hình 2.3 Cửa sổ HelpDesk Hình 2.4 Cửa sổ Helpwin

1.1.2 Quản lý biến, không gian workspace trên cửa sổ lệnh (Command window)

1 who hiển thị danh sách các biến

2 whos hiển thị danh sách các biến và kích thước của nó

3 workspace hiển thị cửa sổ workspace cho phép xem và chỉnh sửa các giá trị biến

4 clc xoá các dòng text trên màn hình

5 clear xoá tất cả các biến trong workspace

1.1.3 Làm việc với Files môi trường làm việc

1 dir thumuc liệt kê các file trong thumuc chỉ ra

2 edit tenfile soạn thảo mới một M-file

3 open tenfile mở file tenfile để sửa chữa

4 save lưu các biến trong workspace lên đĩa

Các cú pháp:

save fname lưu các biến vào tệp nhị phân "MAT-file" fname.mat Nếu không cófname thì mặc nhiên là file matlab.mat

save fname X Y Z chỉ lưu các biến X, Y, Z (có thể sử dụng ký tự đại diện '*') save fname X Y Z -ASCII lưu các biến ASCII 8 bit nhị phân

save fname X Y Z -ASCII -DOUBLE lưu dạng ASCII 16 bit nhị phân

Trang 6

save fname X Y Z -APPEND bổ sung các biến vào tệp MAT-file đã có.

Hàm save('fname','var1','var2') khi 'fname','var1','var2' là xâu ký tự

5 load tải giá trị các biến được lưu ở Files trên đĩa vào workspace

Kết quả gán cho biến có tên FNAME (không có phần mở rộng)

load FNAME -ASCII hoặc load FNAME -MAT

Hàm load('fname') sử dụng khi fname được gán dạng xâu ký tự

6 pwd hiển thị thư mục hiện hành

7 quit hoặc exit thoát khỏi MATLAB

1.1.4 Các phím thao tác trên cửa số dòng lệnh

Home đưa con trỏ về đầu dòng

End đưa con trỏ về cuối dòng

 hiển thị lại các lệnh đã xoá trước đó

 hiển thị lại các lệnh đã nhập trước đó

,  di chuyển con trỏ

Ctrl+k xoá từ vị trí con trỏ đến cuối dòng

1.2 Dữ liệu, hàm và cấu trúc lệnh trong MATLAB

1.2.1 Khái niệm dữ liệu và biến

Trong Matlab có các kiểu dữ liệu: (kiểu số, kiểu xâu, kiểu cấu trúc và kiểu files)

 Dữ liệu kiểu số: dưới dạng mảng hoặc vectơ các số phức (dạng đại số: a + jb)

 Dữ liệu kiểu xâu: dưới dạng các xâu (char) và mảng các xâu ký tự

 Dữ liệu kiểu đối tượng: dạng đối tượng hình ảnh, đồ hoạ,

 Dữ liệu kiểu cấu trúc: dạng các thành phần (bản ghi và mảng cấu trúc)

 Dữ liệu kiểu tệp (files): là các tệp lưu thông tin trên đĩa

Với mỗi kiễu dữ liệu, cần chú ý khi làm việc:

 Khái niệm kiểu dữ liệu

 Làm việc trực tiếp với dữ liệu

 Các phép toán khi làm việc (đại số, quan hệ, logic)

Trang 7

 Các hàm, lệnh có sẵn trong thư viện

 Chuyển đổi kiễu dữ liệu

 Vào, ra với dữ liệu

Tên (biến, hằng, hàm, ) nói chung theo quy ước giống ngôn ngữ C++ Cụ thể:

 Bao gồm:

 Các chữ cái hoa ‘A’ ‘B’ ‘Z’, chữ cái thường ‘a’ ‘b’ ‘z’

 Các chữ số ‘0’ ‘1’ ‘9’

 Dấu gạch dưới ‘_’

Ký tự đầu của tên phải bằng chữ cái

Có sự phân biệt chữ cái thường và chữ cái HOA

 Độ dài tối đa của tên 31 ký tự (19 ký tự đối với ver 5.3)

Tên các hàm (kể cả m-files) đã được đặt cũng có thể được sử dụng làm tên củabiến, như vậy hàm này sẽ không được sử dụng trong quá trình tồn tại của biến, cho đếnkhi có lệnh xoá các biến đó trong bộ nhớ: lệnh clear hoặc clear <tên biến>

Các hàm, lệnh trong Matlab sử dụng chữ cái thường.

1.2.2 Các ký hiệu và các toán tử

1.2.2.1 Các ký hiệu

, phân cách giữa các tham số của hàm, cột của ma trận hoặc ngăn cách các chỉ số

hàng, cột khi truy cập phần tử của ma trận

; đặt sau câu lệnh không cho hiển thị kết quả của lệnh lên cửa sổ hay khai báo thêm

Trang 8

gtđầu: là giá trị đầu của vector.

gia: số gia (có thể âm nếu gtđầu > gtcuối)

gtcuối: giá trị cuối

Ví dụ: Tạo vector a có giá trị đầu 0.5, giá trị cuối 1.5, số gia 0.2

Trang 9

A(: , j , k) Chỉ các phần tử A(:, j), A(:, j+1)…A(:, k)A(:) Chỉ tất cả các thành phần của ma trận A

% đứng trước các lời chú giải trong các câu lệnh.

' đặt sau trên biến ma trận để chuyển vị phức ma trận

.’ đặt sau trên biến ma trận để chuyển vị ma trận

‘ ‘ mở đầu và kết thúc cho các xâu văn bản (string)

{ } được dùng trong các câu lệnh gán phần tử mảng, mảng cấu trúc

1.2.2.2 Các phép toán đại số

+ cộng 2 ma trận/vectơ hoặc 2 số vô hướng với nhau

- trừ 2 ma trận/vectơ hoặc 2 số vô hướng với nhau

\ toán tử chia trái ma trận/véc tơ Ví dụ: A\B tương đương A-1*B

/ toán tử chia phải ma trận/véc tơ Ví dụ: A/B tương đương A*B-1

./ hoặc \ chia phải hay chia trái từng phần tử của ma trận

* nhân hai ma trận với nhau

.* nhân các phần tử tương ứng Ví dụ: C=A.*B tức là cij =aij*bij

^ luỹ thừa ma trận hay số vô hướng Ví dụ: a^2 tức là a2

.^ luỹ thừa từng phần tử của ma trận

Trang 10

Ví dụ: Đầu tiên, sử dụng lệnh: format rat

Phép toán với véc tơ, ma trận Phép toán với các phần tử

1

x 2

3

4

y 5

6

x’ 1 2 3 y’ 4 5 6

5

x + y 7

9

-3

x – y -3

-3

3

x + 2 4

5

-1

x – 2 -0

1

x * y không thực hiện được 4

x.* y 10

18

x’* y 32 x’.* y không thực hiện được 4 5 6

x * y’ 8 10 12 12 15 18

x.* y’ không thực hiện được 2

x * 2 4

6

2

x.* 2 4

6

x \ y 2.2857 4.0000 x.\ y 2.5000 2.0000 0.5000 2 \ x 1.0000 1.5000 2.0000 2./ x 1.0000 0.6667 0 0 0.1667 x / y 0 0 0.3333 0 0 0.5000 0.2500 x./ y 0.4000 0.5000

0.5000 x / 2 1.0000 1.5000 0.5000 x./ 2 1.0000 1.5000 x ^ y không thực hiện được 1

x.^ y 32

Trang 11

729

x ^ 2 không thực hiện được

1 x.^ 2 4 9

2 ^ x không thực hiện được

2 2.^ x 4 8

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

Phép quan hệ ưu tiên thấp hơn phép toán đại số, cao hơn phép toán logic.

Trang 13

& phép và (nhân) logic AND

| phép hoặc (cộng) logic OR

~ phép phủ định logic NOT

xor phép logic EXCLUSIVE OR

Trong đó: Kết quả phép toán là 1(khác 0) nếu phép logic là đúng và là 0 nếu phép logic là sai

Phép toán logic có độ ưu tiên thấp nhất so với phép toán đại số và quan hệ.

Ví dụ: Cho phép toán 1>2 & 3+4 thì máy tính sẽ thực hiện 3+4 được 7, sau đó tới 1>2 được 0 rồi thực hiện 0 & 7 và cuối cùng ta được kết quả là 0 (thay 1<2 & 3-4 kết quả vẫn là 0)

1.2.2.4 Các hàm logic (Logical function)

1 Hàm all Kiểm tra vector/cột ma trận có giá trị nào bằng 0 hay không

x tên vector hay ma trận

DIM hướng kiểm tra ma trận,

DIM = 1 (mặc nhiên) kiểm tra theo cột,DIM = 2 kiểm tra theo hàng,

DIM = 3 kiểm tra từng phần tử

Trang 14

x tên vector, hay ma trận.

DIM hướng kiểm tra ma trận,

Ví dụ:

Trang 15

name: là tên file hay tên biến.

e: biến chứa giá trị trả về

0 name không tồn tại trong vùng làm việc

Trang 16

1 name là biến đang tồn tại trong vùng làm việc

2 name đang tồn tại trên đĩa (m-file hoặc file không xác định kiểu)

3 name là MEX-file

4 name là file dịch từ phần mềm Simulink (.mdl)

5 name là hàm của Matlab

i: chỉ vị trí của phần tử cần tìm trong vector

i,j: chỉ số hàng và số cột tương ứng của phần tử cần tìm

V: chứa giá trị của phần tử cần tìm

x: tên vector, ma trận hay yêu cầu đề ra

Nếu không nêu ra yêu cầu thì mặc nhiên là tìm các phần tử khác 0 Yêu cầu thường có mặt các phép toán so sánh và logic

Trang 17

i, j : ký hiệu đơn vị ảo

Nếu biến đặt trùng tên i hoặc j thì nó đè lên ký hiệu i, j (sau đó không sử dụngđược)

inf : đại diện cho giá trị vô cực  (infinite)

NaN: giá trị vô định 0 chia 0 (Not a Number)

eps : độ chính các tương đối

(khi sử dụng định dạng format long, eps = 2.220446049250313e-016)

1.2.3 Các lệnh tương tác vào/ra (Interactive Input/Output)

= lệnh gán (tương tự lệnh gán trong các ngôn ngữ khác)

input nhập dữ liệu từ bàn phím

Cú pháp: Có 2 dạng:

R = input('How many apples:')

R = input('What is your name:','s') % nhập dữ liệu vào dạng string

Trang 18

Giải thích: (xem thêm lệch sprintf)

Định dạng bao gồm cả text và các ký tự định dạng đặc biệt (%e, %f, %g, \n, ,các

số và dấu chấm) được ghi trong dấu nháy đơn để điều khiển in các giá trị

%e : in ra dưới dạng số phảy động

%f : in ra dưới dạng số phảy tĩnh

%g : in ra dưới dạng số phảy tĩnh/động tuỳ thuộc bản thân giá trị

%s : in ra dạng xâu ký tự

\n, \r : xuống dòng (xuống dòng và lùi về đầu dòng)

\t : thêm khoảng tab trống

\\ : đưa ra \

%% : đưa ra %

%o, %x, %u in ra dạng cơ số 8 (o), 16 (x), 10 không dấu

Ví dụ: fprintf(‘ket qua la: %4.1f radian\n’, a);

%Kết quả trên màn hình (với a=35)

ket qua la: 35.0 radian

format điều khiển định dạng đầu ra

Các định dạng kiểu hiển thị như sau: (mặc nhiên MATLAB hiển thị format short)

format short e Hiển thị 4 số sau dấu chấm, ký pháp kỹ thuật 0.3142e+01

format long e Hiển thị 15 số sau dấu chấm với ký pháp kỹ thuật 0.314159265358979e+01format short g Hiển thị 4 số sau dấu chấm chính xác hơn short

1.2.4 Các lệnh, cấu trúc điều khiển chương trình (Control Flow)

Cấu trúc if, else, elseif: Lệnh điều kiện Cho phép if lồng nhau

Cú pháp:

if <biểu thức điều kiện>

lệnh; lệnh;

Trang 19

elseif <biểu thức điều kiện>

elseif abs(I-J) = = 1 A(I,J) = -1;

else A(I,J) = 0;

end;

Lệnh end kết thúc câu lệnh for, while, switch, try, và if

Cấu trúc switch Dùng trong câu lệnh lựa chọn nhiều trường hợp Giống như câu lệnh CASE OF trong Pascal

Trang 20

for s = 1.0: -0.1: 0.0; end % steps s with increments of -0.1

Cấu trúc while vòng lặp không xác định Cho phép lồng nhau.

Cú pháp:

while <biểu thức điều kiện> ,

lệnh; , lệnh; end Lệnh continue quay lại đầu vòng lặp WHILE hoặc FOR

Lệnh break nhảy vô điều kiện ra khỏi lặp WHILE hoặc FOR

Lệnh global khai báo các biến toàn cục trong chương trình và hàm (dạng m files)

Lệnh local khai báo các biến cục bộ trong chương trình và hàm (dạng m files)

Lệnh echo on/off có/không hiển thị các lệnh M-files trong khi thi hành lệnh

Lệnh try dùng để bẫy lỗi Nếu xảy ra lỗi khi thực hiện các lệnh trong TRY thì chương

trình nhảy sang thực hiện các lệnh sau CATCH

Cú pháp: try statement; ; statement; catch statement; ; statement; end

1.3 Cách viết chương trình và hàm dạng m-files trong MATLAB

Files chứa mã chương trình MATLAB gọi là m-files M-files có thể là functions (hàm) yêu cầu phải trả về các tham số đầu ra, hoặc dạng scripts (chương trình) thi hành

chuỗi các lệnh của MATLAB

MATLAB nhận biết file là M-file qua tên tập tin mở rộng *.m

Trang 21

 Cách tạo function M-files

Định nghĩa hàm: function y = average(x)

tham số hàm (arguments)tên hàm (function name)đầu ra (output argument)

từ khoá (keyword)

 Cấu trúc hàm m-file

Chú ý: - Nếu có nhiều tham số đầu ra thì viết dưới dạng:

[thamso1, thamso2, ]=<tênhàm>(arg1,arg2, )

- Trong thân hàm có lệnh gán tham số đầu ra bởi một giá trị

 Gọi hàm thực hiện từ chương trình theo cú pháp:

tênhàm(arg1,arg2, );

Ví dụ: Tạo hàm m-file trong cửa sổ soạn thảo có tên myfile và gọi hàm thực hiện

- Lưu hàm m-files với tên myfile.m (tên tập tin bắt buộc trùng với tên hàm) vào

một đường dẫn thuộc các đường dẫn tìm kiếm của MATLAB

- Gọi hàm vừa tạo để chạy dưới cửa sổ MATLAB như sau:

 So sánh chương trình viết bằng script M-Files và function M-Files

• Không có tham số đầu vào và đầu ra

• Làm việc với dữ liệu trong workspace

• Có thể có tham số đầu vào và đầu ra

• Làm việc với dữ liệu, các biến

Function definition line

% FACT(N) returns the factorial of N, usually denoted by N!

% Put simply, FACT(N) is PROD(1:N)

f = prod(1:n);

Trang 22

• Thuận lợi cho việc thực hiện trình tự

% AVERAGE(X), where X is a vector, is the mean of vector elements

% Non-vector input results in an error

[m,n] = size(x);

if (~((m == 1) | (n == 1)) | (m == 1 & n == 1))

error(’Input must be a vector’)end

y = sum(x)/length(x); % Actual computation

- Cách làm việc khi gọi m-files trong MATLAB theo trình tự sau:

+ Tìm xem đó có phải là biến không

+ Kiểm tra có phải là dạng chương trình đã biên dịch sẵn hay không (*.mex file) + Tìm trong thư mục hiện hành

+ Tìm trong các thư mục trong search path

Chú ý: có thể chuyển script file sang function file bằng cách thêm vào:

function <tenham> mà không cần có tham số đầu vào và tham số đầu ra

1.4 Các bài tập ứng dụng **

Trang 23

CHƯƠNG 2 CÁC HÀM TOÁN HỌC THÔNG DỤNG

2.1 Các hàm toán học cơ bản

2.1.1 Các hàm xử lý số phức:

Cho số phức dạng đại số: Z = a + jb (dạng số mũ C.ej.phi)

1 abs(Z) cho giá trị tuyệt đối của số/biên độ C của số phức

2 angle(Z) cho góc pha phi của một số phức

3 complex(a,b) tạo số phức Z từ các số thực a, b

Ví dụ: complex(3,4) cho kết quả là số phức 3+4i

4 conj(Z) cho số phức liên hợp Z* = a - jb

5 imag(Z) lấy phần ảo của số phức

6 real(Z) lấy phần thực của số phức

2.1.2 Các hàm lượng giác và hữu tỷ (thực hiện từng phần tử)

7 acos, acosh cho arccos và arccos hyperbolic

8 acot, acoth cho arccotang và arccotang hyperbolic

9 asin, asinh cho arcsin và arcsin hyperbolic

10 atan, atanh cho arctang và arctang hyperbolic

11 atan2(x,y) cho arctang của y/x trong khoảng - -> +

12 cos, cosh cho cosin và cosin hyperbolic

13 cot, coth cho Cotang và cotang hyperbolic

14 sin, sinh cho sin và sin hyperbolic

15 tan, tanh tang và tang hyperbolic

16 exp cho ex với x là một số

17 log logarithm tự nhiên ln(x) với x là một số

18 log2 logarithm cơ số 2 log2(x) với x là một số

19 log10 logarithm cơ số 10

Trang 24

25 mod mod(x,y): phần dư phép chia x/y có dấu trùng dấu của y

26 rem rem(x,y): phần dư phép chia x/y có dấu trùng dấu của x

27 sign xác định dấu của một biến hoặc phần tử của véc tơ/ma trận sign(x)

có kết quả bằng 1 nếu x>0, bằng 0 nếu x=0 và bằng –1 nếu x<0

28 gcd ước số chung lớn nhất của các phần tử (Greatest common divisor)

29 lcm bội số chung nhỏ nhất (Least common multiple)

Ví dụ: lcm(A,B) cho bội số chung nhỏ nhất của từng phần tử tương ứng hai ma trận A, B 2.2 Các hàm xử lý ma trận và vector

Ký hiệu A là ma trận, X là vectơ, MATLAB cung cấp các hàm sau:

1 length(X) cho ta kích thước vectơ X

2 linspace tạo vector tuyến tính giới hạn trong một khoảng

Cú pháp:

y = linspace(x1, x2)

y = linspace(x1, x2, n)

Trong đó:

y: tên của vector

x1, x2: giá trị lớn nhất và nhỏ nhất của vector y

n: số phần tử của vector y, nếu không có thì mặc định n = 100

Trang 25

y = logspace(x1, x2, n)

Trong đó:

y: tên của vector

x1, x2: giới hạn giá trị lớn nhất 10^x2 và nhỏ nhất 10^x1 của vector y

n: số phần tử của vector y Nếu không có n thì mặc định n = 50

Ví dụ: »y = logspace(1, 2, 7)

y =

10.0000 14.6780 21.5443 31.6228 46.4159 68.1292 100.0000

4 A=diag(X) nếu X là vectơ thì A là ma trận vuông với đường chéo chính là X

5 X=diag(A,k) lấy các phần tử trên đường chéo (chính khi k=0) lưu vào vec tơ cột

Trang 26

17 Xem thêm các hàm randn, sprand, sprandn,

18 magic tạo ma trận vuông có tổng của các phần tử trên hàng, cột, đườngchéo bằng nhau (ma phương) Giá trị của mỗi phần tử là dãy số nguyên từ 1 đến n2

Trang 29

V: véc tơ/ma trận có hai cột chứa giá trị nhỏ nhất và lớn nhất của các hàng.

33 fmin tìm điểm có giá trị nhỏ nhất của hàm số.

Trang 30

Ví dụ: nếu a=’toi’ thì a(1)=t và a(1:3)=toi

»b=[‘toi’ ; ‘ten’] thì b(1,1)=t ; b(2,2)=e ; b(1,:)=toi

Kết hợp các chuỗi tạo ra string mới bằng cách:

newst =[str1,str2,str3]

2.3.2 Các hàm xử lý chuỗi

1 isstr/ischar kiểm tra nội dung biến là chuỗi ký tự không.

Cú pháp:

Trang 31

kq = ischar(n)

kq = isstr(n) % chỉ có đến phiên bản MATLAB 5.3

Trong đó:

kq: biến chứa kết quả

n: tên biến cần kiểm tra

kq = 1 nếu n là chuỗi ký tự, 0 nếu n không là chuỗi ký tự

2 isspace(st) trả lại véc tơ giá trị 0 tại các ký tự trống (1 tại ký tự khác)

3 strcat(st1,st2, ) nối các xâu st1 st2 thành dòng

4 strvcat(st1,st2, ) nối các xâu st1 st2 thành cột

5 strrep(st1,st2,st3) thay thế xâu st2 trong st1 thành st3

6 findstr(st1,st2) trả về véc tơ vị trí bắt đầu của xâu st2 trong st1

Trang 32

b: biến chứa kết quả.

s: tên biến chứa chuỗi ký tự

b: biến chứa kết quả

s: tên biến chứa chuỗi ký tự hay chuỗi ký tự

10 str2mat tạo ma trận có các phần tử dạng chuỗi

Trang 33

2.4 Các hàm chuyển đổi dữ liệu

1 abs(str) trả lại giá trị là vectơ với các phần tử là mã ASCII của các ký tự

Ví dụ: a='abc' thì X=abs(a)= [97 98 99]

2 double(str) chuyển str sang dạng số ( ASCII t.tự hàm abs)

3 char(x) chuyển véc tơ/các dòng ma trận x dạng mã ASCII thành xâu

4 eval chuyển đổi chuỗi ký tự thành biểu thức

Cú pháp:

kq = eval(‘string’)

Trong đó:

kq: biến chứa kết quả

‘string’ là các ký số: chuyển thành những con số, là câu lệnh thi hành được

Ví dụ: » a='199999999';

» eval(a)+1

ans =

200000000

5 setstr(X) chuyển vectơ X với các phần tử là các số nguyên trong khoảng 0 đến

255 thành chuỗi string tương ứng

Ví dụ: với X = [97 98 99] thì setstr(X)=’abc’

6 num2str(f) chuyển đổi đại lượng vô hướng f thành chuỗi string (dùng hiển thị ra màn hình các dữ liệu số như lệnh disp)

7 num2str(f,k) chuyển đổi đại lượng vô hướng f thành chuỗi string với k chữ số

8 str2num chuyển chuỗi (dạng số) sang số thực

9 int2str(n) chuyển đổi số nguyên n thành chuỗi string

10 rats(x,strlen) chuyển số thực thành chuỗi string với strlen chiều dài của chuỗi

11 hex2num(hstr) chuyển đổi số theo hệ hexa thành chuỗi string

Trang 34

12 hex2dec(str) chuyển đổi hệ hexa dưới dạng string str thành sô nguyên

2.5 Các thao tác trên dữ liệu cấu trúc

2.5.1 Dữ liệu kiểu cấu trúc (Struct)

Mỗi dữ liệu cấu trúc (bản ghi: record) bao gồm nhiều thành phần dữ liệu (cáctrường: fields) có kiểu khác nhau, ví dụ thông tin về quản lý con người:

S: biến chứa dữ liệu cấu trúc

field1, field2, : các biến trường của cấu trúc

VALUES1, VALUES2, : các giá trị của các biến trường

OBJ: đối tượng cần chuyển đổi kiểu

Trang 35

recname: tên biến cấu trúc.

fielname: tên biến trường cần tạo

value : giá trị của fielname

Ví dụ: »nguoi.hoten = ’Nguyen Van A’;

2.5.1.2 Các hàm làm việc với cấu trúc

1 fieldnames trả về biến mảng cấu trúc chứa tên các trường.

Cú pháp:

NAMES = fieldnames(S)

Trong đó:

S: biến cấu trúc đã tạo

NAMES: biến mảng cấu trúc chứa tên các trường của S

2 rmfield loại bỏ một trường ra khỏi cấu trúc

Cú pháp:

S = rmfield(S,'field') loại bỏ trường field khỏi cấu trúc S

S = rmfield(S,FIELDS) loại bỏ một số trường, với FIELDS là mảng các ký tự

Trang 36

3 isfield kiểm tra biến là một trường của cấu trúc hay không.

Cú pháp:

F = isfield(S,'field') trả về giá trị đúng (1) nếu 'field' là tên một trường của S

4 getfield lấy nội dung một trường của cấu trúc

Cú pháp:

F = getfield(S,'field') trả về nội dung của field trong cấu trúc S tương tự F=S.field

Ví dụ: F = getfield(S,{i,j},'field',{k}) %tương tự với lệnh F = S(i,j).field(k)

5 setfield thiết lập nội dung cho các trường

Cú pháp:

S = setfield(S,'field',V) đặt giá trị V cho trường field của S, tương tự S.field=V

Ví dụ: S = setfield(S,{i,j},'field',{k},V) %tương tự S(i,j).field(k) = V;

2.5.2 Dữ liệu kiểu mảng cấu trúc (Cell Array)

Có thể tổ chức các cấu trúc thành mảng với mỗi cấu trúc là một phần tử mảng

2.5.2.1 Tạo mảng cấu trúc (Có 2 cách):

Cách 1: Sử dụng lệnh CELL để tạo mảng cấu trúc.

Các cú pháp:

cell(n) tạo mảng cấu trúc rỗng kích thước NxN

cell(M,N)/cell([M,N]) tạo mảng cấu trúc rỗng kích thước MxN

cell(M,N,P, )/cell([M N P ]) tạo mảng cấu trúc rỗng MxNxP

cell(SIZE(A)) tạo mảng cấu trúc rỗng kích thước giống kích thước của A

Cách 2: Tạo mảng cấu trúc trực tiếp: Sử dụng dấu ngoặc nhọn {} và dấu ()

Trang 37

celldisp(C) hiển thị nội dung của mảng cấu trúc C

celldisp(C,NAME) hiển thị nội dung cấu trúc C và thay thế tên xâu NAME cho C

3 cellplot(C) hiển thị bằng đồ hoạ cấu trúc của mảng cấu trúc C

4 cellstr(S) chuyển xâu S sang dạng mảng cấu trúc

5 char(B) chuyển mảng cấu trúc B sang dạng xâu

2.6 Các hàm giao tiếp với tệp dữ liệu (FILES)

Ngoài tệp mat-file đã biết, để tương thích với ngôn ngữ C, MATLAB còn định nghĩahai loại tệp dạng văn bản (text) và nhị phân (ASCII) với các cách làm việc khác nhau

1 fopen mở file hoặc truy xuất dữ liệu của file đang mở

Cú pháp:

fid = fopen(‘fn’, ‘p’)

Trong đó:

Trang 38

fid: tên biến kiểu số nguyên (0, 1, 2, ) trỏ đến file đang mở.

fn: tên file (có thể đặt đường dẫn)

Tham số p có các định dạng sau (mặc nhiên là dạng nhị phân):

‘r’: chỉ đọc

‘r+’: đọc và ghi

‘w’: xóa tất cả nội dung của file, tạo file mới và mở để ghi

‘w+’: xóa tất cả nội dung của file, tạo file mới để ghi và đọc

‘a’ : mở file để bổ sung thông tin (khởi tạo nếu file chưa có)

‘a+’ : mở file để đọc và bổ sung thông tin (tạo nếu chưa có)

'W' : mở file để ghi mà không tự động làm tươi

'A' : mở file để bổ sung mà không tự động làm tươi

‘t’ : mở file dạng văn bản (text) Ví dụ: ‘rt’, ‘wt+’,

2 fread đọc dữ liệu dạng nhị phân từ file

Cú pháp:

[A, COUNT] = fread(FID)

[A, COUNT] = fread(FID,SIZE,PRECISION)

Trong đó:

A: tên biến chứa dữ liệu được đọc vào

COUNT: số phần tử được đọc vào

FID: tên biến trỏ đến file cần đọc

SIZE: kích thước dữ liệu đọc vào, được định dạng bởi:

Trang 39

Ví dụ 4: file vd3.txt có nội dung

ABCDEFGHIJKLMNO

Trang 40

FID: tên biến trỏ đến file cần ghi.

A: tên biến ma trận chứa dữ liệu cần ghi

COUNT: nhận số phần tử ghi được

PRECISION: tương tự lệnh FREAD

Ví dụ 1: fid = fopen('magic5.bin','wb')

fwrite(fid,magic(5),'integer*4')%file nhị phân có 25 phần tử magic 5x5 số nguyên

Ví dụ 2: Ghi đoạn dữ liệu của biến a thành file a.txt: a = [65 66 67]

Ngày đăng: 15/08/2013, 09:49

HÌNH ẢNH LIÊN QUAN

Hình 2.1 Cửa sổ dòng lệnh MATLAB - Giáo trình MATLAB   SIMULINK
Hình 2.1 Cửa sổ dòng lệnh MATLAB (Trang 4)
Hình 5.1 Cửa sổ giao diện người dùng trực quan - Giáo trình MATLAB   SIMULINK
Hình 5.1 Cửa sổ giao diện người dùng trực quan (Trang 72)
Hình 5.3 Cửa sổ soạn thảo Callback - Giáo trình MATLAB   SIMULINK
Hình 5.3 Cửa sổ soạn thảo Callback (Trang 73)
Hình 5.2 Cửa sổ soạn thảo thuộc tính Cửa sổ Guide Callback Editor soạn thảo các hàm/ thực hiện các lệnh như hình 5.3. - Giáo trình MATLAB   SIMULINK
Hình 5.2 Cửa sổ soạn thảo thuộc tính Cửa sổ Guide Callback Editor soạn thảo các hàm/ thực hiện các lệnh như hình 5.3 (Trang 73)
Hình 5.4 Cửa sổ soạn thảo Menu - Giáo trình MATLAB   SIMULINK
Hình 5.4 Cửa sổ soạn thảo Menu (Trang 74)
Hình 5.6 mô tả phương pháp lập trình sự kiện. - Giáo trình MATLAB   SIMULINK
Hình 5.6 mô tả phương pháp lập trình sự kiện (Trang 75)
Hình 1. Thư viện SIMULINK 3 - Giáo trình MATLAB   SIMULINK
Hình 1. Thư viện SIMULINK 3 (Trang 82)
Hình 3. Thư viện chi tiết SIMULINK - Giáo trình MATLAB   SIMULINK
Hình 3. Thư viện chi tiết SIMULINK (Trang 83)

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

w