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

sử dụng matlab tạo hộp công cụ dùng để giải các bài toán trong tự động điều khiển

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 (452.62 KB, 66 trang )

BỘ GIÁO DỤC VÀ ĐÀO TẠO
VỆT NAM
ĐẠI HỌC QUỐC GIA TP. HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT
TP. HỒ CHÍ MINH
  

CỘNG HÒA XÃ HỘI CHỦ NGHĨA
ĐỘC LẬP - TỰ DO - HẠNH PHÚC
---o Oo ---

KHOA ĐIỆN
BỘ MÔN ĐIỆN – ĐIỆN TỬ

NHIỆM VỤ LUẬN VĂN TỐT NGHIỆP
Họ và tên : Lê Trung Hiền
MSSV
: 95101051
Lớp
: 95KĐĐ
Ngành
: Kỹ thuật Điện – Điện Tử
*******************************
1.

Tên đề tài: Sử dụng MATLAB tạo ra hộp công cụ
dùng để giải các bài toán trong tự động điều
khiển.
2. Nội dung các phần thuyết minh.
 Chương I : Giới thiệu những ưu điểm hiện có của MATLAB
khi ứng dụng trong tự động điều khiển.


 Chương II :
 Tìm hiểu cách nhập xuất và tính toán các
biến trong MATLAB.
 Tạo một hàm trong tự động điều khiển.
 Vẽ đồ thị.
 Chương III :
 Miêu tả các biến trạng thái, ma trận chuyển
đổi,cực,zero trong hệ thống LTI (Linear Time Invariant).
 Xây dựng những câu lệnh trong tự động điều khiển
ở cửa sổ soạn thảo.
 Xét tính ổn định của hệ thống .
 Chương IV : Dùng MATLAB viết chương trình tạo ra hộp
công cụ.
 Chương V : Kết quả chạy chương trình.
3. Các bản vẽ : Trình bày các giao diện chạy trong MATLAB.
GVHD :Th.S Lê Cảnh Trung
Ngày giao nhiệm vụ : 23/12/1999
Ngày hoàn thành : 28/3/2000
GVHD
môn

SVTH

Thông qua bộ
Chủ nhiệm bộ

môn
Lê cảnh Trung

Lê Trung Hiền



BẢN NHẬN XÉT
LUẬN VĂN TỐT NGHIỆP CỦA CÁN BỘ
HƯỚNG DẪN

*** ***






Họ và tên : Lê Trung Hiền
Lớp : 95KĐĐ
MSSV : 95101051
GVHD : Th.S Lê Cảnh Trung
Tên đề tài: Sử dụng MATLAB tạo ra hộp công cụ
dùng để giải các bài toán trong tự động điều
khiển.
 Lời nhận xét của cán bộ hướng dẫn:
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------


------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------Thành Phố ngày
tháng
năm 2000
Cán bộ hướng dẫn

Th.S


Lê Cảnh Trung


BẢN NHẬN XÉT
LUẬN VĂN TỐT NGHIỆP CỦA CÁN BỘ
PHẢN BIỆN

*** ***






Họ và tên : Lê Trung Hiền
Lớp : 95KĐĐ
MSSV : 95101051
GVHD :Th.S Lê Cảnh Trung
Tên đề tài: Sử dụng MATLAB tạo ra hộp công cụ
dùng để giải các bài toán trong tự động điều
khiển.
 Lời nhận xét của cán bộ phản biện:
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------


------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------Thành Phố ngày
tháng
năm 2000
Cán bộ phản biện



Xin tri ân và
tưởng nhớ
đến Thầy Th.S

V
ới tấm lòng tôn sư trọng đạo, chúng em xin chân thành cảm ơn
các thầy cô đã tận tình dạy bảo cho chúng em trong những
năm vừa qua,và truyền đạt cho chúng em những kiến thức q
báo để làm hành trang cho em bước vào đời.
Xin ghi nhớ công ơn của cha mẹ đã không quản mọi gian
lao khó nhọc , và cả sự hy sinh cao cả để cho con được như ngày
hôm nay.
Xin chân thành cảm ơn các thầy cô trường Đại Học Sư
Phạm Kỹ Thuật đã tận tình chỉ bảo chúng em trong suốt
khóa học vừa qua.
Xin cảm ơn thầy Lê Cảnh Trung đã tận tình hướng dẫn và
cung cấp cho em những tài liệu quý báo để hoàn thành luận
văn này, cũng như truyền thụ những kinh nghiệm quý báotrong
suốt thời gian thực hiện nghiên cứu đề tài.
Một lần nữa xin gởi đến những người thân yêu, bạn, các
anh chị ... Đã góp ý giúp đở về tinh thần cũng như về kinh
nghiệm, kiến thức... một lời biết ơn sâu sắc nhất
TP. HỒ CHÍ MINH ngày 20 tháng 2 năm 2000
Sinh viên thực hiện
Lê Trung Hiền


KHẢO


TÀI LIỆU THAM


1. Điều khiển tự động 1,2
Pts : Nguyễn Thị Phương Hà
Nhà Xuất Bản Khoa Học Và Kỹ Thuật Năm 1996
2. Bài Tập Điều khiển tự động 1,2
Pts : Nguyễn Thị Phương Hà
Nhà Xuất Bản Khoa Học Và Kỹ Thuật Năm 1996
3. Điều khiển tự động
Lương Văn Lăng
Nhà Xuất Bản Giáo Dục Năm 1996
4. Giáo Trình Lý Thuyết Điều khiển tự động Phần I,II
Th.s : Trần Sum
Trường Đại Học Sư Phạm Kỹ Thuật
5. Xử Lý tín hiệu Và Lọc Số
Nguyễn Quốc Trung
Nhà Xuất Bản Khoa Học Và Kỹ Thuật Năm 1998
6. Tiểu Luận Môn Điều Khiển Học Kỹ Thuật
Th.s : Lê Cảnh Trung
7. Using Matlab Simulink And Control System Toolbox
Alberto Cavallo
Roberto Setola
Francesco Vasca
NXB Prentice Hall
8. Using Matlab To Analyze And Design Control System
Naomi Ehrich Leonard – Princeton University
William S. Levine
- University of Maryland

9. The Matlab 5 Handbook
Darren Redfern
Colin Campbell
NXB Springer


LỜI NÓI ĐẦU
Ngày nay đất nước ta đang trên đà phát triển về mọi mặt
để hòa nhập vào nền văn minh trong các nước tiên tiến ở khu
vực và thế giới. Do đó cần sự có mặt của ngành tự động
điều khiển để thực hiện công việc với độ chính xác và an
toàn cao, một phần nào đó cũng làm giảm bớt sự lao động
chân tay của con người.
Cùng với sự phát triển mạnh mẽ của ngành kỹ thuật máy
tính và công nghệ thông tin, thì việc ứng dụng máy tính vào để
giải những bài toán phức tạp trong hệ thống tự động điều
khiển - như hệ thống nhiều ngõ vào và nhiều ngõ ra (MIMO)- thì
không khó khăn lắm , mà độ chính xác lại cao hơn hẳn từ đó
dẫn đến việc thiết kế và tính toán trở nên dễ dàng trong
thời gian ngắn.
Để đóng góp một phần nào đó và tuân theo mục tiêu
đào tạo của trường ĐH SƯ PHẠM KỸ THUẬT, người viết đi vào
tìm hiểu một phần mềm được ứng dụng khá phổ biến trong
nhiều lónh vực, trong đó có lónh vực tự động điều khiển, đó là
MATLAB.
Matlab là một phần mềm rất được ưa chuộng cho các lập trình
tính toán trong kỹ thuật hiện nay. Nó hầu như được phổ biến
rộng khắp trong các trường đại học ở nhiều nước.Với Matlab
công việc tính toán trở nên đơn giản và nhẹ nhàng hơn so với
nhiều ngôn ngữ lập trình khác nhờ đã thiết kế sẵn các

toolbox giúp cho người sử dụng:
 Control System Tollbox: là nền tảng của họ toolbox thiết kế
điều khiển bằng Matlab. Nó chứa các hàn cho việc mô
phỏng, phân tích và thiết kế các hệ thống trong tự động
điều khiển.
 Frequency Domain System Identification Tollbox: Bao gồm các M-file
giúp cho việc mô phỏng các hệ thống tuyến tính trên cơ sở
phép đo đáp ứng tần số của hệ thống.
 Fuzzy Logic Tollbox: Cung cấp một tập hợp đầy đủ các công
cụ cho việc thiết kế, mô phỏng và phân tích các hệ thống
logic mờ (Fuzzy Inferencs).
 Higher Order Spectral Analysis Toolbox: cung cấp các công cụ cho
việc xử lý tín hiệu dùng phổ bậc cao. Các phương này đặc
biệt hữu dụng cho phân tích các tín hiệu có nguồn gốc từ
một quá trình phi tuyến hay bị nhiễu phi Gaussian ( non-Gaussian
noise) xâm nhập.
 Image Processing Toolbox: chứ các công cụ cho việc sử lý ảnh.
Nó bao gồm các công cụ cho việc thiết kế các bộ lọc và
lưu trữ ảnh, nâng cấp ảnh, phân tích và thống kê.
 Model Predictive Control Tollbox: đặc biệt hữu dụng cho các ứng
dụng điều khiển với nhiều biến ngõ vào (input) và ngõ ra
(output) mà phần lớn có các giới hạn nhất là trog kỹ thuật
hóa chất.
 Mu-Analysis And Syntheris Tollbox: chứa các công cụ chuyên
môn hóa cho điều khiển tối ưu hóa ; Đặc biệt trong lónh vực
robot cao cấp và các hệ thống đa biến tuyến tính.


 Signal Processing Tollbox: chứa các công cụ xử lý tín hiệu. Các
ứng dụng bao gồm: Audio (Đóa compact, băng digital), video

(digital HDTV, xử lý và nén ảnh), viễn thông (fax, telephone), y
học, địa lý.
 Non-linear Control Design Tollbox: cho phép thiết kế các hệ
thống điều khiển tuyến tính và phi tuyến, sử dụng kỹ thuật
tối ưu hóa trên cơ sở miền thời gian.
 Optimization Tollbox: Các lệnh dùng cho sự tối ưu hóa các hàm
tuyến tính và phi tuyến tổng quát.
 Symbolic Match Toolbox: Bao gồm các công cụ cho việc tính toán
trên các biểu thức.
 System Identification Toolbox: Tập hợp các công cụ cho ước lượng
và nhận dạng (tìm mô hình toán học cho một hệ thống vật
lý).
 Robust Control System: Các công cụ cho phép phân tích và
tổng hợp các hệ thống điều khiển bằng robot.
Ngoài ra còn có các toolbox khác như NAG Foundation
Toolbox, Quantitative Feedback Workshop, Spline Toolbox, Statics Toolbox.
Một khả năng khác cần phải nhắc đến của Matlab là
biểu diễn data bằng đồ thị hai chiều, ba chiều bằng các lệnh
(hàm) khá đơn giản.

Màn hình giới thiệu Matlab 5.3


Màn hình DEMO của
Matlab


I

.


Chương mở đầu
---oOo---

I . Giới thiệu chung
Ngày nay tự động điều khiển đóng vai trò quan trọng trong
đời sống và công nghiệp. Lónh vực này hiện hữu khắp nơi từ
hệ thống phi thyề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...Hoặc trong các quy trình công
nghệ sản xuất hiện đại và ngay cả trong đời sống hằng ngày
như : Điều khiển nhiệt độ, độ ẩm.
Phát minh đầu tiên đánh dấu bước mở đầu cho sự phát
triển của lónh vực điều khiển tự động là bộ điều tốc ly tâm
để điều chỉnh tốc độ máy hơi nước của James Watt (1874). Năm
1922, Nynorsky thực hiện hệ thống điều khiển các con tàu và
chứng minh tính ổn định của hệ thống có thể xác định bằng
phương trình vi phân mô tả hệ thống. Cũng ở thời điểm này
Nyquist đã đưa ra một nguyên tắc tương đối đơn giản để xác
dịnh tính ổn định của hệ thống vòng kín dựa trên cơ sở đáp
ứng vòng hở đối với tín hiệu vào hình sin ở trạng thái xác
lập. Năm 1934 Hazen đã giới thiệu thuật ngữ điều chỉnh cơ tự
động (Servo mechanism) cho những hệ thống điều khiển định vị
và thảo luận đến việc thiết kế hệ thống rơle điều chỉnh cơ tự
động với tín hiệu ngõ vào thay đổi.
Trong suốt thập niên 40 của thế kỷ XX, phương pháp đáp
ứng tần số đã giúp cho các kó sư thiết kế các hệ thống vòng
kín tuyến tính thỏa các yêu cầu chất lượng điều khiển. Từ cuối
thập niên 40 đến đầu thập niên 50 phương pháp quỹ đạo
nghiệm của Evans được phát triển khá hoàn thiện. Với phương
pháp quỹ đạo ngiệm và đáp ứng tần số được xem là cốt lỏi

của lý thuyết điều khiển cổ điển cho phép chúng ta thiết kế
những hệ thống ổn định và thỏa các chỉ tiêu chất lượng điều
khiển. Những hệ thống này được chấp nhận nhưng chưa phải là
tối ưu, hoàn thiện nhất.
Khi các hệ thống máy móc hiện đại ngày càng phức tạp
với nhiều tín hiệu ngỏ vào và ngỏ ra thì việc mô tả hệ thống
hiện đại này đòi hỏi một lượng rất lớn các phương trình. Lý
thuyết điều khiển cổ điển liên quan đến hệ thống một ngỏ
vào một ngỏ ra trở nên bất lực để phân tích hệ thống nhiều
đầu vào và nhiều đầu ra. Kể từ năm 1960, nhờ máy tính số
cho phép ta phân tích các hệ thống phức tạp trong miền thời
gian, lý thuyết điều khiển hiện đại được phát triển để đối phó
với sự phức tạp của các hệ thống hiện đại. Lý thuyết điều
khiển hiện đại dựa trên phân tích trong trong miền thời gian và
tổng hợp dùng các biến trạng thái, cho phép giải quyết các
bài toán điều khiển có yêu cầu chặt chẻ về độ chính xác,
trọng lượng và giá thành của hệ thống trong lónh vực kỹ nghệ,
không gian và quân sự.


II . Mục đích nghiên cứu
Trên đà phát triển đó, đồng thời chuẩn bị cho kì thi tốt
nghiệp kết thúc giai đoạn học cũng như hoàn tất chương trình học
của trường. Người thực hiện đi vào nghiên cứu sự ứng dụng
của Matlab trong lónh vực điều khiển tự động, nhằm tạo ra một
hộp công cụ mà từ đó ta có thể tính toán hay tìm hiểu các
chỉ tiêu về chất lượng, cũng như độ ổn định của hệ thống
điều khiển. Phần nào cũng giải quyết được những vấn đề gặp
khó khăn trên thực tế khi làm bằng tay đối với những hệ
thống phức tạp.

Cũng qua việc nghiên cứu đề tài này người thực hiện cũng
muốn cũng cố lại những kiến thức đã học và tìm hiểu thêm
những nét mới từ những kiến thức đó, để sau khi tốt nghiệp
có khả năng vận dụng vào cuộc sống thực tiễn.
Với đề tài “ SỬ DỤNG MATLAB TẠO HỘP CÔNG CỤ DÙNG
ĐỂ GIẢI CÁC BÀI TOÁN TRONG TỰ ĐỘNG ĐIỀU KHIỂN“,
người viết chia thành năm chương như sau:
 Chương I : Giới thiệu chung về Matlab nhằm giúp cho
chúng ta hiểu rõ hơn những nét mạnh của phần mềm này.
Hầu như nó được ứng dụng trong mọi lónh vực.
 Chương II : Các vấn đề cơ bản trong Matlab. Trong chương
này chúng ta đi vào tìm hiểu cách nhập xuất, tính toán, tạo
hàm trong cửa sổ soạn thảo của Matlab và vẽ đồ thị.
 Chương III : Ứng dụng Matlab 5.3 trong tự động điều
khiển. Trong chương này người viết trình bày cách thức miêu
tả các biến trạng thái, ma trận trạng thái,cực (poles), zero
trong hệ thống LTI (Hệ thống tuyến tính bất biến theo thời
gian). Cũng như cách tạo ra hàm truyền từ những điều kiện,
và từ đó xét tính ổn định của hệ thống thông qua việc vẽ
giản đồ trong các miền thời gian, tần số, hay quỹ đạo
nghiệm.
 Chương IV : Sử dụng Matlab 5.3 viết chương trình tạo ra
hộp công cụ.
 Chương V : Kết quả thực thi chương trình.


III. Giới hạn đề tài.
Do đây là một phần mềm mới được phổ biến rộng do đó
việc hiểu được nó cần phải có thời gian nghiên cứu lâu hơn.
Nhưng do chương trình đào tạo của nhà trường phân công cho

việc làm đề tài ngắn, nên người thực hiện chỉ đi vào nghiên
cứu ứng dụng của Matlab trong lónh vực điều khiển tự động ở
hệ tuyến tính liên tục bất biến theo thời gian (LTI) và chỉ dừng
lại ở hàm liên tục. Đồng thờido nhiều yếu tố khách quan hay
chủ quan mà việc tiếp thu những kiến thức mới còn hạn chế.
Nên người viết rất mong sự đóng góp nhiệt tình của các thầy
cô, các bạn đọc; Dể việc tiếp thu kiến thức mới tốt hơn và
đút kết được nhiều kinh nghiệm trong tương lai.

Xin chân thành cảm ơn.

SVTH :

Hiền

Lê Trung


II :

CƠ BẢN VỀ MATLAB
>>>oOo<<<II>>>oOo<<<

I. Bắt đầu với matlab
Matlab được khởi động khi ta chọn matlab trong hệ thống
(tức là nhấp start _ programs _ matlab _ matlab5.3), hay
nhấp(click) vào biểu tượng của Matlab. Khi đó Matlab sẽ xuất
hiện trên màn hình, với một vài lời giới thiệu ban đầu và sau
đó là dấu nhắc hệ thống “>>” trong Matlab. Từ đó ta có thể
thực hiện việc tính toán hay thực hiện các câu lệnh một cách

dễ dàng.
Muốn thoát khỏi Matlab, ta có thể thực hiện một trong những
cách sau:
 Cách 1: vào file menu và click vào Exit MATLAB.
 cách 2: nhấp vào biểu tượng close ( )trên cửa sổ làm việc
của Matlab.
 Cách 3: dùng tổ hợp phím ctrl+Q
II. Các biểu thức toán cơ bản trong matlab.
Làm việc trong môi trường Matlab thì không phức tạp lắm
bởi vì hầu hết các lệnh đã được nhập vào vì vậy bạn chỉ cần
viết biểu thức toán học và enter sau đó Matlab sẽ hiển thị kết
quả trên màn hình.
Ví dụ 1: Tính A= 4:3 ta thực hiện như sau:
» A=4/3
Kết quả là:
A=
1.3333
Tức là biến A có giá trị 4:3=1.3333. Trong Matlab công nhận
tên biến có tối đa 19 kí tự và kí tự đầu tiên của tên biến phải
là chữ cái. Chú ý việc đặc tên biến là kí tự thường hay kí tự
hoa là hoàn toàn khác nhau tron g Matlab, ví dụ như biến A và
biến a là khác nhau hoàn toàn.Nhưng hầu hết những lệnh lệnh
trong Matlab được viết bằng kí tự thường.
Trong trường hợp không đặt tên biến cho biểu thức và chỉ
muốn kết quả của biểu thức ta có thể thực hiện :
» 4/3
Kết quả là:
ans =
1.3333
Trong trường hợp này Matlab tạo ra một biến giả tên là ans

(tức là viết tắc của từ answer).
Một cách khác muốn tạo ra một biến mới nhưng không muốn
hiển thị kết quả trong Matlab, bằng cách ta thêm dấu chấm
phẩy (;) ở cuối biểu thức.
ví dụ 2 : khi thực hiện lệnh


» B=4+7;
Ta không nhận được kết quả trên màn hình.Muốn hiển thị để
kiểm tra giá trị của biểu thức ta nhập vào như sau:
»B
Ta có kết quả:
B=
11
Trong Matlab khi một câu lệnh hay biểu thức quá dài ta sử
dụng dấu (...) để nối câu của hàng trên và hàng dưới.
ví dụ 3: tính p=1+2+3+4+5+6 dùng hai hàng ta thực hiện :
» p=1+2+...
3+4+...
5+6
kết quả cho:
p=
21
Khi tính mũ x cơ số y nào đó ta dùng toán tử sau:
ví dụ 4: tính p2 ta thự hiện lệnh:
» p^2
Kết quả nhận được:
ans =
441
( tức là 212=441)

 Một số toán hạng cơ bản sử dụng trong Matlab:
^
*
/ hay \
+
-

phép
phép
phép
phép
phép

toán
toán
toán
toán
toán

lũy thừa
nhân
chia
cộng
trừ

Trong trường hợp phép chia có hai loại : phép chia trái (\) và
phép chia phải (/), chúng hoàn toàn giống nhau nhưng số bị chia
và số chia bị đảo ngược.
Ta có : a/b=a-1.b
vậy

a\b = b/a = b-1.a
Sau đây là một số ví dụ về biểu thức toán cơ bản :
ví dụ 5 : tính x=1+23/4*2
» x=1+2^3/4*2
kết quả là:
x=
5
ví dụ 6: tính x=1+23/(4*2)
» y=1+2^3/(4*2)
Kết quả là:
y=
2
ví dụ 7: tính x=(1+2)3/(4*2)


» z=(1+2)^3/(4*2)
Kết quả cho
z=
3.3750



chú ý: Những biến mặc định trong Matlab
pi
hằng số pi=3.1416
Inf là giá trị ở 
NaN
là giá trị của (0/0) hay (Inf/Inf)

ví dụ 8:

» d=4/0
Kết quả cho:
Warning: Divide by zero. ( cảnh báo chia cho 0)
d=
Inf
ví dụ 9:
» c=Inf/Inf
kết quả cho:
c=
NaN
việc nhập vào Matlab một số phức là hoàn toàn đơn giản .
ví dụ 10 : nhập t=2+3i hay 2+ 3j cũng được
» t=2+3*i
Kết quả:
t=
2.0000 + 3.0000i
ví dụ 11 : Tìm căn bậc hai của số phức : 2+3i
» z=sqrt(2+3*i)
Kết quả:
z=
1.6741 + 0.8960i

 chú ý: Hàm sqrt

tìm căn bậc hai

III. Tạo ra một tập tin nguyên bản (script file)
Để thực hiện một công việc gồm một chuổi các động
tác tính toán và dễ dàng lưu trữ ta nên tạo ra một tập tin gọi
là Scrip File. Đây là một tập tin có phần mở rộng là “.m” và

được viết trong màn hình soạn thảo của Matlab. Cấu trúc cơ bản
của script file gồm hai phần, được miêu tả như trong ví dụ sau:
%****************************************************


% baitap1.m
% bai tap 1
% tao ra mot da thuc nhu sau
%
18(s+20)
%G(s) = ------------------%
(s+15)(s+25)(s+0.4)
% bien NUM tao ra bieu thuc cua tu
% bien DEN tao ra bieu thuc cua mau
% lenh CONV dung de nhan hai da thuc
% ham printsys dung de viet ra bieu thuc num/den
%****************************************************
num = 18*[1 20];
den = conv(conv([1 15], [1 25]), [1 0.4]);
B
printsys(num,den,'s')
%***************************************************

A

Đây là Script File có tên là baitap1.m gồm:
 phần A: gọi là phần giải thích, nó được lờ đi trong Matlab khi
tính toán. Và chỉ xuất hiện khi trong Matlab ta gỏ lệnh:
>> help baitap1
 Phần B: là toàn bộ chương trình chính và sẽ được Matlab thực

thi khi ta gọi đúng tên baitap1.
IV. Ma trận, vectơ và đa thức
IV.1. Những lệnh về ma trận và vectơ
Ma trận được nhập vào Matlab bằng cách liệt kê các
phần tử của ma trận và cho chúng vào trong một dấu ngoặc
vuông. Các phần tử của một hàng được phân cách bởi dấu
phẩy hoặc các khoảng trống, và các hàng được phân cách
bằng dấu chấm phẩy “;”.
Ví dụ khi nhập vào Matlab:
» A=[1 2;3 4]
Kết quả ta được ma trận A như sau:
A=
1
3

2
4

Ta cũng có thể nhập theo cách sau:
» A=[1 2
3 4]
Để tìm kích thước của ma trận A ta dùng lệnh size như sau:
» size(A)
Kết quả:
ans =
2
2 (Tức là ma trận A có kích thước là 2x2 ).
Muốn thay đổi phần tử thứ hai của hàng thứ hai (tức là 4)
thành số 5 ta thực hiện:
» A(2,2)=5

Kết quả cho:
A=
1
3

2
5


Khi ta thêm một phần tử vào một ma trận mà vượt quá kích
thước tồn tại của ma trận, thì Matlab sẽ tự động thêm vào các
số 0 cần thiết để duy trì một ma trận vuông. Như ví dụ sau:
» A(3,3)=6 (thêm phần tử ở cột thứ ba và hàng thứ ba là
6)
Kết quả cho:
A=
1
2
0
3
5
0
0
0
6
Như ta biết vectơ là một ma trận (1 x n) hay là một ma trận (n x
1), trong đó n là một số nguyên dương. Ta cũng có thể tạo ra
các vectơ theo cùng cách với ma trận, ví dụ như:
» V=[sin(pi/3) -7^3 56]
Kết quả cho:

V=
0.8660 -343.0000 56.0000
Trong trường hợp đặc biệt vectơ cũng có thể tạo ra dùng toán
tử hai chấm “:”, ví dụ như:
» K=1:5
Kết quả cho ra một vectơ từ 1 đến 5 với bước nhảy là 1
K=
1
2
3
4
5
Khi muốn bước nhảy là một số delta bất kì ta thực hiện lệnh
tổng quát như sau: >> K = 1:delta:5
Ví dụ tạo một vectơ từ 1 đến 2 với bước nhảy là 0.3 ta gỏ:
» K=[1:0.3:2]
Kết quả hiển thị như sau:
K=
1.0000 1.3000 1.6000 1.9000
Lệnh logspace(x,y,n) tạo ra một vectơ với n các phần tử được
đưa vào trong số gia logarit giữa 10x và 10y .Lệnh này được sử
dụng để vẽ bản đồ theo tỉ lệ logarit như đồ thị Bode. Lệnh
linkspace cũng giống như lệnh logspace ngoại trừ các phần tử
của vectơ được sắp đặt theo tuyến tính.
Khi muốn thêm vào ma trận A ở trên một hàng ta thực hiện
như sau:
» A=[A;[7 8 9]] (thêm vào ma trận một hàng 7 8 9)
kết quả cho:
A=
1

3
0
7

2
5
0
8

0
0
6
9

ma trận A ban đầu
hàng được thêm vào

ma trận A có được
Từ ma trận A có được ở trên ta trích ra một ma trận B gồm
hàng 2 và hàng 3 của ma trận A, thực hiện như sau:
» B=A(2:3,1:3) ( tức là lấy hàng 2 và 3; cột 1 đến cột 3 của


ma trận A)
Kết quả cho:
B=
3
5
0
0

0
6
Hay thực hiện lệnh sau:
» B=A(2:3,:) ( tức là ma trận B lấy hàng 2, 3 và tất cả các
cột cua ma trận A)
Kết quả cho giống như trên:
B=
3
5
0
0
0
6
Matlab có các lệnh để tạo ra các ma trận đặc biệt. Ví dụ ta
có thể tạo ra một ma trận chéo với lệnh diag bằng cách dùng
các vectơ chứa các phần tử chéo như đối số đầu vào, như là:
» D=diag([1 2 3])
Kết quả thu được:
D=
1
0
0
0
2
0
0
0
3
Một ma trận đặc biệt hữu dụng khác là ma trận đồng nhất
eye(a) với a là số nguyên sẽ tạo ra một ma trận đồng nhất có

kích thước là a x a. Tương tự khi thực hiện lệnh eye(size(B)) sẽ
tạo ra một ma trận đồng nhất có cùng kích thước với ma trận
B. Lệnh zeros, ones và rand làm việc giống như lệnh eye và tạo
matrận với những phần tử là 0, những phần tử bằng 1 và
những phần tử ngẫu nhiên (được phân chia đồng đều từ 0 đến
1) tương ứng. Những lệnh này cũng dùng để tạo ra những
matrận không vuông. Ví dụ như zeros(2,4) tạo ra matrận 2 x 4 của
số 0 như sau:
» zeros(2,4)
ans =
0
0
0
0
0
0
0
0
Bây giờ ta xét ví dụ sau:
» A = [zeros(3,1) eye(3) ; -1
Kết quả thu được:
A=
0 1 0 0
0 0 1 0
0 0 0 1
-1 -2 -3 -5

-2

-3


-5]

tạo ra từ zeros(3,1)
tạo ra từ eye(3)

tạo ra từ vectơ [-1 -2 -3 -5]

IV.2. Các lệnh về đa thức
Đa thức được diễn tả trong Matlab bởi hàng vectơ với
những phần tử là những hệ số của đa thức theo thứ tự giảm
dần của số mũ.


Ví dụ: nhập vào đa thức p = s2+5s+6,ta thực hiện trong MATLAB
là: p = [1 5 6].Hệ số zero cũng được thêm vào để tránh sự mơ
hồ; Như là nhập đa thức q = s3+5s+6 ta nhập vào như sau q= [1
0 5 6]. Một đa thức có thể tính được giá trị ứng với giá trị
từng biến bằng cách dùng lệnh polyval.
Ví dụ :
» polyval(p,1)
Kết quả thu được:
ans =
12 (tức là cho giá trị của đa thức p với s = 1)
Lệnh roots thì thuận lợi cho việc tìm nghiệm của đa thức .
Ví dụ :
» r = roots (p)
Kết quả cho:
r=
-3

-2
Tương tự ta có thể xây dựng đa thức từ nghiệm của nó
ví dụ :
» t = poly ([-4 -5])

t=

1 9 20
Lệnh conv dùng để nhân hai đa thức và deconv để chia hai đa
thức
Script file polyroly.m được thể hiện dưới dây mô tả những
lệnh đã dùng .
Polyroly.m
% polyroly
% examble of multiplying and dividing polynomials.
f1 = [1 3 2];
% f1 = s^2 +3s +2
f2 = [1 3];
% f2 = s+3
f3 = [1 2];
% f3 = s+2
g = conv (f1,f2)
;
% g = (s^2 +3s +2)(s+3)
h = deconv (g,f3)
% h = (s^2 +3s +2)(s+3)/ (s+2)



chú ý:Matlab sử dụng % dể diễn giải, những thứ theo sau %

xem như lờ đi trong MATLAB .
Khi gỏ tên của script file không có đuôi .m ta được kết quả là:
» polyroly
h=
1

4 3
Trong ví dụ trên g chia cho f3 không có số dư. Nói chung
khi ta sử dụng một đối số nhập vào, thì lệnh deconv sẽ
cho ra duy nhất một thương số dù cho số dư không phải là
0. Tuy nhiên nếu sử dụng hai đối số nhập vào thì Matlab
sẽ trả về hai giá trị thương q và số dư r như sau:
» [q,r] = deconv(f1, f3)
Kết quả là:
q=
1 0
r=


0

0

2

 Ta có bảng tóm tắt các lệnh trong đa thức
poly : cho đa thức từ nghiệm
roots : tìm nghiệm của đa thức
polyval : giá trị của đa thức cho bởi một điểm
polyvalm : ước lượng ma trận của đa thức

conv : nhân hai ma trận
deconv : chia hai ma trận
residue :phân tích phân số thành từng phần
polyder : đa thức đạo hàm
polyfit : đa thức nội suy
V. Toán tử và hàm trong ma trận
Matlab thi hành những phép toán trong ma trận một cách dễ
dàng như thực hiện trong phép toán vô hướng, đơn giản chỉ
cần gỏ:
» B+ D
ans =
6 0
0 8
Tương tự cho nhân hai ma trận:
»B*D
ans =
5 0
0 12
Phép chia hai ma trận cũng tương đối đơn giản. Nhưng matlab
cần phân biệt hai biểu tượng của phép chia là / và \. Giả sử
bạn muốn tìm x trong phương trình Px = Q. Giải pháp diễn tả là :
x = P-1Q trong Matlab dùng phép chia trái như : x = P\Q. Bây giờ giả
sử muốn tìm y trong phương trình yP = Q, diễn tả là y = Q.P -1 . Trong
Matlab sử dụng phép chia phải như :
y = Q/P. Mặc dù Matlab không cần những lời chỉ dẫn trong nhân
hoặc chia hai ma trận nhưng nó qui định kích thước bên trong hai
ma trận nhân hay chia phải giống nhau. Ngoại trừ việc nhân
hoặc chia một matrận với một đối số vô hướng, số nàylà
giá trị tính toán. Matlab sẽ cảnh báo nếu bạn nhân hai ma trận
có kích thước không thích hợp.

Ví dụ như chạy chương trình mistake.m
mistake.m
»
»
»
»
»

% mistake: show what happens when you try to multiply
% matrices having incompatible dimensions.
x = eye(2);
y = [1 2;3 4;5 6];
z = x*y

Matlab hiển thị lỗi như sau khi chay chương trình trên:
??? Error using ==> *
Inner matrix dimensions must agree.
error in = =>mistake.m


on line 5 = => Z = x * y;
Để gở lỗi ta nhập lệnh size(x) và size(y) để kiểm tra
kích thước của ma trận x và y. Tuy nhiên bạn sẽ tìm thấy x
là matrận 2 x 2 và y là matrận 3 x 2 .
Matlab bao gồm nhiều chức năng khác biểu diễn sự hoạt
động của matrận, như là lệnh det(X) và inv(X) kết quả
tạo ra định thức (determiant) và nghịch đảo (inverse) của X
theo từng cái tương ứng. Hàm rank(X) xác định loại của
matrận X . Hàm eig(X) trả về giá trị của X trong một cột
vetơ. Hàm expm(X) để tính ex.




Chú ý rằng có những chức năng qui định việc nhập
các đối số vào matrận vuông. Để khảo xác thêm vài
chức năng khác và học nhiều hơn về cách dùng của
những chức năng trên ta dùng lệnh help để diễn tả .
Matlab cho ta cách dùng các hàm khác nhau để tính toán
trên các chuổi thay vì trên các ma trận. Ví dụ giả sử ta
có một bảng số liệu như một chuổi gọi là Data. Bây giờ
ta muốn tính căn bậc hai và tìm bình phương của mổi phần
tử trong Data. Dùng một dấu chấm “.” ta có thể biến đổi
các toán tử ma trận toán học thành toán tử phần tử
liên tục. Đặc biệt theo sau các toán tử là dấu “.” là biểu
thị toán tử chuổi. Như vậy để nhân hai chuổi R và S có
cùng kích thước theo từng phần tử tương ứng ta thực hiện
R.*S như dưới đây:
»R=[4 5
0 1];
»S=[2 3
4 6];
» R.*S
ans =
8 15
0
6
Matlab có một vài chức năng tự động tính theo từng
phần tử tương ứng trong một dãy. Ví dụ như , exp(X) sẽ trở
về một dãy với từng phần tử được trở thành hàm e
mũ của từng phần tử tương ứng của X.

Matlab tạo ra các toán tử liên hệ của từng phần tử.
Toán tử liên hệ này sẽ so sánh hai đại lượng và cho ra
kết quả là 1 nếu đúng và bằng 0 nếu sai. Ví dụ nếu
nhập vào t = 17 > 55, matlab sẽ cho kết quả t = 0. khi ta sử
dụng với hai ma trận, toán tử ma trận sẽ so sánh tương
ứng từng phần tử trong ma trận. Ví dụ như , L = D <= X sẽ
kiểm tra mỗi phần tử của ma trận D tương ứng với từng
phần tử của X. Nếu phần tử của D nhỏ hơn hoặc bằng
với phần tử của X tương ứng thì L có giá trị là 1, ngược
lại L có giá trị bằng 0.
Tất cả các toán tử logic như & đặc trưng cho ANDø , | đặc
trưng cho OR và ~ cho NOT tất cả trả về giá trị 1 nếu
đúng và 0 nếu sai.
Ví dụ:
» R& S


ans =
1
0
Tương tự :
» ~L

1
1

ans =
0 0
0 1
Ta có thể nghiên cứu thêm về toán tử so sánh bằng

cách dùng lệnh help relop hoặc help <=
VI. Tạo hàm chức năng
Khi bạn đã nắm vững một chuổi các lệnh thực hiện
những chức năng hữu dụng, có thể ta muốn biến nó
thành một lệnh hàm mới và tạo ra một nhánh làm việc
độc lập với Matlab. Muốn thực hiện được điều này ta phải
tạo ra một file hàm. Các file hàm này là các m-file, các
file này giống như script file. Sự khác biệt lớn là hàng đầu
tiên của file hàm bắt đầu với từ function, theo sau là
một câu xác định tên của hàm và các đối số đầu
vào, đầu ra; có dạng :


Function[đối số ngõ vào]=tên hàm(đối số ngõ ra).

Ví dụ: tao ra hàm timnghiem2 để tìm nghiệm phương trình
bậc hai với hệ số a#0. Ta thực hiện như sau:

% timnghiem2.m
% Tao ra ham timnghiem2 de tim nghiem phuong tring bac hai:
% 2
% a.x + b.x + c = =0 (voi he so a#0 )
% GV huong dan : TS. LE CANH TRUNG
% Duoc viet boi : LE TRUNG HIEN MSSV:95101051
%
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~
function [x1,x2] = timnghiem2(a,b,c) % tao ham timnghiem2
can_delta=sqrt(b^2-4*a*c); % tim can bac hai cua delta
x1=(-b+can_delta)/(2*a); % tinh nghiem x1

x2=(-b-can_delta)/(2*a); % tinh nghiem x1
%
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~

%
%
%
%
%
%

Để xem hàm có tác dụng không?. Ta tao ra một Script file
bt_thu.m bằng cách cho nhập vào các hệ số a,b,c và
dùng hàm timnghiem2 để tìm nghiệm. nhö sau:

bt_thu.m
thu tim nghiem phuong trinh bac hai
dung file ham da tao la timnghiem2
GV huong dan : TS. LE CANH TRUNG
Duoc viet boi : LE TRUNG HIEN MSSV:95101051
++++++++++++++++++++++++++++++++++++++++++++++++++++

+
a=input('nhap vao he so a (voi a#0): ') % cho nhap vao he so a tu ban
phim
b=input('nhap vao he so b: ') % cho nhap vao he so a tu ban phim
c=input('nhap vao he so c: ') % cho nhap vao he so a tu ban phim
disp('ta co cac nghiem sau: ') % hien thi cau lenh trong dau (' ')



[x1,x2]=timnghiem2(a,b,c)
% ++++++++++++++++++++++++++++++++++++++++++++++++++++
+

Bây giờ ta cho chạy thử bt_thu.m ở ngoài dấu nhắc
Matlab như sau:
» bt_thu
nhap vao he so a (voi a#0): 1
a=
1
nhap vao he so b: -3
b=
-3
nhap vao he so c: 2
c=
2
ta co cac nghiem sau:
x1 =
2
x2 =

1
Khi ta thực hiện lệnh sau ngoài dấu nhắc Matlab ta được:
» help timnghiem2
Kết quả hiển thị:
timnghiem2.m
Tao ra ham timnghiem2 de tim nghiem phuong tring bac hai:
2
a.x + b.x + c = =0 (voi he so a#0 )

GV huong dan : TS. LE CANH TRUNG
Duoc viet boi : LE TRUNG HIEN MSSV:95101051
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~
VII. Những vấn đề cơ bản về đồ thị
Matlab cho phép vẽ đồ thị trong những cửa sổ khác nhau,
và tên là “figures”.Một cách mặc nhiên matlab vẽ đồ thị trong
cửa sổ số 1. Nếu ta muốn mở cửa sổ thứ n chúng ta dùng
lệnh figure(n),với n là số nguyên.Bây giờ matlab sẽ vẽ đồ thị
trên cửa sổ n này trừ phi người sử dụng thay đổi cửa sổ
mới.Muốn đóng cửa sổ n này ta dùng lệnh close(n),lệnh close
all đóng tất cả các cửa sổ,trong khi lệnh close chỉ đóng duy
nhất một cửa sổ nguồn .


VII.1. Đồ thị trong không gian hai chiều.
Bây giờ ta sẽ làm việc trong cửa sổ đầu tiên.Lệnh chính
để vẽ đồ thị hai chiều là plot.
Ta bắt đầu bằng ví dụ đơn giản, để vẽ đồ thị của dảy sau:
{o,0.48,0.84,1,0.91,0.6,0.14} ta thực hiện
» Y=[0 0.48 0.84 1 0.91 0.6 0.14]
Y=
0 0.4800 0.8400 1.0000 0.9100 0.6000
0.1400
» plot(Y)
Ta có được kết quả như hình 1 ở dưới:
Từ hình 1 ta có một số nhận xét sau:
 Trục chia độ là tự động
 Tiêu đề của cửa sổ là “Figure No. 1” để chỉ cửa sổ đang
làm việc là cửa sổ nguồn.

 Điểm nối trong đồ thị là những đường liên tục.

 Chú ý: lệnh plot còn chấp nhận một tham số chuổi để dịnh
màu và kiểu nối của đồ thị.Matlab có bốn kiểu cho đường
vẽ,năm kiểu cho điểm vẽ và tám màu cơ bản,được tóm tắt
như sau:
kiểu đường
-:
-.

kiểu điểm
.
+
*
o
x

kiểu màu
vàng
y
tím
m
xanh nhợt c
đỏ
r
xanh lơ
g
xanh lơ
b
trắng

w
đen
k


×