• MATLAB là một ngôn ngữ lập trình thông dịch có tăng cường thư viện riêng các lệnh về toán và đồ thị.. Nguyễn Mỹ• Các lệnh được nhập vào sau dấu nhắc >> • Để xóa các lệnh trong cửa sổ d
Trang 2NGUYEN NGOC MY
CAD (Computer-aided design) là việc sử
dụng máy tính như một công cụ hỗ trợ cho quá trình thiết kế và bản thảo thiết kế
CAD được ứng dụng trong nhiều lĩnh vực: kiến trúc - xây dựng, điện – điện tử, quản lý dự án,…
Trang 3NGUYEN NGOC MY
Trang 4NGUYEN NGOC MY
Trang 5NGUYEN NGOC MY
Trang 6NGUYEN NGOC MY
Dùng ISIS (Proteus) để mô phỏng:
Trang 7NGUYEN NGOC MY
Trang 10NGUYEN NGOC MY
Mỗi nhóm tối đa 3 sinh viên
Chú ý: Ưu tiên cho các bạn không có máy được chọn bất kỳ nhóm nào để tham gia
Hoạt động này thay cho những buổi thực hành, cho nên sinh viên phải trình bày
phần lý thuyết và chạy demo cho các đề tài báo cáo của mình
Nội dung báo cáo: phần 2 của giáo trình
Basic of MATLAB and Beyond.
Trang 11NGUYEN NGOC MY
Đăng ký nhóm và đề tài: qua website www.nguyenmy.info trước ngày ???
Báo cáo trước tập thể lớp
Điểm báo cáo do GV và các nhóm khác quánh giá
Trang 12NGUYEN NGOC MY
Mỗi nhóm thực hiện 1 sản phẩm tùy thích
có giao diện được thiết kế bằng MATLAB
Chạy thử sản phẩm cho giáo viên xem để chấm điểm riêng
Trang 13NGUYEN NGOC MY
ĐỀ TÀI GỢI Ý:
Thiết kế giao diện đồ họa MATLAB thực hiện một số chức năng như:
o Cho người dùng nhập liệu
o Xử lý dữ liệu và hiện kết quả
Trang 14NGUYEN NGOC MY
– Basics of MATLAB and Beyond, Andrew Knight (Chapman & Hall Press, USA)
– Thí nghiệm CAD, ThS Nguyễn Chí Ngôn
(Đại học Cần Thơ)
Trang 15Nguyễn Mỹ
Tham khảo từ quyển “Basics of MATLAB and beyond” của Andrew Knight
15
Trang 16Nguyễn Mỹ
Giới thiệu chung
Làm quen với MATLAB
Trợ giúp
Toán tử & Biến
Ma trận
16
Trang 17Nguyễn Mỹ
• MATLAB = MATrix LABoratory
• MATLAB là một ngôn ngữ lập trình thông dịch có tăng cường thư viện riêng các lệnh về toán và đồ thị
• Cho phép mô phỏng nhiều lĩnh vực kỹ thuật
• MATLAB có thể được mở rộng tính năng thông qua các toolbox chuyên dụng
(http://www.mathworks.com/products).
17
Trang 18Nguyễn Mỹ
Một số bộ công cụ chuyên dụng:
18
Trang 19Nguyễn Mỹ
• Ra đời vào những năm 1970 bởi nhà toán học
kiêm lập trình viên Cleve Moler (trưởng bộ môn Tin học, ĐH New Mexico, Mỹ)
• MATLAB ban đầu hỗ trợ cho FORTRAN
• 1984, Jack Little, Cleve Moler và Steve Bangert viết lại MATLAB bằng C và thành lập tập đoàn MathWorks
19
Trang 2020
Trang 21Nguyễn Mỹ 21
Trang 22Nguyễn Mỹ
• Giao diện mặc định ban đầu của MATLAB:
Nơi nhập lệnh Lịch sử lệnh
Kho làm việc
Kho làm việc
22
Trang 23Nguyễn Mỹ
• Các lệnh được nhập vào sau dấu nhắc >>
• Để xóa các lệnh trong cửa sổ dòng lệnh : clc
• Kho làm việc (Workspace): chứa các biến và giá trị của chúng
23
Trang 24Nguyễn Mỹ
• Khai báo biến: không cần khai báo kiểu dữ liệu
24
Trang 25Nguyễn Mỹ
• Phân biệt ký tự hoa thường
– Biến ans giữ giá trị tạm trong
Trang 27Nguyễn Mỹ
– Help -> Full product family help
27
Trang 28Nguyễn Mỹ
MATLAB hỗ trợ nhiều dạng trợ giúp:
• helpwin: Trợ giúp thông qua giao diện
• helpdesk: Trợ giúp trực tuyến
• demo: Các minh họa
• help <từ khóa>: Tìm thông tin hàm
• lookfor <từ khóa>: Tìm hàm có chứa từ khóa
• doc <tên hàm>: Truy xuất tài liệu chỉ dẫn về hàm
28
Trang 29Nguyễn Mỹ 29
Trang 32Nguyễn Mỹ
• Các toán tử luận lý: trả về 0 hoặc 1
32
Trang 33Nguyễn Mỹ
• Biến x khác với biến X
• Tên biến phải bắt đầu bởi ký
tự.
• Các ký tự đặc biệt không được
dùng để đặt tên biến, ngoại trừ
dấu gạch dưới.
33
Trang 35Nguyễn Mỹ
Dùng để kết xuất 1 vector với các phần tử cách-đều-nhau dựa trên bước nhảy giữa các phần tử
x:y
tạo 1 vector có các tọa độ chạy từ x đến y, các tọa độ này cách nhau 1 đơn vị.
x:d:y
tạo 1 vector có các tọa độ chạy từ x đến y, các
Trang 38Nguyễn Mỹ
Sử dụng dấu ba chấm trước khi xuống
hàng đối với các dòng lệnh dài trong
MATLAB
38
Trang 39Nguyễn Mỹ
Ma trận được bao bởi [ và ]
Các dòng cách nhau bởi dấu chấm phẩy
39
Trang 40Nguyễn Mỹ
Mỗi phần tử của ma trận có thể là 1 ma trận
40
Trang 4242
Trang 43Nguyễn Mỹ
43
Trang 44Nguyễn Mỹ
Tạo vector u ngẫu nhiên:
Lấy ra phần tử thứ 3 của vector u:
44
Trang 45Nguyễn Mỹ
Lấy ra 3 phần tử đầu tiên của vector u:
45
Trang 48Nguyễn Mỹ
Gán [] cho dòng hoặc cột cần xóa
48
Trang 49Nguyễn Mỹ
Ma trận chuyển vị của ma trận a là a’
49
Trang 50Nguyễn Mỹ
CAD
Tham khảo:
- Basics of MATLAB and Beyond, Andrew Knight, CRC Press (Mỹ)
- Bài giảng MATLAB, Andy Newman, ĐH bang Colorado (Mỹ)
Trang 51Đồ thị đường 2D (Line plot 2D)
Tinh chỉnh đồ thị (Graph modification)
Trang 52Nguyễn Mỹ 52
Trang 53Xét ví dụ mở đầu phần 4 (Basic Graphics) của giáo trình:
Cho biết:
Ý nghĩa của lệnh plot?
Những tham số cơ bản để dựng đồ thị với
plot?
Trang 54plot(x,y)
– Dựng đồ thị cho vector y dựa trên vector x.
– Đồ thị được dựng trong 1 cửa sổ figure.
– Tự động canh chỉnh trục để phù hợp với dữ liệu – Có thể dùng hàm min, max để tìm điểm nhỏ nhất, lớn nhất trên vùng đồ thị đã dựng.
– VD: plot([0 1 2],[3 4 5])
Trang 55figure(n)
– Tạo cửa sổ đồ thị.
– Lệnh plot sẽ vẽ chồng lên cửa sổ đồ thị hiện
hành nếu được gọi nhiều lần.
– VD: figure(2); plot([0 1 2],[3 4 5])
figure(3); plot([4 3 2],[2 3 4])
Trang 56Cửa sổ đồ thị trong MATLAB bao gồm:
đồ thị, trục, thanh menu, thanh công cụ
Từ đồ thị sau khi chỉnh sửa thủ công, ta
có thể kết xuất ra M-file, file ảnh, pdf,
Trang 57Đồ thị có thể được tùy chỉnh cách hiển thị thông qua chức năng Edit Plot.
Trang 58BT1: Vẽ đồ thị hàm số y = sin(9x).cos(9x) trong khoảng x=[0, 2π].
BT2: Vẽ đồ thị và tìm điểm cực tiểu của x2x+9 trong khoảng x=[-9, 9]
Trang 59-Nguyễn Mỹ 59
Trang 60Đọc đoạn 2 phần 4 (Basic Graphics) của giáo trình nói
về các tùy chọn đối với hình thức đồ thị Cho biết:
- Cách định màu nét vẽ.
- Cách định kiểu nét vẽ.
- Cách đánh dấu các điểm trên đồ thị.
Trang 61– Lệnh thứ hai đánh dấu x ở mỗi điểm dữ liệu.
– Lệnh thứ ba đánh dấu o ở mỗi điểm dữ liệu.
Trang 62Màu sắc, kiểu cách nét vẽ, điểm đánh dấu:
• Chỉ là 3 trong số nhiều thuộc tính của đồ thị được
dựng bằng lệnh plot
• Có thể được khai báo tắt như các ví dụ trên.
Trong MATLAB, để tinh chỉnh hay truy xuất giá trị cho 1 thuộc tính của 1 đối tượng nào
đó, ta dùng lệnh set và get
Trang 64gcf : đại diện cho cửa sổ hiện hành.
– Trả về quyền thao tác cho cửa sổ hiện hành.
gca : đại diện cho bộ trục tọa độ hiện hành
– Trả về quyền thao tác trên trục tọa độ hiện hành.
Hai lệnh này rất hữu dụng khi sử dụng kết hợp
với các lệnh set và get.
Cho phép bạn tinh chỉnh giá trị các thuộc tính của cửa sổ và hệ trục tọa độ hiện hành mà không cần phải biết tên đại diện của chúng.
• VD: set(gcf,'color','y')
Trang 65Màu nét vẽ: color
– Được xác định bởi bộ ba RGB từ 0 đến 1, hoặc tên màu.
Trang 66Kích thước nét vẽ: LineWidth
– Được xác định bởi 1 số thập phân, mặc định là 0.5
Kiểu cách nét vẽ: LineStyle
Trang 67Điểm đánh dấu: Marker
Trang 68Ví dụ
Tinh chỉnh kiểu cách, kích thước và màu
nét vẽ trong lệnh plot (vừa vẽ vừa chỉnh)
Tinh chỉnh giống như trên, nhưng có sử
dụng lệnh set (vẽ xong rồi chỉnh)
Trang 69Đối với cửa sổ (figure - gcf):
cs=figure(' Name ','Dien tu
3',' numbertitle ','off',' resize ','off')
Trang 70Đối với trục tọa độ (axes - gca):
Trang 71Đi kèm với lệnh plot:
– Color: màu
– Marker: điểm đánh dấu – LineStyle: kiểu cách nét – LineWidth: kích thước nét
Trang 72SV đọc phần 4.7 (Axes) về:
– axis([xmin xmax ymin ymax]), – axis square,
– axis equal.
Trang 73axis([ xmin xmax ymin ymax ])
– Giới hạn phạm vi các trục tọa độ x, y.
– axis auto : tự động canh chỉnh tỷ lệ đồ thị.
không
Trang 74SV đọc phần 4.8 (Label) về:
– xlabel, ylabel,
– title,
– text, gtext.
Trang 75– Các lệnh về đường lưới, trục tọa độ và gán
nhãn cần được thực hiện sau lệnh plot.
Trang 76hold on/off: bật/tắt chế độ vẽ chồng đồ
thị sau lên đồ thị trước
Ví dụ: x=0:.1:2*pi;
plot(x, sin(x), ’r:’) hold on
plot(x, cos(x), ‘b ’)
Trang 77BT3: Vẽ đồ thị hàm số y = x2+sin(100x) trong khoảng x=[-2 π, 2 π].
– Màu nét vẽ: xanh lá.
– Tiêu đề đồ thị: Do thi ham so.
– Màu nền trục (axis): [0.8 1 0.8]
– Hiện các đường lưới.
– Tên cửa sổ: TDU.
Trang 78Nguyễn Mỹ 78
Trang 80ezplot(f(x))
– Dựng đồ thị y = f(x) với x Є [-2 π, 2 π] – f(x) phải viết ở dạng chuỗi.
Trang 81ezplot(f(x), [xmin xmax])
– Dựng đồ thị y = f(x) với x Є [xmin, xmax].
– VD: ez plot(‘sin(x)’, [-4*pi 4*pi])
ezplot(f(x, y),[xmin xmax ymin ymax])
– Dựng đồ thị f(x, y)=0.
– x Є [xmin, xmax], y Є [ymin, ymax].
Trang 82BT4: Vẽ đồ thị hàm số y = x9-9 trong khoảng x=[-9, 9] bằng lệnh ezplot.
– Màu nét vẽ: đỏ.
– Tiêu đề đồ thị: Ham ezplot.
– Màu nền trục (axis): [1 0.8 0.8]
– Độ dày nét vẽ: 2.
Trang 83BT5: Vẽ đồ thị hàm số x-y=5 trong khoảng x=[-10, 10] bằng lệnh ezplot.
– Màu nét vẽ: xanh dương.
– Tiêu đề đồ thị đặt theo vị trí con trỏ: Ham x-y=5.
– Nhãn trục x: Truc hoanh.
– Nhãn trục y: Truc tung.
– Kiểu cách vẽ: nét đứt.
Trang 84Nguyễn Mỹ 84
Trang 87stem(x, y)
– Dựng đồ thị rời rạc y theo x – VD: x=1 : 5 : 2*pi;
y=sin(x);
stem ( x, y,’fill’)
Trang 88surf(X, Y, Z) : vẽ đồ thị mặt 3D.
surfc(X, Y, Z) : tương tự như hàm surf,
nhưng đồ thị có kèm theo đường chiếu viền ở mặt phẳng dưới
Trang 90h = plot3(X1,Y1,Z1, )
– plot3 là dạng 3D của lệnh plot
– Dựng đồ thị 3D dựa vào tập các điểm dữ liệu cho trước.
t = 0:pi/50:10*pi;
plot3(sin(t),cos(t),t) xlabel('sin(t)')
ylabel('cos(t)') zlabel('t')
Trang 91Xem thêm tại
http://www.mathworks.com/discovery/gallery.html
Trang 92Nguyễn Mỹ 92
Trang 93Hàm plot có thể dùng để vẽ nhiều hơn 1
đồ thị cùng một lúc
– Bạn có thể chỉ định màu, kiểu vẽ và cách đánh dấu cho từng đồ thị thành phần
Trang 94h = subplot(m,n,p) hoặc subplot(mnp)
h = subplot(m,n,p,'replace')
– Các cú pháp trên dùng để chọn vùng đồ thị con để làm việc (vẽ đồ thị).
– Subplot sẽ tạo ra m x n vùng đồ thị con trên một cửa sổ.
– p định thứ tự vùng đồ thị cần làm việc trong
số m*n vùng.
– ‘replace’ sẽ thay thế các đồ thị nếu có ở vị trí hiện hành.
Trang 98Nguyễn Mỹ 98
Trang 100Nguyễn Mỹ 100
Trang 101BT6 Vẽ đồ thị y=sin(2πt+5) với 0 ≤ t ≤ 2π dưới dạng liên tục và rời rạc Kết quả hiển thị trong 2 khung như hình sau:
Trang 103Nguyễn Ngọc Mỹ CAD
Trang 104Mở đầu (Beginning)
Sơ lược một số hàm toán học
(Brief of some mathematical functions)
Biến đổi Fourier (Fourier transform)
Trang 105Nguyễn Mỹ 105
Trang 106Symbolic Math Toolbox™ là công cụ hỗ trợ cho việc giải và thao tác trên các biểu thức toán học.
Trang 107Symbolic là đại lượng mà giá trị của nó
không phải là 1 giá trị đã biết, mà có thể là
1 giá trị mang tính đại diện nào đó.
Khai báo một biến symbolic đơn:
a = sym(' a1 ')
a = sym( 1/3 )
Khai báo nhiều biến symbolic cùng lúc:
syms a b c
Trang 108Lưu ý: Bạn không thể khai báo:
sym(' 2^-5 ')
Thay vào đó, bạn phải khai báo:
sym(' 2^(-5) ')
Trang 110Nguyễn Mỹ 110
Trang 111simplify(): đơn giản hóa biểu thức
Trang 112solve(): giải phương trình đại số.
VD1: Giải phương trình x2+x-12=0
x = solve(‘x^2+x-12 = 0’)
VD2: Giải hệ phương trình:
6x+y=10 y-2x=2
[x y] = solve( '6*x+y=10' , 'y-2*x=2' )
Trang 113VD3: Giải hệ phương trình:
a+b=3 a+2b=6
syms a b
f1 = a + b - 3;
f2 = a + 2*b - 6;
[a b] = solve( f1, f2 )
Trang 115diff( f [, n] ): tìm đạo hàm (cấp n) của hàm f.
Trang 116int( f [, a, b] ): tính tích phân của hàm f
(trong khoảng từ a đến b)
VD1: Tính tích phân bất định của x 2
syms x
f=x*x
int(f) %undefinite integration of f
VD2: Tính tích phân của x 3 trong khoảng [0; 10]
syms x
int(x^3, 0, 10) %definite integration of f in [0; 10]
Trang 117limit( f [, x, a] ): tìm giới hạn của hàm f (khi
x a)
Ví dụ:
syms x
limit( sin(x)/x ) %returns 1
limit(1/x, x, 0, 'right') %returns inf
limit((sin(x+h)-sin(x))/h,h,0) %returns cos(x)
Trang 118Nguyễn Mỹ 118
Trang 119Đọc phần 17 (Fourier Transform) của giáo trình Cho biết:
- Ý nghĩa của biến đổi Fourier?
- DFT là gì?
- FFT là gì?
Trang 120Mọi hàm đều có thể biểu diễn dưới dạng tổng các hàm hình sin với biên độ và tần
số khác nhau
Biến đổi Fourier tìm biên độ và tần số của các hàm hình sin này
Trang 121DFT (Discrete Fourier Transform) tính biến đổi Fourier cho chuỗi số.
FFT (Fast Fourier Transform) một phương pháp giúp tính nhanh DFT
Trang 122Một số hàm liên quan đến biến đổi Fourier trong MATLAB:
FUNCTION DESCRIPTION
fft Fast Fourier transform
ifft Inverse Fast Fourier transform
fourier Fourier transform
ifourier Inverse Fourier transform
Trang 123fft(X, N): tìm FFT của tín hiệu X với N
điểm sau khi tính
Trang 124subplot(3,1,1); plot(F,X1); title('3 periods');
subplot(3,1,2); plot(F,X2);title('6 periods');
subplot(3,1,3); plot(F,X3);title('9 periods');
Cho nhận xét!
Trang 125fourier(f,x,w): tìm biến đổi fourier của f
với biến thời gian x và biến tần số w
Ví dụ:
syms x w
f = exp(-x^2);
fourier(f, x, w)
Trang 126Đọc thêm: 20 (Time – Frequency Analysis) trong giáo trình
Cho biết ý nghĩa của hàm vco
Trang 127Symbolic Math in MATLAB ,
H James de St Germain, Đại học Utah (Mỹ),
http://www.cs.utah.edu/~germain/PPS/Topics/Matlab
Giáo trình Thí nghiệm CAD ,
Nguyễn Chí Ngôn, Đại học Cần Thơ, 12/2003
MATLAB Programming ,
Wikibooks, http://en.wikibooks.org/wiki/MATLAB_Programming
Trang 128Nguyễn Ngọc Mỹ CAD
Trang 129Simulink
Ví dụ 1 – Điều chế biên độ
Ví dụ 2 – Hàm truyền
Trang 130Simulink dùng để mô hình hóa, phân tích, mô phỏng hệ thống thông qua các
sơ đồ khối
Chúng ta mô hình hóa hệ thống nhằm học các hành xử của hệ thống, từ đó xác định xem mô hình đúng hay sai
Trang 131Cách khởi động simulink:
• C1: Dùng lệnh simulink.
• C2: Nhấn vào biểu tượng
Trang 132Blocks
Trang 138Nguyễn Mỹ 138
Trang 139Hiển thị dạng sóng của tín hiệu trước và sau khi điều chế biên độ.
Sơ đồ khối như sau:
Trang 140Cho nhận xét tín hiệu đã điều chế.
original signal
carrier
AM signal
Trang 141Nguyễn Mỹ 141
Trang 142Hiển thị dạng sóng của i trong hình sau khi v thay đổi:
v
0.01 H
Trang 143Điện thế:
Vi phân 2 vế và nhân với 1/L:
Biến đổi Laplace:
C
1 dt
di L iR
v
LC
i dt
i
d L
R dt
di dt
=
LC
I I
s
sI L
R
L
+ +
1 s
L
R s
I L
sV 2
Trang 144Suy ra biểu thức hàm truyền:
=
LC
1 s
L
R s
) L / 1 (
s V
I
2
LC
1 s
L
R s
) L / 1 (
L
R s
I
L
sV 2
Trang 145Suy ra biểu thức hàm truyền:
=
LC
1 s
L
R s
) L / 1 (
s V
I
2
LC
1 s
L
R s
) L / 1 (
L
R s
I
L
sV 2
Trang 146Thay giá trị vào hàm truyền và vẽ các khối:
LC
1 s
L
R s
) L / 1 ( s
) 100 (
s
× + +
Trang 147Nguyễn Ngọc Mỹ CAD
147
Trang 148M-File và Hàm
GUI
GUIDE
148
Trang 149Nguyễn Mỹ 149
Trang 150SV đọc phần 8 (M-Files) trong giáo trình.Cho biết M-File là gì!
150
Trang 151M-File là tập tin chứa các chỉ thị MATLAB
do người dùng tạo ra
M-File có thể chứa thủ tục hoặc hàm.
M-File có thể được soạn thảo bởi bất kỳ trình soạn thảo nào
Tạo mới 1 M-File:
File/New/Blank M-File
151
Trang 152Ví dụ: Tạo file tên là dt5.m chứa thủ tục sau:
1 Nhấn nút nếu soạn thảo trong MATLAB.
2 Gõ tên M-File từ cửa sổ chính MATLAB:
dt5
152
Trang 153SV đọc phần 8.2 Cho biết:
– Liên hệ giữa Hàm và M-File.
– Cú pháp định nghĩa một hàm.
– Ngăn cách giữa các tham số?
– Ngăn cách giữa các biến đầu ra?
– Hàm có bắt buộc phải có tham số đầu vào và biến đầu ra không?
153
Trang 154Hàm được chứa trong M-File
Tên file nên đặt giống với tên hàm được chứa bên trong
Cú pháp định nghĩa hàm:
function biendaura = tenham(cacthamso)
%Noi dung ham
154
Trang 155Ví dụ: định nghĩa hàm bình phương rồi lưu vào file binhphuong.m:
function x = binhphuong(a)
x = a * a
Để thực thi hàm, từ cửa sổ chính MATLAB, ta gọi hàm kèm theo tham số:
n = binhphuong(4)
155
Trang 156Các tham số đầu vào: được bao bởi dấu (),
cách nhau bởi dấu phẩy
Các biến đầu ra: được bao bởi dấu [], cách
nhau bởi dấu phẩy
function [x,y] =linhtinh (a,b)
%Ham tinh binh phuong cua a va bac ba cua b
Trang 157Số lượng tham số đầu vào được lưu trong
Trang 158Các lần thử khi gọi hàm vdnargin:
>> b1=vdnargin %khong tham so
Trang 159BT1: Định nghĩa hàm ezplotdt5 như sau:
Đầu vào: hamso , maunetve , maunen , tieude , Đầu ra: đồ thị của hamso vẽ bằng hàm ezplot với màu nét vẽ, màu nền, tiêu đề lấy từ tham số đầu vào.
Ví dụ khi gọi hàm:
>> ezplotdt5('y=sin(x.^2)' , 'b' , [0.8 1 0.8] , 'Bai tap 1')
159
Trang 160BT2: Định nghĩa hàm amplot như sau:
Đầu vào: fm , fc
Đầu ra: đồ thị các tín hiệu ym, yc , yam.
Cho biết:
Tín hiệu gốc ym=sin(2πfmt)+1 Sóng mang yc=sin(2πfct)
Tín hiệu AM yam=ym.*yct=[0 π], y=[-2 2]
160