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
Trang 1BỘ GIÁO DỤC VÀ ĐÀO TẠO CỘNG HÒA XÃ HỘI CHỦ NGHĨA VỆT NAM
ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH ĐỘC LẬP - TỰ DO - HẠNH PHÚC
TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT -o Oo -
TP HỒ CHÍ MINH
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
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 SVTH Thông qua bộ môn
Chủ nhiệm bộ môn
Lê cảnh Trung Lê Trung Hiền
Trang 2BẢ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
Trang 3BẢ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
Trang 4ớ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 quí 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
Trang 5TÀI LIỆU THAM KHẢO
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
Trang 6LỜ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
Trang 7 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
Trang 8Màn hình DEMO của Matlab
Trang 9I 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ự
Trang 10II 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
Trang 11III 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
Trang 12II : 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)
Trang 13Mộ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 :
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:
^ phép toán lũy thừa
* phép toán nhân
/ hay \ phép toán chia
+ phép toán cộng
- phép toán 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 :
Trang 14 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)
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
Trang 151.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
% 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
Đâ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
Trang 162 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:
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ụ
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
Trang 17Lệ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 10 x và 10 y 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:
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
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ả
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,
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
Trang 18giố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:
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 = s 2 +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 = s 3 +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
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
Trang 19Lệ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
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
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ư
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
Trang 20Matlab 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
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
Để 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 e x
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
Trang 21chứ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:
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
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 <=
Trang 22VI 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 ( ' ' )
Trang 23a.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 =
Trang 240 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 kiểu màu
- : -
+
*
o
x
vàng y tím m xanh nhợt c đỏ r xanh lơ g xanh lơ b trắng w đen k
hình 1
Nếu chúng ta muốn vẽđồ thị ứng với mỗi điểm của vectơ Y ở
trên là những vòng tròn màu tím,ta dùng lệnh sau:
» plot(Y,'om')
Kết quả là hình 2 ở dưới:
Trang 25chú ý: trong lệnh plot(Y,'om'); ‘om’ là vẽ những điểm
của vectơ Y là những vòng tròn (o) có màu là màu tím
(m_magenta)
Bây giờ ta muốn thêm các tiêu đề,đặt tên trục,và vẽ những
đường lưới,cách thực hiện như sau:
Muốn chèn một văn bản text vào một tọa độ (x,y) nào đó
trong đồ thị ta dùng lệnh:
» text(x,y,'text')
Khi ta dùng lệnh gtext(‘text’) thì chử text sẽ được chèn
vào trong đồ thị khi ta nhấp chuột vào một vị trí thích hợp
nào đó trên đồ thị
hình 2
Trang 26
hình 3 Bây giờ ta muốn vẽ đồ thị của một hàm y=f(x), thì lệnh
plot(t,y) sẽ vẽ trên đồ thị những cặp tương ứng (ti,yi)
Ví dụ: vẽ đồ thị hàm sin(t) với t=[1;4*pi] ta dùng:
» t=(0:0.05:4*pi);
» y=sin(t);
» plot(t,y)
» title('Do thi ham sin(t)')
» xlabel('Truc thoi gian')
» ylabel('Truc bien do')
» grid on
Trang 27Kết quả cho hình 4:
hình 4 VII.2 Vẽ nhiều đồ thị trên cùng một trục
Đây là phương pháp tốt nhất để so sánh nhiều đồ thị
trên cùng một đồ thị.Có hai cách thức cho việc vẽ nhiều dồ
thị :
a Nếu chúng ta cần vẽ nhiều đồ thị với cùng giá trị
hoành độ, ta có thể sử dụng lệnh plot(X,Y) với :
Nếu Y là ma trận và X là một vectơ, thì những cột (hoặc
những hàng)của ma trận Y được vẽ ứng với những giá trị
trong vectơ X;
Nếu X là ma trận và Y là một vectơ, thì những cột (hoặc
những hàng)của ma trận X được vẽ ứng với những giá trị
Trang 28hình 5
Chú ý: Trục chia độ là tự động và được xác định trên cơ sở
giá trị lớn nhất và nhỏ nhất trong ma trận y và vectơ t phù
hợp với tung độ và hoành độ
b Nếu giới hạn của hoành độ khác nhau Thì ta dùng lệnh
plot với nhiều đối số ngõ vào như sau:
Trang 29VII.3 Trục chia độ
Như đã nói ở trên, trục chia độ là tự động.Nhưng để
thực hiện vẽ đồ thị với trục chia theo ý muốn chúng ta nên
sử dụng lệnh axis.Lệnh này có ba chức năng chính:
Lệnh axis([xmin,xmax,ymin,ymax]) dùng thay đổi trục
hoành và trục tung trong khoảng xmin,xmax và ymin,ymax
Lệnh axis(axis) dùng để ổn định trục chia độ
Lệnh axis(‘auto’) phục hồi lại chứ năng chia độ tự
động
Chú ý : lệnh v=axis giữ giới hạn trục nguồn trong vectơ v
Nếu một trong những giới hạn có giá trị là inf, thì giá trị
của trục còn lại cũng ở vô cùng tương ứng;lúc đó ta có :
axis([inf inf inf inf]) giống như dùng lệnh
axis(‘auto’)
* Các khả năng khác của trục chia :
lệnh axis(‘ij’) là dùng tọa độ ma trận với chiều thẳng
dứng của trục chỉ hướng xuống
lệnh axis(‘xy’) là dùng tọa độ Cartesian với chiều
thẳng dứng của trục chỉ hướng lên
axis(‘off’) không cho hiện trục chia độ
axis(‘on’) cho hiện trục chia độ
Có thể dùng lệnh zoom để phóng to từng chi tiết của đồ thị
bằng cách dùng chuột Khi nhấn nút trái chuột tức là phóng
to vùng đó lên, nhấn nút phải chuột để trở về tình trạng
ban đầu chức năng zoom off tắt chế độ phóng to
Để vẽ một vectơ phức (X) trong mặt phẳng phức ta cũng có
thể dùng lệnh plot(X) kết quả cũng giống như lệnh:
plot(real(X),imag(X))
Trang 30III ứng dụng MATLAB trong
tự động điều khiển
<<< oOo >>>
Trong chương này chúng ta định rõ tính chất điều
khiển với những lệnh trong hộp công cụ của hệ thống tự
động điều khiển có liên quan đến sự trình bày trong hệ
thống tuyến tính bất biến theo thời gian LTI (linear time
invariant system) và hình thức thay đổi giữa chúng,sự
chuyển đổi kiểu thời gian từ liên tục sang rời rạc, những
đặc tính vận dụng và quan sát, những hình thức giảm bậc và
mối liên lạc giữa nối tiếp, song song và phản hồi
Sự vận dụng và miêu tả trong hệ thống một ngõ vào, một
ngõ ra(SISO) và nột ngõ vào, nhiều ngõ ra (SIMO) cũng sẽ dễ
hiểu, trong khi sử dụng những lệnh tự động cho hệ thống
nhiều ngõ ra sẽ trở nên phức tạp từ khi MATLAB không hoạt
động với ma trận ba chiều
I sự miêu tả trong hệ thống LTI
Một hệ thống LTI được miêu tả dưới nhiều hình thức khác
nhau: trong lĩnh vực về thời gian được miêu tả bằng phương
trình vi phân bậc nhất (được gọi là trạng thái vào,ra hay
hình thức biến trạng thái), trong lĩnh vực phức tạp hơn là
hình thức hàm truyền của hệ thống Trong trường hợp đặc
biệt, chức năng này có thể được viết như tỉ số của hai đa
thức, bằng cách tìm nghiệm của chúng tức là dùng cực, zero
hoặc giới hạn bằng cách phân thành từng phần nhỏ hay sử
dụng thặng dư và cực
Trong phần này, ta quan tâm đến mối quan hệ trong hệ
thống liên tục theo thời gian Chúng ta sẽ đưa ra những
hình thức miêu tả trong matlab dùng những lệnh trong điều
khiển,từ đó ta có thể hiểu được sâu hơn trong hệ thống rời
rạc theo thời gian
I.1/ Mô hình biến trạng thái:
Trong mỗi hệ thống LTI có thể được trình bày bằng cách
đặt phương trình vi phân bậc nhất dưới dạng hình thức
vectơ:
x’= A.x+B.u (3.1)
Trong đó x là vectơ trạng thái có kích thước nx , u là một
vectơ ngõ vào có kích thước nu và y là vectơ ngõ ra có kích
thước là ny
Như ta đã biết ma trận là yếu tố cơ bản đầu tiên của
MATLAB Cho nên, một hệ thống trong MATLAB được miêu tả
bằng tình trạng vào ra tương như như việc ấn định bốn ma
trận A,B,C,D , được trình bày trong công thức (3.1) và
(3.2)
Ví dụ sự biến đổi trong hệ thống hai tầng tích phân như
hình sau:
Trang 311x01
00
I.2/ Mô hình ma trận chuyển đổi
Một sự miêu tả khác trong một hệ thống LTI có thể được
thi hành bằng phép biến đổi Laplace, như trong hệ thống
tín hiệu liên tục theo thời gian f(t) được định nghĩa là :
F(s) = L(f(t)) = f(t)e -st dt
0
Từ (3.1) và (3.2) lấy dạo hàm và biến đổi laplace Sau
vài phép biến đổi đại số ta được:
Y(s) = G(s)U(s) = (C( s I-A) -1 B+D)U(s)
Trong đó G(s) gọi là ma trận chuyển đổi( hay chức năng
chuyển đổi trong hệ thống SISO)
Nói tóm lại trong hệ thống SISO thì G(s) được cho từ tỉ số
của hai đa thức: Mẫu số có bậc là nx, và tử số có bậc nhỏ hơn
hoặc bằng nx Nó có khả năng ấn định bằng hai vecto được
cho bởi các hệ số trong đa thức của tử và mẫu và sắp xếp với
số mũ giảm dần theo biến số s
Như ví dụ sau, nếu chúng ta muốn miêu tả dưới dạng hàm
truyền:
s+2 G(s)=
s2+2s+7 chúng ta có thể ấn định như sau:
num = [1 2];
den = [1 2 7];
Trong hệ thống SIMO tử số của G(s) là một vectơ của đa
thức của tử ,hay nói khác hơn là một đa thức bậc nhất,trong
mỗi một mối quan hệ ta có các giá trị ngõ ra khác nhau
Trong trường hợp này ma trận có mối quan hệ với vectơ num;
trong trường hợp đặc biệt số các hàng của ma trận này là số
Trang 32ngõ ra của hệ thống, ngược lại số cột phải có giá trị lớn
nhất giữa chiều dài các dòng
Ví dụ để miêu tả ma trận chuyển đổi của hàm truyền:
s+2
s3+3s2+1 G(s)=
s3+5s+1 chúng ta phải định nghĩa ma trận như sau:
num = [0 0 1 2; 1 3 0 1];
den = [1 0 5 1];
Ở trường hợp này đa thức đã được sắp xếp theo số mũ giảm
dần của những biến phức s và được thêm vài số 0 để thành một
vectơ tương ứng khi mà số mũ s không xuất hiện trong đa
thức
I.3/ kiểu hình thức của zero và cực (zero và pole)
Hàm truyền trong hệ thống LTI có thể làm nổi bật bằng
sự miêu tả nghiệm của đa thức ở tử số (gọi là zero), và
nghiệm của đa thức ở mẫu số là cực (pole)
Ví dụ cho hệ thống SISO và hàm truyền có thể viết dưới hình
thức sau:
(s-z1)(s-z2) (s-zn z)
(s-p1)(s-p2) (s-pnp) Trong đó k là hằng số dộ lợi ( hay gọi là hệ số khuếch đại
) và z và p là nghiệm (có thể là nghiệm phức)của đa thức ở
tử và mẫu Một điều quan trọng có thể nói lại là MATLAB
dùng hàng của vectơ để biểu thị hệ số của các đa thức ở tử
và mẫu, và cột vectơ để biểu thị số nghiệm có trong hai đa
thức.( có thể xem lệnh roots và poly )
Trong vấn đề cơ bản đã đề cập ở trên , MATLAB có thể biểu
diển hàm truyển như sau:
(s-3)(s+1) G(s) = 5
(s+2)(s-4) Xem công thức 3.3 có kết quả biểu thị như sau:
Độ lợi : k = 5;
zero : zer = [3;-1];
cực : pol = [-2 4]’; hay pol = [-2;4];
Việc ấn định hai vectơ zer và pol, phải chú ý khi sử dụng
kí hiệu mà ta sử dụng trong những vectơ biểu thị nghiệm của
những đa thức tương ứng của tử và mẫu
Bây giờ ta có một ví dụ khác như sau:
1 G(s)=
(s-1-j)(s+1+j) Hàm truyền G(s) không có zero, như vậy ta có thể biểu
diển như sau:
Độ lợi : k =1;
Cực : pol= [-1+j;-1-j];