Tải bản đầy đủ (.pdf) (30 trang)

Bài giảng Giải tích mạch và mô phỏng trên máy tính: Phần 1 ĐH Phạm Văn Đồng

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 (756.22 KB, 30 trang )

TRƯỜNG ĐẠI HỌC PHẠM VĂN ĐỒNG

KHOA KỸ THUẬT CÔNG NGHỆ
...   ...

BÀI GIẢNG

GIẢI TÍCH MẠCH
VÀ MÔ PHỎNG
TRÊN MÁY TÍNH
Bậc học: CAO ĐẲNG
(BỘ LAO ĐỘNG THƯƠNG BINH VÀ XÃ HỘI)

GV: Trương Quang Sanh
Bộ môn: Điện - Điện tử
Khoa: Kỹ thuật - Công nghệ
Quảng Ngãi - 05/ 2019

1


TRƯỜNG ĐẠI HỌC PHẠM VĂN ĐỒNG

KHOA KỸ THUẬT CÔNG NGHỆ
...   ...

BÀI GIẢNG

GIẢI TÍCH MẠCH
VÀ MÔ PHỎNG
TRÊN MÁY TÍNH


Bậc học: CAO ĐẲNG (45 TIẾT)
(BỘ LAO ĐỘNG THƯƠNG BINH VÀ XÃ HỘI)

GV: Trương Quang Sanh
Bộ môn: Điện - Điện tử
Khoa: Kỹ thuật - Công nghệ
Quảng Ngãi - 05/ 2019

2


LỜI NÓI ĐẦU
Điều khiển tự động hóa đóng vai trò quan trọng trong sự phát triển của khoa học và
kỹ thuật. Lĩnh vực này sử dụng rất rộng rãi từ hệ thống phi thuyền không gian, hệ thống
điều khiển tên lửa, máy bay không người lái, robot, người máy tay, máy trong các quá
trình sản xuất hiện đại và ngay cả trong đời sống hàng ngày: Điều khiển nhiệt độ, độ ẩm,

Khi các máy móc hiện đại ngày nay càng phức tạp hơn nhiều tín hiệu vào và ra thì
việc mô tả hệ thống điều khiển đòi hỏi cần phải tính toán nhanh và xử lý một lượng lớn
các lệnh phức tạp.
Nhằm tạo kỹ năng lập trình và mô phỏng để giải quyết các bài toán đại số, phương
trình vi phân, ma trận, các bài toán về phương trình toán lý, trong kỹ thuật điện, điện tử, tự
động… Bài giảng “GIẢI TÍCH MẠCH VÀ MÔ PHỎNG TRÊN MÁY TÍNH” sẽ giúp
cho chúng ta tìm hiểu những nội dung cơ bản nhất về Matlab và Simulink cũng như ứng
dụng giải quyết những bài toán kỹ thuật điện đơn giản.
Nội dung của bài giảng gồm 8 chương:
Chương 1: Các khái niệm cơ bản
Chương 2: Tính toán trên các mảng số
Chương 3: Nhập - xuất dữ liệu trong MATLAB
Chương 4: Các lệnh điều khiển trong MATLAB

Chương 5: Đồ họa trong MATLAB
Chương 6: Các bài toán đại số tuyến tính và phương trình vi phân
Chương 7: Simulink
Do thời gian biên soạn có hạn nên không tránh được những sai sót, mong những
góp ý xin gửi về Bộ môn Điện - Điện tử, khoa Kỹ thuật - Công nghệ, Trường Đại học
Phạm Văn Đồng. Trân trọng cảm ơn!
Tác giả!

3


MỤC LỤC
MỤC LỤC .................................................................................................................. 4
Chương 1. CÁC KHÁI NIỆM CƠ BẢN .................................................................... 6
1.1. Giới thiệu phần mềm matlab ............................................................................ 6
1.2. Làm việc trong môi trường Matlab .................................................................. 7
1.3. Các lớp dữ liệu ................................................................................................. 8
Chương 2. TÍNH TOÁN TRÊN CÁC MẢNG SỐ ................................................... 10
2.1. Khởi tạo các mảng số ..................................................................................... 10
2.2. Các phép tính trên mảng số ............................................................................ 12
2.3. Các hàm toán học và logic ............................................................................. 16
2.4. Xử lý, tính toán các mảng số .......................................................................... 19
Chương 3. NHẬP - XUẤT DỮ LIỆU TRONG MATLAB ..................................... 23
3.1. Nhập dữ liệu từ bàn phím bằng hàm input ..................................................... 23
3.2. Nhập dữ liệu từ chuột bằng hàm menu .......................................................... 23
3.3. Xuất dữ liệu ra cửa sổ lệnh bằng hàm disp. Hàm format và các khuôn dạng số24
3.4. Xuất dữ liệu ra cửa sổ lệnh bằng hàm sprintf ................................................. 26
3.5. Xuất dữ liệu ra file bằng lệnh save ................................................................. 27
3.6. Nhập dữ liệu từ file bằng lệnh load ................................................................ 27
3.7. Nhập xuất dữ liệu với các file văn bản có định dạng bằng các hàm

fopen, fscanf, fprintf, fclose .................................................................................. 28
Chương 4. CÁC LỆNH ĐIỀU KHIỂN TRONG MATLAB .................................... 31
4.1. Các lệnh rẽ nhánh:

if ... end, switch ... end ............................................... 31

4.2. Các lệnh lặp: for ... end, while ... end ............................................................. 34
4.3. Các lệnh chuyển trong vòng lặp ..................................................................... 37
4.4. Hàm tạm dừng ................................................................................................ 39
Chương 5. ĐỒ HỌA TRONG MATLAB .............................................................. 41
4


5.1. Cơ sở đồ họa Matlab....................................................................................... 41
5.2. Đồ họa 2 chiều ................................................................................................ 42
5.3. Đồ họa 3 chiều ................................................................................................ 44
5.4. Thiết kế giao diện đồ họa ............................................................................... 46
Chương 6. CÁC BÀI TOÁN ĐẠI SỐ TUYẾN TÍNH VÀ ...................................... 51
PHƯƠNG TRÌNH VI PHÂN ................................................................................... 51
6.1 Tính toán với vectơ và ma trận ........................................................................ 51
6.2 Hệ phương trình đại số tuyến tính ................................................................... 53
6.3 Giải thuật giải phương trình vi phân ............................................................... 54
6.4 Giải thuật giải bài toán kỹ thuật điện .............................................................. 56
Chương 7. SIMULINK ............................................................................................. 60
7.1 Khởi động Simulink ........................................................................................ 60
7.2 Thao tác cơ bản với Simulink.......................................................................... 62
7.3 Thư viện Sources, Sinks .................................................................................. 63
7.4 Khai báo tham số và mô phỏng ....................................................................... 70
TÀI LIỆU THAM KHẢO ........................................................................................ 79


5


Chương 1. CÁC KHÁI NIỆM CƠ BẢN
1.1. Giới thiệu phần mềm matlab
Đối với lĩnh vực điều khiển - tự động hóa nói riêng và trong lĩnh vực khoa học - kỹ
thuật nói chung, mô phỏng là công cụ quan trọng cho phép khảo sát các đối tượng, hệ
thống hay quá trình kỹ thuật - vật lý, mà nhất thiết không phải có đối tượng hay hệ thống
thực. Matlab - simulink được trang bị công cụ mô phỏng mạnh và các phương pháp mô
hình hóa.
Matlab là một bộ chương trình phần mềm lớn của lĩnh vực tính toán số. Tên bộ
chương trình chính là chữ viết tắt từ MATric LABoratory, thể hiện định hướng chính của
chương trình là các phép toán vector và ma trận. Phần cốt lõi của chương trình bao gồm
một số hàm toán, các chức năng nhập/xuất cũng như các khả năng điều khiển chu trình mà
nhờ đó ta có thể dựng nên các đoạn chương trình để thực thi.
Thêm vào phần cốt lõi là các Toolbox (bộ công cụ) với phạm vi chức năng chuyên
dụng mà người sử dụng cần. Trong phạm vi giáo trình này chỉ giới thiệu một số Toolbox
liên quan đến mô phỏng mạch, điều khiển - tự động hóa. Đặc biệt, Simulink là một
Toobox có vai trò đặc biệt quan trọng: Một công cụ mạnh phục vụ mô hình hóa và mô
phỏng các hệ thống kỹ thuật - vật lý trên cơ sở sơ đồ cấu trúc dạng khối.
Trước khi khởi động Matlab, thì người dùng phải tạo một thư mục làm việc để
chứa các file chương trình của mình (ví dụ: E:/thuchanh_matlab).
Matlab sẽ thông dịch các lệnh được lưu trong file có dạng *.m. Sau khi cài đặt
Matlab thì việc khởi động chạy chương trình này chỉ đơn giản là nhấp vào biểu tượng của
nó trên desktop

, hoặc vào Start\All Programs\Matlab\Matlab

Sau khi đã khởi động Matlab xong, thì bước kế tiếp là chỉ thư mục làm việc của
mình cho Matlab. Nhấn vào biểu tượng

của mình (ví dụ: E:/thuchanh_matlab).

trên thanh công cụ và chọn thư mục làm việc

Cửa sổ làm việc của Matlab sẽ như hình 1.1. Nó bao gồm 3 cửa sổ làm việc chính:
Cửa sổ lệnh (Command Window), cửa sổ thư mục hiện tại (Current Directory) và cửa sổ
chứa tập các lệnh đã được sử dụng (Command History).

6


Hình 1.1 Giao diện làm việc của phần mềm Matlab
Để tạo một file ***.m trong thư mục làm việc, ta có thể thực hiện:
 Nhấn vào biểu tượng

hoặc vào File\New\M-file

 Cửa sổ soạn thảo xuất hiện, gõ chương trình cần thiết vào file. Sau khi đã
hoàn tất nhấn vào biểu tượng
(E:/thuchanh_matlab).

để lưu vào thư mục hiện tại

Để thực thi tập lệnh có trong ***.m trong thư mục làm việc thì người dùng chỉ cần
gõ tên file đó và Matlab sẽ tự động thực thi các dòng lệnh có trong ***.m này.
1.2. Làm việc trong môi trường Matlab
Matlab là một môi trường tính toán số và lập trình. Giống như một 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ũ, logarit, các phép toán lượng giác như: sin,
cos, tang,…; nó cũng giống như máy tính có thể 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 đề, 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 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.
Matlab 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ề đồ họa, tạo các giao diện riêng cho người sử dụng GUIs. Thêm vào đó
7


Matlab đưa ra những công cụ để giải quyết những vấn đề đặc biệt, gọi là Toolbox. Ngoài
ra ta còn có thể tạo ra các Toolbox cho riêng mình.
1.3. Các lớp dữ liệu
Dữ liệu của Matlab thể hiện dưới dạng ma trận (hoặc mảng) và có các kiểu dữ liệu
được liệt kê sau đây:
- Kiểu đơn single: Dữ liệu số với độ chính xác đơn, kiểu này có lợi về mặt bộ nhớ
nhưng không được sử dụng trong các phép tính toán học vì có độ chính xác kém.
- Kiểu double: Dữ liệu số với độ chính xác kép, kiểu này là kiểu thông dụng nhất của
các biến trong Matlab.
- Kiểu uint8, uint16, …
- Kiểu char.
- Matlab còn có một số kiểu dữ liệu khác cao cấp hơn: kiểu cell, kiểu struct (bản
ghi).
Biến và cách đặt tên cho biến
Biến (variable): trong Matlab là 1 kí hiệu được sử dụng để chứa 1 giá trị. Gồm biến
toàn cục (global), biến cục bộ (local).
Tên biến (variable name): bắt đầu bằng một chữ cái, tiếp theo là các chữ cái, chữ số
hoặc kí tự gạch chân ( _ ).
Tên_biến = giá trị hoặc biểu thức
Tên biến phải tuân thủ theo các quy tắc sau:

 Tên biến có phân biệt chữ hoa và 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ự, sau kí tự thứ 31 sẽ bị lờ đi.
Ví du: mophongvalaptrinhmatlab
 Tên biến bắt đầu phải bằng chữ cái, tiếp theo có thể là chữ số, dấu gạch
dưới.
Ví dụ: mo_phong_va_lap_trinh_matlab, X356a_b_c
 Kí tự chấm câu không được phép dùng vì nó có những ý nghĩa đặc biệt

8


Các hằng

Câu hỏi ôn tập Chương 1
Câu 1.1: Làm thế nào để khởi động Matlab?
Câu 1.2: Cách tạo và lưu một file ***.m vào thư mục đã tạo trước?
Câu 1.3: Làm thế nào để định nghĩa một biến?
Câu 1.4: Các quy định khi đặt tên biến là gì?
Câu 1.5: Trình bày các lớp dữ liệu trong Matlab?
----------------------------

9


Chương 2. TÍNH TOÁN TRÊN CÁC MẢNG SỐ
2.1. Khởi tạo các mảng số
2.1.1. Mảng đơn
- Ðể tạo mảng, ta đặt các phần tử của mảng vào giữa hai dấu ngoặc vuông, giữa hai
phần tử của mảng có thể là dấu cách hoặc dấu phẩy.

- Với mảng có số lượng phần tử ít thì ta có thể nhập vào trực tiếp, nhưng với mảng
có số lượng lớn các phần tử thì ta có thể dùng các cách sau:
x = first : last : tạo vectơ hàng x bắt đầu tại first, phần tử sau bằng phần tử trước cộng
với 1, kết thúc là phần tử có giá trị bằng hoặc nhỏ hơn last.
x = first : increment : last : tạo vectơ hàng x bắt đầu tại first, giá trị cộng là increment,
kết thúc là phần tử có giá trị bằng hoặc nhỏ hơn last.
x = linspace(first,last,n): tạo vectơ hàng x bắt đầu tại first, kết thúc là last, có n
phần tử.
Ví dụ:
>> a=1:5
a=
12345
>> b = [6 7 8]
b=
678
>> c = [a b]
c=
12345678
2.1.2. Khởi tạo các mảng số
Với mảng có số lượng phần tử ít thì ta có thể nhập vào trực tiếp, nhưng với mảng có
số lượng lớn các phần tử thì ta dùng một trong hai cách sau:
- Tạo một mảng bắt đầu là phần tử 0, sau bằng phần tử trước cộng với 0.1, phần tử
cuối là 1, tất cả các phần tử của mảng được nhân với pi:
>> x= (0:0.1:1)*pi
x=
Columns 1 through 7
0 0.3142

0.6283


0.9425

1.2566

1.5708

Columns 8 through 11
10

1.8850


2.1991

2.5133

2.8274

3.1416

- Tạo mảng gồm các phần tử của x bằng hàm linspace. Cú pháp của hàm này như
sau:
linspace(giá trị phần tử đầu, giá trị phần tử cuối, số các phần tử)
Ví dụ:
>> x = linspace(0,pi,11)
x=
Columns 1 through 7
0

0.3142


0.6283

0.9425

1.2566

1.5708

1.8850

Columns 8 through 11
2.1991

2.5133

2.8274

3.1416

Cách thứ nhất giúp ta tạo mảng mà chỉ cần vào khoảng cách giá trị giữa các phần tử
(không cần biết số phần tử), còn cách thứ hai ta chỉ cần vào số phần tử của mảng (không
cần biết khoảng cách giá trị giữa các phần tử).
Các mảng trên là các mảng mà các phần tử của nó được tạo lên theo một quy luật
nhất định. Nhưng đôi khi mảng được yêu cầu, nó không thuận tiện tạo các phần tử bằng
các phương pháp trên, không có một mẫu chuẩn nào để tạo các mảng này. Tuy nhiên ta có
thể tạo mảng bằng cách vào nhiều phần tử cùng một lúc
Ví dụ:
>> a = 1:5,b = 1:2:9
a=

1

2

3

4

5

1

3

5

7

9

4

5

b=
>> c = [a b]
1

2


3

1

3

5

7

9

Ở ví dụ trên ta đã tạo hai mảng thành phần là a và b sau đó tạo mảng c bằng cách
ghép hai mảng a và b.
Ta cũng có thể tạo mảng như sau:
>> d = [a(1:2:5) 1 0 1]
d=
1

3

5

1

0

1
11



a là mảng gồm các phần tử [1 3 5], mảng d là mảng gồm các phần tử của a và ghép
thêm các phần tử [1 0 1]
Tóm lại ta có bảng cấu trúc các mảng cơ bản:
x=[ 2 2*pi sqrt(2) 2- Tạo vector hàng x chứa các phần tử đặc biệt.
3j ]
x = first : last

Tạo vector hàng x bắt đầu tại first, phần tử sau bằng
phần tử trước cộng với 1, kết thúc là phần tử có giá
trị bằng hoặc nhỏ hơn last .

x = first : increment : Tạo vector hàng x bắt đầu tại first, giá trị cộng là
last
increment, kết thúc là phần tử có giá trị bằng hoặc
nhỏ hơn last.
x = linspace(fist, last, Tạo vector hàng x bắt đầu tại first, kết thúc là last,
n)
có n phần tử.
Vectơ hàng và vectơ cột
Mảng chứa một hàng và nhiều cột, thường gọi là vectơ hàng. Mảng có một cột và
nhiều hàng gọi là vectơ cột.
Ðể tạo vectơ cột, ta dùng dấu chấm phẩy để phân cách các phần tử. Ngoài ra, ta
cũng có thể dùng các hàm linspace hay từ các vectơ hàng, sau đó dùng phương pháp
chuyển vị.
Ví dụ:
>> x=linspace(0,pi,5)
x=
0 0.7854 1.5708 2.3562 2.1416
>> y= x'

y=
0
0.7854
1.5708
2.3562
2.1416
2.2. Các phép tính trên mảng số
2.2.1. Phép toán giữa mảng với số đơn
12


Các phép toán đơn giản khác giữa mảng với số đơn là phép cộng, phép trừ, phép nhân, và phép chia
của mảng cho số đó bằng cách thực hiện phép toán đối với từng phần tử của mảng.

Ví dụ:
>> g = [1 2 3 4; 5 6 7 8; 9 10 11 12];
% Trừ các phần tử của mảng g đi 2

>> -2
ans=
-1

0

1

2

3


4

5

6

7

8

9

10
% Nhân tất cả các phần tử của mảng g với 2 sau đó trừ đi 1

>> 2*g - 1
ans=
1

3

5

7

9

11

13


15

17 19 21 23
2.2.2. Phép toán giữa mảng với mảng
Thuật toán thực hiện phép toán giữa các mảng không phải đơn giản như trên mà nó
còn bị ràng buộc bởi các điều kiện khác như đối với hai mảng kích cỡ như nhau thì ta có
các phép toán sau: phép cộng, phép trừ, phép nhân, chia tương ứng giữa các phần tử của
của hai mảng.
Ví dụ:
% Gọi lại mảng g

>> g
g=
1

2

3

4

5

6

7

8


9

10

11

12

>> h = [1 1 1 1; 2 2 2 2; 3 3 3 3]

% Tạo một mảng mới h.

h=
1

1

1

1

2

2

2

2

3


3

3

3

>> h + g

% Cộng hai ma trận g và h ( cộng tương ứng từng phần tử của h với g)
13


ans =
2

3

4

5

7

8

9

10


12

13

14

15

% Lấy kết quả trước trừ đi mảng h, ta được lại mảng g.

>> ans - h
ans =
1

2

3

4

5

6

7

8

9


10

11

12

>> 2*g - h % Nhân ma trận g với 2 sau đó lấy kết quả trừ đi ma trận h.
ans =
1

3

5

7

8

10

12

14

15

17

19


21

>> g.*h % Nhân tương ứng các phần tử của mảng g với các phần tử của mảng h
ans =
1

2

3

4

10

12

14

16

27

30

33

36

Ở ví dụ trên ta đã dùng toán tử chấm_nhân ( .* ), ngoài ra MATLAB còn dùng toán tử
chấm_chia ( ./ hoặc .\ ) để chia tương ứng các phần tử của hai mảng như ví dụ dưới đây:

>> g./h

% Chia phải tương ứng các phần tử của mảng g với các phần tử của mảng h

ans=
1.0000

2.0000

3.0000

4.0000

2.5000

3.0000

3.5000

4.0000

3.0000

3.3333

3.6667

4.0000

>> h.\g


% Chia trái tương ứng các phần tử của mảng g với các phần tử của mảng h

ans=
1.0000

2.0000

3.0000

4.0000

2.5000

3.0000

3.5000

4.0000

3.0000

3.3333

3.6667

4.0000
14



Chú ý ta chỉ có thể dùng phép nhân_chấm hay phép chia_chấm đối với các mảng g và
h mà không thể dùng phép nhân ( * ) hay phép chia ( / hoặc \ ) vì đối với các phép toán
này yêu cầu số cột và số hàng của hai ma trận phải tương thích.
Ví dụ:
>> g*h
??? Error using ==> *
Inner matrix dimensions must agree.
>> g/h
Warning: Rank deficient, rank = 1 tol = 503291e-15.
ans=
0

0

0.8333

0

0

2.1667

0

0

3.5000

>> h/g
Warning: Rank dificient, rank = 2 tol = 1.8757e-14.

ans=
- 0.1250

0

0.1250

- 0.2500

0

0.2500

- 0.3750 0 0.3750
2.2.3. Mảng với lũy thừa
MATLAB dùng toán tử ( .^ ) để định nghĩa luỹ thừa của mảng.
Ví dụ ta có hai mảng g và h như ở trên, ta có thể tạo các mảng mới bằng toán tử
( .^ ) như sau:
% Các phần tử của g được luỹ thừa vớ số mũ là 2.

>> g.^2
ans =
1

4

25

36


49

64

81

100

121

144

>> g.^-1

9

16

% Các phần tử của g được luỳ thừa với số mũ là -1.

ans =
1

0.5

0.33333

0.25
15



0.2

0.16667

0.14286

0.125

0.11111

0.1

0.090909

0.083333

% Các phần tử của g là số mũ của 2.

>> 2.^g
ans =
2

4

8

16

25


36

49

64

729

1000 1331

1728

>> g.^(h - 1)
% Các phần tử của g được luỹ thừa với số mũ là tương ứng là các
phần tử của h trừ đi 1.
ans =
1

1

1

1

5

6

7


8

81

100

121

144

Sau đây là bảng một số phép toán cơ bản của mảng:
Dữ liệu minh hoạ:

a = [a1 a2 ... an] , b = [b1 b2 ... bn] ,
c là số vô hướng

Cộng với số đơn

A+c = [a1 +c a2 +c ... an+c]

Nhân với số đơn

A*c = [a1 *c a2 *c ... an*c]

Cộng mảng

A+b = [ a1+b1

a2+b2 ... an+bn ]


Nhân 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 ]

Luỹ 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 ]
2.3. Các hàm toán học và logic
2.3.1. Các hàm toán học
Tương tự như hầu hết các máy tính kỹ thuật, Matlab có thể đưa ra rất nhiều các hàm

toán học, kỹ thuật thông dụng, ngoài ra Matlab còn cung cấp hàng trăm các hàm đặc biệt
16


và thuật toán, nó rất hữu ích để giải quyết các vấn đề khoa học. Tất cả các hàm được liệt
kê trong menu help. Ở đây chỉ đề cập đến các hàm thông dụng nhất.
2.3.1.1. Hàm toán học cơ bản
abs(x)

Hàm tính giá trị tuyệt đối của x

sqrt(x)

Hàm tính căn bậc hai của x

round(x)

Làm tròn x về số nguyên gần nhất

fix(x)

Làm tròn số x về 0

floor(x)

Làm tròn về phía -∞

ceil(x)

Làm tròn về phía ∞


sign(x)

Hàm cho giá trị là -1 nếu x nhỏ hơn 0, giá trị bằng 0 nếu x bằng
0, có giá trị là 1 nếu x lớn hơn 0

rem (x,y)

Hàm trả lại số dư của phép chia x cho y

exp(x)

Hàm tính giá trị của ex

log(x)

Hàm tính giá trị ln(x)

log10(x)

Hàm tính giá trị log10(x)

2.3.1.2. Hàm lượng giác cơ bản
Ðơn vị của các tham số phải là radian
sin(x)

Tính sin của góc x

cos(x)


Tính cos của góc x

tan(x)
Tính tan của góc x
2.3.2. Các toán tử logic và quan hệ
Ðối với các số thì trong toán tử và quan hệ quy định các số khác không là True còn
số không là False. Kết quả của phép toán logic và quan hệ đưa ra là 1 cho True, 0 cho
False.

2.3.2.1. Toán tử quan hệ
Toán tử quan hệ Matlab bao gồm các phép so sánh:

17


Ví dụ:
>>12.2 > 12
ans =
1
>> 1~=1
ans =
0
2.3.2.2. Toán tử logic
Toán tử logic cung cấp một cách diễn đạt mối quan hệ phủ định hay tổ hợp:

Biểu thức logic với các toán tử tổ hợp được xác định theo qui luật sau:

Ðôi khi gặp những biểu thức phức tạp chứa cả toán tử & lẫn toán tử | , MATLAB
sẽ có qui luật về trình tự xử lý như sau:
Ðầu tiên là xử lý các tính toán số học. Sau đó, các toán tử logic được xem xét từ

trái sang phải. Những biểu thức con có trong biểu thức cần xử lý (có các toán tử & và | )
cũng được xem xét từ trái sang phải với các toán tử & được xử lý trước các toán tử |
Ví dụ:
18


>>A=1:5;
>>B=(A>2)&(A<5)
B=
00110
2.4. Xử lý, tính toán các mảng số
Từ các mảng và các ma trận cơ bản của Matlab, có nhiều cách để thao tác đối với
chúng. Matlab cung cấp những cách tiện ích để chèn vào, lấy ra, sắp sếp lại những bộ
phần tử con của chúng bằng các chỉ số của các phần tử. Ví dụ dới đây sẽ minh hoạ những
đặc điểm thao tác đối với mảng và ma trận ở trên:
>> A = [1 2 3; 4 5 6; 7 8 9]
A=
1

2

3

4

5

6

7


8

9
% Gán phần tử hàng thứ 3, cột thứ 3 bằng 0.

>> A(3,3) = 0
1

2

3

4

5

6

7

8

0
% Gán phần tử hàng thứ 2, cột thứ 6 bằng 1.

>> A(2,6) = 1
A=
1


2

3

0

0

0

4

5

6

0

0

1

7

8

0

0


0

0

Ở đây ma trận A không có 6 cột, kích cỡ của ma trận A phải tăng lên cho phù hợp, các
phần tử tăng thêm được điền bằng các con số không.
% Gán tất cả các phần tử thuộc cột thứ 4 bằng 4.

>> A(:,4) = 4
A=
1

2

3

4

0

0

4

5

6

4


0

1

7

8

0

4

0

0
19


Ở trên ta dùng dấu hai chấm ( : ) để chỉ tất cả các hàng.
>> A = [1 2 3; 4 5 6; 7 8 9];

% Gán lại các giá trị của ma trận A.

>> B = A(3:-1:1,1:3) % Tạo ma trận B bằng cách đảo ngược các hàng của ma trận A.
B=
7

8

9


4

5

6

1

2

3
% Cũng tạo ma trận B như trên nhưng ở đây ta dùng ( : )

>> B = A(3:-1:1,:)
để chỉ tất cả các cột.
B=
7

8

9

4

5

6

1


2

3

>> C = [ A B(:,[1 3])] % Tạo ma trận C bằng cách ghép ma trận A và cột thứ nhất,
thứ ba của ma trận B vào bên phải ma trận A.
C=
1

2

3

7

9

4

5

6

4

6

7


8

9

1

3

>> C = [1 3]
C=
1

3

>> B = A(C,C)

% Dùng ma trận C làm chỉ số để tạo ma trận B Từ ma trận A.

B=
1

3

7

9

>> B= A(:)

% Tạo ma trận cột B từ ma trận A.


B=
1
4
7
20


2
5
8
3
6
9
>> B = B.' % Chuyển ma trận B thành ma trận hàng bằng toán tử chuyển vị chấm.
B=
1

4

7

2

5

8

3


6

9

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

% Loại bỏ cột thứ hai của ma trận B.

B=
1

3

4

6

7

9

Khi ta gán cột thứ hai của ma trận B cho ma trận rỗng ([]) thì nó sẽ bị xoá, ma trận
còn lại sẽ rút bỏ đi hàng thứ hai.
>> B = B.'
B=
1

4


7

3

6

9

>> B(2,:) = []
B=
1

4

7

>> A(2,:) = B

% Thay hàng thứ hai của ma trận A bằng ma trận B.

A=
1

2

3

1

4


7

7

8

9

>> B = A(:,[2 2 2 2])
B=
21


2

2

2

2

4

4

4

4


8

8

8

8

Câu hỏi ôn tập chương 2
Câu 2.1: Trình bày cách tạo mạng đơn? Cho ví dụ?
Câu 2.2: Vectơ hàng và vectơ cột là gì? Cho ví dụ?
Câu 2.3: Trình bày cách tạo mảng số?
Câu 2.4: Cho mảng g dưới đây:
g = [1 2 3 4 4; 5 6 7 8 8; 9 10 11 12 12]
Hãy thực hiện các phép tính: Phép cộng, phép trừ, phép nhân và phép chia của mảng g cho
số 5?
Câu 2.5: Cho mảng g dưới đây:
g = [1 2 3 4 4; 5 6 7 8 8; 9 10 11 12 12]
Hãy khởi tạo một mảng h và thực hiện các phép tính toán sau: Phép cộng, phép trừ,
phép nhân, chia tương ứng giữa các phần tử của của hai mảng g và h?
Câu 2.6: Cho mảng g dưới đây:
g = [1 2 3 4 4; 5 6 7 8 8; 9 10 11 12 12]
Hãy thực hiện phép lũy thừa mảng trên với số mũ lần lượt là: 4, 6, -1, 4/5?
-----------------------

22


Chương 3. NHẬP - XUẤT DỮ LIỆU TRONG MATLAB
3.1. Nhập dữ liệu từ bàn phím bằng hàm input

Lệnh input cho phép ta nhập số liệu từ bàn phím. Ví dụ:
x = input (‘prompt ’)
Trong đó:
- input: Từ khóa của hàm nhập dữ liệu;
- x: Tên biến được gán giá trị nhập vào;
- prompt: Dòng text mà người sử dụng đánh vào;
Khi đó biến x sẽ có giá trị bằng giá trị mà người sử dụng nhập vào.
Ngoài ra ta có hàm: x = input (‘prompt’ , ‘s’) trả về chuổi kí tự. Trong khi thực hiện
lệnh ta có thể sử dụng một số ký hiệu đặc biệt như dấu ngắt xuống dòng \n, dấu móc trên
cao ‘ ’(khi thực hiện ta thu được trên màn hình duy nhất một dấu ‘) và gạch nghiêng chéo
\\( khi thực hiện ta thu được trên màn hình duy nhất một dấu\).
Sau đây là một ví dụ về một Script có khúc đối thoại nhập văn bản:
Price = input ([‘What does the exchange rate \n , …
‘looke like today ?’ ]);
Currency = input (‘ DEM\\EUR ?’ , ‘s’);
Sau khi gọi Script và nhập số liệu, ví dụ ta có thể nhận kết quả như sau.
What does the exchange rate
Look like today ?

1.93

DEM\EUR ?

DEM

3.2. Nhập dữ liệu từ chuột bằng hàm menu
Để thực hiện nhập dữ liệu từ chuột bằng hàm menu, từ của sổ chính của Matlab ta
thực hiện File/ Import Data như sau:

Khi đó sẽ xuất hiện một cửa sổ import data như sau:

23


Sau đó ta chọn đường dẫn đến thư mục chứa file dữ liệu cần nhập, và chọn nút open
để nạp dữ liệu.
3.3. Xuất dữ liệu ra cửa sổ lệnh bằng hàm disp. Hàm format và các khuôn dạng số
Để xuất dữ liệu ra cửa sổ lệnh ta dùng hàm disp có cấu trúc như sau:
disp(x)
disp(‘text’)
Trong đó,
disp : Từ khoá của hàm xuất dữ liệu,
x : tên biến hoặc các giá trị số cần xuất ra màn hình,
text : dòng text mà người sử dụng cần xuất ra màn hình.
Khi xuất số liệu hay chuỗi ký tự ra màn hình ta đều có thể đặt định dạng cho việc
xuất. Lệnh disp(string) có tác dụng xuất chuỗi ký tự. Lệnh này có thể sử dụng cho chuỗi
ký tự chứa văn bản động, trong đó các chữ số phải được biến thành chuỗi ký tự nhờ lệnh
num2str(variable [,format]).
Đối với số liệu vector ta có thể lập định dạng xuất nhờ string = sprintf(string,
variable), sau đó xuất bằng lệnh disp. Khi sử dụng hai lệnh num2str và sprintf, cú pháp
lập định dạng về cơ bản cũng giống như ngôn ngữ lập trình C. Tất cả các biến phải được
khai báo chung trong một ma trận duy nhất, và mỗi cột là một bộ tham số xuất.
Ví dụ: Thành lập hàm M-file, nhập vào giá trị tiết diện dây dẫn, nhập vào chiều dài
và xuất ra giá trị điện trở của đoạn dây. Cho dây dẫn bằng đồng (ρ=18.84 Ω
mm2/km).Thành lập hàm M-file.
24


% Nhập tiết diện dây dẫn - mm
F=input('Nhap tiet dien day dan :')
% Nhập chiều dài dây dẫn - km

l=input (' Nhap chieu dai - km :')
% Tính toán giá trị điện trở
R=18.84*l/F
% Xuất giá trị điện trở ra màn hình
disp('Gia tri dien tro la :')
disp(R)
Chạy chương trình, cửa sổ lệnh sẽ yêu cầu nhập vào F và l, sau đó sẽ hiển thị kết
quả điện trở R.
Ghi chú :
Cú pháp : clear hoặc clear all sẽ xóa toàn bộ các biến đang được sử dụng trong
matlab, giúp chương trình chạy đúng.
Hàm format và các khuôn dạng số.
Hàm format kiểm soát định dạng xuất ra màn hình của các giá trị. Hàm này chỉ kiểm
soát định dạng xuất ra mà không ảnh hưởng tới định dạng của dữ liệu được lưu trữ.
Lệnh format cho phép xác định dạng thức của dữ liệu.
format rat

% số hữu tỉ

format long

% số sẽ có 14 chữ số sau dấu phẩy

format long e % số dạng mũ
format hex

% số dạng hex

format short e %số dạng mũ ngắn
format short


%trở về số dạng ngắn (default)

Ví dụ:
>> x = [4/3 1.2345e-6];
>> format short
1.3333

0.0000

>> format short e
1.3333e+000 1.2345e-006
>>format long
25


×