Tải bản đầy đủ (.doc) (70 trang)

GIÁO TRÌNH TỰ HỌC MATLAB SIMULINK 2

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (844.02 KB, 70 trang )

Giáo trình MATLAB - SIMULINK
MỞ ĐẦU

Copyright © 2004 by Phan Văn Hiền – ĐHBK Đà nẵng

1


Giáo trình MATLAB - SIMULINK

CH¬NG 1.

TỔNG QUAN VỀ MATLAB

1.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 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 (mfiles), 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).
Đặc biệt, ta có thể viết chương trình C/C++, Fortran, LabView, ... gọi MATLAB chạ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ành
khá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.
1.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ài
toá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ên
Copyright © 2004 by Phan Văn Hiền – ĐHBK Đà nẵng

2


Giáo trình MATLAB - SIMULINK
cứ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ệc
trong 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ử.
1.3 Hướng dẫn cài đặt MATLAB **

Copyright © 2004 by Phan Văn Hiền – ĐHBK Đà nẵng

3



Giáo trình MATLAB - SIMULINK

CH¬NG 2.

CÁC THAO TÁC LẬP TRÌNH TRÊN MATLAB

2.1 Các lệnh cơ bản quản lý MATLAB
Quản lý lệnh và các hàm
- Cửa sổ MATLAB: bao gồm các phần sau:

2.1.1

Simulink (mở cửa sổ soạn thảo
chương trình mô phỏng simulink)
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)
workspace browser (mở cửa sổ quan
sát và sửa chữa các biến trong không
gian workspace)
open(mở cửa sổ soạn thảo với
chương trình cũ)
New (mở cửa sổ soạn thảo mới
chương trình)

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

dòng lệnh(commandline)


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 Bổ sung các thư mục vào search path của MATLAB
»rmpath xoá thư mục 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
»editpath giống như pathtool (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.
Copyright © 2004 by Phan Văn Hiền – ĐHBK Đà nẵng

4


Giáo trình MATLAB - SIMULINK
»ver hiển thị version của MATLAB, Simulink và Toolboxes
»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
2.1.2

1.
2.
3.
4.
5.


Hình 2.4 Cửa sổ Helpwin

Quản lý biến, không gian workspace trên cửa sổ lệnh (Command window)
who hiển thị danh sách các biến
whos hiển thị danh sách các biến và kích thước của nó
workspace hiển thị cửa sổ workspace cho phép xem và chỉnh sửa các giá trị biến
clc xoá các dòng text trên màn hình
clear xoá tất cả các biến trong workspace

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
Chỉ lưu biến X.
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.
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.
Các cú pháp:
load FNAME

tải các biến từ MAT-file 'fname.mat' đã có. Nếu không có fname thì
mặc nhiên là file matlab.mat.
load FNAME X Y Z ... chỉ tải các biến đá chỉ ra (có thể sử dụng ký tự đại diện '*').
load FNAME.EXT tải file ASCII, trong file có thể có chú thích (bắt đầu bởi %).
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ự.
2.1.3

Copyright © 2004 by Phan Văn Hiền – ĐHBK Đà nẵng

5


Giáo trình MATLAB - SIMULINK
6. pwd
hiển thị thư mục hiện hành
7. quit hoặc exit thoát khỏi MATLAB
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

2.1.4

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

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)
 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ủa
biế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 đến
khi 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.
2.2.1

2.2.2


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

2.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
1 hàng mới của ma trận
Copyright © 2004 by Phan Văn Hiền – ĐHBK Đà nẵng

6


Giáo trình MATLAB - SIMULINK
[ ] Dùng để tạo véc tơ, ma trận hoặc khai báo tham số ra của hàm.
Cú pháp:
Tên ma trận = [a11 a12…a1n ; a21 a22… a2n ;…;…]
Trong đó:
a11, a12, ..., a1n, ... là các giá trị tại hàng 1 cột 1 đến các giá trị tại hàng 1 cột n, ...,
có m-1 dấu chấm phẩy ‘;’ sẽ có m hàng.
Ví dụ: Tạo ma trận gồm 3 hàng và 3 cột với giá trị là
1
2
3
4
5
6
7
8
9
»a = [1 2 3; 4 5 6; 7 8 9]

a=
1
2
3
4
5
6
7
8
9
( ) khai báo tham số vào của hàm hoặc truy cập phần tử ma trận.
Ví dụ: A(1,2) truy cập phần tử a12
Tạo vector đơn gồm có n phần tử.
Cú pháp 1:
Tênvector = [pt1 pt2 pt3 … ptn]
Tênvector = [pt1, pt2, pt3, …, ptn]
Trong đó:
pt1 pt2 …ptn: là các phần tử của véc tơ.
Ví dụ: Tạo vector a gồm có 4 phần tử, với các giá trị là:1, 2, 3, 4
»a = [1 2 3 4]
a=
1
2
3
4
Cú pháp 2:
Tênvector = gtđầu:gia:gtcuối
Trong đó:
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
»a = 0.5:0.2:1.5
a=
0.50000.70000.90001.10001.30001.5000
: Tạo vector hoặc ma trận phụ và lặp đi lặp lại các giá trị.
Trong đó:
Khai báo
Công dụng
j:k
Tạo ra chuỗi j, j+1, j+2,…., k-1, k
j:i:k
Tạo ra chuỗi j, j+i, j+2i,….,k-i, k
A(: , j)
Chỉ cột thứ j của ma trận A
A(i , :)
Chỉ hàng thứ i của ma trận
A(: , :)
Chỉ toàn bộ ma trận A
A(j : k)
Chỉ phần tử A(j), A(j+1)…A(k) (ưu tiên theo cột)
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
Copyright © 2004 by Phan Văn Hiền – ĐHBK Đà nẵng

7



Giáo trình MATLAB - SIMULINK
... dùng để tiếp tục dòng lệnh dài khi xuống hàng.
Ví dụ: »set(h,’facecolor’,[0 1], ...
‘EdgeColor’,’k’,’Linewidth’,2)
% đứ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.
Ví dụ: nếu A= [ 4.0000 + 2.0000i 3.0000
5.0000 - 7.0000i 3.0000 + 4.0000i]
thì A’=
4.0000 - 2.0000i 5.0000 + 7.0000i
3.0000
3.0000 - 4.0000i
và A.’=
4.0000 + 2.0000i 5.0000 - 7.0000i
3.0000
3.0000 + 4.0000i
‘ ‘ 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.
2.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

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
4
x
2
y
5
3
6
x’
123
y’
4 5 6
5
-3
x+y
7
x–y
-3
9
-3
3
-1
x+2
4
x–2
-0

5
1
4
x * y không thực hiện được
x.* y
10
18
x’* y
32
x’.* y không thực hiện được
4 5 6
x * y’
8 10 12
x.* y’ không thực hiện được
12 15 18
2
2
x*2
4
x.* 2
4
Copyright © 2004 by Phan Văn Hiền – ĐHBK Đà nẵng

8


Giáo trình MATLAB - SIMULINK
6
x\y
2\x

x/y
x/2

2.2857
0.5000
1.0000
1.5000
0 0 0.1667
0 0 0.3333
0 0 0.5000
0.5000
1.0000
1.5000

x.\ y
2./ x
x./ y
x./ 2

x^y

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

x.^ y

x^2

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

x.^ 2


2^x

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

2.^ x

6
4.0000
2.5000
2.0000
2.0000
1.0000
0.6667
0.2500
0.4000
0.5000
0.5000
1.0000
1.5000
1
32
729
1
4
9
2
4
8


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

 Các phép toán quan hệ:
== So sánh bằng
< ; > ; >= ; <= các toán tử so sánh
~= so sánh không bằng
Trong đó: Các toán tử quan hệ thực hiện so sánh từng thành phần của 2 ma trận. Chúng
tạo ra một ma trận có cùng kích thước với 2 ma trận, so sánh với các phần tử là 1 nếu
phép so sánh là đúng và là 0 nếu phép so sánh là sai.
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.
Ví dụ:
thực hiện phép so sánh sau:
»x=6
x=
6
»x>=[1 2 3;4 5 6;7 8 9]
ans =
1 1 1
1 1 1
0 0 0
»x=6
x=
6
»A=[1 2 3;4 5 6;7 8 9]
A=
1 2 3
4 5 6
Copyright © 2004 by Phan Văn Hiền – ĐHBK Đà nẵng

9



Giáo trình MATLAB - SIMULINK
7
»x>=A

8

9

1
1
0

1
1
0

ans =
1
1
0
»x=A
x=
1 2 3
4 5 6
7 8 9
»x==A
ans =
1 1 1

1 1 1
1 1 1
»x=2
x=
2
»x==A
ans =
0 1 0
0 0 0
0 0 0
»xans =
0 0 1
1 1 1
1 1 1
 Các phép toán logic
& 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)

2.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.
Cú pháp:
y = all(x)
y = all(x,DIM)
Copyright © 2004 by Phan Văn Hiền – ĐHBK Đà nẵng

10


Giáo trình MATLAB - SIMULINK
Trong đó:
y biến chứa kết quả
y = 1 khi tất cả các phần tử khác 0
y = 0 khi có 1 phần tử bằng 0
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ử
Ví dụ: » a=[1 2 3]
a=
1 2 3
» y=all(a)
y=
1
» a=[1 2 0]
a=
1 2 0

» y=all(a)
y=
0
» a=[1 2 3;4 5 6;7 -8 9]
a=
1 2 3
4 5 6
0 -8 9
» y=all(a)
y=
0 1 1
» a=[1 2 3; 4 5 0;7 0 9]
a=
1 2 3
4 5 0
7 0 9
» y=all(a)
y=
1 0 0
2. Hàm any
Kiểm tra vector/cột ma trận có giá trị nào khác 0 hay không.
Cú pháp:
y = any(x)
y = any(x,DIM)
Trong đó:
y biến chứa kết quả.
y = 1 khi có 1 phần tử khác 0.
y = 0 khi tất cả các phần tử bằng 0.
x tên vector, hay ma trận.
DIM hướng kiểm tra ma trận,

Ví dụ:
Copyright © 2004 by Phan Văn Hiền – ĐHBK Đà nẵng

11


Giáo trình MATLAB - SIMULINK
» a=[1 2 3];
» y=any(a)
y=
1
» b=[1 0 3 0];
» y=any(b)
y=
1
» c=[1 2 0 4;0 2 0 4;1 2 3 4;3 4 5 6]
c=
1 2 0 4
0 6 7 8
1 2 3 0
5 0 7 8
» y=any(c)
y=
1 1 1 1
» d=[0 0 0 0;0 1 3 0]
d=
0 0 0 0
0 1 3 0
» y=any(d)
y=

0 1 1 0
3. Hàm exist Kiểm tra biến hay file có tồn tại hay không.
Cú pháp:
e = exist(‘name’)
Trong đó:
name: là tên file hay tên biến.
e: biến chứa giá trị trả về.
e
Ý nghĩa
0
name không tồn tại trong vùng làm việc
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
6
name là p-file
7
name là thư mục
Ví dụ: »e = exist(‘dir’)
e=
5
4. Hàm find Tìm phần tử trong vector/cột ma trận theo yêu cầu.
Cú pháp:

i = find(x)
[i,j] = find(x)
[i,j,V] = find(x)
Copyright © 2004 by Phan Văn Hiền – ĐHBK Đà nẵng

12


Giáo trình MATLAB - SIMULINK
Trong đó:
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.
Ví dụ: » x=[1 8 0 2 3 0]
x=
1 8 0 2 3 0
» k=find(x)
k=
1 2 4 5
» a=[5 0 0;8 0 3]
a=
5 0 0
8 0 3
» [i,j,k]=find(a)
i=
1
2

2
j=
1
1
3
k=
5
8
3
2.2.2.5 Các giá trị đặc biệt MATLAB tự định nghĩa:
pi : hằng số 
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)
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
R giá trị nhập từ bàn phím
2.2.3

Copyright © 2004 by Phan Văn Hiền – ĐHBK Đà nẵng


13


Giáo trình MATLAB - SIMULINK
fprintf
cho phép in thông số ra theo định dạng.
Cú pháp:
fprintf(định dạng, tham số cần in)
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)
Cú pháp
Giải thích
Ví dụ
format short
Hiển thị 4 số sau dấu chấm

3.1416
format long
Hiển thị 15 số sau dấu chấm
3.141592653589792
format rat
Hiển thị dạng phân số tối giản
355/133
format +
Hiển thị số dương hay âm
+
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+01
format short g Hiển thị 4 số sau dấu chấm chính xác hơn short
3.1416
và short e
format long g Hiển thị 15 số sau dấu chấm chính xác hơn long 3.141592653589792
và long e
format hex
Hiển thị cơ số 16
4a02dbc
format bank
Hiển thị 2 số sau dấu chấm
3.14
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;
elseif <biểu thức điều kiện>

lệnh; lệnh;
else
lệnh; lệnh;
end;
Ví dụ:
if I = = J
A(I,J) = 2;
elseif abs(I-J) = = 1
2.2.4

Copyright © 2004 by Phan Văn Hiền – ĐHBK Đà nẵng

14


Giáo trình MATLAB - SIMULINK
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
Cú pháp:
switch <biểu thức>
case <giá trị>,
lệnh; ..., lệnh;
case <giá trị1, giá trị2, giá trị3,...>
lệnh; ..., lệnh;
...

otherwise,
lệnh; ..., lệnh;
end;
Cấu trúc for vòng lặp xác định. Cho phép nhiều vòng for lồng nhau
Cú pháp:
for <biến = biểu thức>,
lệnh; ..., lệnh;
end;
Ví dụ:
for i = 1:n,
for j = 1:n,
a(i,j) = 1/(i+j-1);
end
end
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
Ví dụ:
while 1,
input(‘nhap so duong, thoat khi n<0:’);
if n<=0,
break;
end;
end;
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
Copyright © 2004 by Phan Văn Hiền – ĐHBK Đà nẵng

15


Giáo trình MATLAB - SIMULINK
Cú pháp:

try statement; ...; statement; catch statement; ...; statement; end

2.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
 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
Function definition line

(dòng định nghĩa hàm)

function f = fact(n)

H1 (help 1) line
(dùng cho tìm kiếm)

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

Help text (dùng cho
lời giải thích sử dụng)

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

Function body

f = prod(1:n);

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:
myfile.m
»a = 7.5;b = 3.342;

»c = myfile(a,b) % goi ham, truyen tham so
function c = myfile(a,b)
c=
c = sqrt((a.^2)+(b.^2));
8.2109
 So sánh chương trình viết bằng script M-Files và function M-Files
script M-Files
function M-Files
• Không có tham số đầu vào và đầu ra
• Có thể có tham số đầu vào và đầu ra
• Làm việc với dữ liệu trong workspace
• Làm việc với dữ liệu, các biến
(local/global) bên trong function và các
tham số vào, ra
• Thuận lợi cho việc thực hiện trình tự
• Thuận lợi cho việc mở rộng ngôn ngữ
các dãy lệnh cần thiết một cách tự động
MATLAB cho ứng dụng của bạn
Copyright © 2004 by Phan Văn Hiền – ĐHBK Đà nẵng

16


Giáo trình MATLAB - SIMULINK
tại nhiều thời điểm khác nhau
Ví dụ: tính trung bình
function y = average(x)
% AVERAGE Mean of vector elements (tinh gia tri trung binh cua cac phan
tu)
% 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
2.4 Các bài tập ứng dụng **

Copyright © 2004 by Phan Văn Hiền – ĐHBK Đà nẵng

17


Giáo trình MATLAB - SIMULINK

CH¬NG 3.

CÁC HÀM TOÁN HỌC THÔNG DỤNG

3.1 Các hàm toán học cơ bản
3.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
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
20. sqrt
căn bậc hai

3.1.2

3.1.3 Các hàm làm tròn số, ...
21. round
làm tròn với số nguyên gần nhất
22. fix
làm tròn bằng cách cắt bỏ phần thập phân
23. ceil
làm tròn số về phía số nguyên lớn hơn.
Cú pháp:
y = ceil(x)
Ví dụ: »x = [-1.9000
-0.2000
3.4000
5.6000
7.0000];
»y = ceil(x)
y=
-1
0
4
6
7

24. floor
làm tròn số về phía số nguyên nhỏ hơn.
Ví dụ: »x = [-1.9000
-0.2000
3.4000
5.6000 7.0000];
»y = floor(x)
y = -2
-1
3
5
7
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
Copyright © 2004 by Phan Văn Hiền – ĐHBK Đà nẵng

18


Giáo trình MATLAB - SIMULINK
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.

3.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.
Ví dụ: »y = linspace(1, 10, 7)
y=
1.0000 2.5000 4.0000 5.5000 7.0000 8.5000 10.0000
3. logspace
tạo vector có giá trị tỷ lệ logarithm trong một khoảng.
Cú pháp:
y = logspace(x1, x2)
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
6. det(A)

tính định thức ma trận vuông
7. inv(A)
tìm ma trận nghịch đảo
8. [m,n] = size(A) : cho kích thước mxn của ma trận A
9. rank(A)
hạng ma trận
10. expm(A)
hàm eA với A là ma trận
Ví dụ: »kq = expm(3)
kq = 20.0855
11. logm(A)
ln(A) với A là ma trận
12. sqrtm(A)
A với A là ma trận
13. eye(m,n)
tạo ma trận đơn vị mở rộng mxn, eye(n) tạo ra ma trận vuông nxn
14. zeros(m,n) tạo ma trận mxn có các phần tử bằng 0
15. ones((m,n) tạo ma trận mxn có các phần tử bằng 1
16. rand tạo ma trận các phần tử ngẫu nhiên chuẩn ([0 1]).
Cú pháp:
y = rand(n)
y = rand(m,n)
Trong đó:
Copyright © 2004 by Phan Văn Hiền – ĐHBK Đà nẵng

19


Giáo trình MATLAB - SIMULINK
y: tên ma trận.

n: ma trận có n hàng, n cột.
m, n: ma trận có m hàng, n cột.
Ví dụ: »y = rand(3)
y=
0.9340 0.0920 0.7012
0.8462 0.6539 0.7622
0.5269 0.4160 0.7622
»y = rand(3,5)
y=
0.2625 0.3282 0.9910 0.9826 0.6515
0.0475 0.6326 0.3653 0.7227 0.0727
0.7361 0.7564 0.2470 0.7534 0.6316
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, đường
ché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.
Cú pháp:
A = magic(n)
Trong đó:
n: kích thước ma trận.
Ví dụ: »A = magic(3)
A=
8
1
6
3
5
7
4
9

2
30. max
cho giá trị lớn nhất của véc tơ/ma trận.
Cú pháp:
m = max(x)
[m,i] = max(x)
v = max(x,y)
v = max(x,[],DIM)
Trong đó:
x,y: tên vector/ma trận.
v : tên véc tơ.
m: giá trị lớn nhất.
i: vị trí của m. DIM: hướng thực hiện phép toán
Ví dụ: x = [3 5 2
1
4]
»m= max(x)
m=
5
»[m,i] = max(x)
m=
5
i =
2
Cho y = [1
6
8
-5
3]
»v =max(x,y)

v= 3
6
8
1
4
Copyright © 2004 by Phan Văn Hiền – ĐHBK Đà nẵng

20


Giáo trình MATLAB - SIMULINK
Cho b =[3 6
2
1
7
9
2
8
1]
»m = max(b)
m=
3
8
9
»[m,i] = max(b)
m=
3
8
9
i =

1
3
2
a=
0
3
6
7
1
1
4
6
8
»v = max(a,b)
v=
3
6
6
7
7
9
4
8
8
31. min
cho giá trị nhỏ nhất của véc tơ/ma trận.
Cú pháp:
m = min(x)
[m,i] = min(x)
v = min(x,y)

Trong đó:
x,y: Tên ma trận/véc tơ.
v: tên vector.
m: là giá trị nhỏ nhất.
i: là vị trí của m.
DIM: hướng thực hiện phép toán (x là ma trận) DIM=1(mặc nhiên) theo cột, 2: hàng
Ví dụ: x =[ 3
5
2
1
4]
»m = min(x)
m=
1
Cho y =[1
6
8
-5
3]
»v = min(x,y)
v=
1
5
2
-5
3
b= [3
6
2
1

7
9
2
8
1]
»[m,i] = min(b)
m=
1
6
1
i =
2
1
3
a=
[0
3
6
Copyright © 2004 by Phan Văn Hiền – ĐHBK Đà nẵng

21


Giáo trình MATLAB - SIMULINK
7
1
1
4
6
8]

»v = min(a,b)
v=
0
3
2
1
1
1
2
6
1
32. minmax
cho giá trị nhỏ nhất và lớn nhất của véc tơ/hàng ma trận.
Cú pháp:
V = minmax(A)
Trong đó:
A: véc tơ/ma trận cần tìm giá trị nhỏ nhất và lớn nhất.
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ố.
Cú pháp:
x = fmin(‘function’,x1,x2)
Trong đó:
x: biến chứa kết quả.
function: tên hàm số.
x1, x2: khoảng khảo sát.
Ví dụ: Tìm giá trị nhỏ nhất của hàm số: x3-2x-5 trong khoảng [0 2]
»x =fmin(‘x.^3-2*x-5’,0,2);
x=
0.8165
»y = x.^3-2*x-5

y=
-6.0887
34. fzero tìm điểm 0 của hàm số.
Cú pháp:
fzero(‘fun’,x0)
Trong đó:
Điểm 0 của hàm số là điểm (0,x), đây cũng chính là nghiệm của hàm số. Nếu hàm có
nhiều nghiệm thì sẽ tìm nghiệm gần giá trị x0.
fun: tên hàm số dạng .m file. Nếu hàm toán học thì thêm @ trước tên hàm.
Ví dụ: Tìm giá trị 0 của hàm số: x2-5x+3.
Trước tiên ta khai báo hàm số f trong tập tin f.m
function y = f(x);
y = x.^2-5*x+3;
Sau đó, tạo tập tin gt0.m:
x = 0:10;
% Giá trị x0 = 0
z = fzero(‘f’,0);
sprinf(‘z = %3f’,z) %z = 0.382
% Giá trị x0 = 2
z = fzero(‘f’,2);
sprintf(‘z = %.3f’,z)
%z = 2.618
Copyright © 2004 by Phan Văn Hiền – ĐHBK Đà nẵng

22


Giáo trình MATLAB - SIMULINK
z = fzero(‘f’,0); % Vẽ đồ thị hàm số minh họa:
fplot(‘f’,[0,5];

grid;
hold on;
plot(z,0,‘o’);
hold off
3.3 Các thao tác trên dữ liệu chuỗi (STRING)
3.3.1 Khái niệm
Biến chứa dữ liệu string trong MATLAB giống như các biến số thông thường, tức là
biến được nhập, thao tác và lưu trong các vectơ với mỗi phần tử của vectơ là một ký tự.
Việc xác định vị trí của mỗi phần tử biến string thông qua chỉ số của nó. Ma trận string
cũng được sử dụng nhưng các string phải có kích thước bằng nhau.
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]
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:
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ự.
Ví dụ:
» n='MATLAB';
» kq=isstr(n)
kq =
1
» m=[1 2 3 4];

» kq=isstr(m)
kq = 0
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
7. strcmp
so sánh 2 chuỗi ký tự.
Cú pháp:
l = strcmp(s1, s2)
Trong đó:
l: biến chứa kết quả.
s1, s2: chuỗi cần so sánh.
Ví dụ: »a = ‘MatLab WoRkS’
»b = ‘MatLab WoRkS’
»strcmp(a,b)
3.3.2

Copyright © 2004 by Phan Văn Hiền – ĐHBK Đà nẵng

23


Giáo trình MATLAB - SIMULINK
ans =
1

8. upper
cho ra chuỗi ký tự viết hoa.
Cú pháp:
b = upper
Trong đó:
b: biến chứa kết quả.
s: tên biến chứa chuỗi ký tự.
Ví dụ:
»a = ‘MaTlab WORks’
»b = upper(a)
b=
MATLAB WORKS
»b = upper(‘MaTlab WORks’)
b=
MATLAB WORKS
9. lower
cho ra chuỗi ký tự viết thường.
Cú pháp:
b = lower(s)
Trong đó:
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.
Cú pháp:
s = str2mat(‘s1’, ‘s2’, …)
Trong đó:
s: tên ma trận kết quả.
s1, s2: chuỗi ký tự.
Ví dụ: »s = str2mat(‘mat’, ‘lab’)

s=
mat
lab
11. blanks
tạo khoảng trắng giữa hai hay nhiều chuỗi ký tự theo mong muốn.
Cú pháp:
[S1 blanks(b1) S2 blanks(b2) …blanks(bn) Sn]
Trong đó:
S1, S2, …, Sn: các chuỗi ký tự.
b1, b2: số khoảng trắng.
3.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ả.
Copyright © 2004 by Phan Văn Hiền – ĐHBK Đà nẵng

24


Giáo trình MATLAB - SIMULINK
‘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.
Cú pháp:
n = str2num(s)
Trong đó:
s: chuỗi dạng số.
n: số thực.
Ví dụ: »n = str2num(‘456456’)
n = 456456
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
12. hex2dec(str) chuyển đổi hệ hexa dưới dạng string str thành sô nguyên.
Ví dụ: hex2dec('0f')=15
13. dec2hex(num) chuyển đổi số nguyên sang hexa.
Ví dụ: dec2hex(2748) = 'ABC'.
14. dec2bin(num) chuyển số thập phân num thành số nhị phân.
Ví dụ: dec2bin(23) = '10111'

15. bin2dec(num) chuyển số nhị phân num thành số nguyên.
Ví dụ: bin2dec('010111') returns 23
3.5 Các thao tác trên dữ liệu cấu trúc
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ác
trường: fields) có kiểu khác nhau, ví dụ thông tin về quản lý con người:
Họ tên
tuổi
giới tính bậc lương
số con
bảng chấm công ...
xâu
số nguyên
logic
số thực
số nguyên
mảng số
...
3.5.1.1 Tạo cấu trúc (Có 2 cách):
 Sử dụng lệnh STRUCT để tạo cấu trúc.
Cú pháp:
S = struct('field1',VALUES1,'field2',VALUES2,...)
S = struct(OBJ) chuyển dữ liệu đối tượng OBJ thành cấu trúc tương đương.
Trong đó:
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.
3.5.1

Copyright © 2004 by Phan Văn Hiền – ĐHBK Đà nẵng


25


×