Professional Documents
Culture Documents
Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng
Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật
Matlab
Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 1 Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 2
Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng
Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật
Phân tích, biểu diễn dữ liệu với các công cụ hỗ trợ tính toán, đồ họa đa dạng
Thống kê các dữ liệu thí nghiệm
Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 3 Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 4
Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng
Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật
Mô phỏng điều khiển tự động trong lĩnh vực cơ điện tử (MATLAB & Simulink)
Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 5 Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 6
1
9/3/2019
Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng
Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật
(Hình ảnh và tư liệu được tham khảo trên group VUDSE - Hội kĩ sư thiết kế và mô phỏng CAE
CAD CAM)
Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 7 Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 8
Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng
Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật
Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 9 Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 10
Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng
Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật
Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 11 Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 12
2
9/3/2019
Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng
Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật
Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 13 Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 14
Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng
Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật
• Nắm sâu hơn các kiến thức về toán, cơ, bản chất về các
vấn đề kỹ thuật.
• Không phải tất cả công cụ giải bài toán kỹ thuật nào cũng
được tích hợp trong phần mềm thương mại.
• Phần mềm thương mại đòi hỏi bản quyền.
• Một số công ty đòi hỏi kỹ năng lập trình.
Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 15 Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 16
Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng
Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật
• Sử dụng công cụ toán học trong Matlab để biểu diễn, phân tích
số liệu.
• Sử dụng công cụ đồ họa trong Matlab để mô phỏng các hiện
tượng cơ học hay những môn khoa học khác một cách trực
quan.
• Hỗ trợ các môn học trong chương trình đào tạo như: Phương
pháp phần tử hữu hạn, đàn hồi ứng dụng, dao dộng cơ sở, dao
động kỹ thuật, luận văn tốt nghiệp.
• Dùng Matlab phục vụ cho những công việc sau này như: đảm
nhận nhiệm các lĩnh vực kỹ thuật khác nhau trong công ty, tập
đoàn, nghiên cứu, theo đuổi các chương trình sau đại học.
Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 17 Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 18
3
9/3/2019
Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng
Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật
Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 19 Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 20
Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng
Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật
Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 21 Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 22
Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng
Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật
Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 23 Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 24
4
9/3/2019
Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng
Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật
Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 25 Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 26
Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng
Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật
Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 27 Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 28
Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng
Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật
Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 29 Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 30
5
9/3/2019
Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng
Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật
Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 31 Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 32
Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng
Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật
Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 33 Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 34
Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng
Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật
Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 35 Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 36
6
9/3/2019
Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng
Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật
Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 37 Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 38
Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng
Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật
Chuẩn đầu ra môn học L.O.2. Có khả năng lập trình các bài toán kỹ thuật trong môi trường MATLAB.
• L.O.2.1. Nắm được cách sử dụng M-file để viết chương trình
L.O.1 Có khả năng sử dụng thành thạo các công cụ tính toán và đồ họa
• L.O.2.2. Biết một số phương pháp khắc phục lỗi chương trình trong M-file
trong MATLAB.
• L.O.2.3. Nắm được các phép toán luận lý và vòng lặp trong MATLAB
• L.O.1.1. Nắm được các chức năng, các hàm cơ bản, cách xử lý
chuỗi và file trong MATLAB
• L.O.1.2. Nắm được cấu trúc, các tính chất của mảng trong MATLAB. L.O.3. Có khả năng xây dựng một chương trình có giao diện hoàn chỉnh tương
tác gần gũi với người dùng thông qua ngôn ngữ lập trình MATLAB
Thực thi được các phép tính và các phép biến đổi trên ma trận
• L.O.3.1. Hiểu được môi trường xây dựng giao diện trong MATLAB (GUI)
• L.O.1.3. Nắm được các cách thức khai báo biểu tượng và các phép
• L.O.3.2. Nắm được tính chất và cách thức xây dựng các đối tượng trong GUI
tính trên biểu tượng, các phép toán cộng trừ nhân chia đa thức, số
phức, đạo hàm và tích phân trong MATLAB • L.O.3.3. Nắm được cách thức tương tác giữa các đối tượng trong GUI
• L.O.1.4. Nắm được cách thức ứng dụng các công cụ đồ thị hai chiều, • L.O.3.4. Có khả năng viết code để thực thi hoạt động của các đối tượng
ba chiều và mô phỏng hình động trong MATLAB
Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 39 Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật
40
Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng
Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật
L.O.4. Có khả năng thực thi các giải thuật phương pháp số như phương pháp L.O.5. Có khả năng lập trình tính toán và mô phỏng các bài toán động học và
phần tử hữu hạn thông qua ngôn ngữ lập trình MATLAB động lực học trong kỹ thuật, xây dựng được các phương trình vi phân động lực
học của hệ một và nhiều bậc tự do và đánh giá các thông số động lực học
• L.O.4.1. Nắm vững cách thức lập trình giải phương trình và hệ phương trình
phi tuyến bằng MATLAB • L.O.5.1. Nắm vững cách thức phân tích quan hệ động học cơ hệ, lập trình
tính toán các thông số vận tốc, gia tốc, quãng đường
• L.O.4.2. Thực hiện giải thuật chia lưới
• L.O.5.2. Nắm vững cách thức phân tích động lực học cơ hệ, lập trình giải
• L.O.4.3. Nắm vững phương pháp lắp ráp ma trận cứng
phương trình vi phân phi tuyến tính toán các thông số vận tốc, gia tốc, quãng
• L.O.4.4. Hiểu được giải thuật phổ màu phần tử đường
• L.O.5.3. Nắm vững việc viết giải thuật để biểu diễn vận tốc, gia tốc, quãng
đường theo thời gian trên đồ thị tĩnh và động, mô phỏng chuyển động của
toàn cơ hệ
L.O.6. Có khả năng tự học và nâng cao kiến thức lập trình tính toán trong cơ
học, cập nhật các kiến thức mới dựa trên kiến thức nền tảng được cung cấp
Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 41 Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 42
7
9/3/2019
Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng
Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật
8
9/3/2019
Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng
Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật
Chương 1
Giới thiệu chung
về chương trình MATLAB
Giảng viên: Ths. Trần Kim Bằng
Bộ môn Cơ Kỹ Thuật, P.106B4
Khoa Khoa Học Ứng Dụng
Đại học Bách Khoa TpHCM
Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 1 Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 2
Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng
Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật
1.1. Tiếp cận phần mềm matlab • Người dùng có thể chạy trực tiếp các lệnh trên Command Window.
Dùng phiên bản từ 2016b
Cài đặt và sử dụng trong môi trường Window
Khởi động Matlab, bốn cửa sổ xuất hiện như sau
Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 3 Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 4
Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng
Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật
• Cửa sổ Current folder thể hiện danh sách các file có trong thư mục • Cửa sổ Workspace thể hiện tất cả biến người sử dụng đã định nghĩa
hiện hành. và các tính chất của nó.
Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 5 Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 6
9/3/2019
Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng
Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật
• Trong Command History, các dòng lệnh được chia làm nhiều phần.
• Cửa sổ Command History lưu trữ các lệnh đã được thực hiện trên
Command Window. • Mỗi phần được giới hạn bởi thời điểm khởi động Matlab và thời điểm
thoát Matlab.
Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 7 Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 8
Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng
Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật
Để lưu trữ và chỉnh sửa một tập hợp nhiều lệnh (một chương trình). Ta tạo Ta có thể tắt mở các cửa sổ và thiết lập tình trạng ban đầu bằng Desktop
một M-file. menu
Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 9 Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 10
Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng
Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật
• Khi ta khai báo các biến trong command window, các biến sẽ được • Để xóa các lệnh trong command window, dùng lệnh clc hay vào Edit
lưu trữ trong bộ nhớ đến khi thoát chương trình Matlab. menu.
• Để biểu diễn lại biến đã định nghĩa, gõ tên biến trên command • Để quy định cách thể hiện số trên command window, dùng lệnh format
window hoặc xem trong workspace.
• Để xóa các biến trong bộ nhớ, dùng lệnh Clear all.
• Trên command window, khi ta đã thực thi một dòng lệnh rồi thì không
thể chỉnh sửa dòng lệnh đó lại được nữa. Bấm nút ^ hay vô command
history để gọi lại lệnh đó.
e+002 tức là x102
• Các dòng lệnh được thực thi trong M-file không được lưu trữ trong
command history nhưng các biến vẫn được lưu trữ trong workspace.
Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 11 Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 12
9/3/2019
Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng
Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật
1.2. Một số quy định cơ bản về cú pháp trong matlab 1.3. Những tên biến đặc biệt trong matlab
• Matlab cho phép đặt tên biến có độ dài lên đến tối đa 63 ký tự.
Các biến đặc biệt Giá trị
• Không được để khoảng trắng khi đặt tên biến. Để biễu diễn
khoảng trắng, có thể thay thế bằng dấu “_” ans Tên biến mặc định dùng để trả về kết quả
pi π = 3.1415
• Không đặt tên biến trùng với lệnh trong Matlab.
i, j Đơn vị ảo: i = j = 1
• Matlab phân biệt chữ hoa và chữ thường khi đặt tên biến. A và a,
hay matr và matR là hai biến khác nhau. inf Số vô cùng 1 0
• Hạn chế dùng tiếng Việt có dấu để đặt tên folder chứa file Matlab. nan Số không xác định 0/0
… …
Quy định về tên biến Ví dụ
Phải bắt đầu bằng chữ cái a_b_c, a1, X53
Không chứa các kí tự đặc biệt Không dùng ~@!#$%^&*()-
+=:.,”? …
Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 13 Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 14
Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng
Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật
• Có hai cách thức để chạy lệnh trong Matlab: chạy trong 1.4. Một số lệnh tiện ích
Command window hoặc chạy trên M_file.
• Trong Matlab, tất cả các biến phải được gán giá trị số Lệnh Ý nghĩa
(trừ biến symbolic) trước khi được sử dụng trong các clc xóa màn hình
lệnh.
clear all xóa dữ liệu các biến
• Để gán giá trị cho biến, dùng dấu “=“ rồi bấm Enter.
• Khi gán giá trị cho biến hay thực thi dòng lệnh mà không close all đóng tất cả cửa sổ đồ họa
cần thể hiện kết quả trên command window, thêm dấu “;” Ctrl+c dừng chương trình
vào cuối dòng lệnh. quit , exit thoát Matlab
• Ta có thể chạy liên tiếp các lệnh bằng cách dùng dấu “,”
để ngăn cách các lệnh. Sau đó bấm Enter
Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 15 Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 16
Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng
Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật
1.5. Một số phép toán đơn giản Độ ưu tiên của các phép toán trong biểu thức
• Matlab thực hiện phép toán
• Từ trong dấu ngoặc ra ngoài dấu ngoặc
Phép tính Ký hiệu Ví dụ
• Từ trái sang phải
Phép cộng, a+b + 3+9
>>T=(1/(1+p*x))^k
Phép trừ, a-b - 90-54
Phép nhân, a.b * 55*3.7
Phép chia, a÷b / hoặc \ 56/8 = 8\56
Phép lũy thừa, ab ^ 5^2
Chú ý:
Mức độ ưu tiên của phép toán:
Lũy thừa Nhân, chia Cộng, trừ • Trong Matlab, các phép toán (+,-,*,/ và ^) đều theo quy tắc của ma
Ví dụ: trận.
>> a=3 % enter • Để bỏ quy tắc này, ta thêm dấu “.” trước mỗi phép tính.
>> b=5 % enter • Khi thực hiện một phép tính toán mà không gán giá trị vào một biến cụ
>> c=a+b % enter thể, Matlab sẽ gán giá trị vừa tính vào biến “ans”. Biến này sẽ thay đổi
giá trị nếu như có một phép toán khác được thực hiện sau đó.
Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 17 Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 18
9/3/2019
Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng
Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật
Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 19 Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 20
Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng
Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật
Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 21 Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 22
Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng
Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật
Màu đỏ là có lỗi cú
pháp, chương trình Có thể tận dụng chức năng Cell bằng cách dùng %% để phân ra
không chạy tiếp được thành nhiều vùng lệnh trong chương trình.
Màu cam là cảnh báo, Ta có thể chạy từng vùng lệnh riêng biệt. Điều này giúp việc quản lý
chương trình vẫn chạy chương trình dễ dàng hơn.
được
Màu xanh lá là chương
trình tốt, không có bất
cứ vấn đề gì
Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 23 Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 24
9/3/2019
Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng
Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật
Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 25 Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 26
Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng
Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật
1.6. Một số quy ước màu sắc cho ký tự trong môi trường Có thể thay đổi màu sắc của ký tự
matlab editor
Keywords
màu xanh
dương
Chú thích
màu xanh lá
cây
Smart
indent
Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 27 Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 28
Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng
Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật
CHÚ Ý
• Các hàm có thể dùng chung các biến với hàm khác. Muốn truy cập biến
của hàm khác ta phải khai báo biến đó là biến toàn cục với từ khóa
global
• Ví dụ như global a b
• Có thể gọi nhiều function từ M-file.
• Giá trị trả về của function có thể là số, vector, ma trận hoặc chuỗi kí tự.
Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng
Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật
Chương 2
Các phép toán trên
ma trận
Giảng viên: Ths. Trần Kim Bằng
Bộ môn Cơ Kỹ Thuật, P.106B4
Khoa Khoa Học Ứng Dụng
Đại học Bách Khoa TpHCM
Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 1 Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 2
Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng
Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật
Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 3 Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 4
Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng
Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật
2.1.2. Địa chỉ của mảng 2.1.3. Một số lệnh tạo mảng tự động
Cú pháp truy cập giá trị phần tử tại vị trí nào đó của mảng
Dạng lệnh Chức năng
>> x(vitri) x=first:last Tạo vector hàng x bắt đầu là first, kết thúc
Ví dụ: >>x=[2 3 4 8 6 7] nhỏ hơn hoặc bằng last, bước mặc định là 1
>>x(1) % truy cập giá trị phần tử thứ nhất của mảng x=first:increment: last Tạo vector hàng x bắt đầu là first, kết thúc
Cú pháp truy cập giá trị nhiều phần tử của mảng nhỏ hơn hoặc bằng last, bước là increment
>> x(a:b) x=linspace(first,last,n) Tạo vector hàng x bắt đầu là first, kết thúc
>> x(a:c:b) bằng last, có n phần tử
Ví dụ: >>x1=x(2:4) % truy cập giá trị phần tử thứ 2 đến phần tử thứ 4 x=logspace(first,last,n) Tạo vector hàng x bắt đầu là 10first, kết thúc
bằng 10last, có n phần tử
Ví dụ: >>x2=x(2:2:5) % truy cập giá trị phần tử thứ 2 đến phần tử thứ 5 với
bước nhảy là 2; Chuyển vector hàng thành vector cột và ngược lại:
Cú pháp gán lại giá trị cho phần tử của mảng: >> y=x’
>> x(vitri)=giatri) Ví dụ:
>>x=[2 3 4 8 6 7]
Ví dụ: >>x(2)=5 %phần tử thứ 2 được gán lại giá trị 5 >>y=x’
Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 5 Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 6
9/3/2019
Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng
Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật
Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 7 Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 8
Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng
Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật
2.2.2. Cú pháp tìm kiếm trong ma trận Tìm và trả về giá trị một phần tử theo một điều kiện toán học
Cú pháp truy xuất giá trị cho phần tử của mảng hai chiều Ví dụ: >> x=-4:4
>> k=find(abs(x)>1) %Tìm tất cả phần tử có trị tuyệt đối lớn
>> x(vitrihang, vitricot) hơn 1 trong mảng x
Ví dụ: Ta có x=[2 3 4; 8 6 7] Ví dụ: >> A=[1 2 3; 4 5 6; 7 8 9]
>>x(1,2) % truy xuất phần tử hàng thứ nhất, cột thứ hai của mảng >> [a b]=find(A>5) %Tim tất cả phần tử lớn hơn 5 trong
mảng A
Cú pháp gán lại giá trị cho phần tử của mảng hai chiều:
>> x(vitrihang, vitricot)=giatri Chú ý: >> x=-4:4
>> k=find(x) % tìm tất cả phần tử có giá trị khác ) trong mảng x
Ví dụ: >>x(2,3)=5 %phần tử hàng thứ 2, cột 3 được gán lại = 5
Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 9 Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 10
Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng
Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật
Tìm và trả về luận lý 2.2.3. Một số ví dụ về thao tác với các phần tử trong ma trận
Ví dụ: >> x=-4:4 >> A=[1 2 3 ; 4 5 6; 7 8 9]
>> x>1
>> x==1 1 2 3
>> abs(x)>1
A 4 5 6
Biểu thức luận lý
Tìm và trả về giá trị 7 8 9
Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 11 Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 12
9/3/2019
Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng
Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật
Để truy cập giá trị 26, gọi lệnh A(2) hoặc A(2,1)
Để truy cập giá trị phần tử cuối cùng, gọi lệnh A(end)
Để truy cập giá trị 26, gọi lệnh A(5) hoặc A(1,2)
Để truy cập giá trị 7, gọi lệnh A(10) hoặc A(2,3)
Để truy cập giá trị phần tử cuối cùng - 344, gọi lệnh A(end) hoặc A(12)
Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 13 Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 14
Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng
Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật
Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 15 Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 16
Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng
Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật
1 2 3 7 8 9 1 2 3
2 3
A 4 5 6 B 4 5 6 A 4 5 6 B
5 6
7 8 9
7 8 9 1 2 3
>>A=[1 2 3 ; 4 5 6; 7 8 9]
1 2 3 7 9 >>B=A(1:2,2:3) %trích từ ma trận [A]
C 4 5 6 4 6
1 2 3
7 8 9 1 3 1 3
A 4 5 6 B
7 9
>>A=[1 2 3 ; 4 5 6; 7 8 9] 7 8 9
>>B=A(3:-1:1,1:3) %cách khác >>B=A(3:-1:1,:) >> C=[1 3]
>>C=[A B(1:3,[1 3])] >> B=A(C,C) %trích từ ma trận [A]
Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 17 Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 18
9/3/2019
Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng
Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật
Xóa cột 1
và tất cả
hàng Xóa cột từ 3 đến 4 và
tất cả hàng
Xóa hàng
2 và tất cả Xóa hàng
cột từ 3 đến 4
và tất cả
cột
Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 19 Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 20
Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng
Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật
2.2.3. Các phép toán ma trận với số đơn 2.2.4. Các phép toán ma trận với ma trận
Dữ liệu minh họa: a=[a1 a2 … an]; b=[b1 b2 … bn], c: số vô hướng Phép toán được thực hiện trên từng cặp phần tử tương ứng vị trí, trả về
ma trận kết quả
Cộng với số đơn a+c=[a1+c a2+c … an+c]
Nhân với số đơn a*c=[a1*c a2*c … an*c] Ví dụ: Ta có a=[1 2 3; 4 5 6] ; b=[2 3 4; 5 6 7]
>>c=a+b % kết quả c=[3 5 7; 9 11 13]
Cộng mảng a+b=[a1+b1 a2+b2 … an+bn]
Nhân mảng a.*b=[a1*b1 a2*b2 … an*bn] Chú ý: Toán tử .* : nhân các phần tử tương ứng 2 ma trận với nhau
Chia phải mảng a./b=[a1/b1 a2/b2 … an/bn] Toán tử ./ : chia các phần tử tương ứng 2 ma trận với nhau
Chia trái mảng a.\b=[a1\b1 a2\b2 … an\bn] Toán tử .\ : chia trái các phần tử tương ứng 2 ma trận với nhau
a.^c=[a1^c a2^c … an^c] Toán tử .^ : lũy thừa các phần tử tương ứng 2 ma trận với nhau
Lũy thừa mảng c.^a=[c^a1 c^a2 … c^an]
Toán tử * : nhân 2 ma trận với nhau (lưu ý kích thước)
a.^b=[a1^b1 a2^b2 … an^bn]
Chú ý: .*c ./c .\c .^c : nhân, chia phải, chia trái, lũy thừa từng
phần tử trong ma trận với một số đơn c
Chia trái ma trận: C = A \ B = inv(A) * B (giai pt: AX = B)
Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 21 Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 22
Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng
Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật
Ví dụ: Giải hệ phương trình tuyến tính 2.2.5. Một số lệnh thao tác với ma trận
Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 23 Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 24
9/3/2019
Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng
Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật
Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 25 Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 26
Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng
Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật
2.2.6. Một số lệnh đặc biệt thao tác trên ma trận Sort: Xếp theo thứ tự từ nhỏ đến lớn
Đảo ngược hàng hoặc cột
Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 27 Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 28
Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng
Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật
Max và Min: tìm phần tử lớn nhất, nhỏ nhất repmat(A,x,y) copy mảng A thành x dòng và y cột
Ma trận chứa
Ma trận chứa vị
phần tử lớn nhất
trí hàng của
trong từng cột
phần tử lớn nhất
của ma trận a.
Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 29 Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 30
9/3/2019
Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng
Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật
Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 31 Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 32
Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng
Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật
Ví dụ:
>>z=ones(100,200);
>>z(10:50,150:170)=0;
>>z(70:80,20:35)=0;
>>z(4:5:100,50:130)=0;
>>z(3:5:100,50:130)=0;
>>z(2:5:100,50:130)=0;
>>z=z-eye(100,200);
>>spy(z)
2.3. Mảng ba chiều
Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 33 Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 34
Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng
Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật
2.3.1. Cấu trúc mảng ba chiều 2.3.2. Tạo ma trận ba chiều và lắp ghép ma trận (dùng
lệnh cat)
Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 35 Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 36
9/3/2019
Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng
Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật
Chương 3
Đồ họa hai chiều trong
Matlab
Giảng viên: Ths. Trần Kim Bằng
Bộ môn Cơ Kỹ Thuật, P.106B4
Khoa Khoa Học Ứng Dụng
Đại học Bách Khoa TpHCM
Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 1 Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 2
Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng
Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật
Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 3 Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 4
Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng
Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật
3.1.1. Cú pháp tổng quát của hàm plot Bảng 4.1. Quy ước về dạng đường nét, điểm dữ liệu, màu sắc trong Matlab
plot(X1,Y1,LineSpec,'PropertyName',PropertyValue)
Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng
Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật
3.1.2. Vẽ nhiều đồ thị trên cùng một hệ trục (axis) Code Matlab: Giải thích:
x=linspace(0,pi,1000); • Tạo mảng x chứa 1000 giá trị.
Dùng lệnh hold on để giữ lại các đối tượng đã hiển thị trên cửa sổ đồ họa y=cos(6*x).*exp(-x)
plot(x,y,'-.^') • Tạo mảng y theo x.
Code Matlab: Giải thích: • Vẽ đường cong y = f(x), vừa có nét chấm
x=linspace(0,2*pi,30); • Tạo mảng x có giá trị từ -2*pi với 30 phần gạch, vừa có các maker hình”^”.
y=sin(x); tử. • Vì hai mảng x và y dùng để biểu diễn cả
z=cos(x); đường nét và maker nên sẽ hiển thị rất nhiều
plot(x,y,'-.','color',[1 0 0])
• Tạo mảng y theo x.
maker và gây rối mắt.
hold on • Tạo mảng z theo x.
plot(x,z,':d','color','g'), • Vẽ đường cong y = f(x), nét chấm gạch, Chú ý:
màu đỏ ([1 0 0]).
Đồ thị có quá nhiều maker có thể gây rối mắt.
• Giữa lại đối tượng đã tạo trên cửa sổ đồ
họa trước đó. Có những trường hợp chỉ cần biểu diễn maker tại một số điểm quan
trọng
• Vẽ đường cong y = z(x), nét chấm gạch,
màu xanh lá cây, kèm theo các maker Để khắc phục điều này, tách ra hai mảng dữ liệu. Một dùng để vẽ
hình kim cương. đường cong và một để thể hiện maker
Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 7 Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 8
Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng
Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật
3.1.3. Các lệnh hiển thị hoặc không hiển thị trục tọa độ và lưới
Code Matlab: Giải thích: Bảng 4.2. Một số lệnh tương tác với hệ trục tọa độ
x=linspace(0,pi,1000); • Tạo mảng x chứa 1000 giá trị.
y=cos(6*x).*exp(-x); Lệnh Matlab Giải thích
plot(x,y, '-r')
• Tạo mảng y theo x. axis on Hiển thị hệ trục tọa độ
hold on • Hiển thị y = f(x) dưới dạng nét
axis off Ẩn đi hệ trục tọa độ
xm=linspace(0,pi,20); cơ bản và màu đỏ.
box on Hiển thị khung hệ trục tọa độ
ym= cos(6*xm).*exp(-xm); • Hold on để giữ nguyên đường
plot(xm,ym,'^b') cong trước đó đã vẽ trên hệ box off Ẩn đi khung hệ trục tọa độ
trục. grid on Hiển thị lưới
• Tạo mảng xm chứa 20 giá trị. grid off Ẩn đi lưới
• Tạo mảng ym theo xm.
• Hiển thị ym = f(xm) dưới dạng
các maker và màu xanh
dương.
Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 9 Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 10
Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng
Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật
3.1.4. Chú thích trên hệ trục tọa độ 3.1.5. Quy ước các mốc giá trị trên một trục
Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 11 Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 12
9/3/2019
Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng
Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật
3.1.6. Một số lệnh điều chỉnh hệ trục tọa độ 3.1.7. Chú thích bằng ký hiệu toán học
Lệnh Matlab Giải thích • Dùng ^ để ký hiệu chỉ số trên dòng
axis([xmin xmax ymin ymax]) Điều chỉnh khoảng không gian quan • Dùng _ để ký hiệu chỉ số dưới dòng
sát • Dùng \ để ký hiệu chữ số hy lạp và toán học
• Dùng \bf để bật chế độ in đậm
axis square Điều chỉnh thành hệ trục vuông • Dùng \it để bật chế độ in nghiêng
axis equal Điều chỉnh các khoảng chia trên trục • Dùng \rm để chuyển thành dạng thường
tung và trục hoành bằng nhau
axis normal Làm đồ thị cân xứng nhưngcác
khoảng chia trên trục tung và trục
hoành không bằng nhau
Code Matlab: Giải thích:
x=linspace(0,2*pi,30); Dùng lệnh axis giới hạn không gian quan sát theo
y=sin(x);
o Phương ngang với xmin = 0 và xmax = 2*pi
plot(x,y)
axis([0 2*pi -1.5 2]) o Phương đứng với ymin = -1.5 và ymax = 2
axis off Ẩn đi hệ trục tọa độ
Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 13 Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 14
Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng
Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật
Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng
Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật
3.1.9. Tạo một hệ trục mới tại một vị trí trong cửa sổ đồ họa 3.1.10. Bố trí nhiều hệ trục trong cùng một cửa sổ đồ họa
“dưới dạng ma trận”
Code Matlab: Giải thích: subplot(m,n,p)
axis1 = axes('Position', [0.62, Xác định vị trí của hệ trục tọa độ mới
0.62, 0.25, 0.25]); bên trong cửa sổ đồ họa với thuộc tính Code Matlab: Giải thích:
'Position' x=linspace(0,2*pi,30); • m là số “hàng” của “ma trận”
y=sin(x); z=cos(x); chứa hệ trục tọa độ.
a=2*sin(x).*cos(x); • n là số “cột” của “ma trận”
b=sin(x)./(cos(x)); chứa hệ trục tọa độ.
fig1=figure; • p là “vị trí” của hệ trục tọa độ
s1=subplot(2,2,1); trong “ma trận” chứa hệ trục
p1=plot(x,y); tọa độ.
s2=subplot(2,2,2);
p2=plot(x,z);
s3=subplot(2,2,4);
p3=plot(x,b);
xlabel(s2,'x2');
set(p1,'color','r');
Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 17 Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 18
9/3/2019
Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng
Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật
Giải thích:
không gian hai chiều C = [1 5 2 3 4]
fill(X,Y,C)
Giá trị c(3)
ứng với vị trí
• X là mảng chứa các hoành độ của
các điểm tạo nên miền diện tích
colorbar x(3) và y(3) được tô màu.
• Y là mảng chứa các tung độ của các
Có thể thay thế C bằng một điểm tạo nên miền diện tích được tô
chuỗi quy ước màu sắc (đỏ là màu.
‘r’) để miền diện tích được tô • C là mảng chứa các giá trị của đại
duy nhất một màu. lượng cần biểu diễn tại các điểm
fill(X,Y,’r’) tạo nên miền diện tích được tô màu.
Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 19 Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 20
Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng
Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật
3.2.2. Tô màu miền diện tích giới hạn bởi đường cong và 3.2.3. Tô màu miền diện tích được tạo bởi sự giao nhau
trục hoành của hai đường cong
Code Matlab:
Code Matlab: X = linspace(0, 2*pi);
t = linspace(0, 2*pi); Y = sin(X);
fill(t,sin(t), 'm') Z = 1 + cos(2*X);
hold on
grid on
Giải thích:
plot(X, Y, 'r', 'LineWidth', 2);
Tô màu vùng diện
plot(X, Z, 'b', 'LineWidth', 2);
tích được tạo bởi sự
XX = [X fliplr(X)];
giao nhau giữa
YZ = [Y fliplr(Z)];
đường cong sin(t) và
fill(XX,YZ,'y')
trục hoành với màu
được chọn là màu tím
Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 21 Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 22
Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng
Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật
3.2.4. Thay đổi thuộc tính của lệnh tô màu diện tích
Thêm tính chất làm trong suốt để tăng và giảm độ trong suốt của miền diện
tích được tô màu
3.3. Tạo hiệu ứng hoạt hình
Code Matlab:
t = linspace(0, 2*pi); Để tạo hiệu ứng hoạt hình và xuất ra tập tin ten.avi, cần sử dụng các
fill(t,sin(t),'m','FaceAlpha',giatri) lệnh sau
• VideoWriter: tạo ra ten.avi
Giải thích: • open: mở biến chứa ten.avi
Tô màu màu tím cho vùng • getframe: chụp hình
diện tích bị giới hạn bởi
• writeVideo: lưu các khung hình vào ten.avi
đường cong sin(t) và trục
hoành, thay đổi thông số • close: đóng biến chứa tập tin ten.avi
giatri từ 0 đến 1 để điều
chỉnh độ trong suốt
Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 23 Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 24
9/3/2019
Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng
Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật
Giải thích:
Code Matlab: • Tạo mảng t, đại diện cho thời gian mô
t=0:0.1:5; phỏng.
bien_tuy_y = • Tạo tập tin tenphim.avi và lưu vào
VideoWriter('tenphim.avi'); bien_tuy_y.
open(bien_tuy_y); • Mở bien_tuy_y.
for i =1:length(t) • Lặp từ phần tử thứ nhất t(1) đến phần tử
[X,Y]=meshgrid(-10:0.1:10); cuối cùng t(end) của mảng t. Trong mỗi
R = sqrt(X.^2*t(i) + Y.^2) + eps; lần lặp, tại thời điểm t(i):
Z = sin(R)./R; • Tạo lưới dữ liệu trên mặt phẳng XY.
mesh(X,Y,Z); • Tính giá trị của Z từ X và Y.
G = getframe; • Tạo lưới từ X, Y và Z.
writeVideo(bien_tuy_y,G) • Chụp hình và lưu vào G
end • Lưu G vào bien_tuy_y.
close(bien_tuy_y); • Kết thúc vòng lặp tại t(i), tiếp tục quay lại
các bước trên với t(i+1).
• Đóng bien_tuy_y.
• Vào thư mục hiện hành kiếm tập tin
bien_tuy_y.avi để trình chiếu.
Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 25
9/3/2019
Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng
Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật
Chương 4
Các cấu trúc điều khiển
Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 1 Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 2
Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng
Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật
&& : và
| | : hoặc
~ : không
Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 3 Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 4
Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng
Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật
4.1.3. Cấu trúc rẽ nhánh if-end 4.1.4. Cấu trúc rẽ nhánh if-else-end và if-elseif-else-end
Cấu trúc rẽ nhánh if-end bắt đầu bằng if và kết thúc bằng end, nếu điều kiện sau if điều kiện if điều kiện 1
từ khóa if được thỏa mãn thì một lệnh hoặc một khối lệnh nằm giữa hai dòng if và
hành động 1 hành động 1
end sẽ được thực thi.
else elseif điều kiện 2
if điều kiện hành động 2 hành động 2
hành động end elseif điều kiện 3
end hành động 3
….
Code Matlab: Giải thích: else
a = 3; hành động N
• Gán giá trị 3 cho a.
Code Matlab: end
b = 10;
if a<b
• Gán giá trị 10 cho b. clc
disp('xin chao'); • Nếu thỏa điều kiện a<b a =3; Giải thích:
thì xuất chuỗi “xin chao” b = 10; • Nếu thỏa điều kiện a<b thì xuất chuỗi
c=2*a If a<b
ra command window. Sau “xin chao” ra command window.
end disp(‘xin chao’)
đó, tính 2*a rồi gán vào c.
else
• Đối với tất cả trường hợp còn lại ngoài
điều kiện a<b thì xuất chuỗi “nhap lai a
disp(‘nhap lai a va b)
va b” ra command window.
end
Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 5 Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 6
9/3/2019
Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng
Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật
Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 7 Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 8
Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng
Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật
4.1.6. Cấu trúc rẽ nhánh switch - case Code Matlab: Giải thích:
x=5; unit = ‘cm’; • Gán giá trị 5 cho biến x.
• Kết quả của biểu thức được tính toán, rồi được so sánh với các giá trị 1, 2, … switch unit • Gán chuỗi ‘cm’ cho biến unit. unit
• Khi tìm thấy một giá trị bằng với kết quả của biểu thức, một lệnh hoặc một khối case ‘in’ sẽ có định dạng chuỗi.
lệnh sau các giá trị 1, 2, … sẽ được thực thi. y=x*2.54 • So sánh kết quả unit với các chuỗi
• Trường hợp không tìm được giá trị nào bằng với kết quả biểu thức, một hoặc case ‘ft’ khác.
một khối lệnh sau otherwise sẽ được thực thi. y=x*2.54*12 • Nếu unit giống chuỗi ‘in’ thì tính
case ‘m’ y=x*2.54
switch biểu thức y=x/100 • Tiếp tục so sánh unit.
case giá trị 1 otherwise
hành động 1 disp(‘Chua biet don vi’)
• Nếu unit giống chuỗi ‘ft’ thì tính
y=x*2.54*12
case giá trị 2 end
hành động 2 • Tiếp tục so sánh unit.
…. • Nếu unit giống chuỗi ‘m’ thì tính
otherwise y=x/100
hành động N • Với các trường hợp còn lại của
end unit, hiển thị chuỗi ‘Chua biet don
vi’ ra command window.
• Kết thúc
Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 9 Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 10
Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng
Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật
Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 11 Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 12
9/3/2019
Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng
Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật
Giả sử, muốn tính tổng = 3+5+7…+9. Dựa trên quy tắc đã biết là số nhỏ sẽ cộng 4.2.2. Cấu trúc lặp while - end
cho số lớn hơn nó hai đơn vị và cộng cho đến khi gặp số 9, cấu trúc lặp for-end sẽ
được ứng dụng để thực hiện việc này. • Cấu trúc lặp while – end thực hiện lặp đi lặp lại một lệnh hoặc khối lệnh
nào đó nhiều lần nếu điều kiện lặp vẫn còn được thoả mãn.
Code Matlab: Giải thích: • Không xác định trước được số lần lặp như cấu trúc lặp for-end
tong = 0; • Ban đầu, biến tong được gán bằng 0. • Cấu trúc lặp while – end có thể dẫn đến vòng lặp vô tận.
for i = 3:2:9 • Cho i đi từ 3 đến 9 với bước nhảy là 2 (nếu bỏ
số ở giữa thì mặc định bước nhảy là 1). while điều kiện lặp Giải thích:
tong = tong + i;
• i ban đầu bằng 3, tong ban đầu bằng 0. Khi i hành động • Gán 0 cho biến x.
end
bằng 3 thì giá trị tong hiện tại sẽ bằng giá trị end • Gán 5 cho biến n.
disp(tong) tong trước đó cộng với i = 3. Kết thúc một lần • Lặp lại dòng lệnh x=x+n
lặp. bằng cách lấy n cộng x
Code Matlab:
• Qua lần lặp thứ hai thì i bằng 5, tong lúc sau trước đó rồi gán cho x
x=0; n=5;
bằng tong trước cộng i. hiện tại (giá trị mới của x
while x<1000
• Quá trình cứ lặp lại như vậy cho đến khi i = 9 chồng lấp lên giá trị cũ
x=x+n
và ta đã tính được tổng của dãy số mong end của x).
muốn. • Lặp trong khi điều kiện
x<1000 còn thỏa mãn.
Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 13 Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 14
Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng
Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật
Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng
Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật
Chương 5
Lập trình PPPTHH cho
bài toán giàn phẳng
Giảng viên: Ths. Trần Kim Bằng
Bộ môn Cơ Kỹ Thuật, P.106B4
Khoa Khoa Học Ứng Dụng
Đại học Bách Khoa TpHCM
Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 1 Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 2
Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng
Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật
A B C
Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 3 Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 4
Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng
Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật
5.1.2. Nhập các hằng số như vật liệu, diện tích mặt cắt ngang 5.1.3. Rời rạc hóa kết cấu thành mô hình phần tử hữu hạn
Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 5 Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 6
9/3/2019
Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng
Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật
' q 2( 2 )
y ' 5.1.4. Tạo ma trận chứa tọa độ các nút
q 2(1) y
(3)
q • Ma trận toado là ma trận có n hàng, 2 cột.
q1( 2 ) 2
Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng
Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật
5.1.5. Tạo ma trận thể hiện mối quan hệ giữa phần tử và 5.1.6. Xác định số phần tử, số nút, khởi tạo các ma trận
nút tổng thể
Code Matlab: số phần tử
• Ma trận phantu là ma trận có n hàng 2 cột, n là số phần tử.
• Hàng 1 chứa số thứ tự tổng thể của nút đầu và cuối thuộc phần tử thứ 1. sophantu = size(phantu,1);
sonut_pt = size(phantu,2); số nút trên một phần tử
• Hàng n chứa số thứ tự tổng thể của nút đầu và cuối thuộc phần tử thứ n.
sonut = size(toado,1);
• Cột 1 chứa số thứ tự tổng thể của tất cả nút đầu của tất cả phần tử. Ktt = zeros(sonut*btd_nut,sonut*btd_nut); số nút tổng thể
• Cột 2 chứa số thứ tự tổng thể của tất cả nút cuối của tất cả phần tử. Ftt = zeros(sonut*btd_nut,1);
Code Matlab:
Khởi tạo ma trận độ cứng tổng thể
phantu(1,1)=1
Nút đầu phantu(1,2)=4
Phần tử 1 phantu = phantu(2,1)=2; Khởi tạo vector lực tổng thể
phantu(2,2)=4;
1 4 phantu(3,1)=3;
Phần tử 3 2 4 Nút cuối phantu(3,2)=4;
3 4
Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 9 Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 10
Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng
Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật
5.1.7. Nhập điều kiện biên ràng buộc chuyển vị 5.1.8. Nhập điều kiện biên tải trọng
• Tạo ma trận chứa số thứ tự tổng thể của
bậc tự do bị ràng buộc
0 1
0
• Vector rangbuoc là ma trận có 1 hàng n cột,
n là số lượng bậc tự do bị ràng buộc 2
• Mỗi phần tử của ma trận chứa số thứ tự 0 3
tổng thể của bậc tự do bị ràng buộc.
0 4
Phần tử thứ 1 của
Phần tử thứ 4 của
Ftt
0
5
ma trận rangbuoc
ma trận rangbuoc q2 q4 q6
chứa bậc tự do
chứa bậc tự do 1
x
x q1
2
x
x q3
3x x
q5 1
q2
2
q4
3
q6
0 6
thứ 1 bị ràng buộc
thứ 4 bị ràng buộc q1 q3 q5
(1) (2) (3)
Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 11 Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 12
9/3/2019
Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng
Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật
5.1.9. Biểu diễn đồ họa điều kiện biên ràng buộc chuyển vị
Code Matlab:
for i = 1:length(rangbuoc)
m = mod(rangbuoc(i),2);
hold on
if m ~= 0
x = toado((rangbuoc(i)+1)/2,1);
y = toado((rangbuoc(i)+1)/2,2);
plot(x-0.05,y,'>','markersize',17,'markerfacecolor','g');
elseif m == 0
x = toado(rangbuoc(i)/2,1);
y = toado(rangbuoc(i)/2,2);
plot(x,y-0.05,'^','markersize',17,'markerfacecolor','g');
5.2. Giải (Solution)
end
end
for i=1:sophantu
nutdau = phantu(i,1);
nutcuoi = phantu(i,2);
xi=toado(nutdau,1);
xj=toado(nutcuoi,1);
yi=toado(nutdau,2);
yj=toado(nutcuoi,2);
plot([xi xj],[yi yj],'-','linewidth',3);
plot([xi xj],[yi yj],'o','markersize',10,'markerfacecolor,’r’);
end
Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 13 Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 14
Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng
Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật
5.2.1. Xây dựng ma trận độ cứng tổng thể 5.2.1.1. Tính ma trận bool cho một phần tử
Code Matlab: Giải thích: Hàm tinh_bool có nhiệm vụ tính ma trận bool của một phần tử.
for i=1:sophantu Bắt đầu vòng lặp
nutdau = phantu(i,1); • Xác định tọa độ nút đầu và nút Nút i Nút j
Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng
Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật
5.2.1.2. Tính ma trận độ cứng K cho một phần tử Ma trận độ cứng K của phần tử thứ nhất
Hàm tinh_Kpt có nhiệm vụ tính ma trận cứng K của một phần tử.
Code Matlab: q2 q4 q6
function [Kpt] = tinh_Kpt(E,L,A,S,C) 1 2 3
Kpt = ((E*A)/L)*[C^2 C*S -C^2 -C*S; q1 q3 q5
C*S S^2 -C*S -S^2; Modulus đần hồi E của
-C^2 -C*S C^2 C*S; phần tử thứ (1) (2 ) (3) Ma trận bool của phần tử 1
-C*S -S^2 C*S S^2];
Sin và Cos của phần tử q8
4
Diện tích mặt cắt ngang của
q7
1 2 7 8
phần tử
Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng
Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật
Ma trận độ cứng K của phần tử thứ hai Ma trận độ cứng K của phần tử thứ ba
q2 q4 q6 q2 q4 q6
2 3 2 3
1 1
q1 q3 q5 q1 q3 q5
Ma trận bool của phần tử 2 Ma trận bool của phần tử 3
(1) (2) (3) (1) (2) (3)
q8 q8
4
3 4 7 8 4 5 6 7 8
q7 q7
0 0 0 0 3 0,35 0,35 -0,35 -0,35 5
0 -1 0,35
109
1 0 4 0,35 -0,35 -0,35 6
Kpt 2 0 Kpt 3 109
0 0 0 7 -0,35 -0,35 0,35 0,35 7
0 -1 0 1 8 8
-0,35 -0,35 0,35 0,35
Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 19 Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 20
Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng
Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật
Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 21 Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 22
Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng
Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật
Phương trình cân bằng cho toàn kết cấu 0, 707 0 q 7 10 4
109
K tt .U tt Ftt 0 1, 707 q 8 104
Áp đặt điều kiện biên chuyển vị
q 7 8 0,141 0 104
q1 q2 q3 q4 q5 q6 0 10
q 8 0 0, 059 104
0,353 0,353 0,000 0,000 0,000 0,000 0,353 0,353 q 1 H1
0,353
0,353 0,000 0,000 0,000 0,000 0,353 0,353 q 2 V1 q 1, 41.10 , m
5
Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 23 Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 24
9/3/2019
Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng
Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật
Hàm khu_dkb có nhiệm vụ khử điều kiện biên của ma trận cứng Ktt tổng 5.2.3. Giải phương trình đại số tuyến tính để thu được kết
thể và vector lực Ftt tổng thể quả chuyển vị
Code Matlab: Code Matlab:
function [Ktt,Ftt] = khu_dkb(Ktt,Ftt,rangbuoc) Ktt_bd = Ktt; %Luu lai ma tran do cung tong the ban dau
n = length(rangbuoc); Ftt_bd = Ftt; %Luu lai ma tran luc tong the ban dau
btdtt = length(Ktt); Vector chứa các bậc tự do bị [Ktt,Ftt] = khu_dkb(Ktt,Ftt,rangbuoc);%khu dieu kien bien
for i = 1:n ràng buộc Utt=inv(Ktt)*Ftt
c = rangbuoc(i);
for j=1:btdtt Vector lực của tổng thể sau khi
Vector lực tổng thể trước khi
Ktt(c,j)=0;%khu hang khử điều kiện biên
khử điều kiện biên
Ktt(j,c)=0;%khu cot
end Ma trận cứng của tổng thể sau
Ma trận cứng tổng thể trước khi khi đã khử điều kiện biên
Ktt(c,c) = 1;
khử điều kiện biên
Ftt(c) = 0;
end Vector chứa các kết quả chuyển
Vector lực tổng thể sau khi khử vị
điều kiện biên
Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 25 Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 26
Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng
Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật
0, 353.1, 41.10 5
0, 353. 0, 59.10 5 .10 9 7071 N
Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 27 Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 28
Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng
Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật
0,353 0,353 0,000 0,000 0,000 0,000 0,353 0,353 0 H1 0,353 0,353 0,000 0,000 0,000 0,000 0,353 0,353 0 H1
0,353
0,353 0,000 0,000 0,000 0,000 0,353 0,353 0 V1 0,353
0,353 0,000 0,000 0,000 0,000 0,353 0,353 0 V1
0,000 0,000 0,000 0,000 0,000 0,000 0,000 0,000 0 H 2 0,000 0,000 0,000 0,000 0,000 0,000 0,000 0,000 0 H 2
9
0,000 0,000 0,000 1,000 0,000 0,000 0,000 1,000 0 V2 9
0,000 0,000 0,000 1,000 0,000 0,000 0,000 1,000 0 V2
10 10
0,000 0,000 0,000 0,000 0,353 0,353 0,353 0,353 0 H 3 0,000 0,000 0,000 0,000 0,353 0,353 0,353 0,353 0 H 3
0 0
0,000 0,000 0,000 0,000 0,353 0,353 0,353 0,353 V3 0,000 0,000 0,000 0,000 0,353 0,353 0,353 0,353 V3
q q
0,353 0,000 7 10 0,353 0,000 7 10
4 4
0,353 0,000 0,000 0,353 0,353 0,707 0,353 0,000 0,000 0,353 0,353 0,707
q8 4 q8 4
0,353 0,353 0,000 1,000 0,353 0,353 0,000 1,707 10 0,353 0,353 0,000 1,000 0,353 0,353 0,000 1,707 10
H 2 0.q 7 0.q8 .10 9
H 3 0, 353.q7 0, 353.q8 .10 9
0.1, 41.10 5 0. 0, 59.10 5 .10 9 0 N
0, 353.1, 41.10 5 0, 353. 0, 59.10 5 .10 9 2929 N
V2 0.q 7 1.q8 .10 9
V3 0, 353.q 7 0, 353.q8 .10 9
0.1, 41.10 5
1. 0, 59.10 5
.10 9
5858 N
0, 353.1, 41.10 5
0, 353. 0, 59.10 5 .10 9 2929 N
Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 29 Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 30
9/3/2019
Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng
Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật
0 1
N e S e .qe 1 2 7 8
0 2
N1 109 -0,5 0,5 0,5 0,5 5
EA 1,414.10 7
S e -c s c s 0,586.105 8
L 10000 N
Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 31 Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 32
Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng
Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật
Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 33 Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 34
Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng
Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật
Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 35 Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 36
9/3/2019
Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng
Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật
5.3.2. Biểu diễn kết quả nội lực 5.3.3. Hiệu chỉnh kết quả nội lực
Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 37 Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 38
Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng
Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật
Nếu trên phần tử xuất hiện lực dọc trục thì ta phải hiệu chỉnh biểu đồ
nội lực bằng cách cộng thêm một biểu nội lực như hình dưới vào
phần tử
i
i (Lq)/2
L
(Lq)/2
q
j
j
Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng
Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật
Chương 6
Lập trình PPPTHH cho
bài toán khung phẳng
Giảng viên: Ths. Trần Kim Bằng
Bộ môn Cơ Kỹ Thuật, P.106B4
Khoa Khoa Học Ứng Dụng
Đại học Bách Khoa TpHCM
Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 1 Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 2
Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng
Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật
A B
p0
l l/2
6.1. Tiền xử lý (Preprocessor) l
q0l2 C
Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng
Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật
6.1.2. Nhập các hằng số như vật liệu, diện tích mặt cắt ngang 6.1.3. Rời rạc hóa kết cấu thành mô hình phần tử hữu hạn
Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 5 Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 6
9/3/2019
Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng
Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật
y,
q 2(1) q 2( 2 ) 6.1.4. Tạo ma trận chứa tọa độ các nút
q 5(1)
(2)
y,
(1) x, q • Ma trận toado là ma trận có n hàng, 2 cột.
3
q1( 2 ) • Với n là số nút.
q 3(1) q1(1) q (1) q 4(1) ( 2) q ( 2 ) • Hàng 1 chứa tọa độ của nút thứ 1
6
5
• Hàng n chứa tọa độ của nút thứ n
(1) 0 o q 2( 3 ) • Cột 1 chứa tọa độ x, cột 2 chứa tọa độ y của nút.
y, q 6( 2 ) q 4( 2 )
q 3( 3 ) ,
q1( 3 ) x toado = Code Matlab:
(3) q ( 3 ) (2) 90o Nút 1
toado(1,1)=0;
5 0 0 toado(1,2)=0;
1 0 toado(2,1)=1;
(3) (3) toado(2,2)=0;
q 6
q 4
1 -0.5
1 -1 toado(3,1)=1;
x, Nút 4 toado(3,2)=-0.5;
toado(4,1)=1;
(3) 9 0 o toado(4,2)=-1;
q i e là bậc tự do thứ i của phần tử thứ (e) theo chỉ
số địa phương khi xét trên một phần tử.
Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 7 Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 8
Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng
Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật
6.1.5. Tạo ma trận thể hiện mối quan hệ giữa phần tử và 6.1.6. Xác định số phần tử, số nút, khởi tạo các ma trận
nút tổng thể
Code Matlab: số phần tử
• Ma trận phantu là ma trận có n hàng 2 cột, n là số phần tử.
• Hàng 1 chứa số thứ tự tổng thể của nút đầu và cuối thuộc phần tử thứ 1. sophantu = size(phantu,1);
sonut_pt = size(phantu,2); số nút trên một phần tử
• Hàng n chứa số thứ tự tổng thể của nút đầu và cuối thuộc phần tử thứ n.
sonut = size(toado,1);
• Cột 1 chứa số thứ tự tổng thể của tất cả nút đầu của tất cả phần tử. Ktt = zeros(sonut*btd_nut,sonut*btd_nut); số nút tổng thể
• Cột 2 chứa số thứ tự tổng thể của tất cả nút cuối của tất cả phần tử. Ftt = zeros(sonut*btd_nut,1);
lucphap = zeros(1,sophantu);
Code Matlab: luctiep = zeros(1,sophantu);
Khởi tạo ma trận độ cứng tổng thể
phantu(1,1)=1
Nút đầu phantu(1,2)=2
Phần tử 1 phantu = phantu(2,1)=2; Khởi tạo vector lực tổng thể
phantu(2,2)=3;
1 2 phantu(3,1)=3;
2 3 Nút cuối Khởi tạo vector lực pháp tuyến
Phần tử 3 phantu(3,2)=4;
3 4
Khởi tạo vector lực tiếp tuyến
Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 9 Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 10
Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng
Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật
6.1.7. Nhập điều kiện biên ràng buộc chuyển vị 6.1.8. Biểu diễn đồ họa điều kiện biên ràng buộc chuyển vị
Code Matlab:
• Tạo ma trận chứa số thứ tự của bậc tự do A B for i = 1:length(rangbuoc)
bị ràng buộc m = mod(rangbuoc(i),3);
if m == 0
• Vector rangbuoc là ma trận có 1 hàng n cột,
x = toado(rangbuoc(i)/3,1);
n là số lượng bậc tự do bị ràng buộc C y = toado(rangbuoc(i)/3,2);
• Mỗi phần tử của ma trận chứa số thứ tự plot(x,y,'r+','markersize',20,'linewidth',3);
plot(x,y,'ro','markersize',15,'linewidth',2);
tổng thể của bậc tự do bị ràng buộc. D end
m = mod(rangbuoc(i)+1,3);
if m == 0
x q2 q5
x = toado((rangbuoc(i)+1)/3,1);
Phần tử thứ 2 của x (1)
x y = toado((rangbuoc(i)+1)/3,2);
Phần tử thứ 4 của
ma trận rangbuoc 2
chứa bậc tự do
ma trận rangbuoc q3 1 q1 q6 q4 plot(x,y-
0.05,'^','markersize',17,'markerfacecolor','g');
chứa bậc tự do (2 ) q8 end
thứ 2 bị ràng buộc
thứ 10 bị ràng m = mod(rangbuoc(i)+2,3);
buộc if m == 0
q9 3 q7 x = toado((rangbuoc(i)+2)/3,1);
Code Matlab: (3) q11 y = toado((rangbuoc(i)+2)/3,2);
plot(x-0.05,y,'>','markersize',17,'markerfacecolor','b');
rangbuoc = [1 2 3 10 11 12]; x x x end
q12 end
4 q10
Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 11 Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 12
9/3/2019
Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng
Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật
Code Matlab:
for i = 1 : sophantu
6.1.9. Nhập điều kiện biên tải trọng
nutdau = phantu(i,1); 6.1.9.1. Nhập điều kiện biên tải trọng tại nút H1 1
nutcuoi = phantu(i,2);
V1 2
xi = toado(nutdau,1);
xj = toado(nutcuoi,1); V1
yi = toado(nutdau,2); M 3
yj = toado(nutcuoi,2); A B 1
L(i) = sqrt((xj-xi)^2 + (yj-yi)^2);%chieu dai phan tu 0 4
C(i) = (xj-xi)/L(i);%cos(alpha) cua phan tu H 1 (1)
S(i) = (yj-yi)/L(i);%sin(alpha) cua phan tu M1 ( 2) 0 5
plot([xi xj],[yi yj],'-','linewidth',3);
plot([xi xj],[yi yj],'o','markersize',10); 0 6
text(xi+0.03,yi,num2str(nutdau));
C F nu t
0 7
text(xj+0.03,yj,num2str(nutcuoi)); Code Matlab:
if xj>xi
text((xj-xi)/2+xi,(yj-yi)/2 + yi,num2str(i));
Ftt(9) = 10000; (3) V 0 8
elseif xj == xi
4
text(xj,(yj-yi)/2 + yi,num2str(i)); D 1 00 0 0 9
elseif xj<xi H 10
4
text((xi-xj)/2+xj,(yj-yi)/2 + yi,num2str(i)); H4
end M4 V4 11
axis equal
grid on M 12
end 4
Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 13 Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 14
Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng
Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật
6.1.9.2. Quy đổi tải đặt trên phần tử thành tải tập trung tại nút 6.1.9.2.2. Tải đặt trên phần tử là lực tập trung tại giữa phần tử
6.1.9.2.1. Tải đặt trên phần tử là tải phân bố pháp tuyến/tiếp tuyến Q
y
2 s
y
y' p 0 c q 0s y’ Qc
p s q c 2
P5 0 0 Q P5 x'
qo x' QL
po 2 q 0 /2 2
P2 P2
6
/2 Pe 8
P4 P e
P4 Q s
2 0p c q s
0
P6 P6 2
1 p s q c 1
P1 0 0
P1 Q
P3 x q 0 c
P3
x 2
6 QL
8
Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 15 Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật
Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng
Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật
6.1.9.2.3. Tải đặt trên phần tử là moment tập trung tại giữa phần tử
M
3 2 s V1
y
y’ 3 M c A B Trong mô hình đang xét, vì số
2 H 1 (1) phần tử được sử dụng là 3 phần
P5 M1
M x’ M ( 2)
tử nên
/2 2
P2 4 • Tải phân bố pháp tuyến sẽ
/2 Pe C
P4 3 M s (3) V tác dụng lên phần tử (1)
P6 2 4
• Tải phân bố tiếp tuyến tác
1
M D
P1 dụng lên phần tử (2) và (3)
3 c H4
P3 x 2 M4
M
4
Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 18
9/3/2019
Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng
Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật
Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng
Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật
p 0c
Quy đổi tải phân bố tiếp tuyến thành tải tập
trung hai đầu nút cho phần tử (2) và (3)
p s
V1 0
0
A B P 'e Code Matlab:
2 p 0c function luctiep_tt = quydoi_luctiep(luctiep,S,C,L)
H 1 (1) p 0s
M1 ( 2)
luctiep_tt(1,1) = (L/2)*(luctiep*C);
luctiep_tt(2,1) = (L/2)*(luctiep*S);
0 luctiep_tt(3,1) = (L/2)*0;
luctiep_tt(4,1) = (L/2)*(luctiep*C);
C luctiep_tt(5,1) = (L/2)*(luctiep*S);
(3) V 0 4 7 luctiep_tt(6,1) = (L/2)*0;
4
2500 5 8
D
0 6 9
H 4 P ( 2 ) P ( 3)
M4 0 7 10
2500 8 11
0 9 12
Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 21 Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 22
Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng
Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật
Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 23 Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 24
9/3/2019
Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng
Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật
6.2.1.1. Tính ma trận bool cho một phần tử 6.2.1.2. Tính ma trận độ cứng K cho một phần tử
Hàm tinh_bool có nhiệm vụ tính ma trận bool của một phần tử.
Nút i Nút j
(e )
q 1( e ) q 2( e ) q 3( e ) q 4( e ) q 5( e ) q 6
pt (1) q1 q2 q 3 q4 q5 q6
pt (2) q4 q5 q6 q 7 q8 q9
pt (3) q 7 q8 q9 q 1 0 q 1 1 q12
Code Matlab:
function [mt_bool_pt] = tinh_bool(mt_nut_pt,btd_nut)
k = 0;
sonut_pt = size(mt_nut_pt,2);
for i = 1:sonut_pt Bậc tự do của mỗi nút
s = (mt_nut_pt(i) - 1)*btd_nut;
for j = 1:btd_nut ma trận chứa số thứ tự tổng
k=k+1; thể các nút của phần tử
mt_bool_pt(k) = s + j;
end Số nút của phần tử
end
ma trận bool của một phần
tử thứ i
Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 25 Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 26
Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng
Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật
Hàm tinh_Kpt có nhiệm vụ tính ma trận cứng K của một phần tử. Ma trận bool của phần tử 1
Code Matlab: 1 2 3 4 5 6
function [Kpt] = tinh_Kpt(E,A,J,L,S,C)
B=12*J/(L^2);
10 0 0 10 0 0 1
Kpt = (E/L)*[A*C^2+B*S^2 (A-B)*C*S -B*L*S/2 -(A*C^2+B*S^2) -(A-B)*C*S -B*L*S/2; 0 0,12 0,06 0 0,12 0,06 2
(A-B)*C*S
-B*L*S/2
A*S^2+B*C^2
B*L*C/2
B*L*C/2
4*J
-(A-B)*C*S
B*L*S/2
-(A*S^2+B*C^2)
-B*L*C/2
B*L*C/2;
2*J;
-(A*C^2+B*S^2) -(A-B)*C*S B*L*S/2 A*C^2+B*S^2 (A-B)*C*S B*L*S/2; 0 0,06 0,04 0 0,06 0,02 3
-(A-B)*C*S
-B*L*S/2
-(A*S^2+B*C^2)
B*L*C/2
-B*L*C/2
2*J
(A-B)*C*S
B*L*S/2
A*S^2+B*C^2
-B*L*C/2
-B*L*C/2;
4*J]; K(1) 2.108 ,N /m
10 0 0 10 0 0 4
0 0,12 0,06 0 0,12 0,06 5
0 0,06 0,02 0 0,06 0,4 6
Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 27 Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 28
Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng
Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật
4 5 6 7 8 9
0,96 0 0,24 0,96 0 0,24 4 7 8 9 10 11 12
0 20 0 0 20 0 5 0,96 0 0,24 0,96 0 0,24 7
0
0,24 0 0,08 0,24 0 0,04 6 20 0 0 20 0 8
K(2) 2.10
8
,N/m 0,04 9
0,96 0 0,24 0,96 0 0,24 7 8 0,24 0 0,08 0,24 0
0
K(3) 2.10 ,N/m
20 0 0 20 0 8 0,96 0 0,24 0,96 0 0,2410
0
0,24 0 0,04 0,24 0 0,08 9 20 0 0 20 0 11
0,24 0 0,04 0,24 0 0,08 12
Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 29 Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 30
9/3/2019
Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng
Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật
Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 31 Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 32
Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng
Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật
6.2.1.4. Lắp ghép vector lực quy đổi trên phần tử vào vector lực
tổng thể 0 1 H1 1 H1
Hàm chuyen_Ftt_td có nhiệm vụ lắp ghép vector lực của phần tử vào 5000 2 V1 2 5000 V1
vector lực tổng thể 833,3 3 M 3 833,3 M
1 1
Code Matlab: 0 4 0 4 0
7500
function Ftt = chuyen_Ftt_td(Ftt,Ftt_td,mt_bool_pt)
Ftt(mt_bool_pt,1) = Ftt(mt_bool_pt,1) + Ftt_td;
7500 5
0 5
0 6 833,3
833,3
6
Ftt Fqd Fnut
0 7 0 7 0
5000 8 0 8 5000
0 9 1 00 0 0 9 10000
0 10 H 10 H4
4
2500 11 V 4 1 1 2500 V4
M4
0 12 M 4 1 2
Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 33 Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 34
Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng
Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật
Phương trình cân bằng cho toàn kết cấu 10,96 0 0,24 0,96 0 0,24 q 4 0
0 20,12 0,06 0 20 0 7500
K tt .U tt Ftt q5
8 0,24 0,06 0,12 0,24 0 0,04 q 6 833,3
Áp đặt điều kiện biên chuyển vị lên ma trận độ cứng tổng thể 2.10 .
0,96 0 0,24 1,92 0 0 q7 0
q1 q2 q10 q11 0 q3 q12 0 5000
0 20 0 0 40 0 q 8
10 0 0 10 0 0 0 0 0 0 0 0 q 1 H1
0
0,12 0,06 0 0,12 0,06 0 0 0 0 0 0
q 2
5000 V1
0,24 0 0,04 0 0 0,16 q 9 10000
833,3 M
0 0,06 0,04 0 0,06 0,02 0 0 0 0 0 0 q 3 1
10 0 0 10,96 0 0,24 0,96 0 0,24 0 0 0 q 0
4
0 0,12 0,06 0 20,12 0,06 0 20 0 0 0 0 q 5 7500
8 0 0,06 0,02 0,24 0,06 0,12 0, 24 0 0,04 0 0 0 q 6 833,3
2.10
0 0 0 0,96 0 0, 24 1,92 0 0 0,96 0 0,24 q 7 0
0 0 0 0 20 0 0 40 0 0 20 0 5000
q 8
0 0,04
0 0 0,24 0 0,04 0 0 0,16 0, 24 0
q
9
10000
0 0 0 0 0 0 0,96 0 0, 24 0,96 0 0, 24 q 10 H4
0 0 0 0 0 0 0 20 0 0 20 0 q 11 2500 V4
0
M
0 0 0 0 0 0,24 0 0,04 0, 24 0 0,08 q 12 4
Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 35 Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 36
9/3/2019
Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng
Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật
Hàm khu_dkb có nhiệm vụ khử điều kiện biên của ma trận cứng Ktt tổng
thể và vector lực Ftt tổng thể
q4 0,0992 0,0004 0,0748 0,0402 0,0002 0,1302 0
0,0004
q5 0,0992 0,0748 0,0091 0,0496 0,0180 7500 Code Matlab:
function [Ktt,Ftt] = khu_dkb(Ktt,Ftt,rangbuoc)
q6
8 0,0748 0,0748 12,612 1,5391 0,0374 3,0409 833,3 n = length(rangbuoc);
0,5.10 .
q7 0,0403 0,0091 1,5391 0,7333 0,0046 0,4452 0 btdtt = length(Ktt); Vector chứa các bậc tự do bị
for i = 1:n ràng buộc
q8
0,0002 0,0496 0,0374 0,0046 0,0498 0,0090 5000 c = rangbuoc(i);
q
9 0,1302 0,0180 3,0409 0,4452 0,0090 7,2055 10000 for j=1:btdtt Vector lực tổng thể trước khi
Ktt(c,j)=0;%khu hang khử điều kiện biên
q4 5 Ktt(j,c)=0;%khu cot
0, 680.10 , m end
q5 0,555.10 5 , m Ktt(c,c) = 1;
Ma trận cứng tổng thể trước khi
khử điều kiện biên
q 0, 000103, rad Ftt(c) = 0;
6 5 end
q7 1, 63.10 , m Vector lực tổng thể sau khi khử
0, 34.10 5 , m điều kiện biên
q
8
q 0, 000349, rad Ma trận cứng tổng thể sau khi
9
đã khử điều kiện biên
Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 37 Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 38
Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng
Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật
6.2.3. Giải phương trình đại số tuyến tính để thu được kết 6.2.4. Tính phản lực
quả chuyển vị function [phan_luc] = tinh_phan_luc(Ktt_bd,Ftt_bd,Utt)
phan_luc = Ktt_bd*Utt - Ftt_bd;
Ktt_bd = Ktt; %Luu lai ma tran do cung tong the ban dau 10 0 0 10 0 0 0 0 0 0 0 0 q 1 0 H1
0
Ftt_bd = Ftt; %Luu lai ma tran luc tong the ban dau 0,12 0,06 0 0,12 0,06 0 0 0 0 0 0 q 2 50001 V1
0 0,06 0,04 0 0,06 0,02 0 0 0 0 0 0 q 3 833,3 M1
[Ktt,Ftt] = khu_dkb(Ktt,Ftt,rangbuoc);%khu dieu kien bien q 0 0
10 0 0 10,96 0 0,24 0,96 0 0,24 0 0 0 4
Utt=inv(Ktt)*Ftt 0 0,12 0,06 0 20,12 0,06 0 20 0 0 0 0 q 5 7500 0
0 0,06 0,02 0,24 0,06 0,12 0, 24 0 0,04 0 0 0 q 6 833,3 0
2.108
0 0 0 0,96 0 0, 24 1,92 0 0 0,96 0 0,24 q 7 0 0
Utt =
q 8 5000 0
1.0e-03 * Vector lực của tổng thể sau khi 0 0 0 0 20 0 0 40 0 0 20 0
0 0,04
q 9
10000 0
0 khử điều kiện biên
0 0 0,24 0 0,04 0 0 0,16 0, 24 0
q 1 0 H
0 0 0 0 0 0 0,96 0 0, 24 0,96 0 0, 24 0 4
0
q 1 1 2500 V4
0 0 0 0 0 0 0 20 0 0 20 0
0 Ma trận cứng của tổng thể sau 0 0 0 0 0 0 0,24 0 0,04 0, 24 0 0,08
q 1 2 0 M 4
-0.0068 khi đã khử điều kiện biên
-0.0056 H1 13598N
-0.1032 Vector chứa các kết quả chuyển V 3894,5N
-0.0163 1
vị M 487 Nm
-0.0034
1
0.3485
H 4 13598N
0 V4 16105N
0
0 M 4 2005,5Nm
Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 39 Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 40
Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng
Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật
Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 41 Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 42
9/3/2019
Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng
Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật
Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 43 Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 44
Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng
Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật
Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 45 Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 46
Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng
Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật
6.3.2. Biểu diễn kết quả moment nội lực 6.3.3. Hiệu chỉnh kết quả moment nội lực
Lưu ý: vẽ theo quy ước toán học với chiều dương quy ước theo hệ trục
tọa độ địa phương phần tử
Dấu – là vì chiều tác dụng
của q ngược với chiều
l = 1m dương trục y’ của phần tử
y,
q = -10000 N/m Thế q = -10000 vào đây
thì giá trị moment nội lực
tại giữa dầm sẽ dương
và ta vẽ ở trên theo quy
x, ước toán học
Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 47 Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật
9/3/2019
Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng
Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật
-M/4 = -2500 Nm
(Pl)/8 = -2500 Nm (Pl)/8 = -2500 Nm
-M/2 = -5000 Nm
Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật
Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng
Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật
Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng
Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật
Chương 7
Đồ họa ba chiều trong
Matlab
Giảng viên: Ths. Trần Kim Bằng
Bộ môn Cơ Kỹ Thuật, P.106B4
Khoa Khoa Học Ứng Dụng
Đại học Bách Khoa TpHCM
Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 1 Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 2
Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng
Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật
Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 3 Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 4
Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng
Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật
Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng
Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật
Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 7 Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 8
Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng
Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật
Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 9 Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 10
Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng
Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật
7.5. Phổ màu ba chiều 7.6. Một số lệnh đồ họa ba chiều đặc biệt
Để biểu diễn sự thay đổi một đại lượng trên một miền 7.6.1. Lệnh patch
diện tích trong không gian ba chiều bằng màu sắc, ta Lệnh patch vẽ và tô màu các mặt để ghép thành hình ba chiều
dùng lệnh fill3(x,y,z,c)
Code Matlab:
X = [x(1) x(2) x(3) … x(n)] x=[0 0 0 0; 0 1 1 0;0 1 1 0]';
y=[0 1 1 0; 0 0 0 0;1 1 1 1]';
Y = [y(1) y(2) y(3) … y(n)]
z=[0 0 1 1; 0 0 1 1;0 0 1 1]';
Z = [z(1) z(2) z(3) … z(n)] patch(x,y,z,-z)
C = [c(1) c(2) c(3) … c(n)] axis square
fill3(X,Y,Z,C) Giá trị c(3) ứng với vị trí x(3), y(3) và z(3) view([35,35])
zlabel('z'), ylabel('y')
Code Matlab:
X = [0 1 1 2;1 1 2 2;0 0 1 1];
Y = [1 1 1 1;1 0 1 0;0 0 0 0];
Z = [1 1 1 1;1 0 1 0;0 0 0 0];
C = [0.5000 1.0000 1.0000 0.5000; 1.0000 0.5000 0.5000 0.1667;
0.3330 0.3330 0.5000 0.5000];
fill3(X,Y,Z,C)
Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 11 Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 12
9/3/2019
Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng
Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật
Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng
Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật
Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 15 Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 16
Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng
Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật
7.7. Vẽ mặt cong có dạng xoắn ốc 7.8. Vẽ đường giao của hai mặt
Code Matlab: Code Matlab:
a = 1.13; b = 1.14; a = 1;
uu = linspace(0, 2*pi, 30); [xs, ys, zs] = sphere(30);
vv = linspace(-15, 6, 45); surf(2*a*xs, 2*a*ys, 2*a*zs)
[u, v] = meshgrid(uu, vv); hold on
x = a.^v.*cos(v).*(1+cos(u)); [x, y, z] = cylinder;
y = -a.^v.*sin(v).*(1+cos(u)); surf(a*x+a, a*y, 4*a*z-2*a)
z = -b*a.^v.*(1+sin(u)); shading interp
h=surf(x, y, z); t = linspace(0, 4*pi, 100);
%set(h, 'FaceAlpha', 0.4) x = a*(1+cos(t));
%shading interp y = a*sin(t);
axis vis3d on equal z = 2*a*sin(t/2);
view([-35 38]) plot3(x, y, z, 'y-', 'Linewidth', 2.5);
axis equal off
view([45, 30])
Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 17 Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 18
9/3/2019
Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng
Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật
Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 19 Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 20
Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng
Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật
Hiển thị và sử dụng phổ màu cho các loại đồ thị 2 chiều và 3 chiều:
Một số dạng phổ màu trong MATLAB plot, plot3, mesh, surf, contour…
Standard Colormap Description Chọn 8 đoạn màu cho phổ màu hot
hsv Phổ màu 7 sắc bắt đầu và kết hot(8)
thúc là màu đỏ
jet bắt đầu là màu đỏ và kết thúc Code Matlab:
là màu xanh dương [x,y,z]=peaks;
hot, cool Màu nóng và màu lạnh mesh(x,y,z);
summer,autumn,winter,spring Màu của bốn mùa colormap(hot(8))
white,gray,bone,pink Biến thiên từ màu đó đến axis([-3 3 -3 3 -6 8])
màu trắng
colorbar % hiển thị phổ màu
copper Màu đồng
Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 21 Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 22
Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng
Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật
Để sử dụng nhiều hơn một phổ ta dùng các lệnh sau: Code Matlab:
Code Matlab: [X,Y] = meshgrid(-8:.5:8);
mymap=[hsv(32);copper(32)]; R = sqrt(X.^2 + Y.^2) + eps;
colormap(mymap) Z = sin(R)./R;
mesh(peaks+8); surf(X,Y,Z,Z)
view(90,0)
hold on Tương tự như lệnh surf(X,Y,Z) vì màu mặc định thay đổi theo
mesh(peaks-8); phương Z
Thay đổi góc nhìn view(az,el)
colorbar surf(X,Y,Z,-Z) %thay đổi ngược chiều trục Z
hold off surf(X,Y,Z,X) %thay đổi theo trục X
Xoay 90 độ theo trục z ngược chiều kim đồng hồ surf(X,Y,Z,X+Y) %thay đổi theo mặt X-Y
surf(X,Y,Z,R) %thay đổi theo bán kính
Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 23 Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 24
9/3/2019
Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng
Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật
Code Matlab:
sphere
colormap(gray)
shading interp
light %bật đèn chiếu
lighting none %đèn chiếu mặc định
lighting gouraud %đèn chiếu gouraud
lighting phong %đèn chiếu phong
Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng
Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật
Chương 8
Các phép toán trên đa thức
và biến biểu tượng
Giảng viên: Ths. Trần Kim Bằng
Bộ môn Cơ Kỹ Thuật, P.106B4
Khoa Khoa Học Ứng Dụng
Đại học Bách Khoa TpHCM
Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 1 Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 2
Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng
Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật
Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 3 Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 4
Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng
Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật
Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 5 Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 6
9/3/2019
Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng
Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật
Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 7 Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 8
Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng
Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật
Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng
Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật
Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 11 Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 12
9/3/2019
Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng
Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật
8.2.2. Thế một hàm vào biến biểu tượng 8.2.3. Thế một giá trị hay một biểu thức vào biến biểu tượng
Thế hàm vào biến bằng lệnh compose Lệnh subs dùng để thay thế một giá trị hay một biểu thức vào biến
syms a b c x y symbolic
f = a*x^2+b*x+c syms a b alpha
g = sin(y); f=cos(a)+sin(b);
h=compose(f,g) g=subs(f,{a,b},{alpha,2}) % thế alpha vào a và 2 vào b
g1=subs(f,{a,b},{[2 3],[12 8]})
Ta được: g = sin(2) + cos(alpha)
Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 13 Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 14
Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng
Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật
8.2.4. Biểu diễn biểu thức toán học trên đồ thị 8.2.5. Tính giới hạn hàm số
Biểu diễn biểu thức toán học trên đồ thị bằng lệnh latex Tính giới hạn bằng lệnh limit
syms x y t Tính giới hạn của hàm f khi h tiến đến 0
F1 = diff(atan(x)); syms x h n
F2 =(x^2+1/x)/sqrt((sin(x)+cos(x))/x^3.5); limit((cos(x+h)-cos(x))/h,h,0)
H1=latex(F1); Tính giới hạn của hàm g khi n tiến về vô cùng
H2=latex(F2); g = (1+x/n)^n
text(.2,.25,['$$' H1 '$$'],'interpreter','latex','fontsize',14) limg = limit(g,n,inf)
text(.6,.2, ['$$' H2 '$$'],'interpreter','latex','fontsize',16)
Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 15 Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 16
Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng
Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật
Tính giới hạn bên phải hay bên trái (0+ hay 0-) của hàm 1/x 8.2.6. Tìm hàm ngược
syms x Dùng lệnh finverse để tìm hàm ngược
lim_plus=limit(1/x,x,0,'right') syms x
lim_minus=limit(1/x,x,0,'left') f=tan(1/x)
Trong trường hợp này, nếu ta không ghi rõ giới hạn trái hay phải thì kết finverse(f)
quả sẽ không xác định
syms x
limit(1/x,x,0)
Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 17 Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 18
9/3/2019
Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng
Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật
8.2.7. Giải phương trình theo biến biểu tượng 8.2.8. Giải hệ phương trình theo biến biểu tượng
Giải phương trình theo biến symbolic bằng lệnh solve syms a b c d x y t
syms a b c x [x,y]=solve(a*x+b*y-t,c*x+d*y)
f=a*x^2+b*x+c; Hoặc ta có thể dùng cách khác
y=solve(f) syms a b c d x y t
Ta có thể giải theo biến ta mong muốn, giả sử là biến b g=solve(a*x+b*y-t,c*x+d*y)
syms a b c x g.x
f=a*x^2+b*x+c; g.y
y=solve(f,b)
Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 19 Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 20
Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng
Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật
8.2.9. Thu gọn và khai triển biểu thức 8.2.10. Biến đổi tổng thành tích
Thu gọn biểu thức bằng lệnh collect Lệnh factor biến đổi biểu thức từ dạng tổng thành tích
syms x t b syms x
f=(1+x)*t*b^2+x*t*b^3+b f=x^3-6*x^2+11*x-6;
f1=collect(f) f=factor(f)
f2=collect(f,x) % Đặt x ra ngoài Ta được: f = (x-3)*(x-1)*(x-2)
f3=collect(f,t) % Đặt t ra ngoài syms x
f4=collect(f,b) % Đặt b ra ngoài g=x^6+1;
Khai triển biểu thức bằng lệnh expand g=factor(g)
syms x y Ta được: g = (x^2+1)*(x^4-x^2+1)
g=cos(x+y);
g=expand(g)
Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 21 Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 22
Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng
Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật
8.2.11. Tối giản biểu thức 8.2.12. Lấy các hệ số trong đa thức
Tối giản biểu thức bằng lệnh simplify Lọc ra các hệ số đi kèm biến x bằng lệnh coeffs
syms x syms x
f=(1-x^2)/(1-x); f=x^3-2*x^2+3*x-4;
f=simplify(f) c=coeffs(f,x)
Ta được: c =[ -4, 3, -2, 1]
Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 23 Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 24
9/3/2019
Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng
Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật
8.2.13. Đạo hàm theo biến biểu tượng 8.2.14. Tích phân theo biến biểu tượng
Lệnh lấy đạo hàm diff
Lệnh lấy tích phân int
syms a x
syms x
f=sin(a*x^2);
f=sin(x);
diff(f) %lấy đạo hàm của f theo biến gần nhất với ký tự x dựa trên quy
F=int(f) %lấy tích phân của f theo x
luật alphabet
F1=int(f,0,pi) %lấy tích phân của f theo x trên khoảng từ 0 đến pi
diff(f,a) %lấy đạo hàm của f theo biến ta mong muốn là biến a
diff(f,2) %lấy đạo hàm cấp 2 của f theo biến gần nhất với ký tự x dựa trên
quy luật alphabet syms x y
diff(f,a,2) %lấy đạo hàm cấp 2 của f theo biến ta mong muốn là biến a f=sin(x) +y^2;
F=int(f,y) %lấy tích phân của f theo y
Lấy đạo hàm cho mảng hai chiều
F1=int(f,y,0,2) %lấy tích phân của f theo y trên khoảng từ 0 đến pi
syms a x
A=[cos(a*x),sin(a*x); -sin(a*x),cos(a*x)];
diff(A) %lấy đạo hàm theo biến x
Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 25 Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 26
Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng
Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật
df dx
f sin(t ) dt y (t)
dt
dy x (t)
Giải phương trình vi phân không có điều kiện ban đầu dt
Matlab sẽ ngầm hiểu y và x là hàm theo t
dsolve('Df = f + sin(t)')
z = dsolve('Dx = y', 'Dy = -x')
dy
1 y 2 , y (0) 1 Giải hệ phương trình vi phân có điều kiện ban đầu x=2 và y =1 lúc t = 0
dt
dy dx
Giải phương trình vi phân có điều kiện ban đầu y =1 lúc t = 0 1 2 y , 4 y 5 x , x 0 2 , y (0) 1
dt dt
dsolve('Dy=1+y^2','y(0)=1') s = dsolve('Dy=1+2*y','Dx=4*y+5*x','x(0)=2','y(0)=1')
Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 27 Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 28
Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng
Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật
s = dsolve('Dy=1+2*y','Dx=4*y+5*x','x(0)=2','y(0)=1')
• Để có thể dễ dàng thay đổi các tham số 2, 4 và 5, ta dùng cách ghép Để tính x(t) và y(t) theo một dãy thời gian t=0:0.01:5, ta dùng các lệnh sau
chuỗi syms t
• Bằng cách sử dụng lệnh strcat để ghép chuỗi và num2str để thay đổi t=0:0.05:5;
tham số xt = eval(s.x);
plot(t,xt);
• Gán các phương trình vi phân vào một biến nào đó, giả sử đặt tên là
yt = eval(s.y);
Eq1 và Eq2
figure
• Gán điều kiện ban đầu vào một biến nào đó, giả sử đặt tên là Intcond plot(t,yt);
a = 2; b = 4; c = 5
Eq1 = strcat('Dy=1+',num2str(a),'*y')
Eq2 = strcat('Dx=',num2str(b),'*y+',num2str(c),'*x')
Intcond = 'x(0)=2,y(0)=1'
s = dsolve(Eq1, Eq2, Intcond)
Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 29 Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 30
9/3/2019
Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng
Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật
8.2.17. Giải phương trình vi phân theo phương pháp gần đúng Lần lượt thực hiện các bước sau
Dùng lệnh ode45 Trước hết, phải tạo một m-file với tên hàm tùy ý. Giả sử đặt tên là ptvp1.
Trong đó chứa phương trình vi phân ta muốn giải gần đúng
d 2 y1 dy1 dy1 d y1
1000(1 y12 ) y1 , y1(0) 2 , (0) 0 function dy = ptvp1(t,y) dt
y2
dt 2 dt dt dy = zeros(2,1);
dy2 d y1
dy(1) = y(2); Số phần tử trong dy 1 0 0 0 (1 y 1 2 ) y1
Lệnh giải phương trình vi phân gần đúng trong matlab không định nghĩa dt dt
dy(2) = 1000*(1 - y(1)^2)*y(2) - y(1);
được đạo hàm cấp 2 trở lên. Do đó, ta phải dùng phương pháp đổi biến y 1( 0 ) 2 , y 2 ( 0 ) 0
Sau đó, chuyển về thư mục hiện hành chứa ptvp1.m rồi gọi lệnh giải ode45
dy1 [T,Y] = ode45(@ptvp1,[0:1:3000],[2 0]);
y2
dt
dy 2 dy1 Khoảng thời gian Điều kiện ban đầu
1000(1 y12 ) y1 Tên m-file
cần xét
dt dt
y1(0) 2 , y 2(0) 0
Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 31 Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 32
Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng
Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật
Mảng Y sẽ chứa các giá trị y1 và y2 theo thời gian t. Với Y(:,1) chứa y1
và Y(:,2) chứa y2 (cũng là dy1/dt)
Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng
Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật
Chương 9
CHUỖI KÝ TỰ VÀ CÁC CÚ
PHÁP XỬ LÝ CHUỖI
Giảng viên: Ths. Trần Kim Bằng
Bộ môn Cơ Kỹ Thuật, P.106B4
Khoa Khoa Học Ứng Dụng
Đại học Bách Khoa TpHCM
Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 1 Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 2
Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng
Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật
Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 3 Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 4
Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng
Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật
Để chuyển đổi chuỗi thành dạng số, số thành chuỗi, dùng những lệnh sau
Với mảng các ký tự, có thể thao tác như trên một mảng thông thường
t='How about this charcacter string?' Các lệnh chuyển đổi
u=t(16:24) str2num
u=t(26:-1:16) num2str
u=t(16:24)’
Code Matlab:
Để đưa vào mảng dấu nháy đơn ta sử dụng 2 dấu nháy đơn x=[12,4.6,5,15.67]
vv=mat2str(x)
v='I can''t find the manual!' hoặc v=['I can''t' ' find the manual!']
vv(1)
Ta có thể nối 2 chuỗi với nhau
Code Matlab:
w=[u,v] tt='23'
tt*2
Để in ra chuỗi dùng lệnh disp str2num(tt)*2
disp(w);
Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 5 Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 6
9/3/2019
Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng
Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật
Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 7 Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 8
Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng
Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật
Code Matlab:
S=char('apple','banana','peach','mango','pineapple')
strmatch('pe',S)
strmatch('p',S)
strmatch('banana',S)
9.2. Đọc và ghi chuỗi ký tự
strmatch('Banana',S) lên file text
upper('Banana')
lower('Banana')
Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 9 Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 10
Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng
Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật
Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 11 Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 12
9/3/2019
Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng
Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật
Code Matlab:
disp('How are you')
How are you Code Matlab:
disp(pi) length =8;
3.1416 st='met';
a=[1 4 3 7]; fprintf('do dai la%4.1f %s\n',length,st)
disp(a) do dai la 8.0 met
1437 fprintf('do dai la%4.1f\b %s\n',length,st)
length=8; do dai la 8. met
fprintf('do dai la: \n %6.1f m',length); fprintf('do dai la%4.1f\t %s\n',length,st)
do dai la: do dai la 8.0 met
8m fprintf('Hello!\n')
Hello!
Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 13 Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 14
Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng
Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật
Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 15 Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 16
Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng
Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật
9.2.3. Đọc file text định dạng txt 9.2.4. Đọc dữ liệu nút và phần tử từ ANSYS
Code Matlab:
Cú pháp: fid=fopen('NLIST.lis');
no=textscan(fid,'%f%f%f%f','HeaderLines',3,'commentStyle','N');
fid = fopen(filename, 'r'); % gọi file tên filename để đọc
fclose(fid);
fscanf(fid,format, size); % đọc file và ghi lại với định dạng format idI=[no{1}];
fclose(fid) % đóng file xI=[no{2}];
% fid: biến chỉ định file được mở yI=[no{3}];
% size: ma trận kích thước
node=[xI yI];
Code Matlab: numnode = size(node,1);
fid = fopen('test.txt', 'r'); fid=fopen('ELIST.lis');
el=textscan(fid,'%*d%*d%*d%*d%*d%*d%d%d%d%d%*d','HeaderLines',2,'
fscanf(fid, '%g %g', [2 inf]); commentStyle','E');
fclose(fid) fclose(fid);
element=[el{1} el{2} el{3} el{4}];
Chú ý:
size: ma trận [m n], n có thể là inf, m không thể là inf
Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 17 Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 18
9/3/2019
Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng
Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật
Vẽ lưới phần tử
figure
hold on
axis equal
h = plot(node(:,1),node(:,2),'bo');
set(h,'MarkerSize',3);
for i = 1:size(element)
x1 = node(element(i,1),1);
x2 = node(element(i,2),1);
x3 = node(element(i,3),1);
x4 = node(element(i,4),1);
y1 = node(element(i,1),2);
y2 = node(element(i,2),2);
y3 = node(element(i,3),2);
y4 = node(element(i,4),2);
plot([x1 x2],[y1 y2],'-r','linewidth',1);
plot([x2 x3],[y2 y3],'-r','linewidth',1);
plot([x3 x4],[y3 y4],'-r','linewidth',1);
plot([x4 x1],[y4 y1],'-r','linewidth',1);
end
Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng
Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật
Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 1 Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật
Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng
Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật
Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật
Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng
Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật
Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật
9/3/2019
Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng
Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật
Component Palette
Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật
Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng
Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật
Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật
Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng
Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật
• Push Button: push button sẽ thực thi một đoạn code khi được click vào. • Radio Button: radio button có chức năng tương tự như check box, sẽ thực
Khi nhấn vào push button, nó sẽ bị chìm xuống và khi bỏ ra nó sẽ nổi lên thi một hành động khi nó được đánh dấu (check) hay bỏ dấu (uncheck).
và phần callback của nó sẽ được thực thi. Radio Button được sử dụng để bật tắt một số chức năng độc lập của
• Toggle Button: toggle button sẽ thực hiện một hành động khi nó được bật chương trình, tức là có thể lựa chọn nhiều trường hợp một lúc. Nhưng radio
lên hay tắt đi. Khi nhấn vào toggle button, nó sẽ bị chìm xuống, tức là nó button khác check box ở chổ là người dùng có thể tạo một group radio
đang ở trạng thái “on”, thực thi một đoạn code nào đó ở trạng thái on. button bằng cách dùng Button Group và chỉ có thể check một radio button
Khác với push button, toggle button sẽ giữa nguyên trạng thái “on” khi di trong group đó, còn những nút còn lại là uncheck, tức là chỉ có thể chọn một
chuyển chuột ra chỗ khác. Người dùng phải click chuột một lần nữa thì nó trong nhiều trường hợp
mới nổi lên, và trở về trạng thái off và sẽ thực thi một hành động nào đó ở • Edit Text: edit text cho phép người dùng nhập vào một chuỗi ký tự. Bằng
trạng thái “off”. một số đoạn code, người dùng có thể sử dụng các chuỗi ký tự này để tác
• Check Box: check box sẽ thực thi một hành động khi nó được đánh dấu động vào chương trình, thay đổi một số trạng thái …
(check) hay bỏ dấu (uncheck). Check box được sử dụng để bật tắt một số • Static Text: static text cho phép người dùng nhập vào một chuỗi ký tự,
chức năng độc lập của chương trình, tức là có thể lựa chọn nhiều trường nhưng chuỗi kỹ tự này không tác động vào hoạt động của chương trình. Do
hợp một lúc. đó, static text được dùng để chú thích hay hướng dẫn chức năng một đối
• Slider: slider cho phép thay đổi giá trị số khi di chuyển con trượt. Vị trí của tượng nào đó trong GUI.
con trượt trên slider (tức là nó đang cách vị trí đầu và cuối một khoảng • List box: list box thể hiện một danh sách các lựa chọn và người dùng có thể
cách bao nhiêu, bằng bao nhiêu % đối với độ dài slider) sẽ tác động đến chọn một hay nhiều lựa chọn tại một thời điểm.
giá trị số đi kèm với slider
Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật
9/3/2019
Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng
Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật
• Pop-Up Menu: pop-up menu thể hiện một danh sách các lựa chọn khi
người dùng click vào mũi tên và người dùng chỉ có thể chọn một lựa chọn • Nếu kéo đối
tại một thời điểm. tượng push
• Axes: axes cho phép người dùng vẽ đồ thị hay các hình ảnh lên nó. button vào layout
• Panel: panel dùng để nhóm một số đối tượng trong GUI. Panel làm giao area, nó sẽ xuất
diện rõ ràng hơn. Người dùng có thể đặt tiêu đề cho panel hay chỉnh sửa hiện như sau
hình dạng đường biên của panel. Khi nhiều đối tượng được đặt vào
• Người dùng có
panel (nhóm một đối tượng), khi di chuyển panel, các đối tượng di
thể sử dụng
chuyển theo mà vẫn không bị xáo trộn vị trí trong panel.
Layout Editor để
• Button Group: button group dùng đề nhóm các radio button lại. Khi đó,
gán các tính chất
chỉ có thể check một radio button trong group đó, còn những nút còn lại là
cơ bản cho các
uncheck, tức là chỉ có thể bật một radio button ở trạng thái “on” tại một
đối tượng trong
thời điểm.
GUI
• Table: table cho phép người dùng thể hiện các kết quả thu được dưới
dạng bảng số liệu
Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật
Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng
Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật
Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật
Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng
Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật
Xuất hiện hộp thoại yêu cầu lưu giao diện vừa tạo lại
Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật
9/3/2019
Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng
Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật
Ta chọn thư mục để lưu giao diện vừa tạo với tên là giaodien4 Sau khi lưu lại, hai file là giaodien4.fig và giaodien4.m sẽ xuất hiện trong thư mục
vừa lưu. Đồng thời, file giaodien4.m cũng được Matlab tự động mở ra.
Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật
Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng
Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật
Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật
Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng
Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật
Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật
9/3/2019
Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng
Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật
Lưu FIG-file lại và khi đó M-file sẽ sinh ra Callback của đối tượng push button
vừa tạo và thay đổi các tính chất nếu được chỉnh sửa. Nếu thêm các đoạn code
dưới đây thì khi push button hoạt động, đoạn code sẽ được thực thi.
Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật 26
Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng
Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật
10.2.1. Giới thiệu 10.2.2. Cấu trúc handles trong Matlab GUI
• Sau khi đã thiết kế xong phần bề mặt của giao diện, người dùng có thể
lập trình M-file của GUI bằng cách sử dụng M-file editor. GUIDE sẽ tự Trong Matlab GUI, có thể dùng cấu trúc handles để chia sẻ dữ liệu giữa
động sinh ra M-file khi người dùng lần đầu tiên chạy GUI. Vậy thì M-file các hàm callback của các đối tượng (tương tự như biến toàn cục). Có thể
của GUI sẽ có tác dụng: định nghĩa và gọi cấu trúc handles ở bất kỳ hàm callback nào trong GUI.
o Khởi tạo GUI Cách dùng:
o Chứa các đoạn code để thực thi các nhiệm vụ nhất định khi GUI xuất 1.Chọn tên cho cấu trúc handles mình muốn chia sẻ dữ liệu với mọi
hiện trên màn hình. Chẳng hạn như hiển thị dữ liệu hay hình vẽ. callback. (vd: handles.var1)
o Chứa đựng các hàm callback, sẽ hoạt động mỗi lần người dùng click 2.Gán giá trị cho cấu trúc handles đó. (tương tự như dùng biến)
vào một đối tượng của GUI (vd: handles.var1 = x)
• Khi mới xuất hiện, mỗi callback sẽ chứa một dòng function mặc định. 3.Lưu cấu trúc handles bằng cách dùng hàm guidata
Người dùng sẽ dùng M-file editor để thêm các đoạn code dưới dòng guidata(hObject, handles)
fuction mặc định này để đối tượng có thể hoạt động theo ý muốn. Để
4.Gọi lại var1 ở một callback khác:
mở M-file:
y = handles.var1
Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật
Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng
Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật
Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật
9/3/2019
Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng
Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật
Sẽ xuất hiện bảng này và ta sửa tại đây Ta đã sửa lại chuỗi ban đầu của Edit Text
Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật
Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng
Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật
Để minh họa cách thức hoạt động của Edit Text và sự tương tác giữa các đối tượng,
function pushbutton1_Callback(hObject, eventdata, handles)
ta tiến hành xây dựng một giao diện gồm một Push Button và hai Edit Text.
% hObject handle to pushbutton1 (see GCBO)
Nhập một số a vào edit_1, bấm pushbutton_1, edit_2 sẽ hiển thị giá trị a*2
% eventdata reserved - to be defined in a future version of
MATLAB
% handles structure with handles and user data (see
GUIDATA)
a=str2double(get(handles.edit1,'string'));
b=a*2;
set(handles.edit2,'string',num2str(b));
Phải có handles.
Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật
Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng
Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật
Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật
9/3/2019
Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng
Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật
10.2.6. Panel Tạo một panel và đổi tên là nhóm 1 Lấy từng đối tượng bỏ vào panel để tạo thành một nhóm đối tượng là nhóm 1.
Điều này giúp giao diện trở nên gọn gàng và dễ sắp xếp.
Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật
Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng
Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật
Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật
Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng
Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật
Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật
9/3/2019
Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng
Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật
Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng
Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật
7.2.10. Slider
% --- Executes on button press in pushbutton1.
function pushbutton1_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
a=str2double(get(handles.edit1,'string'));
x=1:1:10; Lấy chuyển vị của hai
du_lieu = [a*x' 2*a*x']; mảng handles.t1 và
ten_cot = {'nhan voi a','nhan voi 2a'}; handles.xt1 rồi gán hai
set(handles.uitable1,'ColumnName',ten_cot,'data',du_lieu); mảng này vô biến data
Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật
Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng
Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật
Check box khi được check sẽ có Lấy giá trị của checkbox2 và gán vào
giá trị bằng 1 biến handles.val2.
Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật
9/3/2019
Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng
Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật
Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng
Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật
Kéo hai đối tượng Radio Button và thả vào đối tượng Button Group (nhóm lại).
Khi đã nhóm hai radio button vào một button group thì chỉ có thể check một lựa
Mở View Callback của đối tượng Button Group và chọn dòng như trong hình
chọn duy nhất
Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật
Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng
Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật
Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật
9/3/2019
Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng
Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật
Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng
Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật
Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật Matlab® – Matrix Laboratory Lập trình tính toán Cơ kỹ thuật
Đại học Quốc gia Thành phố Hồ Chí Minh Khoa Khoa học ứng dụng
Trường đại học Bách Khoa Bộ môn Cơ kỹ thuật
GUI 2