Môn học này dựa trên MATLAB để hỗ trợ cho các môn học trong kỹ thuật.. CÁCH TIẾP NHẬN NỘI DUNG MÔN HỌC Để học tốt môn này, người học cần thực hành theo hướng dẫn, làm các bài tập; đọc t
Trang 2THỰC HÀNH TIN HỌC KỸ THUẬT
Ấn bản 2019
Trang 4MỤC LỤC
MỤC LỤC 1
HƯỚNG DẪN 2
BÀI 1: CƠ SỞ VỀ MATLAB 3
1.1 MA TRẬN 6
1.2 VECTOR 7
1.3 ĐA THỨC 7
1.4 ĐỒ HOẠ 8
1.5 SCRIPT - FUNCTION 14
BÀI 2: GUI (GRAPHICAL USER INTERFACE) 19
BÀI 3: SIMULINK 24
BÀI 4: SYMBOLIC 24
TÀI LIỆU THAM KHẢO 35
Trang 5HƯỚNG DẪN
MÔ TẢ MÔN HỌC
Thực hành tin học kỹ thuật là môn học hỗ trợ cho môn Tin học kỹ thuật Môn học này dựa trên MATLAB để hỗ trợ cho các môn học trong kỹ thuật
NỘI DUNG MÔN HỌC
− Bài 1 Cơ sở về MATLAB
YÊU CẦU MÔN HỌC
Người học phải dự học đầy đủ các buổi lên lớp và làm bài tập đầy đủ
CÁCH TIẾP NHẬN NỘI DUNG MÔN HỌC
Để học tốt môn này, người học cần thực hành theo hướng dẫn, làm các bài tập; đọc trước bài mới và tìm thêm các thông tin liên quan đến bài học
PHƯƠNG PHÁP ĐÁNH GIÁ MÔN HỌC
Môn học được đánh giá gồm:
− Điểm quá trình: 50% Hình thức và nội dung do giảng viên quyết định, phù hợp với quy chế đào tạo và tình hình thực tế tại nơi tổ chức học tập
− Điểm thi: 50% Hình thức bài thi trên máy tính trong 90 phút
Trang 6BÀI 1: CƠ SỞ VỀ MATLAB
Sau khi học xong bài này, người học có thể:
− Sử dụng phần mềm MATLAB
− Thực hiện tạo các script file hay function và lưu trữ trên MATLAB
− Biết được các công cụ cơ bản trên MATLAB
MATLAB (Matrix laboratory) là phần mềm dùng để giải các bài toán kỹ thuật, đặc biệt
là các bài toán liên quan đến ma trận MATLAB cung cấp các toolboxes, tức các hàm mở rộng môi trường MATLAB để giải quyết các vấn đề đặc biệt như xử lý tín hiệu số, hệ thống điều khiển, mạng neuron, fuzzy logic, mô phỏng v.v
Cửa sổ biểu tượng của chương trình MATLAB:
Trang 7Cửa sổ làm việc của MATLAB:
• Cửa sổ lệnh (Command window):
Là cửa sổ giao tiếp chính của MATLAB bởi đây là nơi nhập giá trị các biến, hiển thị giá trị, tính toán giá trị của biểu thức, thực thi các hàm có sẵn trong thư viện hoặc các hàm
do người dùng lập trình ra trong M-files Các lệnh được nhập sau dấu nhắc ‘>>‘ và thực thi lệnh bằng phím Enter Để mở chương trình soạn thảo trong MATLAB, gõ lệnh:
>>edit
Thư mục hiện hành
Các lệnh đã thực hiện Nút Start: chứa
các toolbox
Trang 8Sau khi nhập vào đoạn chương trình và lưu chương trình bằng cách nhấn Ctrl+S hay nhấn vào biểu tượng Save
• Cửa sổ Command History:
Các dòng đã nhập trong Command window (các dòng này có thể là dòng nhập biến,
có thể là dòng lệnh) được giữ lại trong cửa sổ Command History và cửa sổ này cho phép
ta sử dụng lại những lệnh đó bằng cách nhấp đúp chuột lên các lệnh hay biến đó
• Cửa sổ Workspace:
Là cửa sổ thể hiện tên các biến bạn sử dụng cùng với kích thước vùng nhớ (số bytes), kiểu dữ liệu (lớp), các biến được giải phóng sau mỗi lần tắt chương trình Cửa sổ Workspace cho phép thay đổi giá trị của biến bằng cách nhấn phím chuột phải lên các
Trang 9k [ [ A ; sum(A) ] [ sum(A,2) ; sum(A(:)) ] ]
Bài 1.2 Cho ma trận A = [2 4 1; 6 7 2; 3 5 9], sinh viên dùng các lệnh cần thiết để:
a Lấy dòng đầu tiên của ma trận A
b Tạo ma trận B bằng 2 dòng cuối cùng của A
c Tính tổng các phần tử trên các cột của A (gợi ý: tính tổng các phần tử trên cột 1: sum(A(:,1)))
Gợi ý: A.X = B → X = inv(A).B
Bài 1.4 Chứng tỏ rằng (A+B)C=AC+BC, với:
Trang 10>>z=rand(10,1) ; tạo 10 số ngẫu nhiên phân bố đều
Bài 1.5 Cho vector x = [3 1 5 7 9 2 6], giải thích kết quả của các lệnh sau:
Trang 11Bài 1.8 Giải phương trình x3- 2x2+4x+5=0 Kiểm chứng kết quả thu được bằng hàm
polyval Sinh viên có nhận xét gì về kết quả kiểm chứng
Bài 1.9 Lặp lại bài 1.8 cho phương trình x7-2=0
Để xác định màu và kích thước đường vẽ, ta dùng các tham số sau:
LineWidth : độ rộng đường thẳng, tính bằng số điểm
MarkerEdgeColor : màu của các cạnh của khối đánh dấu
MarkerFaceColor : màu của khối đánh dấu
MarkerSize : kích thước của khối đánh dấu
Màu được xác định bằng các tham số:
r: red m magenta g: green y: yellow
b: blue k: black c: cyan w: white
Các dạng đường thẳng xác định bằng:
- đường liền đường đứt nét
: đường chấm chấm - đường chấm gạch
Các dạng điểm đánh dấu xác định bằng:
Trang 12+ dấu cộng điểm o vòng tròn x chữ thập * dấu sao
s hình vuông d hạt kim cương v tam giác hướng xuống
^ tam giác hướng lên < tam giác sang trái
> tam giác sang phải h lục giác p ngũ giác
Bài 1.11 Thực hiện đoạn chương trình sau và ghi nhận kết quả
>>x = -pi : pi/10 : pi;
>>y = tan(sin(x)) - sin(tan(x));
>>plot(x,y,ʹ‐‐rs’,ʹLineWidthʹ,2,ʹMarkerEdgeColorʹ,ʹkʹ, ʹMarkerFaceColorʹ,ʹgʹ,ʹMarkerSizeʹ,10)
Nếu x, y, z là 3 vector có cùng độ dài thì plot3 sẽ vẽ đường cong 3D
Bài 1.12 Thực hiện đoạn chương trình sau và ghi nhận kết quả
>>t = 0:pi/50:10*pi;
>>plot3(sin(t),cos(t),t)
>>axis square;
>>grid on
Dùng hàm subplot để vẽ nhiều trục toạ độ
Bài 1.13 Thực hiện đoạn chương trình sau và ghi nhận kết quả
Trang 13MATLAB cung cấp các lệnh ghi nhãn lên đồ hoạ gồm:
title thêm nhãn vào đồ hoạ
xlabel thêm nhãn vào trục x
ylabel thêm nhãn vào trục y
zlabel thêm nhãn vào trục z
legend thêm chú giải vào đồ thị
text hiển thị chuỗi văn bản ở vị trí nhất định
gtext đặt văn bản lên đồ hoạ nhờ chuột
Bài 1.14 Thực hiện đoạn chương trình sau và ghi nhận kết quả
>>title(ʹ\it{Gia tri cua sin tu zero đến 2 pi}ʹ,ʹFontsizeʹ,16)
Ta có thể thêm văn bản vào bất kỳ chỗ nào trên hình vẽ nhờ hàm text
>>text(3*pi/4,sin(3*pi/4),ʹ\leftarrowsin(t)=0.707ʹ,ʹFontSizeʹ,12)
Ta có thể sử dụng đối tượng văn bản để ghi chú các trục ở vị trí bất kỳ MATLAB định
vị văn bản theo đơn vị dữ liệu trên trục Ví dụ để vẽ hàm y = Aet với A = 0.25, t = 0 đến 900 và = 0.005:
Trang 14{\itt}=300’,ʹFontSize’,14) Tham số HorizontalAlignment và VerticalAlignment định vị văn bản so với các toạ độ
x, y, z đã cho
Để thêm các công thức toán học, ta dùng dạng LaTeX
Bài 1.15 Thực hiện ghi các công thức toán học sau:
1
2 / 0
( ) ( )
N
j kn N n
Trang 15Bài 1.16 Thực hiện đoạn chương trình sau và ghi nhận kết quả
Hàm mesh và surf tạo ra mặt 3D từ ma trận dữ liệu Gọi ma trận dữ liệu là z mà mỗi
phần tử của nó z(i,j) xác định tung độ của mặt thì mesh(z) tạo ra một lưới có màu thể hiện mặt z còn surf(z) tạo ra một mặt có màu z
Bước thứ nhất để thể hiện hàm 2 biến z=f(x,y) là tạo ma trận x và y chứa các toạ độ trong miền xác định của hàm Hàm meshgrid sẽ biến đổi vùng xác định bởi 2 vector x và
y thành ma trận x và y Sau đó ta dùng ma trận này để đánh giá hàm
>>hold on %giu hinh, mac nhien la hold off
>>y2=sin(x.^2); %luy thua tung phan tu
>>plot(x,y2,’k’) %duong ve co mau den
>>axis([0 4*pi –1.25 1.25]) %dinh lai toa do hien thi
Ta có thể đặt nhãn cho các trục cũng như tiêu đề cho đồ thị:
>>xlabel(‘Time’)
>>ylabel(‘Amplitude’)
>>title(‘y1=sinx.cos2x and y2=sin(x^2)’)
>>legend(‘sinx.cos2x’,’sinx^2’)
Bài 1.18 Thực hiện như bài 1.17 nhưng dùng các hàm semilogx, semilogy, loglog
thay thế cho plot
Trang 16Bài 1.19.Thực hiện như bài 1.17 cho hàm số y = 𝑒−𝑥
Gợi ý: x = rcos, y = rsin
MATLAB cung cấp nhiều hàm vẽ đồ thị 3D, chẳng hạn: plot3 - dùng để vẽ các đường trong không gian 3 chiều; mesh và surf - dùng để vẽ vật thể 3D
Trang 17i = i + 1;
end plot(f)
Nhấn Save để lưu đoạn mã lệnh này và đặt tên là fibo.m Đây chính là một script file
Để thực hiện các mã chứa trong file fibo.m từ cửa sổ lệnh ta nhập:
>>fibo
Và nhấn enter Kết quả MATLAB sẽ vẽ ra đồ thị của chuỗi Fibonacci
Bài 1.27 Nhập đoạn chương trình sau trên cửa sổ Editor:
Trang 18Lưu lại với tên tb.m
% Trong do: x1,x2 la nghiem
% a, b, c la 3 he so cua phuong trinh
if nargin<3 error('Error! Nhap 3 he so cua phuong trinh') elseif a==0
x1=-c/b;
x2=[];
else delta = b^2 - 4*a*c;
Bài 1.29 Xây dựng hàm vdcongdb(a,m,method) để vẽ một số đường cong trong
hệ tọa độ cực, với a là bán kính và m là số đường cong vẽ trên cùng trục tọa độ Trường hợp này hàm không trả về giá trị
Trang 19Tuỳ theo giá trị của tham số ‘method’ mà ta vẽ đồ thị tương ứng:
Nếu method = ’Becnulli’: Vẽ đường Becnulli: 𝑟 = 𝑎√|2𝑐𝑜𝑠2𝜃|
Nếu method = ’Astroit’: Vẽ đường Astroit: 𝑟 = 𝑎√|1 −𝑠𝑖𝑛3𝜃
4 |
Nếu method = ‘Xoanoc’: Vẽ đường xoắn ốc: r = cosθ +1
Nội dung hàm như sau:
function vdcongdb(a,m,method)
% Ve duong cong trong toa do cuc: vdcongdb(a,m,method)
% method = 'Becnulli' - Ve duong Lemniscat Becnulli:
Trang 20Bài 1.30 Xây dựng hàm dudoan() để dự đoán kết quả sau mỗi lần tung một xúc
xắc đồng nhất, 6 mặt Nội dung hàm như sau:
function dudoan()
% Du doan ket qua sau moi lan tung ngau nhien mot xuc xac 6 mat
% Chuong trinh lap lai cho den khi nguoi su dung khong doan tiep tiep = 'y'; sai=0; dung=0;
disp('Chao mung ban den voi chuong trinh du doan xuc xac!') while(lower(tiep)=='y')
doan=input('Moi ban du doan ket qua (1-6):');
kqua=tungxx;
if (doan ~= kqua) disp('Xin loi, ban da doan sai!') sai=sai+1;
else
Trang 21disp('Xin chuc mung!') dung=dung+1;
end tiep=input('Ban muon choi tiep(''y''/''n''):');
end disp(['Dung ' num2str(dung) ' trong tong so ' num2str(sai+dung) ' lan doan'])
% subfunction - function mat = tungxx()
Bài 1.32 Viết function giaimach(E1,E2,J,R1,R2,C,R3) xuất ra công suất trên E1,
E2, J; dòng điện trên R3
Viết script md1 nhập các giá trị E1, E2, J, R1, R2, C, R3; dùng function giaimach để
tính và xuất ra các giá trị công suất trên E1, E2, J; dòng điện trên R3
E1 R1
C
R3
BA
J
E2 R2
Trang 22BÀI 2: GUI (GRAPHICAL USER INTERFACE)
Sau khi học xong bài này, người học có thể:
− Dùng GUI để thiết kế giao diện
− Viết chương trình cho các nút lệnh
Bài 2.1 Khởi động cửa sổ tạo GUI bằng cách chọn Start > MatLab > GUIDE (GUI Builder)
Hay gõ lệnh:
>>guide
Cửa sổ GUIDE Quick Start xuất hiện, ta chọn Blank GUI
Trang 23Thiết kế giao diện sau:
Đối tượng Thông số
Nút nhấn String: Convert
Tag: pushbuttonConvert
3 Radio Button String: Celcius, Rankine, Kelvin
Value: 1.0, 0.0, 0.0 Tag: radiobuttonC, radiobuttonR, radiobuttonK
Static text String: Fahrenheit degree
Static text String: Celcius degree
Tag: text2
Trang 24Đối tượng Thông số
Slider Max: 9032
Min: -459.4 SliderStep: [0.001 0.1]
Nhấn Save để lưu giao diện, cửa sổ Editor cho giao diện sẽ mở ra
Mã lệnh cho các đối tượng:
function pushbuttonConvert_Callback(hObject, eventdata, handles)
Trang 25set(handles.radiobuttonC,'Value',0);
set(handles.text2,'String','Kelvin degree');
Kiểm tra kết quả
Bài 2.2 Thiết kế cửa sổ như hình vẽ:
Viết chương trình theo yêu cầu: khi nhấn nút Draw, vẽ hình y = xn nếu chọn chế
độ vẽ 2D và vẽ hình z = xn + yn nếu chọn chế độ vẽ 3D (giá trị n chỉ chấp nhận nếu 2
n 10)
Bài 2.3 Thiết kế cửa sổ như hình vẽ:
Trang 26Viết chương trình theo yêu cầu: Khi nhấn nút Ve, vẽ đồ thị hàm số tuỳ theo hàm số
được chọn:
- Chọn sin: vẽ hàm số y = Biên độ*sin(x)
- Chọn sinc: vẽ hàm số y = Biên độ*sinc(x)
- Chọn sa: vẽ hàm số y = Biên độ*sin(x)/x
- Chọn sa^2: vẽ hàm số y = Biên độ*(sin(x)/x)2
Giá trị biên độ chỉ cho phép nếu thoả mãn: 0.1 biên độ 1
Bài 2.4 Thiết kế cửa sổ như hình vẽ:
Bài 2.5 Thiết kế cửa sổ thực hiện cho bài 1.31
Trang 27BÀI 3: SYMBOLIC
Sau khi học xong bài này, người học có thể:
− Sử dụng Symbolic Toolbox để tính toán tích phân, đạo hàm, giới hạn
Bài 3.1 Dùng hàm diff để xác định đạo hàm của một hàm số
Trang 28Bài 3.5 Dùng hàm finverse để tìm hàm ngược
Bài 3.7 Tính và vẽ đạo hàm của hàm số y = sinx3
Bài 3.8 Vẽ mặt có phương trình sau:
Bài 3.10 Giải phương trình: 𝑒𝑥 = 𝑥
Bài 3.11 Giải hệ phương trình: { 𝑥2𝑠𝑖𝑛𝑥2− 𝑦 = 7
𝑥 − 𝑦 = 2
Trang 29Bài 3.12 Dùng hàm dsolve giải phương trình và hệ phương trình vi phân
>>[f,s] = dsolve ('Dz=3*z+4*y', 'Dy=-4*z+3*y' , 'z(0)=0','y(0)=1','x')
Bài 3.13 Giải phương trình y’’ + 3y’ - 4y = e-4x +xe-x
Bài 3.14 Giải phương trình y’’ - 3y’ + 2y = 3x +5sin2x với điều kiện đầu y(0) = 1 và
y’(0) = 1
Bài 3.15 Giải hệ phương trình:
với ngõ vào V là hàm bước (hàm heaviside(x))
Bài 3.16 Giải phương trình với ngõ vào F(t) là hàm bước
Bài 3.17 Giải hệ phương trình:
Trang 30BÀI 4: SIMULINK
Sau khi học xong bài này, người học có thể:
− Sử dụng Simulink
− Dùng Simulink để mô hình hóa hệ thống
Bài 4.1 Mô phỏng tín hiệu AM: 𝑉𝐴𝑀(𝑡) = 𝑉Ω𝑐𝑜𝑠Ω𝑡𝑐𝑜𝑠𝜔0𝑡
Khởi động Simulink bằng cách gõ lệnh Simulink từ Command Window hay chọn
Simulink Library
Chọn New để tạo mô hình mới
Trang 31Kéo và thả khối Signal Generator (trong thư viện Simulink > Sources) vào cửa sổ
thiết kế
Thêm các khối và nối liên kết như hình
Trang 32Double-click vào khối Signal Generator và chọn thông số về biên độ, tần số
Trang 33Khối Sine Wave:
Trang 34Khối Power Spectral Density
Vào menu Simulation > Model Configuration Parameters
Trang 35Chọn các thông số như hình:
Nhấn Run chạy mô phỏng
Bài 4.2 Mô phỏng tín hiệu AM: 𝑉𝐴𝑀(𝑡) = (𝑉0+ 𝑉𝛺𝑐𝑜𝑠𝛺𝑡)𝑐𝑜𝑠𝜔0𝑡
- Khối Sine Wave: Amplitude = 1
- Khối Constant: Constant Value = 1
Bài 4.3 Giải hệ phương trình: { 𝑧1+ 𝑧2= 1
−𝑧1+ 𝑧2 = 1
Bài 4.4 Giải phương trình: x2 + 3x + 1 = 0
Bài 4.5 Giải phương trình: x′(t) = −2x(t) + u(t)
Bài 4.6 Mô phỏng hệ thống v' = (u – bv)/m
f
Trang 36Bài 4.7 Mô phỏng hệ thống điều khiển tốc độ động cơ DC
Trang 37Bài 4.8 Mô phỏng hệ thống sau:
Bài 4.9 Mô phỏng hệ thống sau:
b1 = 350 (hệ số chống rung của hệ thống giảm xóc)
b2 = 15000 (hệ số chống rung của bánh xe)
w: ngõ vào (ảnh hưởng do mặt đường)
u: ngõ vào (lực điều khiển)
x1, x2: ngõ ra (vị trí của xe)
Trang 38TÀI LIỆU THAM KHẢO
1 Phạm Hùng Kim Khánh Tin học kỹ thuật ĐH Công nghệ TPHCM
2 Sanjit K Mitra Digital Signal Processing Laboratory using MatLab
3 Academic and Research Computing Text formatting with LaTex 2007
4 The Mathworks Inc R2018b Documentation