Cuốn giáo trình này được biên soạn cho sinh viên khoa Cơ học Kỹ th u ậ t và Tự động hóa, trư ờng Đại học Công nghệ, Đại học Q uốc gia Hà Nội nhằm giúp sinh viên làm quen với MATLAB, sử d
Trang 1DANG THE BA (Chü bien)
Trang 2D Ä N G THE BA (Chu b ien )
D IN H T R Ä N HIEP
MATLAB
VÄITNG DUNG TRONG C0 KY THUAT
NHÄ XUÄT BÄN OAI HOC QUÖC GIA HÄ NÖI
Trang 3M ục lụ c
Trang
Lc nói đ ầ u 7
PHẨN I MATLAB Cơ BẢN C iư ư n g 1 m k 1 Giới thiệu M A TLAB 11
1 M ột số kiến thức cơ b ả n 13
1 Sơ lược về M -file 22
1.‘ Tóm tắt chư ơ ng 1 24
1.í Bài tập chương 1 26
C ư ơ n ^ 2 VEĨOR VÀ M A TRÂM 2 Vector và m a trận trong M ATLAB 37
2 Thiết lập m a trận trong M ATLAB 37
2 Các phép toán cơ bản đối với m a trận, v e c to r 47
2 Đại SỐ tuyến tín h 50
2 Tóm tắt chư ơng 2 54
2 Bài tập chư ơng 2 55
C ư ơ n g 3
TÍH TOÁN SỐ VỚI MATLAB
Trang 44 MATLAB VÀ ỨNG DỤNG TRONG c ơ KỸ THUÂT
3.2 H àm vô d a n h 70
3.3 Cực trị và nghiệm của hàm số m ột biến s ố 71
3.4 Đa thức m ột biến s ố 75
3.5 Tích phân và đạo h à m 77
3.6 P hương trình vi p h â n 79
3.7 Tóm tắt chương 3 81
3.8 Bài tập chương 3 82
c h ư ơ n g ’ 4 Bộ CÔNG CỤ KỶ HIỆU 4.1 Giới thiệu biến ký h iệ u 89
4.2 Biên và biểu th ứ c 91
4.3 Ma trận biến ký h i ệ u 96
4.3 Tích phằn và đạo hàm đa thức biến ký h iệ u 98
4.4 Phương trình vi phân và hàm số biến ký h i ệ u 100
4.5 Tóm tắt chương 4 102
4.6 Bài tập chương 4 103
c l i ư ơ n g 5 MÀNG HỖN HỢP VÀ Dữ LIỆU có CẤU TRÚC 5.1 M áng hỗn h ợ p 112
5.2 Biến có cấu t r ú c 118
5.3 Tóm tắt chương 5 131
5.4 Bài tập chương 5 132
C hương' 6 ĐỒ TH! TRONG MATLAB 6.1 Đổ thị trong không gian hai ch iều 137
6.2 Đổ thị trong không gian ba c h iề u 150
Trang 5Mục lục 5
6.3 Tóm tắt chương 6 157
6.4 Bài tập chương 6 159
c i iư ơ n g 7 LẬP TRÌNH TRONG MATLAB 7.1 Giới th iệu M -file 169
7.2 Các lệnh lự a chọn 178
7.3 Vòng l ặ p 187
7.4 Tóm tắ t chương 7 191
7.5 Bài tập chương 7 192
PHẨN II MATLAB ỨNG DUNG c h ư ơ n g 8 PHÂN TÍCH OỘNG HỌC cơ CẤU 8.1 Xác định vị trí các khâu, khớp trong cơ c ấ u 199
8.2 Khao sát chuyến động và tạo đ oạn phim m ô phòng chuyến động của cơ c ấ u
8.3 Vận tốc và gia tố c 207
8.4 Bài tập chương 8 214
C h ư ơ n g 9 LÝ THUÍẾT ĐIỀU KHIỂM Tự ĐỘI1G 9.1 Biến đổi L ap lace 231
9.2 Biến đổi z 235
9.2 Xây d ự n g các hệ tuyến tính - d ừ n g 238
9.3 Tóm tắ t chư ơng 9 252
9.4 Bài tập chư ơng 9 253
Trang 66 MATLAB VA liNG DUNG TRONG CÖ KY THÜÄT
Phu luc: MÖT SO BÖ CÖNG CU LiNG DUNG CHUYEN SAU
TRONG M A TLAB 269TAI LIEU THAM K H A O 233
D A N H MUC H Ä M 277
Trang 7T > • f • 4- ^
Lời nói đau
MATLAB là m ột gói p h ần m ềm m ạnh đ ang được sử d ụ n g rộng rãi cho nhiều m ục đích của nhiều đối tượng khác nhau, đặc biệt là trong khoa học và kỹ thuật MATLAB có th ể sử d ụ n g theo hai cách khác nhau:
T h ứ nhất là sử d ụ n g các lệnh lần lượt đ ư a vào dâu nhắc và thu dược kết quà (thông dịch); th ứ hai là viết các lệnh thành m ột file (có thê là file lệnh - scrip file hoặc dạng hàm - function file) và các lệnh được thực hiện tự động ngay sau khi gọi thực hiện thông qua gọi tên file
MATLAB được trang bị sẵn nhiều hàm đ ể thực hiện các nhiệm vụ khác nhau thuộc nhiều lĩnh vực, tù đơn giản thực hiện các phép tính toán học đến các nhiệm vụ phức tạp n h ư tìm nghiệm của phư ơng trình
vi phân, tôi ưu hóa, xử lý ản h T h êm nửa, MATLAB còn được trang bị các câu lệnh câu trúc d ù n g cho lập trình cho phép người d ù n g tự phát triển các chương trình theo m ục đích riêng cho n h ữ n g bài toán cụ th ể gặp phài trong thực tế
Cuốn giáo trình này được biên soạn cho sinh viên khoa Cơ học Kỹ
th u ậ t và Tự động hóa, trư ờng Đại học Công nghệ, Đại học Q uốc gia Hà Nội nhằm giúp sinh viên làm quen với MATLAB, sử d ụ n g MATLAB đ ể giải các bài toán đơn gián và tiến tới lập trình tính toán mô phòng cho các bài toán cơ bản phứ c tạp hơn Khi đã nắm được n h ữ n g kiến thức cơ bản về kha năng, phư ơng thức làm việc của MATLAB và kỹ năng lập trình, sinh viên có th ể xây d ự n g các chương trình phứ c tạp hơn trong MATLAB đ ể giải quyết hiệu quả các vấn đ ề thực tế liên quan đến ngành học Cuốn sách được d ù n g kết hợp với các bài giảng và các buổi thực
h àn h đ ế trang bị n hữ ng kiến thức cần thiết cho các nhà khoa học và kỹ
sư tương lai nhằm n âng cao khả n ăng tính toán, xử lý và phân tích
n h ữ n g vân đề chuyên m ôn đa dạng với sự trợ giúp của m áy tính
Trang 88 MATLAB VÀ ỨNG DỤNG TRONG c ơ KỸ THUẬT
Nội d u n g giáo trình gổm các chương sau:
• C hương 1: M ờ đầu
• C hương 2: Vector và m a trận
• C hương 3: Tính toán sô' với MATLAB
• C hương 4: Bộ công cụ ký hiệu
• C hương 5: M ảng hôn hợp và d ữ liệu có cấu trúc
• C hương 6: Đồ thị trong MATLAB
• C hương 7: Lập trình trong MATLAB
• C hương 8: Phân tích động học cơ cấu
• C hương 9: Lý thuyết điểu khiển tự động
Kết thúc môi chương, sinh viên có th ể tự ôn tập và cung cố kiếnthức đã học qua m ục tổng hợp các lệnh trong chư ơng và bài tập có lờigiải tương ứng Đối vói n h ữ n g bài tập không có lời giải chi tiết, sinh viên có thê trao đổi với giảng viên trong các buổi thực hành
Ngoài ra đ ể cung cấp thông tin định hướng cho sinh viên m uôn tìm
h iểu thêm n hữ ng công cụ d ù n g cho n h ữ n g ứ n g d ụ n g chuyên sâu (Toolbox), m ột số bộ công cụ phô biến sẽ được giới thiệu tóm tắt trong
p h ần p hụ lục
C ác tá c g iá
Trang 9P H A N I MATLAB CO BÄN
Trang 10Chương 1
M Ở Đ Ầ U
1.1 G iói thiệu MATLAB
MATLAB (M ATrix LABoratory) là p hần m ềm của công ty
M ath W orks có trụ sở chính ở Natick, M assachusetts, Mỹ (w w w m ath w o rk s.co m ), được ứ ng d ụ n g rộng rãi tro n g các lĩnh vực khoa học, kỹ thuật, đặc biệt là điều khiển tự động và xử lý tín hiệu số MATLAB được p h át triển bời Cleve M oler vào cuối n h ữ n g năm 70 của
th ế kỷ trước trên cơ sở th ư viện n g u ồ n của LINPACK và EISPACK FORTRAN N h ữ n g phiên bản đ ẩu tiên cùa MATLAB chủ yếu phục vụ
cho tính toán xử lý m a trận v à giải các phư ơ ng trình đ ại SÖ tu yến tính
H iện nay, MATLAB còn được biết đến n h ư là m ột công cụ có khả năng
xử lý đổ họa m ạnh (Theo PC Magazine Encyclopedia).
Giao diện MATLAB
Khi khởi động, MATLAB sẽ hiện ra giao diện mặc định n hư hình 1.1, tro n g đó bao gồm các cửa sổ:
• C u rren t Folder: Thư m ục hiện hành, cho p h ép tru y xuất tói cácfile chứa trong nó
• C om m and W indow: Cửa sô lệnh, người d ù n g có th ể n hập lệnhtrên cửa sổ này từ sau d ấu nhắc ( » )
• W orkspace: Không gian bộ n h ó của MATLAB, d ù n g đ ể lưu trữ
d ữ liệu của các biên trong m ột phiên làm việc của MATLAB
• C om m and History: Lịch sử lệnh đã thực hiện, cho phép xemhoặc thực hiện lại n h ữ n g lệnh đã n h ập vào C om m and W indowtrước đó
Trang 1112 MATLAB VÀ ỨNG DỤNG TRONG c ơ KỸ THUẬT
* MATIAB R20UJ
File Edit Debug Parallel Desktop Window Help
: “J ¿3 | & % it *9 0 & ! # «3 # C:\MATLAB
Shortcuts j5J How to Add *} What's New
iö
ị « MATLAß - p ÖD © •
*1 Name
-h » 1 ? ] E ? © Select data to plot ~
Name * Value Mm Mai
Hìttlí 1.1 Giao diện MATLAB
Sau đây là m ột số ví d ụ đơn giản thực hiện trong C om m and
W indow: tại dâu nhắc » n hập câu lệnh sau:
sử d ụ n g biên ans (viết tắt của answer) đê lưu kết qua nàv
Trang 12Chương 1 Mở đầu 13
>> b - a
ans = 1
Khi câu lệnh kết thúc bởi dấu châm phẩy, MATLAB sẽ thực hiện
p h ép tính n h ư n g không hiển thị kết quả lên m àn hình
>> d = a*b;
Hai phím m ũi tên lên xuôhg t ị có th ể được sử d ụ n g đ ể gọi lại
n h ữ n g câu lệnh đã sử d ụ n g trước đó Có th ể sử d ụ n g hai phím này tại dâu nhắc » hoặc sau khi n hập m ột sô' ký tự đầu tiên của các ký tự đã sử
d ụng Ví dụ: đê gọi lại lệnh b = 2 chỉ cần n hập b và sau đó nhân phím
m ũi tên
Dâũ % được sử d ụ n g đ ể viết chú thích cho câu lệnh Mọi ký tự phía sau dâu % sẽ không được MATLAB xử lý Ví d ụ lấy a n hân với b và gán giá trị cho d:
>> d = a*b % lệnh gán giá trị tích a và b cho d
1.2 Một sô kiến thức cơ bản
1.2.1 Các pỉtíép toán thông dụng
Trong MATLAB các phép toán cộng, trừ, nhân, chia được biểu diên thông qua các ký tự đã quy đ ịn h trước Bảng 1.1 thê hiện các p hép toán thông d ụ n g và cách n hập các p hép toán này trong MATLAB
Trang 1314 MATLAB VÀ ỨNG DỤNG TRONG c ơ KỸ THUẬT
khoảng (0,1)
round(x) làm tròn tới sô'nguyên gân nhất
floor(x) làm tròn tới sô'nguyên bé hơn
ceil(x) làm tròn tới sô'nguyên lớn hơn
Khi m uốn xóa m ột hay nhiều biến, ta có thê sừ d ụ n g lệnh clear với
- Cú p háp th ứ n h ât cho phép xóa biến cụ th ể khói W orkspace còn
cú p h áp th ứ hai cho phép người sử d ụ n g xóa to àn bộ tât cà các biến, hàm hiện hành
Khi m uôn hiện d an h sách các biến có trong W orkspace, ta có thê
d ù n g w ho hoặc ivhos theo cú p háp sau:
>>who
Hoặc
» w h o s
Trong đó lệnh w h o chỉ liệt kê tên các biến, còn lệnh xvhos liệt kê cả
tên và các thông tin cụ thê v ề biến
Ví dụ: N hập d òng lệnh » a = 1; b = 2; c = 3;
Trang 14>>bien = input ('text' 's')
Trong đó: bien là tên biến bất kỳ do người sử d ụ n g đặt, text là đoạn văn bản sẽ hiển thị thành câu nhắc trên m àn hình, s là tham số đ ể
MATLAB hiểu và xử lý d ữ liệu n h ập vào ở d ạng xâu ký tự
Ở cả hai cú p háp trên, đ oạn văn bản sẽ được hiển thị trên m àn hình,
đ ồng thời MATLAB sẽ chờ người sử d ụ n g n h ập ký tự từ bàn phím ,
Trang 1516 MATLAB VÀ ỨNG DỤNG TRONG c ơ KỸ THUẬT
tuy nhiên khi sừ d ụ n g cú p háp th ứ nha't, người d ù n g chi có thê n hập vào m ột SỐ, còn ở cú p h áp th ứ hai, người d ù n g có thê n h ập vào m ột xâu
ký tự sau khi đã thông báo cho MATLAB bằng tham số s T rư ờ n g hợp
thực hiện lệnh in p u t khi người d ù n g không n h ập giá trị m à b âm trực tiếp phím Enter thì giá trị trả v ề sẽ là m ột m ảng rông
Ví dụ:
>> Lop = input('Ban hoc lop nao: 's')
Ban hoc lop n a o : Co Dien Tu
N h ập d ữ liệu từ file: load
Trong MATLAB có rất nhiều cách đê tải đ ũ liệu từ file vào
W orkspace, trong đó đơn gián n h ất là lệnh load cho p h ép tải toàn bộ nội
d u n g file vào W orkspace Yêu cầu khi sử d ụ n g lệnh load là nội d u n g file
được tải phải ò dạng ma trận chứa các sô, m ôi số ở các dòn g p hân cách nhau bằng ký tự trống, đáũ p hẩy hoặc tab File có th ể chứa các d ò n g chú thích trong MATLAB (các dòn g bắt đầu bằng ký tự %)
Cú pháp:
>>Ioađ name.ext
Trong đó name.ext là tên file chứa d ữ liệu cần tải N ếu trong p hần tên file không có p hần m ở rộng ext, MATLAB sẽ tìm trong th ư m ục hiện hành file có tên name.mat, nếu không tìm thấy name.mat hoặc tên file
k hông có p h ần m ở rộng không phải là mat (ví dụ: txt, dat) thì MATLAĨ3
sẽ coi file đó là file chứa d ử liệu ASCII
Trang 16Chương 1 Mở đầu 17
Lệnh load n h ư đã nói ờ trên sẽ cho p hép tải toàn bộ nội d u n g trong
file name.ext vào tro n g W orkspace.
Ví dụ: Tạo trong th ư m ục hiện h ành file diem.txt là m ột m a trận 5
copy cột 3 của diem vào vector z
N h ập d ữ liệu từ file: fscanf
Cho phép tải d ữ liệu từ file m a trận mà các kiểu d ử liệu của các
p hân tử là không giông nhau
C ú pháp:
>>A = fscanf(fid, format)
Trong đó file được xác định bởi tham số fid (file identifier) là số
nguyên xác định file có từ lệnh fopen (cú pháp: fid = fopen filename)),
format là đ ịn h d ạ n g d ử liệu T oàn bộ d ữ liệu có đ ịn h d ạ n g format sẽ
đ ư ợ c copy từ file xác định bời fid vào tron
Trang 1718 MATLAB VA l/NG DUNG TRONG CO KY THUÄT
Vi du file BDTH.txt cö nöi dun g n h u sau:
Luu y: Sü d u n g f s c a n fd e doc file cö cä cäc ky tu vä cäc so n h u vi du
tren, ma tran trä ve se lä ma tran so', trong d ö giä tri trä ve cüa cäc ky tu trong m a trän lä giä tri tu o n g ü n g trong bang mä ASCII
Thü kiem tra vöi giä tri cuoi cung cüa häng 1 trong ma trän thu dugc:
Trang 18Chương 1 Mở đẩu 19
Trong đó X là m ảng d ữ liệu Lệnh cho phép xuất ra m àn hình nội
d u n g của m ảng X m à không đư a ra tên của m ảng này
Trong trư ờ n g hợp X là m ột chuỗi ký tự, disp cũng sẽ xuất ra nội
d u n g chuỗi đó
Ví dụ:
>>disp(A)
Xuất ra m a trận A th u đư ợc từ ví d ụ trên
>>nhap = 'Kiem tra lenh disp'
>>disp(nhap)
Kiem tra lenh disp
Xuất d ử liệu theo đ ịn h d ạng ra file hoặc ra m àn hình: fp r in f
Cú p h áp th ứ nhâ't cho p h ép xuất ra file d ữ liệu dưới d ạng cột áp
d ụ n g định d ạn g formatSpec đôi với các p h ần tử của m ảng A l, A2, An.
Cú p h áp th ứ hai áp d ụ n g đ ịn h d ạng formatSpec cho d ữ liệu và xuất
ra màn hình
(Các đ ịn h d ạn g cho việc xuất, n h ập d ữ liệu xem bảng phần 1.4)
Ví d ụ sau trìn h bày cách m ở file v d l tx t và ghi vào nội d u n g
d ư ớ i đây:
Diem cua sinh vien 1 la: 8
Diem cua sinh vien 2 la: 9
Diem cua sinh vien 3 la: 10
» A = [1 2 3;8 9 10] ;
>> fileI D = f o p e n ('v d l t x t ','w ' );
Trang 1920 MATLAB VÀ ỨNG DỤNG TRONG c ơ KỸ THUẬT
>> formatSpec='Diem cua sinh vien %d la: %d\n';
>> fprintf(filelD,formatSpec,A ) ;
>> fclose(filelD);
Nội d u n g trên cũng có th ể xuất trực tiếp ra m àn hình:
>> fprintf(formatSpec,A);
Lệnh f p r i n tf còn cho phép định d ạng sẵn s ố ký tụ d ùng đê biêu
diễn các biến Ví dụ %5d sẽ sừ dụn g m ột khoảng rộng 5 ký tự đ ể biêu diễn m ột S Ố nguyên, %10s sẽ sử d ụ n g m ột khoáng rộng 10 ký tự đ ể biểu diễn m ột xâu Đôi với số thực, sô' chữ số phần thập p hân cũng được xác định, ví dụ %6.2f đồng nghĩa với việc MATLAB sẽ sử d ụ n g m ột khoáng rộng 6 ký tự (bao gồm d âũ thập phân và p hần thập phân) vói hai chữ số biểu diễn p hần thập phân
Lưu ý: N ếu p hần biểu diên rộng hơn so với yêu cầu, các ký tự đ ầu
tiên sẽ là các ký tự trống, nếu phần biểu diên p h ần th ập p hân rộng hơn
so với yêu cầu, các ký tự cuôl cùng sẽ là số 0.
Lưu d ừ liệu vào file: save
1.2.4 Tính năng trợ giúp (Heìp) trong M A T L A B
Về nguyên tắc ta có th ể truy xuất mọi thông tin về MATLAB sử
d ụ n g chức năn g trợ giúp Help Dưới đây là m ột số cách sử dụn g đối với
chức năn g này
Trang 20M/A.TLAB Builder for N ET
M/ATUVB Builder fot Encel
M/VTLAB Builder for Java
M ATLAfi c ompilef
M/ATLAfi Distributed Computing E
M/ATLA8 Report Generator
Cointioi System Toolboi
Cuirve filling Toolbo«
Dsna Acquisition Toolboi
D siiabise Toolbo*
Diniafeel) foolbo»
Distributed Computing Toolbo»
FiHtêt Design Toolbon
Fliiier Design H D l Code»
Gsmeiic Ajgoiithm and Direct Seal
lm«»ge Acquisition Toolbo»
Imiage Processing Toolbo«
bmtiumeni Control ĩoolbo«
Mapping Toolbo«
Moidel Predict!»« Control Toolboi
Mdidel-Basod Calibration Toolbo»
Neiural Network Toolbox
O P'C Toolbo«
Optimization Toolboi
Paimgl Drfletenlial Equalion Toolbt
RF Toolboi
Roibusl Control Tooibo*
Sigtnal Processing Tooibor
spitme looilioi
Statistics Toolbo«
Syimbol'C k'aih foolbo> i
MAT LAB 4 p mùa ỉ'' ĩ Ị 0 t i j ¿y- * 5 £ ¿ < J ẫ ằ ẩ ỉằ Ê ẩ ẵ Ê
• O c n e ia l R ele<ne Holes le i R2007I)
For all products, highlights new features, installation noles bug files, and compatibility issues
D o c u m e n t a t i o n S e t (jtn in q S ia iU il Us# I Guides
How To G e l Help In MATLAB PíCMdes instructions lor using the Help browse! and other nelp methods
Roíalod Book»
T mining Webinai»
Semina»»
H ình 1.2 H elp Browser
• Sử d ụ n g trợ g iú p khi biết tên hàm : trong cửa sô lệnh, khi gõ
>>help tên_ham, file M -help tương ứ ng sẽ hiến thị trong cửa
sổ lệnh, bao gổm m ô tả tóm tắt chức năng của hàm , cú pháp và các hàm liên quan
• Tìm kiếm thông tin liên quan về m ột từ khóa: trong cửa sô lệnh,khi gõ >>lookfor tu_khoa, MATLAB sẽ hiển thị tất cả các
chủ đ ề liên q uan đến từ khóa vừa nhập, lookfor đặc biệt h ữ u ích
khi không n h ớ chính xác cách viết của tên hàm
• Sử d ụ n g H elp Browser: trình duyệt tích hợp vơi cửa sổ MATLABcho phép tìm kiếm và đư a ra kết quả dưới d ạn g tài liệu HTML Help Browser có th ể m ờ theo các cách: sử d ụ n g phím help trên thanh công cụ, gõ helpbrow ser hoặc doc tro n g cửa sổ lệnh, chọn
H elp \ M enu h elp trên thanh thực đơn Cửa sồ H elp Browser bao gồm hai p hần chính, Help N avigator ở bên trái cho phép tìm kiêm
Trang 2122 MATLAB VÀ ỨNG DỤNG TRONG c ơ KỸ THUẬT
th ô n g tin, b ên p h ả i là nội d u n g th ô n g tin tìm đ ư ợ c T rong cửa sô H elp N a v ig a to r, th ô n g tin có th ê đ ư ợ c tìm th e o các
p h ư ơ n g thức:
■ Contents: Các m ục tìm kiêm sắp xếp theo d an h sách
■ Index: Tìm kiếm theo từ khóa
■ Search results: d an h sách các kết quả tìm được
■ Demos: các chương trình giới thiệu có săn về các đ ể mục trong MATLAB
1.3 Sơ lược vê M -file
Bên cạnh việc cho p h ép người sử d ụ n g thao tác trực tiếp trên cửa số lệnh, MATLAB cung câ'p m ột ch ế độ soạn thảo văn bản qua đó người
d ù n g có th ể thực hiện m ột tập hợp các lệnh lặp đi lặp lại hoặc tự xây
d ự n g cho m ình các hàm p hù hợp vói từ n g yêu cầu cụ thể N gười sử
d ụ n g có th ể soạn thảo và lư u lại dư ới d ạng file văn bản có p h ần mờ rộng là m
M-file có th ể được tạo đơn giản bằng việc chọn N ew trên d a n h m ục
File và sau đó chọn Script, hoặc gõ lệnh ed it trên cửa sổ lệnh Sau khi đã
soạn thảo nội d u n g cho M-file, người sử d ụ n g có thê chạy lần lượt tất cả các nội d u n g có trong M-file bằng cách gõ tên của file lên cửa sổ lệnh, hoặc có th ể copy một p hần của file rồi dán ỉên cửa sô lệnh đ ể thực thi
ờ chương mở đầu này, tác giá chi giới thiệu sơ lược về M “file với một
số ví dụ đơn giản, trong trường hợp sinh viên đã có kiến thức co bản về MATLAB, có thê chuyển sang m ục 6.1 đ ể tìm hiểu kỹ hơn về M-file
Sau đây là m ột ví d ụ về việc tính tổng, hiệu và th ư ơ n g của hai sô a
Trang 22Chương 1 Mở đầu 23
M-file qh 2so.m chứa 5 dòng lệnh trong đó 2 d òng đầu tiên gán các
giá trị cho hai biên a và b, 3 dòng tiếp theo lần lượt tính tông, hiệu, tích tương ứng của hai sô' trên Khi gõ qh_2so trên cửa sô lệnh, MATLAB sẽ hiền thị n h ư sau:
Lọi ích đ ầu tiên của việc sử d ụ n g M-file có th ể thấy ở đây là nếu ta
có nhiều cặp giá trị (a, b) thì chi việc thay giá trị tư ơng ứng vào c]h_2so và
chạy lại file chứ không phải lặp lại việc thực hiện các lệnh tính toán ngoài cửa sô lệnh Bên cạnh đó, n h ư đã nói ở trên, MATLAB cho phép người đ ù n g tự xây d ự n g các hàm với các tham s ố đ ầu vào củng n h ư giá trị tra về tư ơ ng ứng, sau đây là m ột ví dụ đơn giàn về việc xây d ự ng hàm tính tổng của hai số:
t o n g m
function z = tong(a,b)
z = a+b;
end
Call trúc cơ bàn đôi với m ột hàm trong MATLAB là dòng khai báo
hàm bat đầu bằng từ khóa function, tiếp đến là các thông tin liên quan
v ề giá trị đ ầu ra và đầu vào, kết thúc hàm bằng từ khóa end, p hần nội
d u n g ờ giữa là các lệnh phù hợp theo yêu cầu bài toán H àm tong.m vừa
xây d ự n g có thê được gọi trong cửa sô lệnh n h ư sau:
Trang 2324 MATLAB VÀ ỨNG DỤNG TRONG c ơ KỸ THUẬT
1.4 Tóm tắt chương 1
Một sô ký tự đặc biệt
hàng/cột: của ma trận
• D âu ngăn cách p h ầ n n g u y ên và p h ầ n th ập p h ân
. Ký hiệu dò ng liên tục
N hóm lệnh quản lý
clear Xóa biến khỏi bộ n h ó
lookfor Trợ giú p khi không biết chính xác tên hàm
Một số biến và hằng đặc biệt
i / j Đơn vị p h ần ảo, tuy nhiên i và j cù n g th ư ờ ng xuyên được
sừ d ụ n g n h ư ỉà chí s ố trong các v ò n g lặp, đ ê trán h xung
đ ộ t xảy ra, trong vòng lặp nên s ử d ụ n g ii hoặc jj làm chỉ sô
Trang 24load Đọc d ữ liệu từ file, đ ịnh dạn g biến g iống n h au
fscanf Đọc d ữ liệu từ file, đ ịn h d ạn g biến kh ác nhau
fprintf Lưu d ữ liệu có đ ịn h d ạn g ra file h oặc ra m àn hình
Đ ịnh dạng cho fprintf và fscanf
format short H iển thị 4 chữ s ố sau d âu phẩy, m ặc địn h
format long H iển th ị 15 chữ số sau d ấu phẩy
format short e G iống đ ịn h d ạn g short n h ư n g có thêm p hần lũy thừa
format long e G iông đ ịn h d ạn g ỉong n h ư n g có thêm p h ần lũy thừa
format bank Đ ịnh d ạ n g theo qu y đ ịn h n g ân hàn g cho dollars và cents,
hai chữ SỐ sau d ấu phẩy
Bảng 1.2 Tóm tắt các hàm sử dụng trong chương 1
Trang 2526 MATLAB VÀ ỨNG DỤNG TRONG c ơ KỸ THUẬT
a) a = 21 giá trị của tổng 1 + 2 + 3 + 4 + 5+ 6 lu n vào biến a, kết qua
a = 21 hiển thị trên cửa sô lệnh.
b) b = 21, kết quả của p h ép tính không hiển thị trên m àn h ìn h cử a sô lệnh do có d ấ u ; ở cuối câu lệnh, tuy nhiên giá trị của tổng 1 + 2 + 3 + 4 +
5 +6 vẫn được lưu vào biến b.
c) ans = 24, kết quả p hép tính b + 3 hiển thị trên m àn h ìn h cử a sổ
lệnh, trong trường hợp phép tính không xác định biến lưu kết quá n h ư
câu này, kết quả sẽ tự động gán vào biên ans.
d ) ans = 21
e) c = 210 Kết quà câu này ph ụ thuộc vào câu d do có sử d ụ n g biến
ans trong p hép tính, do ở câu d ta có ans = 21 nên c = 210.
Bài 1.2 Các phép tính cơ ban
Thực hiện các p hép tính sau trong MATLAB
Trang 26Lưu ý: th ứ tự ư u tiên các p hép tính trong MATLAB Trong
MATLAB, các p hép tính được thực hiện theo th ứ tự n h ư quy định trong
đại số, trong đó lũy thừa thực hiện trước, tiếp theo là các p hép nhân, chia rồi đến cộng, trừ Tuy nhiên khi xuất hiện ngoặc ( ), p hép tính trong
ngoặc sẽ được ư u tiên trước Đôì với n h ữ n g p h ép tín h có cùng m ức ư u tiên, trình tự tính toán tiến h ành từ trái qua phải
Ví dụ: Phép tính dưới đây được thực hiện trong MATLAB n h ư sau:
» 1 /( 2 + 3A2) + 4/5 * 6/7
ans =
0.7766Tuy nhiên trong trư ờng hợp không có ngoặc
» 1 / 2 + 3A2 + 4/5 * 6/7
ans =
10.1857
Bài 1.3 Tính toán với biên
G án cho X giá trị 2, thực hiện các phép tính sau trong MATLAB
d) x3sin(x2)
Trang 2728 MATLAB VÀ ỨNG DỤNG TRONG c ơ KỸ THUẬT
Bài 1.5 Biên và h ằ n g đặc biệt
Gõ các lệnh sau vào MATLAB và d ự đoán kết quà thu được
Trang 28Chương 1 Mở đẩu 29
b) Inf
Bài 1.6 Save và Load
Dùng lệnh save tạo file bail_6 chứa hai biên sv và diem có giá trị như sau:
Có th ể sử d ụ n g load đ ể tải vào W orkspace các biến cụ th ể từ file
theo cú p háp load filenam e var, ví dụ ờ bài này có thê d ù n g » l o a d
v đ l_ 6 diem đê chỉ load biến diem từ file vào W orkspace.
Trang 2930 MATLAB VÀ ỨNG DỤNG TRONG c ơ KỸ THUẬT
>>fs c a n f (fid, '%d', [4,3]);
MATLAB làm việc với m a trận theo cột, m áy tính xử lý file theo
dòng File bail_7.txt có ma trận 3 hàng 4 cột tư ơ n g đ ư ơ n g với số dòng
của file là 3 Khi thực thi, fscanf đọc từ ng sô' của file, lây 4 sô' đầu của
hàng 1, tiếp đến 4 số của hàng 2, cuôi cùng là 4 sô' của hàng 3, đư a tất cả
12 SỐ này vào m ột m a trận m ột cột Sinh viên có thê tụ kiểm tra lại băng cách n h ập lệnh » fsca n f(fid , '% d') thay vì » fsc a n f(fid , '% d', [4,3]) Ờ ví
d ụ này ta sử d ụ n g [4,3] đ ể yêu cầu MATLAB tải d ữ liệu từ file vào ma trận 4 hàng 3 cột N h ư vậy 4 p hần tử của dòng th ú n h ất trong file được
đ ư a vào 4 vị trí tư ơng ứ ng của cột 1 m a trận m ới tạo, 4 phần tử của dòng
th ứ hai được đưa từ file vào 4 vị trí tư ơng ứ ng của cột 2 Ma trận thu được sau bước này sẽ có dạng:
Load lại hai biến sv, diem ờ bài 1.6 vào W orkspace, d ùng lệnh
fprintf in kết quả sau ra m àn hình trong đó p h ần điểm có hai chữ sô sau
Trang 30Sử d ụ n g lệnh fp rin tftao file bail_9.txt có nội d u n g sau (sử d ụ n g
biên ds trong bài 1.8):
Bang diem sinh vien
Tạo biến r có giá trị nhập vào từ bàn phím là bán kính của hình cầu
theo cm In ra m àn hình thể tích và diện tích bề m ặt hình cầu theo m ẫu sau:The tich hinh cau la V cm khoi
Dien tich hinh cau la s cm vuong
tro n g đó giá trị th ể tích và diện tích có hai chữ số sau d ấu thập p hânCông thứ c tính th ể tích và diện tích b ề m ặt tương ứng:4
Trang 3132 MATLAB VÀ ỨNG DỤNG TRONG c ơ KỸ THUẬT
Bài 1.11 Đôi đơn vị
Tạo biên pounds đê lưu trọng lượng theo p o u n d s có giá trị n h ập vào
từ bàn phím , đối ra kilogram s và gán giá trị cho biến kilos Giá trị quy
đổi là:
1 kilogram m = 2.2 p o u n d s
Bài 1.12 Đôi đon v ị (tiếp)
Tạo biên ftemp đ ể lưu nhiệt độ theo F ahrenheit (F) có giá trị nhập vào từ bàn phím , đổi ra độ Celcius (C) và lư u kê't quả vào biến ctemp
G iá trị quy đối là:
Bài 1.14 N h iệt độ cảm nhận và nhiệt độ thực tê
Gió thường làm cho không khí lạnh hơn so với thực tế C ông thức tín h nhiệt độ cảm nhận khi biết nhiệt độ thực tê T (độ Celcius) và vận tốc gió V (km /h) (hai giá trị T, V n h ập vào từ bàn phím ):
WT = 0.0 4 5 X(5.2735X y f ỹ + 10.45 - 0 2 7 7 8 X V ) X <7 - 3 3 0 ) H 33
Tạo biến T, V lư u nhiệt độ cảm n hận và tốc độ gió có giá trị nhập từ
b àn phím, tính giá trị nhiệt độ cảm nhận, in ra m àn hình kết a u ả n h ư sau:
Trang 32Chương 1 Mở đầu 33
Nhiet do thuc te: (do C)
Toc do gio: (km/h)
Nhiet do cam nhan: (do C)
Kiểm tra với T = 20 (do C ) , V = 4 0 (km/h)
Bài 1.15 rand
H àm ran d cho p h ép tạo số thực trong khoảng (0, 1)
a) Tạo số thực trong khoảng (0, 10)
b) Tạo số thực tro n g khoảng (0, 20)
c) Tạo sô' thực tro n g khoảng (20,50)
d) Tạo SỐ n g uyên trong khoảng (0, 10)
e) Tạo số n g uyên trong khoáng (0,11)
f) Tạo số n g uyên trong khoảng (50, 100)
Bài 1.16 Biêu diễn sô'thực
Sư d ụ n g fprintf biểu diễn số thực 12345.6789
a) Trong khoảng rộng 10 ký tự vói 4 chữ số p h ần thập phân
b) Trong khoảng rộng 10 ký tự với 2 chữ số p h ần thập phân
c) Trong khoảng rộng 6 ký tự với 4 chữ sô' p h ẩn thập phân
d) Trong khoáng rộng 2 ký tự vói 2 chữ số p h ần thập phân
Bài 1.17 Biểu diễn k ý tụ
Tạo hai biến sau
Trang 3334 MATLAB VÀ ỨNG DỤNG TRONG c ơ KỶ THUẬT
(Gợi ý: Đ ể chuyển đổi m ột chữ thành số tư ơ ng ứng trong báng mã
ASCII sử d ụ n g lệnh double hoặc int32, ví dụ » d o u b l e r a ') sẽ đ u a ra kết quả 97 Đê chuyên ngược lại dùn g hàm char, ví dụ >>char(97) sẽ đưa ra
kết quả a
Bài 1.18 Bài toán thu nhập
T rung bình con người sử dụn g 8 đến 10% thu nhập cho thự c phâm Tạo biến lưu giá trị thu nhập một năm của m ột người nhập từ bàn phím (dollars), in ra m àn hình số tiền bình quân người đó sử d ụng tro n g m ột th¿íng đ ể m ua thực phẩm (biếu diễn bằng số thập p h ân có hai chữ số sau
d âu thập phân):
Thu nhap mot nam cua ban ¡a:
Moi thang ban su dung tu X den Y dollars de mua thuc pham
Bài 1.19 Vận toc m ả y bay
Vận tốc m áy bay thư ờng ghi theo m iles/h hoặc m/s Tạo biến lưu vận tốc m áy bay theo miles./h n hập vào tù b àn p h ím và in ra m àn hình vận tốc m/s Biết rằng Ih = 3600s, lm ile = 5280 feet, 1 foot = 0.3048m (feet
là sổ nhiêu của foot)
Nhap van toc may bay theo (miles/hour):
Van toc may bay theo meters/second la:
Trang 34Chương 1 Mở đầu 35
Bài 1.20 Diện tích hình chữ nhật
Tạo biến lưu chiều dài và chiểu rộng của h ìn h chữ n h ật theo cm
n h ập từ bàn phím , in ra m àn hình diện tích hình chữ n h ật theo m 2 (biểu diễn bằng số thập phân chính xác đến 0.01)
Nỉtap chieu dai hinh chu nhat theo cm:
Nhap chieu rong hinh chu nhat theo cm:
Dien tich hinh chu nhat la s (met vuong)
Trang 35Trang 36
Chương 2
VECTOR VÀ MA TRẬN
2.1 Vector và ma trận trong MATLAB
Vector và m a trận trong MATLAB được d ù n g đ ể lưu m ột tập hợp các giá trị cùng kiểu M ột vector có thê là vector h àng hoặc vector cột
Ma trận có thê hiểu n h ư m ột bảng các giá trị Chiều của ma trận thường
biêu diễn dư ới dạng m x n trong đó m là số hàng, n là sô' cột tương ứng
của m a trận N ếu m ột vector có n p h ần tử, chiều của vector hàng tương
ứ n g đư ợc biểu diễn là 1Xn , vector cột được biêu diên là n x l
M ột giá trị vô hướng có chiều là l x l Vector và giá trị vô hướng thực
ra là trường hợp đặc biệt của ma trận H ình dưới tù trái qua phải là biêu diên tưcmg ứng của giá trị vô hướng, vector cột, vector hàng, ma trận
MATLAB được viết ra với m ục đích làm việc với các m a trận, do đó trong MATLAB rất dễ d àng tạo các biến vector và m a trận cũng như chứa rât nhiều hàm và p hép toán xử lý vector, m a trận
2.2 Thiết lập ma trận trong MATLAB
Thiết lập vector hàng
Có nhiều cách đê thiết lập vector h àng trong MATLAB, trong đó trực tiếp n h ất là n hập giá trị các p h ẩn tử của vector vào trong ngoặc
Trang 3738 MATLAB VÀ ỨNG DỤNG TRONG c ơ KỸ THUẬT
vuông [ ], ngăn cách giữa các phần tử bởi ký tự trông hoặc dâu phây Ví dụ: Cả hai câu lệnh dưới đây cùng tạo ra vector V.
» V = [ 1 2 3 4 ] ;
» V = [ 1 , 2 , 3 , 4 ]
V =
Trong trư ờng hợp các p h ần tử trong m a trận có giá trị cách đều
nhau, dâu : có th ể sử d ụ n g đ ể thiết lập vector, trong trư ờng hợp này
không cần sử d ụ n g ngoặc vuông [ ] nữa Ví dụ:
Ví dụ: Tạo vector gồm các sô'nguyên từ 1 đến 9 cách đều 2:
» v 2 - 1 : 2 : 9
v 2 =
Ví dụ: D ự đoán và kiêm tra kếi quả bằng MATLAB khi khoang cách
n h ập vào dẫn đến việc vượt quá khoang định nghĩa bởi số đầu : số cuối
» 1 : 2 : 6
Lệnh nàv sẽ tạo m ột vector bao gồm các phần tử 1, 3, 5 Tang them 2 vào 5 sẽ vư ợt qua 6, vì th ế vector sẽ d ừ n g ở 5 Kết quả hiển thị sẽ là:
Tương tự ta có hàm linspace (lineary spaced), cho p hép tạo vector
có các phẩn từ cách đều theo cú p h áp sau:
>>linspace (x, y, n)
Trong đó n là số p hần tử sẽ đư ợc tạo ra nằm trong khoảng giói hạn
giữa X và y Đối với trư ờ ng hợ p n = 1 hàm linspace sẽ trả về giá trị
V-Ví dụ: Lệnh sau sẽ tạo vector có 5 p h ẩn từ trong khoáng 3 đến 15:
Trang 38>>newvec = [v2 Is]
newvec =
Truy xuất và thay đổi các phần tử trong một vector
Trong MATLAB, các p hần tử trong m ột vector được đ án h số lần lượt theo th ứ tự, bắt đầu từ 1 Ví dụ: Chi số của các p hần tử trong vector
newvec được th ể hiện dưới đây:
Trang 3940 MATLAB VA QNG DUNG TRONG CÖ KY THUÄT
Khi gän giä tri cho m ot p hän tu trong m ot vector mä chi so cüa
phän tu dö khong ton tai, ta cö the m ö rong vector dö Vi du vector b ö tren cö 3 p hän tu Khi ta gän giä tri cho p h än tu th ü tu cüa b, b tra th än h
T h iet lap vector cot
Cäch thöng clung de tao vector cot lä n h ap giä tri cäc phän tu väo
trong ngoac vuöng f ], n gän cäch boi däü ;
Trang 40Chương 2 Vector và ma trận 41
Không thê sử d ụ n g d ấu : đ ể tạo vector cột m ột cách trực tiếp Tuy nhiên có thê áp d ụ n g p hép chuyên vị lên mọi vector hàng đê tạo ra vector cột tư ơ ng ứng
>>r = 1 : 3 ;
>>c = r'
c =
12
3
Thiết lập ma trận
Thiết lập m ột m a trận tương đ ư ơ n g với việc tạo ra các vector hàng
và vector cột trong m a trận đó Trong đó các giá trị trên cùng m ột hàng ngăn cách n hau bởi d ấu phẩy hoặc ký tự trống, và các hàng khác nhau ngăn cách bởi dâũ châm phẩy
>>mat = [4 3 1; 2 5 6]
ma t =
Lưu ý: Số p hần tử ở môi hàng phải luôn bằng nhau T rường hợp
m a trận n h ập vào có sô' p hần tử ở các hàng là khác nhau, kết quả nhận
đư ợc sẽ là thông báo lỗi
>>mat = [3 5 7; 1 2]
??? Error using ==> vertcat
CAT arguments dimensions are not consistent
Để phân biệt các dòn g trong ma trận, bên cạnh việc sử d ụ n g dâu ;