bai giang tin hoc chuyen nganh
Post on 07-Nov-2014
36 Views
Preview:
TRANSCRIPT
1
Bài giảng Tin học chuyên ngành
Giảng viên: Hoàng Xuân Dương
1
Bài giảng Tin học chuyên ngành
Giảng viên: Hoàng Xuân Dương
2
TÀI LIỆU THAM KHẢO
1. Bài giảng tin học chuyên ngànhGiảng viên: Hoàng Xuân Dương
2. Matlab & Simulink dành cho kỹ sư điều khiển tự độngNguyễn Phùng Quang
3. An Introduction to MatlabUniversity of DUNDEE
4. Electronics and circuit analysis using MatlabJohn O.Attia
5. Matrix analysis of circuits using MatlabJames G.Gottling
6. Matlab tools for Control system analysis and designDuane C.Hanelman, Benjamin C.Kuo
2
Bài giảng Tin học chuyên ngành
Giảng viên: Hoàng Xuân Dương
3
1. MATLAB LÀ GÌ ?
Matlab (Matrix Laboratory) là một công cụ phần mềm của The Mathworks Ins, ban đầu phục vụ chủyếu việc mô tả kỹ thuật bằng toán học với các phần tử cơ bản là ma trận
Các dữ liệu rời rạc (discret) (trong các lĩnh vực điện, điện tử, vật lý hạt nhân, điều khiển tự động…, ngành toán như thống kê, kế toán,…, gien sinh học, khí hậu, thời tiết…) có thể lưu dưới dạng ma trận
Dữ liệu liên tục như âm thanh, hình ảnh, dòng điện, điện áp, tần số, áp suất,… chuyển đổi thành các tín hiệu số được xử lý bằng các hàm toán học của Matlab
Bài giảng Tin học chuyên ngành
Giảng viên: Hoàng Xuân Dương
4
2. ƯU ĐIỂM CỦA MATLAB
Matlab cung cấp một công cụ tính toán và lập trình bậc cao dễ sử dụng, hiệu quả và thân thiện. Simulink giúp người dùng dễ dàng thực hiện các bài toán mô hình hóa, mô phỏng trên máy tính
Matlab có tính mở, các hàm và các toolbox không ngừng được bổ sung theo sự phát triển của khoa học bởi chính The Mathworks Ins và cả người sử dụng trên toàn thế giới
Có công cụ trợ giúp phong phú trực tuyến, trên mạng hay các tài liệu dạng pdf
3
Bài giảng Tin học chuyên ngành
Giảng viên: Hoàng Xuân Dương
5
3. SỨC MẠNH CỦA MATLAB ?
Môi trường phát triển: gồm các công cụ và tiện nghi giúp viết chương trình, sử dụng các hàm Matlab và các file
Thư viện các hàm toán học của Matlab: Các hàm sơ cấp: tổng, sin, tính số phức… các hàm phức tạp: Bessel, nghịch đảo ma trận, tính trị riêng, biến đổi Fourier nhanh, wavelet…
Ngôn ngữ Matlab: Các lệnh cao cấp xử lý ma trận, lệnh rẽ nhánh, vòng lặp, xuất nhập, cấu trúc dữ liệu, lập trình hướng đối tượng…
Xử lý đồ họa: Hiển thị dữ liệu dạng đồ họa 2D, 3D, hoạt hình, xử lý ảnh và cả GUI
Bài giảng Tin học chuyên ngành
Giảng viên: Hoàng Xuân Dương
6
3. SỨC MẠNH CỦA MATLAB (tt)
Thư viện API của Matlab: Cho phép liên kết các chương trình C và Fortran… Các ngôn ngữ khác có thể gọi các hàm dll được tạo bởi Matlab.
Các hộp công cụ (Toolbox): Tập hợp các hàm Matlab được viết sẵn để giải quyết các vấn đề thuộc các chuyên ngành khác nhau. Các toolbox khiến cho Matlab có thể ứng dụng vào nhiều lĩnh vực khác nhau: Điện tử, Điều khiển tự động, Kỹ thuật điện, Viễn thông, Cơ khí, Động lực…
4
Bài giảng Tin học chuyên ngành
Giảng viên: Hoàng Xuân Dương
7
4. AI CÓ THỂ HỌC VÀ SỬ DỤNG MATLAB ?
• Các nhà chuyên môn, cán bộ nghiên cứu giảng dạy
• Các sinh viên theo học các trường Đại học và trung học chuyên nghiệp…
• Các kỹ sư, cán bộ kỹ thuật
……
Bài giảng Tin học chuyên ngành
Giảng viên: Hoàng Xuân Dương
8
CHƯƠNG 1: CÁC KHÁI NIỆM CƠ BẢN
CHƯƠNG 2: MA TRẬN VÀ CÁC PHÉP TOÁN MA TRẬN
CHƯƠNG 3: LẬP TRÌNH TRONG MATLAB
CHƯƠNG 4: XỬ LÝ CÁC HÀM TOÁN HỌC
CHƯƠNG 5: ĐỒ HỌA MATLAB
CHƯƠNG 6: SIMULINK VÀ ỨNG DỤNG
CHƯƠNG 7: GUI VÀ ỨNG DỤNG
5
Bài giảng Tin học chuyên ngành
Giảng viên: Hoàng Xuân Dương
9
CHƯƠNG 1:
CHƯƠNG 1: CÁC KHÁI NIỆM CƠ BẢN
Giảng viên: Hoàng Xuân Dương
10
I. HOẠT ĐỘNG CỦA MATLABII. BIẾN VÀ CÁC THAO TÁC CỦA CÁC BIẾNIII. SƠ LƯỢC VỀ ĐỒ HỌA TRONG MATLABIV. ÂM THANH TRONG MATLAB
6
CHƯƠNG 1: CÁC KHÁI NIỆM CƠ BẢN
Giảng viên: Hoàng Xuân Dương
11
I. HOẠT ĐỘNG CỦA MATLAB:
Khi chạy Matlab, một màn hình nền xuất hiện:
Cửa sổ lệnhCửa sổ thư mục hiện hành
Cửa sổ không gian làm việcCửa sổ lịch sử lệnh
CHƯƠNG 1: CÁC KHÁI NIỆM CƠ BẢN
Giảng viên: Hoàng Xuân Dương
12
I. HOẠT ĐỘNG CỦA MATLAB:
Cửa sổ lệnh (Command window):
Với dấu nhắc >> dùng để chạy các lệnh, viết chương trình, chạy chương trình.
Cửa sổ Lịch sử lệnh (Command history)
Liệt kê tất cả các lệnh đã sử dụng trước đó kèm theo thời gian làm việc
Cửa sổ thư mục hiện tại (Current Directory)
Cho biết thư mục hiện tại đang làm việc. Mặc định khi cài đặt là MATLAB701\work (version 7.01)
Cửa sổ không gian làm việc (workspace)
Cho biết các biến được sử dụng trong chương trình
7
CHƯƠNG 1: CÁC KHÁI NIỆM CƠ BẢN
Giảng viên: Hoàng Xuân Dương
13
I. HOẠT ĐỘNG CỦA MATLAB:
1. Các phép toán đơn giản:
CHƯƠNG 1: CÁC KHÁI NIỆM CƠ BẢN
Giảng viên: Hoàng Xuân Dương
14
I. HOẠT ĐỘNG CỦA MATLAB:
2. Một số lệnh hệ thống:Lệnh Ý nghĩa
clc xóa cửa sổ lệnh
clf xóa cửa sổ đồ họahelp xem phần trợ giúp một số lệnh
pause ngừng tạm thời chương trình
echo on/off Tắt mở hiển thị các lệnh trong M-files
edit gọi chương trình soạn thảotype đọc nội dung file .minput nhập dữ liệu từ bàn phím
quit, exit thoát MatlabCtrl+c dừng chương trình
demo Gọi chương trình demo
8
CHƯƠNG 1: CÁC KHÁI NIỆM CƠ BẢN
Giảng viên: Hoàng Xuân Dương
15
II. BIẾN VÀ CÁC THAO TÁC CỦA CÁC BIẾN
1. Biến trong Matlab:
Tên biến có thể dài 31 ký tự, bắt đầu là chữ
Matlab phân biệt chữ thường và chữ hoa
Sử dụng dấu = để định nghĩa biến
Tên biến có thể trùng với tên hàm có sẵn, khi đó hàm không còn sử dụng được cho đến khi biến được xóa
Ví dụ:
>> x=1
x=1>> ten_truong='Dai hoc DL Cong Nghe Sai Gon'ten_truong = Dai hoc DL Cong Nghe Sai Gon
CHƯƠNG 1: CÁC KHÁI NIỆM CƠ BẢN
Giảng viên: Hoàng Xuân Dương
16
II. BIẾN VÀ CÁC THAO TÁC CỦA CÁC BIẾN
1. Biến trong Matlab (tt)
Một số hàm liên quan đến biến:
Lệnh Ý nghĩa
clear xóa tất cả các biến
who hiển thị danh sách các biến trong worksapce
whos hiển thị các biến cùng kích thước của chúng, cóphải số phức ?
save Lưu các biến trong workspace ra file
load Tải các biến vào trong workspace từ file
clear name1, name2,… xóa biến có tên được khai báo
exist (‘item’) Kiểm tra sự tồn tại của đối tượng ‘item’
9
CHƯƠNG 1: CÁC KHÁI NIỆM CƠ BẢN
Giảng viên: Hoàng Xuân Dương
17
II. BIẾN VÀ CÁC THAO TÁC CỦA CÁC BIẾN
2. Độ lớn của biến:
Xác định độ lớn hay chiều dài của biến vector cũng như ma trận thông qua một số hàm:
Hàm Ý nghĩa
size(A)Trả về 1 vector chứa kích thước A, gồm số hàng và số cột của A
[m n]=size(A) giá trị trả về chứa trong m và n
size(A,p)p=1 trả về số hàng
p=2 trả về số cột
length(A) Trả về chiều dài của A, giá trị lớn nhất của hàng và cột
CHƯƠNG 1: CÁC KHÁI NIỆM CƠ BẢN
Giảng viên: Hoàng Xuân Dương
18
II. BIẾN VÀ CÁC THAO TÁC CỦA CÁC BIẾN
2. Độ lớn của biến (tt)
Ví dụ:>> A=[1 2 3; 4 5 6]
A= 1 2 3
4 5 6
>> [m n]=size(A)
m = 2
n = 3
>> length(A)
ans = 3
>> size(A,1)
ans = 2
10
CHƯƠNG 1: CÁC KHÁI NIỆM CƠ BẢN
Giảng viên: Hoàng Xuân Dương
19
II. BIẾN VÀ CÁC THAO TÁC CỦA CÁC BIẾN
3. Một số biến được định nghĩa trước:
Một số biến được Matlab sử dụng để chỉ các hằng số hay ký hiệu, nên tránh dùng chúng:
>> 1/0Warning: Divide by zero.(Type "warning off MATLAB:divideByZero" to suppress this warning.)ans = Inf>> 0/0Warning: Divide by zero.(Type "warning off MATLAB:divideByZero" to suppress this warning.)ans = NaN>> epsans = 2.2204e-016
CHƯƠNG 1: CÁC KHÁI NIỆM CƠ BẢN
Giảng viên: Hoàng Xuân Dương
20
II. BIẾN VÀ CÁC THAO TÁC CỦA CÁC BIẾN
3. Một số biến được định nghĩa trước (tt)
Ký hiệu Ý nghĩa
= Gán giá trị cho biến
+ - * / ^ Các phép tính
; Nhập giá trị, dấu cách khi nhập nhiều trị trên một dòng
eps Cấp chính xác tương đối khi dùng dấu phẩy động
pi số π = 3,14159265…
i j Toán tử ảo
inf vô cùng
NaN không phải số (0/0 hay inf/inf)
, Dấu cách khi xuất nhiều giá trị trên một dòng
ans Đáp số mới nhất
11
CHƯƠNG 1: CÁC KHÁI NIỆM CƠ BẢN
Giảng viên: Hoàng Xuân Dương
21
II. BIẾN VÀ CÁC THAO TÁC CỦA CÁC BIẾN
4. Số phức:
Các hàm đặc biệt của số phức:
real(x) phần thực của x
imag(x) phần ảo của x
conj(x) liên hợp phức của x
abs(x) độ lớn, trị tuyệt đối của x
angle(x) góc pha của số phức
complex(a,b) tạo số phức từ phần thực và ảo
CHƯƠNG 1: CÁC KHÁI NIỆM CƠ BẢN
Giảng viên: Hoàng Xuân Dương
22
Ví dụ:>> a=1+3ia = 1.0000 + 3.0000i>> b=2-4ib = 2.0000 - 4.0000i>> a+bans = 3.0000 - 1.0000i>> abs(a)ans = 3.1623>> real(b)ans = 2>> imag(b)ans = -4>> complex(2,2)ans = 2.0000 + 2.0000i
12
CHƯƠNG 1: CÁC KHÁI NIỆM CƠ BẢN
Giảng viên: Hoàng Xuân Dương
23
II. BIẾN VÀ CÁC THAO TÁC CỦA CÁC BIẾN
5. Một số hàm toán:
Hàm Ý nghĩa
sqrt(x) Căn bậc 2
exp(x) Hàm mũ cơ số e
abs(x) Giá trị tuyệt đối
sum(v) Tổng các phần tử vector
prod(v) Tích các phần tử vector
min(v) Phần tử vector bé nhất
max(v) Phần tử vector lớn nhất
mean(v) Giá trị trung bình cộng
sign(x) Hàm dấu (=1 nếu x>0; = -1 nếu x<0; = 0 nếu x=0)
rem(x,y) Số dư phép chia x/y
CHƯƠNG 1: CÁC KHÁI NIỆM CƠ BẢN
Giảng viên: Hoàng Xuân Dương
24
Ví dụ 1:>> x=4;>> sqrt(x)ans = 2>> exp(x)ans = 54.5982>> sign(x)ans = 1>> rem(x,3)ans = 1>> v=[1 2 3];>> min_v=min(v)min_v = 1>> mean(v)ans = 2>> sum(v)ans = 6
13
CHƯƠNG 1: CÁC KHÁI NIỆM CƠ BẢN
Giảng viên: Hoàng Xuân Dương
25
Ví dụ 2: Tìm nghiệm của phương trình x2-3x+2=0
Trong command window:>> a=1; b=-3; c=2;>> x1=(-b+sqrt(b^2-4*a*c))/(2*a)x1 =
2>> x2=(-b-sqrt(b^2-4*a*c))/(2*a)x2 =
1
CHƯƠNG 1: CÁC KHÁI NIỆM CƠ BẢN
Giảng viên: Hoàng Xuân Dương
26
III. SƠ LƯỢC VỀ ĐỒ HỌA TRONG MATLAB:Các lệnh thông dụng trong đồ họa Matlab:
plot(x,y) vẽ đồ thị theo tọa độ x-y
plot(x,y,z) vẽ đồ thị theo tọa độ x-y-z
title đưa các title vào trong hình vẽ
xlabel đưa các nhãn theo chiều x của đồ thị
ylabel đưa các nhãn theo chiều y của đồ thị
zlabel đưa các nhãn theo chiều z của đồ thị
grid vẽ lưới trên đồ thị
plot(y) vẽ đồ thị theo y, bỏ qua chỉ số theo x
plot(x,y,’S’) S dùng để qui định màu, nét vẽ…
14
CHƯƠNG 1: CÁC KHÁI NIỆM CƠ BẢN
Giảng viên: Hoàng Xuân Dương
27
III. SƠ LƯỢC VỀ ĐỒ HỌA TRONG MATLAB:
Các loại màu vẽ Các loại Marker (điểm)y yellow . điểm
m magenta o chữ o
-. dấu -.
c cyan x dấu x
r red + dấu +
g green # dấu #
b blue Các loại nét vẽ
w white - dấu -
k black : dấu :
-- dấu --
CHƯƠNG 1: CÁC KHÁI NIỆM CƠ BẢN
Giảng viên: Hoàng Xuân Dương
28
III. SƠ LƯỢC VỀ ĐỒ HỌA TRONG MATLAB:
Ví dụ 1: Vẽ hàm sin2x, sinx2, (sinx)2
>> hold on
>> x=linspace(0,10);
>> y1=sin(2*x);
>> y2=sin(x.^2);
>> y3=(sin(x)).^2;
>> plot(x,y1,'g'); % green
>> plot(x,y2,'m'); % magenta
>> plot(x,y3,'b'); % blue
15
CHƯƠNG 1: CÁC KHÁI NIỆM CƠ BẢN
Giảng viên: Hoàng Xuân Dương
29
CHƯƠNG 1: CÁC KHÁI NIỆM CƠ BẢN
Giảng viên: Hoàng Xuân Dương
30
III. SƠ LƯỢC VỀ ĐỒ HỌA TRONG MATLAB:
Ví dụ 2: Vẽ đường Helix trong không gian 3D>> t = 0:pi/50:10*pi;
>> plot3(sin(t),cos(t),t);
>> title(‘Vi du ve plot3 trong Matlab’);
16
CHƯƠNG 1: CÁC KHÁI NIỆM CƠ BẢN
Giảng viên: Hoàng Xuân Dương
31
IV. ÂM THANH TRONG MATLAB
sound(y) gởi vector y ra loa, vector được sắp xếp với biên độ lớn nhất
sound(y,f) f dải tần (Hz)
Ví dụ: âm thanh với lệnh load>> load train; % giá trị âm thanh tàu hỏa
>> sound(y); % được đưa vào tham số y
>> load chirp; % tiếng chim kêu
>> sound(y);
Bài giảng Tin học chuyên ngành
Giảng viên: Hoàng Xuân Dương
32
CHƯƠNG 2:
⎥⎥⎥⎥
⎦
⎤
⎢⎢⎢⎢
⎣
⎡
×
⎥⎥⎥⎥
⎦
⎤
⎢⎢⎢⎢
⎣
⎡
2010411063143211111
11614412679810115133216
17
CHƯƠNG 2: MA TRẬN VÀ CÁC PHÉP TOÁN MA TRẬN
Giảng viên: Hoàng Xuân Dương
33
I. MA TRẬNII. CÁC MA TRẬN ĐẶC BIỆTIII. CÁC PHÉP TOÁN TRÊN MẢNGIV. CÁC PHÉP TOÁN MA TRẬNV. GIẢI HỆ PHƯƠNG TRÌNH ĐỘC LẬP TUYẾN TÍNHVI. BÀI TẬP
CHƯƠNG 2: MA TRẬN VÀ CÁC PHÉP TOÁN MA TRẬN
Giảng viên: Hoàng Xuân Dương
34
I. MA TRẬN:
1. Vector-Đại lượng vô hướng-Ma trận:
Ma trận là đối tượng chủ yếu của Matlab
Các phần tử của ma trận được xếp theo hàng và cột
Đại lượng vô hướng (giá trị đơn) là ma trận có 1 hàng và một cột
Ma trận chỉ có 1 hàng hoặc một cột được gọi là vector
Để truy cập một phần tử của ma trận, sử dụng chỉ sốhàng và cột
18
CHƯƠNG 2: MA TRẬN VÀ CÁC PHÉP TOÁN MA TRẬN
Giảng viên: Hoàng Xuân Dương
35
I. MA TRẬN:
2. Một số qui ước về ma trận:
Tên ma trận phải bắt đầu bằng chữ cái
Bên phải dấu bằng là các giá trị ma trận được viết theo thứ tự hàng trong dấu ngoặc vuông
Dấu chấm phẩy (;) phân cách hàng. Các giá trị trong hàng được phân cách bằng dấu phẩy (,) hoặc khoảng trắng. Dấu thập phân là dấu chấm (.). Kết thúc ma trận là dấu (;)
CHƯƠNG 2: MA TRẬN VÀ CÁC PHÉP TOÁN MA TRẬN
Giảng viên: Hoàng Xuân Dương
36
I. MA TRẬN:
Ví dụ:>> a=[1 2 3; 4 5 6; 7 8 9] % ma trận 3 hàng 3 cộta = 1 2 3
4 5 67 8 9
>> b=[1 2 3 4] % vector hàngb = 1 2 3 4>> c=[1;2] % vector cộtc = 1
2>> d=[1] % giá trị đơnd = 1>> a(2,3) % phần tử ở hàng 2 cột 3ans = 6
19
CHƯƠNG 2: MA TRẬN VÀ CÁC PHÉP TOÁN MA TRẬN
Giảng viên: Hoàng Xuân Dương
37
I. MA TRẬN:
3. Khai báo vector và ma trận:
Khai báo Ý nghĩa
[x1 x2…; x3 x4…] Nhập giá trị cho vector và ma trận
start:increment:destination Toán tử (:)
linspace(start,dest,number) Khai báo tuyến tính cho vector
randn(line,column) Ma trận nhận giá trị ngẫu nhiên
logspace(start,dest,number) Khai báo logarithm cho vector
rand(line,column) Ma trận nhận giá trị ngẫu nhiên 0->1
CHƯƠNG 2: MA TRẬN VÀ CÁC PHÉP TOÁN MA TRẬN
Giảng viên: Hoàng Xuân Dương
38
I. MA TRẬN:
3. Khai báo vector và ma trận (tt)
Kiểu liệt kê trực tiếp:
Các phần tử được liệt kê trong dấu ngoặc vuông:>> A=[3,5];
>> B=[1.7,3.2];
>> C=[-1 0 0 ; -1 1 0 ; 1 -1 0; 0 0 2]; Hoặc:
>> C = [-1 0 0
-1 1 0
1 -1 0
0 0 2 ];
20
CHƯƠNG 2: MA TRẬN VÀ CÁC PHÉP TOÁN MA TRẬN
Giảng viên: Hoàng Xuân Dương
39
I. MA TRẬN:
3. Khai báo vector và ma trận (tt)
Kiểu liệt kê trực tiếp (tt)>> F = [1, 52, 45, 84, 94, 5, 65, 42, 85,…
23, 52, 65, 21, 74];
Định nghĩa ma trận từ ma trận khác:>> B=[1 2 4];
>> S=[3 B]; % S=[3 1 2 4]
Mở rộng ma trận:>> S(5)=9;
>> S(8)=3; % S(6), S(7) nhận giá trị 0
CHƯƠNG 2: MA TRẬN VÀ CÁC PHÉP TOÁN MA TRẬN
Giảng viên: Hoàng Xuân Dương
40
I. MA TRẬN:
3. Khai báo vector và ma trận (tt)
Kiểu liệt kê trực tiếp (tt)
Khai báo tuyến tính:>> x=linspace(2,20,10)x = 2 4 6 8 10 12 14 16 18 20>> logspace(1,2,5)ans = 10.0000 17.7828 31.6228 56.2341 100.0000>> y=linspace(1,10); % y=vector 100 phần tử
21
CHƯƠNG 2: MA TRẬN VÀ CÁC PHÉP TOÁN MA TRẬN
Giảng viên: Hoàng Xuân Dương
41
I. MA TRẬN:
3. Khai báo vector và ma trận (tt)
Từ một file dữ liệu:Một file văn bản matran.dat có nội dung:
2 5 9 14 6 8 32 4 5 1
>> load c:\matran.dat>> matranmatran=
2 5 9 14 6 8 32 4 5 1
CHƯƠNG 2: MA TRẬN VÀ CÁC PHÉP TOÁN MA TRẬN
Giảng viên: Hoàng Xuân Dương
42
I. MA TRẬN:
3. Khai báo vector và ma trận (tt)
Sử dụng toán tử (:)
Tại vị trí dấu (:) trong ma trận, nó đại diện cho tất cả các hàng hoặc tất cả các cột
>> x=A(:,1); % đưa dữ liệu ở cột 1 vào vector x
>> y=A(:,2); % đưa dữ liệu ở cột 2 vào vector y
Dấu (:) sử dụng làm ký hiệu tổng quát cho ma trận mới>> H=1:5
H = 1 2 3 4 5
>> TIME=0.0:0.5:2.5;
TIME = 0.0 0.5 1.0 1.5 2.0 2.5
22
CHƯƠNG 2: MA TRẬN VÀ CÁC PHÉP TOÁN MA TRẬN
Giảng viên: Hoàng Xuân Dương
43
I. MA TRẬN:
3. Khai báo vector và ma trận (tt)
Sử dụng toán tử (:)
Dấu (:) dùng chọn các ma trận con từ ma trận khác
Ví dụ:>> C=[-1 0 0
1 -1 0
1 -1 2
0 2 -1];
>> C_1=C(:,2:3);
>> C_2=C(3:4,1:2);C_2= [ 1 -1
0 2];
C_1= [ 0 0-1 0-1 22 -1];
CHƯƠNG 2: MA TRẬN VÀ CÁC PHÉP TOÁN MA TRẬN
Giảng viên: Hoàng Xuân Dương
44
I. MA TRẬN:
3. Khai báo vector và ma trận (tt)
Sử dụng toán tử (:)
C(:) tương đương vector có một cột, phần tử của cột chính là các cột của ma trận C
>> C = [ 1 4 7
2 5 8
3 6 9];
>> C(:)
ans = 123456789
23
CHƯƠNG 2: MA TRẬN VÀ CÁC PHÉP TOÁN MA TRẬN
Giảng viên: Hoàng Xuân Dương
45
I. MA TRẬN:
3. Khai báo vector và ma trận:
Trực tiếp từ bàn phím:>> z=input(‘Nhap gia tri cho z:’);
Nếu không có dữ liệu, z là ma trận rỗng
CHƯƠNG 2: MA TRẬN VÀ CÁC PHÉP TOÁN MA TRẬN
Giảng viên: Hoàng Xuân Dương
46
I. MA TRẬN:
4. Hiển thị ma trận:
Kết quả tính toán có thể được định dạng bằng lệnh format. long số chấm cố định là 15 con số
long e số dấu chấm động 15 con số
short số chấm cố định là 5 con số (mặc định)
short e số dấu chấm động 5 con số
Ví dụ:>> pians = 3.1416>> format long>> pians = 3.14159265358979
24
CHƯƠNG 2: MA TRẬN VÀ CÁC PHÉP TOÁN MA TRẬN
Giảng viên: Hoàng Xuân Dương
47
I. MA TRẬN:
4. Hiển thị ma trận (tt)
disp Xuất chuỗi ký tự ra màn hình
fprintf cho phép xuất ra theo định dạng. Với cú pháp:
>> fprintf(định dạng, ma trận);
Kiểu loại Dạng in ra Ký tự Ý nghĩa%c Kiểu ký tự \n Xuống dòng%s Kiểu chuỗi \t tab%d Kiểu số nguyên thập phân \b Backspace%f Kiểu số dấu chấm tĩnh \r Carriage return%e Kiểu số dấu chấm động \f From feed%x Kiểu số Hex %% %%bx Kiểu chấm tĩnh trong Hex 64 bits '' or \'' '
CHƯƠNG 2: MA TRẬN VÀ CÁC PHÉP TOÁN MA TRẬN
Giảng viên: Hoàng Xuân Dương
48
I. MA TRẬN:
4. Hiển thị ma trận (tt)
Ví dụ 1:>> disp('Hello')Hello>> disp(pi)
3.1416>> x=[1 2 3 4];>> disp(x)
1 2 3 4>> temp=78;
>> fprintf(‘Nhiệt độ là: \n %6.1f độ F’,temp);
Nhiệt độ là:
78.0 độ F
25
CHƯƠNG 2: MA TRẬN VÀ CÁC PHÉP TOÁN MA TRẬN
Giảng viên: Hoàng Xuân Dương
49
I. MA TRẬN:
4. Hiển thị ma trận (tt)
Ví dụ 2:>> temp=78;>> st='do F';>> fprintf('Nhiet do la %4.1f %s\n',temp,st)Nhiet do la 78.0 do F>> fprintf('Nhiet do la %4.1f\b %s\n',temp,st)Nhiet do la 78. do F>> fprintf('Nhiet do la %4.1f\t %s\n',temp,st)Nhiet do la 78.0 do F>> fprintf('It''s Friday.\n')It's Friday.
CHƯƠNG 2: MA TRẬN VÀ CÁC PHÉP TOÁN MA TRẬN
Giảng viên: Hoàng Xuân Dương
50
II. CÁC MA TRẬN ĐẶC BIỆT:Matlab có một số hàm để tạo ma trận đặc biệt
1. Ma trận ma phương (magic(n))• Ma phương bậc n là ma trận vuông cấp n• Bao gồm các số nguyên từ 1 đến n2
• Các phần tử sắp xếp sao cho tổng các phần tử trên một hàng, một cột, đường chéo là bằng nhau
Ví dụ:>> magic(4)ans=
16 2 3 135 11 10 89 7 6 124 14 15 1
26
CHƯƠNG 2: MA TRẬN VÀ CÁC PHÉP TOÁN MA TRẬN
Giảng viên: Hoàng Xuân Dương
51
II. CÁC MA TRẬN ĐẶC BIỆT:2. Ma trận zero:• Hàm zeros(m,n) là ma trận có kích thước m x n chứa
toàn số 0• Nếu tham số chỉ có một ma trận vuôngVí dụ:
>> zeros(3,4)ans=
0 0 0 00 0 0 00 0 0 0
CHƯƠNG 2: MA TRẬN VÀ CÁC PHÉP TOÁN MA TRẬN
Giảng viên: Hoàng Xuân Dương
52
II. CÁC MA TRẬN ĐẶC BIỆT:3. Ma trận ones:• Hàm ones(m, n) là ma trận có kích thước m x n chứa
toàn số 1• Nếu tham số chỉ có một ma trận vuôngVí dụ:
>> ones(3,4)ans=
1 1 1 11 1 1 11 1 1 1
27
CHƯƠNG 2: MA TRẬN VÀ CÁC PHÉP TOÁN MA TRẬN
Giảng viên: Hoàng Xuân Dương
53
II. CÁC MA TRẬN ĐẶC BIỆT:4. Ma trận đường chéo đặc biệt (Identity Matrix):• Ma trận có các phần tử trên đường chéo bằng 1• Các phần tử còn lại bằng 0Ví dụ:
>> eye(4)ans=
1 0 0 00 1 0 00 0 1 00 0 0 1
CHƯƠNG 2: MA TRẬN VÀ CÁC PHÉP TOÁN MA TRẬN
Giảng viên: Hoàng Xuân Dương
54
II. CÁC MA TRẬN ĐẶC BIỆT:5. Ma trận đường chéo mở rộng eye(m,n):• Ma trận kích thước mxn có các phần tử chỉ số hàng =
chỉ số cột thì bằng 1• Các phần tử còn lại bằng 0Ví dụ:
>> eye(4,5)ans=
1 0 0 0 00 1 0 0 00 0 1 0 00 0 0 1 0
28
CHƯƠNG 2: MA TRẬN VÀ CÁC PHÉP TOÁN MA TRẬN
Giảng viên: Hoàng Xuân Dương
55
II. CÁC MA TRẬN ĐẶC BIỆT:6. Ma trận Pascal (pascal(n)):• Ma trận chứa các giá trị của tam giác pascalVí dụ:>> pascal(4)ans=
1 1 1 11 2 3 41 3 6 101 4 10 20
CHƯƠNG 2: MA TRẬN VÀ CÁC PHÉP TOÁN MA TRẬN
Giảng viên: Hoàng Xuân Dương
56
II. CÁC MA TRẬN ĐẶC BIỆT:7. Các ma trận đặc biệt khác:
compangalleryhadamardhankelhilbinvhilbkronrossertoeplitzvanderwilkinson
29
CHƯƠNG 2: MA TRẬN VÀ CÁC PHÉP TOÁN MA TRẬN
Giảng viên: Hoàng Xuân Dương
57
III. CÁC PHÉP TOÁN TRÊN MẢNG:1. Tính toán với mảng:
Lưu ý: số phần tử 2 mảng a và b phải bằng nhau
Ký hiệu Ý nghĩa Biểu thức
a + ba - ba .* ba ./ ba .\ ba .^ b
Cộng từng phần tử mảngTrừ từng phần tử mảngNhân từng phần tử mảngChia từng phần tử a cho bChia từng phần tử b cho aLũy thừa từng phần tử
[a1+b1 a2+b2 …an+bn][a1-b1 a2-b2 …an-bn][a1*b1 a2*b2 …an*bn][a1/b1 a2/b2 …an/bn][b1/a1 b2/a2 …bn/an][a1^b1 a2^b2 …an^bn]
CHƯƠNG 2: MA TRẬN VÀ CÁC PHÉP TOÁN MA TRẬN
Giảng viên: Hoàng Xuân Dương
58
III. CÁC PHÉP TOÁN TRÊN MẢNG:Ví dụ:>> A=[4 8 15]; B=[2 2 3];>> A + Bans = 6 10 18>> A - Bans = 2 6 12>> A .* Bans = 8 16 45>> A ./ Bans = 2 4 5>> A .\ Bans = 0.5000 0.2500 0.2000>> A .^ Bans = 16 64 3375
30
CHƯƠNG 2: MA TRẬN VÀ CÁC PHÉP TOÁN MA TRẬN
Giảng viên: Hoàng Xuân Dương
59
III. CÁC PHÉP TOÁN TRÊN MẢNG:2. Thứ tự ưu tiên của các toán tử:
Ưu tiên Toán tử
1234
Ngoặc đơnLũy thừaNhân & chia từ trái qua phảiCộng & trừ từ trái qua phải
CHƯƠNG 2: MA TRẬN VÀ CÁC PHÉP TOÁN MA TRẬN
Giảng viên: Hoàng Xuân Dương
60
IV. CÁC PHÉP TOÁN MA TRẬN:Một số hàm xử lý ma trận cơ bản:
Hàm Ý nghĩa
matrix.’ Chuyển vị ma trận
matrix’ Chuyển vị ma trận có phần phức liên hợp
inv(matrix) Đảo ma trận
rank(matrix) Xác định hạng của ma trận
det(matrix) Tính định thức ma trận
eig(matrix) Tính các giá trị riêng của ma trận
31
CHƯƠNG 2: MA TRẬN VÀ CÁC PHÉP TOÁN MA TRẬN
Giảng viên: Hoàng Xuân Dương
61
IV. CÁC PHÉP TOÁN MA TRẬN:1. Ma trận chuyển vị:• Ma trận chuyển vị của A ký hiệu là AT
• Các phần tử hàng của A trở thành phần tử cột của AT
Ví dụ:>> A=[1 2 3; 4 5 6]A =
1 2 34 5 6
>> A’ans =
1 42 53 6
CHƯƠNG 2: MA TRẬN VÀ CÁC PHÉP TOÁN MA TRẬN
Giảng viên: Hoàng Xuân Dương
62
IV. CÁC PHÉP TOÁN MA TRẬN:2. Nhân ma trận:• C=A.*B nhân vô hướng
• C=A*B nhân ma trận với: Cij = Σ AikBkj
Số cột của ma trận A phải bằng số hàng của ma trận BVí dụ:>> A=[1 2 3; 4 5 6]; B=[3 4 5; 6 7 8];>> C=A.*BC= 3 8 15
24 35 48>> B = B’;>> C = A*BC= 26 44
62 107
32
CHƯƠNG 2: MA TRẬN VÀ CÁC PHÉP TOÁN MA TRẬN
Giảng viên: Hoàng Xuân Dương
63
IV. CÁC PHÉP TOÁN MA TRẬN:3. Phép quay:• Cú pháp: rot90(matrix) hay rot90(matrix,num);
• Các phần tử của A được quay 90o theo ngược chiều kim đồng hồ
• Dùng tham số num để xác định số lần quay
Ví dụ:>> A = [1 2 3; 4 5 6; 7 8 9];>> B = rot90(A)B= 3 6 9
2 5 81 4 7
>> C = rot90(A,2)C= …
CHƯƠNG 2: MA TRẬN VÀ CÁC PHÉP TOÁN MA TRẬN
Giảng viên: Hoàng Xuân Dương
64
IV. CÁC PHÉP TOÁN MA TRẬN:4. Phép đảo ma trận:• fliplr(A) Đảo các phần tử A từ trái sang phải• flipud(A) Đảo các phần tử A từ trên xuống dướiVí dụ:>> A = [1 2 3; 4 5 6; 7 8 9];>> B = fliplr(A)B= 3 2 1
6 5 49 8 7
>> C = flipud(B)C= 9 8 7
6 5 43 2 1
33
CHƯƠNG 2: MA TRẬN VÀ CÁC PHÉP TOÁN MA TRẬN
Giảng viên: Hoàng Xuân Dương
65
IV. CÁC PHÉP TOÁN MA TRẬN:5. Reshape:• Cho phép định dạng lại ma trận với số hàng và số cột
khác với ma trận gốc
• Số phần tử của ma trận gốc và ma trận mới phải bằng nhau
• Hàm có 3 tham số là ma trận gốc, số hàng và số cột
Ví dụ:>> A = [1 2 3; 4 5 6; 7 8 9];>> B=reshape(A,1,9)B=
1 4 7 2 5 8 3 6 9
CHƯƠNG 2: MA TRẬN VÀ CÁC PHÉP TOÁN MA TRẬN
Giảng viên: Hoàng Xuân Dương
66
IV. CÁC PHÉP TOÁN MA TRẬN:6. Trích các phần tử từ ma trận:
Hàm Ý nghĩa
diag(A) Lấy đường chéo chính lưu vào một vector cột
diag(A,k)
Chọn đường chéo dựa vào kk=0 đường chéo chínhk>0 đường chéo thứ k trên đường chéo chínhk<0 đường chéo thứ k dưới đường chéo chính
A=diag(V) Nếu V là vector thì A là ma trận vuông có V là đường chéo chính. Các phần tử khác bằng 0
34
CHƯƠNG 2: MA TRẬN VÀ CÁC PHÉP TOÁN MA TRẬN
Giảng viên: Hoàng Xuân Dương
67
IV. CÁC PHÉP TOÁN MA TRẬN:6. Trích các phần tử từ ma trận (tt)Ví dụ:>> A=[1 2 3 4; 5 6 7 8; 9 10 11 12]; V=[1:3];>> diag(A)ans = 1
611
>> diag(A,-1)ans = 5
10>> A=diag(V)A = 1 0 0
0 2 0 0 0 3
CHƯƠNG 2: MA TRẬN VÀ CÁC PHÉP TOÁN MA TRẬN
Giảng viên: Hoàng Xuân Dương
68
IV. CÁC PHÉP TOÁN MA TRẬN:6. Trích các phần tử từ ma trận (tt)
Hàm Ý nghĩa
B=triu(A)Sinh ra ma trận B cùng cỡ, chứa các phần tử A nằm ở đường chéo chính và trên đường chéo chính. Vị trí khác bằng 0
triu(A,k) Phần tử A nằm trên và phía trên đường chéo thứ k
tril(A)Sinh ra ma trận cùng cỡ, chứa các phần tử A nằm ở đường chéo chính và dưới đường chéo chính. Vịtrí khác bằng 0
tril(A,k) Phần tử A nằm ngay trên và phía dưới đường chéo thứ k. Các vị trí khác bằng 0
35
CHƯƠNG 2: MA TRẬN VÀ CÁC PHÉP TOÁN MA TRẬN
Giảng viên: Hoàng Xuân Dương
69
IV. CÁC PHÉP TOÁN MA TRẬN:6. Trích các phần tử từ ma trận (tt)Ví dụ:>> A = [1 2 3 4; 5 6 7 8; 9 10 11 12]; >> B = triu(A)B= 1 2 3 4
0 6 7 80 0 11 12
>> C = triu(A,-1)C= 1 2 3 4
5 6 7 80 10 11 12
CHƯƠNG 2: MA TRẬN VÀ CÁC PHÉP TOÁN MA TRẬN
Giảng viên: Hoàng Xuân Dương
70
IV. CÁC PHÉP TOÁN MA TRẬN:6. Trích các phần tử từ ma trận (tt)Ví dụ:>> B = tril(A)B= 1 0 0 0
5 6 0 09 10 11 0
>> C = tril(A,-1)C= 0 0 0 0
5 0 0 09 10 0 0
36
CHƯƠNG 2: MA TRẬN VÀ CÁC PHÉP TOÁN MA TRẬN
Giảng viên: Hoàng Xuân Dương
71
V. GIẢI HỆ PHƯƠNG TRÌNH ĐỘC LẬP TUYẾN TÍNH:Xét hệ:
x1 – 2x2 + x3 = 22x1 + x2 – 4x3 = -13x1 – 4x2 – x3 = 0
Giải:
20043112
2213;16
103412
1212
28140411
1221;8
143412
121
−=−
−−
=−=−−=
−=−−−−
−=−=
−−−
−=
DD
DD
CHƯƠNG 2: MA TRẬN VÀ CÁC PHÉP TOÁN MA TRẬN
Giảng viên: Hoàng Xuân Dương
72
V. GIẢI HỆ PHƯƠNG TRÌNH ĐỘC LẬP TUYẾN TÍNH:
Nghiệm của hệ làx1 = D1/D = 3.5x2 = D2/D = 2x3 = D3/D =2.5
Trong Matlab:>> A=[1 -2 1; 2 1 -4; 3 -4 -1];>> b=[2;-1;0];>> x=inv(A)*bx =
3.50002.00002.5000
37
CHƯƠNG 2: MA TRẬN VÀ CÁC PHÉP TOÁN MA TRẬN
Giảng viên: Hoàng Xuân Dương
73
V. GIẢI HỆ PHƯƠNG TRÌNH ĐỘC LẬP TUYẾN TÍNH:Bài tập:
x1 + x2 + x3 + x4 = 0x2 + x3 + x4 + x5 = 0x1 + 2x2 + 3x3 = 2x2 + 2x3 + 3x4 = -2x3 + 2x4 + 3x5 = 2
CHƯƠNG 2: MA TRẬN VÀ CÁC PHÉP TOÁN MA TRẬN
Giảng viên: Hoàng Xuân Dương
74
VI. BÀI TẬP:1) Hãy cho biết kết quả của từng dòng lệnh sau:
>> A = [1:3;4:6]>> B = [A A;A A]>> C = B(1:2,3:4)>> D = C+2>> E = C.*D>> F = C*2 - 1
2) Hãy cho biết kết quả của từng dòng lệnh sau:>> A = pascal(4)>> diag(A)>> diag(A,-1)>> C=diag(diag(A,1))>> D=diag(diag(A))
38
CHƯƠNG 2: MA TRẬN VÀ CÁC PHÉP TOÁN MA TRẬN
Giảng viên: Hoàng Xuân Dương
75
VI. BÀI TẬP:3) Hãy cho biết kết quả của từng dòng lệnh sau:
>> A = pascal(3)>> B = rot90(A,3)>> C = fliplr(flipud(B))>> D = flipud(fliplr(C))>> C + D>> (A(:))’
Bài giảng Tin học chuyên ngành
Giảng viên: Hoàng Xuân Dương
76
CHƯƠNG 3:
39
CHƯƠNG 3: LẬP TRÌNH TRONG MATLAB
Giảng viên: Hoàng Xuân Dương
77
I. PHẦN TỬ CƠ BẢNII. HÀM TOÁN HỌCIII. CÁC DẠNG FILEIV. BIỂU THỨC QUAN HỆ VÀ LOGICV. CẤU TRÚC ĐIỀU KHIỂNVI. BÀI TẬP
CHƯƠNG 3: LẬP TRÌNH TRONG MATLAB
Giảng viên: Hoàng Xuân Dương
78
I. PHẦN TỬ CƠ BẢN
1. Giới hạn của các giá trị tính toán trong Matlab
Đối với phần lớn máy tính, khoảng giá trị cho phép từ10-308 đến 10308.
Nếu có giá trị tràn số mũ trên, nó được biểu diễn bởi inf (số vô hạn)
Nếu tràn mũ dưới, nó được biểu diễn là 0
Chia cho 0 là toán tử không hợp lệ, kết quả là inf. Matlab sẽ cảnh báo và sử dụng giá trị inf để tính tiếp.
40
CHƯƠNG 3: LẬP TRÌNH TRONG MATLAB
Giảng viên: Hoàng Xuân Dương
79
I. PHẦN TỬ CƠ BẢN
2. Biến string:
Chuỗi ký tự được đặt giữa 2 dấu nháy đơn
Chuỗi ký tự là một mảng nhiều ký tự. Ký tự được lưu dưới dạng mã ASCII.
>> name= ‘Trường Đại học DL Công Nghệ Sài Gòn’
Có thể truy xuất đến từng phần tử chuỗi
>> fprintf (‘Trường tôi là %s\n’, name(8:35));
Kết hợp các string tạo string mới
>> text1=‘Tôi học tại’; text=[text1 ‘ ’ name];
Nhập string từ bàn phím:
>> str= input(‘Nhap vao mot chuoi’,’s’);
CHƯƠNG 3: LẬP TRÌNH TRONG MATLAB
Giảng viên: Hoàng Xuân Dương
80
I. PHẦN TỬ CƠ BẢN
2. Biến string:
Các lệnh với biến string:
Hàm Ý nghĩa
char Tạo mảng ký tự từ mảng số
double Đổi chuỗi sang mã ASCII
num2str Đổi số sang chuỗi
str2mat Đổi chuỗi sang ma trận
mat2str Đổi ma trận sang chuỗi
str2num Đổi chuỗi sang số
int2str Đổi số nguyên sang chuỗi
41
CHƯƠNG 3: LẬP TRÌNH TRONG MATLAB
Giảng viên: Hoàng Xuân Dương
81
II. HÀM TOÁN HỌC
1. Hàm toán học cơ bản
Hàm Ý nghĩa
round Làm tròn về số nguyên gần nhất
fix Làm tròn về 0
log(x) ln(x)
pow2(x) Lũy thừa cơ số 2
log10(x) log thập phân
nextpow2(N) Tìm p: 2p=N
floor Làm tròn nhỏ hơn
ceil Làm tròn lớn hơn
CHƯƠNG 3: LẬP TRÌNH TRONG MATLAB
Giảng viên: Hoàng Xuân Dương
82
II. HÀM TOÁN HỌC
1. Hàm toán học cơ bản
Ví dụ:>> a=[-1.9 -0.2 3.4 5.6 7 2.4 +3.6i];
>> fix(a)
-1.0000 0 3.0000 5.0000 7.0000 2.0000 0+3.0000i
>> ceil(a)
-1.0000 0 4.0000 6.0000 7.0000 3.0000 0+4.0000i
>> floor(a)
-2.0000 -1.0000 3.0000 5.0000 7.0000 2.0000 0+3.0000i
>> round(a)
-2.0000 0 3.0000 6.0000 7.0000 2.0000 0+4.0000i
42
CHƯƠNG 3: LẬP TRÌNH TRONG MATLAB
Giảng viên: Hoàng Xuân Dương
83
II. HÀM TOÁN HỌC
2. Hàm lượng giác cơ bản:
Đổi radian sang độ và ngược lại:angle_degrees=angle_radians*(180/pi)angle_radians=angle_degrees*(pi/180)
Hàm Ý nghĩa
sin(x) sin của x khi x có đơn vị radian
cos(x) cos của x khi x có đơn vị radian
tan(x) tan của x khi x có đơn vị radian
atan(x) khi x ∈ [-π/2,π/2]
asin(x) ∈[-π/2,π/2] khi x ∈ [-1,1]
acos(x) ∈[0,π] khi x ∈ [-1,1]
CHƯƠNG 3: LẬP TRÌNH TRONG MATLAB
Giảng viên: Hoàng Xuân Dương
84
III. CÁC DẠNG FILE
1. Script file (m file):
Các chương trình, thủ tục bao gồm các dòng lệnh theo một thứ tự nào đó do người sử dụng viết ra được lưu trong các file *.m. Được gọi là script file
Dùng trình soạn thảo edit của Matlab để viết hàm
Lưu dưới dạng ASCII
Có thể chạy giống các lệnh, thủ tục của Matlab
43
CHƯƠNG 3: LẬP TRÌNH TRONG MATLAB
Giảng viên: Hoàng Xuân Dương
85
Ví dụ: tập tin canhhoa.m có nội dung như sau:
Trong command window:>> help canhhoaM-file script tao ra 4 hinh canh hoa
% M-file script tao ra 4 hinh canh hoatheta=-pi:0.01:pi;rho(1,:)=2*sin(5*theta).^2;rho(2,:)=cos(10*theta).^3;rho(3,:)=sin(theta).^2;rho(4,:)=5*cos(3.5*theta).^3;for i=1:4
polar(theta,rho(i,:))pause
end
CHƯƠNG 3: LẬP TRÌNH TRONG MATLAB
Giảng viên: Hoàng Xuân Dương
86
>> echo on>> canhhoatheta=-pi:0.01:pirho(1,:)=2*sin(5*theta).^2;rho(2,:)=cos(10*theta).^3;rho(3,:)=sin(theta).^2;rho(4,:)=5*cos(3.5*theta).^3;for i=1:4
polar(theta,rho(i,:))pausepolar(theta,rho(i,:))pausepolar(theta,rho(i,:))pausepolar(theta,rho(i,:))pause
44
CHƯƠNG 3: LẬP TRÌNH TRONG MATLAB
Giảng viên: Hoàng Xuân Dương
87
III. CÁC DẠNG FILE
2. Hàm và tạo hàm trong Matlab:
Giống như script file. Cấu trúc tổng quát của hàm:
Có thể chỉ là một nhóm dòng lệnh hay nhận vào các đối số và trả về kết quả
Có thể gọi hàm từ các hàm, script khác
Các biến trong hàm là các biến cục bộ
function [y1,y2,…]=function_name (a,b,c…)
% help text in the usage of the function
%.......
:
end
CHƯƠNG 3: LẬP TRÌNH TRONG MATLAB
Giảng viên: Hoàng Xuân Dương
88
Qui tắc viết hàm M-files:1) Bắt đầu bằng từ function, sau đó lần lượt các tham số đầu
ra, dấu bằng, tên hàm và các tham số đầu vào
2) Một số dòng sau tên hàm bắt đầu bằng dấu % là các dòng chú thích về cách dùng hàm, nó được bỏ qua khi chạy. Được hiển thị khi lệnh help yêu cầu hàm
3) Matlab có thể chấp nhận nhiều tham số ngõ vào và tham số ngõ ra
4) Nếu hàm trả về nhiều hơn một giá trị, các giá trị được trảvề như một vector
5) Nếu hàm nhận nhiều tham số ngõ vào, các tham số sẽ được liệt kê trong dấu ngoặc đơn
6) Kết thúc hàm là phát biểu ‘end’
45
CHƯƠNG 3: LẬP TRÌNH TRONG MATLAB
Giảng viên: Hoàng Xuân Dương
89
III. CÁC DẠNG FILE
2. Hàm và tạo hàm trong Matlab (tt)
Ví dụ 1:
Thực hiện hàm luythua.m như sau:
Trong command window:>> luythua(2,3)ans = 8>> c=luythua(4,2)c = 16
function y=luythua(a,b)
% Ham tinh a^b
y=a^b;
CHƯƠNG 3: LẬP TRÌNH TRONG MATLAB
Giảng viên: Hoàng Xuân Dương
90
III. CÁC DẠNG FILE
2. Hàm và tạo hàm trong Matlab (tt)
Ví dụ 2:
Để giải phương trình bậc 2: ax2+bx+c=0. Thực hiện hàm tính nghiệm như sau, lưu với tên quadroot.m
function [x1,x2]=quadroot(a,b,c)
% Hàm tính nghiệm của phương trình bậc 2
radical=sqrt(b^2-4*a*c);
x1=(-b+radical)/(2*a);
x2=(-b-radical)/(2*a);
46
CHƯƠNG 3: LẬP TRÌNH TRONG MATLAB
Giảng viên: Hoàng Xuân Dương
91
III. CÁC DẠNG FILE
2. Hàm và tạo hàm trong Matlab (tt)
Chương trình có tên ptbac2.m có nội dung như sau:
disp('Chuong trinh giai phuong trinh bac 2: ax^2+bx+c=0');
a=input('Nhap a: ');
b=input('Nhap b: ');
c=input('Nhap c: ');
[x1,x2]=quadroot(a,b,c); % gọi hàm quadroot
disp('Nghiem cua phuong trinh: ');
fprintf('x1=%f\n',x1);
fprintf('x2=%f\n',x2);
CHƯƠNG 3: LẬP TRÌNH TRONG MATLAB
Giảng viên: Hoàng Xuân Dương
92
III. CÁC DẠNG FILE
2. Hàm và tạo hàm trong Matlab (tt)
Trong Command window:>> [a,b]=quadroot(1,-3,2)a = 2b = 1>> ptbac2Chuong trinh giai phuong trinh bac 2: ax^2+bx+c=0Nhap a: 1Nhap b: -3Nhap c: 2Nghiem cua phuong trinh: x1=2.000000x2=1.000000
47
CHƯƠNG 3: LẬP TRÌNH TRONG MATLAB
Giảng viên: Hoàng Xuân Dương
93
III. CÁC DẠNG FILE
3. File dữ liệu:
Matlab phân biệt 2 loại dữ liệu khác nhau:
Mat-files: thích hợp cho dữ liệu chương trình Matlab. Phần mở rộng là .mat
>> save <tên file> <tên ma trận>;
>> load <tên file>;
ASCII files: cho dữ liệu được chia sẻ với các chương trình khác. Phần mở rộng là .dat
>> save <tên file>.dat <tên ma trận> /ascii;
>> load <tên file>.dat;
CHƯƠNG 3: LẬP TRÌNH TRONG MATLAB
Giảng viên: Hoàng Xuân Dương
94
IV. BIỂU THỨC QUAN HỆ VÀ LOGIC
1. Các phép toán quan hệ:
Phép so sánh 2 ma trận là so sánh từng phần tử. Kết quảsinh ra ma trận {0,1} cùng cỡ. Nếu phép so sánh đúng, các phần tử =1, ngược lại thì các phần tử bằng 0
Toán tử Ý nghĩa
< Nhỏ hơn
<= Nhỏ hơn hoặc bằng
> Lớn hơn
~= Không bằng
>= Lớn hơn hoặc bằng
== Bằng
48
CHƯƠNG 3: LẬP TRÌNH TRONG MATLAB
Giảng viên: Hoàng Xuân Dương
95
IV. BIỂU THỨC QUAN HỆ VÀ LOGIC
1. Các phép toán quan hệ (tt)
Ví dụ:>> a=[3 4 3; 4 5 6];>> b=[1 2 3; 7 8 6];>> a==bans = 0 0 1
0 0 1>> a>bans = 1 1 0
0 0 0>> a>=bans = 1 1 1
0 0 1
CHƯƠNG 3: LẬP TRÌNH TRONG MATLAB
Giảng viên: Hoàng Xuân Dương
96
IV. BIỂU THỨC QUAN HỆ VÀ LOGIC
2. Các phép toán logic:
Thứ tự các toán tử trong biểu thức logic từ cao đến thấp là not, and, or. Tuy nhiên có thể dùng ngoặc đơn để thay đổi
Trong Matlab, tất cả các giá trị khác không đều coi như đúng (true), còn giá trị 0 được coi như sai (false)
Toán tử Ký hiệu
not ~
and &
or |
49
CHƯƠNG 3: LẬP TRÌNH TRONG MATLAB
Giảng viên: Hoàng Xuân Dương
97
IV. BIỂU THỨC QUAN HỆ VÀ LOGIC
2. Các phép toán logic (tt)Ví dụ:>> b=[1 1 0; 1 0 1]>> a=[0 1 0; 0 0 1]>> a&bans = 0 1 0
0 0 1>> a|bans = 1 1 0
1 0 1>> ~aans = 1 0 1
1 1 0
CHƯƠNG 3: LẬP TRÌNH TRONG MATLAB
Giảng viên: Hoàng Xuân Dương
98
IV. BIỂU THỨC QUAN HỆ VÀ LOGIC
3. Các hàm quan hệ và logic:
Hàm Ý nghĩa
any(x) Trả về vector hàng có các phần tử =1 nếu tồn tạiphần tử cột của x khác 0, ngược lại =0
all(x) Trả về vector hàng có các phần tử =1 nếu tất cảphần tử cột của x khác 0, ngược lại =0
exit(‘a’) = 1 nếu a là biến, = 2 nếu là file, = 0 nếu a không tồn tại…
isnan(x) Trả về ma trận cùng cỡ có các phần tử = 1 nếu các phần tử tương ứng của x là nan, ngược lại = 0
find(x) Trả về vector chứa chỉ số các phần tử của x khác 0
50
CHƯƠNG 3: LẬP TRÌNH TRONG MATLAB
Giảng viên: Hoàng Xuân Dương
99
IV. BIỂU THỨC QUAN HỆ VÀ LOGIC
3. Các hàm quan hệ và logic (tt)
Hàm Ý nghĩa
finite(x)Trả về ma trận cùng cỡ có các phần tử = 1 nếu các phần tử tương ứng của x hữu hạn, = 0 nếu vô hạn hoặc nan
isempty(x) = 1 nếu x rỗng, ngược lại = 0
isstr(x) = 1 nếu x là một chuỗi, ngược lại = 0
strcmp(y1,y2)So sánh 2 chuỗi, =1 nếu 2 chuỗi giống hệt nhau, ngược lại =0. Phân biệt hoa-thường, dấu cách, đầu dòng
CHƯƠNG 3: LẬP TRÌNH TRONG MATLAB
Giảng viên: Hoàng Xuân Dương
100
IV. BIỂU THỨC QUAN HỆ VÀ LOGIC
3. Các hàm quan hệ và logic (tt)
Ví dụ:>> a=[0 1 2; 0 0 3];>> any(a)ans = 0 1 1>> all(a)ans = 0 0 1>> find(a)ans = 3
56
51
CHƯƠNG 3: LẬP TRÌNH TRONG MATLAB
Giảng viên: Hoàng Xuân Dương
101
IV. BIỂU THỨC QUAN HỆ VÀ LOGIC
3. Các hàm quan hệ và logic (tt)
Ví dụ:>> a=[nan 12 4 0; inf 3 8 nan]a = NaN 12 4 0
Inf 3 8 NaN>> isnan(a)ans = 1 0 0 0
0 0 0 1>> finite(a)ans = 0 1 1 1
0 1 1 0>> isempty(a)ans = 0
CHƯƠNG 3: LẬP TRÌNH TRONG MATLAB
Giảng viên: Hoàng Xuân Dương
102
IV. BIỂU THỨC QUAN HỆ VÀ LOGIC
3. Các hàm quan hệ và logic (tt)
Ví dụ:>> text1='Lop HCDH';>> text2='Lop';>> text3='HCDH';>> isstr(text1)ans = 1>> strcmp(text1,text2)ans = 0>> strcmp(text1,[text2 ' ' text3])ans = 1
52
CHƯƠNG 3: LẬP TRÌNH TRONG MATLAB
Giảng viên: Hoàng Xuân Dương
103
V. CẤU TRÚC ĐIỀU KHIỂN
1. Lệnh if else elseif:
Có các dạng sử dụng
if biểu thức logic
các phát biểu
end
hoặc
if biểu thức logic
các phát biểu 1
else
các phát biểu 2
end
CHƯƠNG 3: LẬP TRÌNH TRONG MATLAB
Giảng viên: Hoàng Xuân Dương
104
V. CẤU TRÚC ĐIỀU KHIỂN
1. Lệnh if else elseif (tt)hoặc
if biểu thức logic 1
các phát biểu 1
elseif biểu thức logic 2
các phát biểu 2
end
53
CHƯƠNG 3: LẬP TRÌNH TRONG MATLAB
Giảng viên: Hoàng Xuân Dương
105
V. CẤU TRÚC ĐIỀU KHIỂN
1. Lệnh if else elseif (tt)Ví dụ 1:
if n>0disp('la so duong')
elseif n==0disp('la so 0')
elsedisp('la so am')
end
if rem(a,2)==0disp('la mot so chan')b=a/2;
end
CHƯƠNG 3: LẬP TRÌNH TRONG MATLAB
Giảng viên: Hoàng Xuân Dương
106
V. CẤU TRÚC ĐIỀU KHIỂN
1. Lệnh if else elseif (tt)Ví dụ 2: Hàm ngay_trong_thang.m
function y = ngay_trong_thang(th,nam)if (th==4)|(th==6)|(th==9)|(th==11)
y=30elseif (th==2)
if (rem(nam,4)~=0)y=28
elsey=29
endelse
y=31end
54
CHƯƠNG 3: LẬP TRÌNH TRONG MATLAB
Giảng viên: Hoàng Xuân Dương
107
V. CẤU TRÚC ĐIỀU KHIỂN
2. Lệnh switch case:
Chọn nhiều trường hợp
switch biểu thức (vô hướng hay chuỗi)
case trị_1
Các phát biểu 1
case trị_2
Các phát biểu 2
……
otherwise
Các phát biểu khác
end
CHƯƠNG 3: LẬP TRÌNH TRONG MATLAB
Giảng viên: Hoàng Xuân Dương
108
V. CẤU TRÚC ĐIỀU KHIỂN
2. Lệnh switch case (tt)Ví dụ 1:
switch input_num
case -1
disp(‘negative one’);
case 0
disp(‘zero’);
case 1
disp(‘positive one’);
otherwise
disp(‘other value’);
end
55
CHƯƠNG 3: LẬP TRÌNH TRONG MATLAB
Giảng viên: Hoàng Xuân Dương
109
V. CẤU TRÚC ĐIỀU KHIỂN
2. Lệnh switch case (tt)Ví dụ 2:
switch var
case 1
disp(‘1’);
case {2,3,4}
disp(‘2 or 3 or 4’);
case 5
disp(‘5’);
otherwise
disp(‘something else’);
end
CHƯƠNG 3: LẬP TRÌNH TRONG MATLAB
Giảng viên: Hoàng Xuân Dương
110
V. CẤU TRÚC ĐIỀU KHIỂN
c. Lệnh while:
while biểu thức logic
các phát biểu
end
Ví dụ 1:
n=1;
while prod(1:n) < 1e100 % prod tính tích các phần
n=n+1; % tử cột của vectơ hay
end % ma trận
56
CHƯƠNG 3: LẬP TRÌNH TRONG MATLAB
Giảng viên: Hoàng Xuân Dương
111
V. CẤU TRÚC ĐIỀU KHIỂN
4. Lệnh for:
for index=star:increment:end
các biểu thức
end
Ví dụ 1:
x(1)=1;
for i=2:6
x(i)=2*x(i-1);
end
CHƯƠNG 3: LẬP TRÌNH TRONG MATLAB
Giảng viên: Hoàng Xuân Dương
112
V. CẤU TRÚC ĐIỀU KHIỂN
4. Lệnh for (tt)
Ví dụ 2: Chương trình khởi tạo giá trị cho ma trận A(mxn)
for i=1:m
for j=1:n
A(i,j)=i+j;
end
end
57
CHƯƠNG 3: LẬP TRÌNH TRONG MATLAB
Giảng viên: Hoàng Xuân Dương
113
V. CẤU TRÚC ĐIỀU KHIỂN
5. Gián đoạn bằng continue, break và return
• Trong vòng lặp for hay while, gọi continue thì ngay lập tức chu trình chuyển sang bước lặp kế tiếp, mọi lệnh chưa thực hiện của vòng lặp hiện tại sẽ bị bỏ qua
• Lệnh break mạnh hơn, ngừng vòng lặp đang tính
• Nếu break sử dụng ngoài vòng lặp for và while, nhưng nằm trong script file hoặc function thì sẽ dừng tại vị trícủa break
• Lệnh return sử dụng để kết thúc sớm hàm trước khi gặp lệnh end
CHƯƠNG 3: LẬP TRÌNH TRONG MATLAB
Giảng viên: Hoàng Xuân Dương
114
V. CẤU TRÚC ĐIỀU KHIỂN
5. Gián đoạn bằng continue, break và return (tt)
for m=3:1:7for n=2:1:m-1
if mod(m, n) ~=0continue;
endfprintf('%2d không là một số nguyên tố !\n',m)break;
endif n==m-1
fprintf('%2d là một số nguyên tố !\n',m)end
end
58
CHƯƠNG 3: LẬP TRÌNH TRONG MATLAB
Giảng viên: Hoàng Xuân Dương
115
V. CẤU TRÚC ĐIỀU KHIỂN
5. Gián đoạn bằng continue, break và return (tt)
Kết quả:!! 3 là một số nguyên tố !
4 không là một số nguyên tố !
!! 5 là một số nguyên tố !
6 không là một số nguyên tố !
!! 7 là một số nguyên tố !
CHƯƠNG 3: LẬP TRÌNH TRONG MATLAB
Giảng viên: Hoàng Xuân Dương
116
VI. BÀI TẬP:
1. Hãy cho biết kết quả khi chạy đoạn chương trình sau:
2. Hãy cho biết kết quả khi chạy đoạn chương trình sau:
a = [1 2 3 4; 4 5 6 7; 7 8 9 10];
m=size(a,2);
for i = 1:m
disp(a(:,i));
end
a = [1 2 3; 4 5 6; 7 8 9];
[m n]=size(a);
for i = (1-m):(n-1)
disp(triu(tril(a,i),i))
end
59
CHƯƠNG 3: LẬP TRÌNH TRONG MATLAB
Giảng viên: Hoàng Xuân Dương
117
VI. BÀI TẬP:
3. Hãy cho biết kết quả khi chạy đoạn chương trình sau:
4. Hãy cho biết kết quả khi chạy đoạn chương trình sau:
a = pascal(3);
row = size(a,1); col = size(a,2);
for i = (1-row):(col-1)
disp(tril(triu(a,i),i))
end
n=4; giaithua=1
for i=1:n
giaithua=giaithua*i;
fprintf('%d! = %d\n',i,giaithua);
end
CHƯƠNG 3: LẬP TRÌNH TRONG MATLAB
Giảng viên: Hoàng Xuân Dương
118
VI. BÀI TẬP:
5. Hãy cho biết kết quả khi chạy đoạn chương trình sau:
6. Viết chương trình cho hiển thị trên màn hình dãy số :1 2 3 4 5 6 7 8 … n
Với n được nhập từ bàn phím
a = [1 2 3 4; 4 5 6 7; 7 8 9 10];
[m n]=size(a);
for i = 1:m
for j=1:n
fprintf('%d ', a(i,j))
end
end
60
CHƯƠNG 3: LẬP TRÌNH TRONG MATLAB
Giảng viên: Hoàng Xuân Dương
119
VI. BÀI TẬP:
7. Viết đoạn chương trình tính tổng của n số tự nhiên, với n được nhập từ bàn phím
8. Viết một hàm minmax.m với tham số ngõ vào là một ma trận a, Kết quả trả về của hàm là giá trị phần tử lớn nhất và phần tử nhỏ nhất trong ma trận
9. Viết một hàm findmax.m với tham số ngõ vào là một ma trận a; Kết quả trả về của hàm là vị trí của phần tửlớn nhất (hàng, cột) trong ma trận
10. Viết một hàm luythuabac3.m với tham số vào là giá trịn; Trả về giá trị tổng lũy thừa bậc 3 của n phần tử
13 + 23 + 33 + ….. + n3
CHƯƠNG 3: LẬP TRÌNH TRONG MATLAB
Giảng viên: Hoàng Xuân Dương
120
VI. BÀI TẬP:11. Viết một hàm tinhtong.m có:
Nhận vào giá trị nTrả về giá trị tổng các tích 2 số liên tiếp từ 1 đến n1*2 + 2*3 + 3*4 + ….. + (n-1)*n
12. Tìm giá trị lớn nhất của n sao cho tổng:
12 + 22 + … + n2
nhận giá trị nhỏ hơn 100.
13. Mô phỏng một phép tính đơn giản cộng, trừ, nhân vàchia 2 số.
14. Hàm tính n!. Sử dụng hàm để tính x=7!/(3!*4!)
61
Bài giảng Tin học chuyên ngành
Giảng viên: Hoàng Xuân Dương
121
CHƯƠNG 4:
CHƯƠNG 4: XỬ LÝ CÁC HÀM TOÁN HỌC
Giảng viên: Hoàng Xuân Dương
122
I. ĐA THỨCII. PHÉP NỘI SUYIII. HÀM CỦA HÀMIV. XỬ LÝ HÀM DƯỚI DẠNG CHUỖI BIỂU THỨCV. BÀI TẬP
62
CHƯƠNG 4: XỬ LÝ CÁC HÀM TOÁN HỌC
Giảng viên: Hoàng Xuân Dương
123
I. ĐA THỨC: Đa thức được sắp xếp theo lũy thừa giảmBiểu diễn dưới dạng vector hàng, các phần tử là các hệsố của đa thức
Ví dụ:Đa thức 2x3 - 8x + 7 được biểu diễn bằng vector pp=[2 0 -8 7]
CHƯƠNG 4: XỬ LÝ CÁC HÀM TOÁN HỌC
Giảng viên: Hoàng Xuân Dương
124
I. ĐA THỨC: Một số hàm xử lý đa thức:
Hàm Chức năng
conv Nhân đa thức
polyfit Xấp xỉ bằng đa thức
poly Lập đa thức từ nghiệm
polyvalm Tính ma trận đa thức
roots Tìm nghiệm đa thức
deconv Chia đa thức
polyder Đạo hàm đa thức
polyval Tính giá trị đa thức
residue Tính thặng dư, khai triển riêng phần phân số
63
CHƯƠNG 4: XỬ LÝ CÁC HÀM TOÁN HỌC
Giảng viên: Hoàng Xuân Dương
125
I. ĐA THỨC: 1. Nghiệm của đa thức:
Nghiệm của đa thức bậc 2Ví dụ: Giải phương trình bậc 2: 5x2+6x+7=0>> p = [5 6 7]>> r = roots(p)
r = -0.6000 + 1.0198i-0.6000 - 1.0198i
>> t = real(r)t = -0.6000
-0.6000>> a = imag(r)
a = 1.0198-1.0198
CHƯƠNG 4: XỬ LÝ CÁC HÀM TOÁN HỌC
Giảng viên: Hoàng Xuân Dương
126
I. ĐA THỨC: 1. Nghiệm của đa thức:
Đa thức bậc nVí dụ: Giải phương trình bậc 4: x4 - 12x3 + 25x + 116 = 0>> p = [1 -12 0 25 116]>> r = roots(p)r = 11.7473
2.7028 -1.2251 + 1.4672i-1.2251 - 1.4672i
>> t = real(r)>> a = imag(r)>> pp = poly(r)pp = 1.0000 -12.0000 -0.0000 25.0000 116.0000
64
CHƯƠNG 4: XỬ LÝ CÁC HÀM TOÁN HỌC
Giảng viên: Hoàng Xuân Dương
127
I. ĐA THỨC: 2. Nhân 2 đa thức:Ví dụ: Cho 2 đa thức: y = x3+2x2+3x+4
và z = x3+4x2+9x+16
>> p1 = [1 2 3 4]p1 = 1 2 3 4>> p2 = [1 4 9 16]p2 = 1 4 9 16>> p = conv(p1,p2)p = 1 6 20 50 75 84 64
Nếu nhân nhiều đa thức thì lập lại nhiều lần lệnh conv
CHƯƠNG 4: XỬ LÝ CÁC HÀM TOÁN HỌC
Giảng viên: Hoàng Xuân Dương
128
I. ĐA THỨC: 3. Cộng đa thức:
Hai đa thức cùng bậc:p = p1 + p2;
tương tự cho trừ đa thứcp = p1 – p2;
Hai đa thức khác bậc:Thêm các hệ số 0 vào đa thức có bậc thấp hơn để 2 đa thức có cùng bậc
65
CHƯƠNG 4: XỬ LÝ CÁC HÀM TOÁN HỌC
Giảng viên: Hoàng Xuân Dương
129
I. ĐA THỨC: 4. Chia đa thức:Ví dụ: Cho 2 đa thức: y = x3 + 6x2 + 12x + 8
z = x2 + 1>> y = [1 6 12 8];>> z = [1 0 1];>> p = deconv(y,z)p = 1 6>> [p,r] = deconv(y,z)p = 1 6r = 0 0 11 2 % y=(x2 + 1)(x + 6) + (11x + 2)
CHƯƠNG 4: XỬ LÝ CÁC HÀM TOÁN HỌC
Giảng viên: Hoàng Xuân Dương
130
I. ĐA THỨC: 5. Đạo hàm:Ví dụ: Cho đa thức y = x3 + 6x2 + 12x + 8
>> y = [1 6 12 8]y = 1 6 12 8>> z = polyder(y);z = 3 12 12 % z = 3x2 + 12x + 12
66
CHƯƠNG 4: XỬ LÝ CÁC HÀM TOÁN HỌC
Giảng viên: Hoàng Xuân Dương
131
I. ĐA THỨC: 6. Vẽ đồ thị:Ví dụ: đa thức y(x) = x3 + 4x2 - 7x – 10Cho các giá trị của x, tính các giá trị của y tương ứng
>> x = linspace(-1,3);>> p = [1 4 -7 -10];>> y = polyval(p,x); % xác định y ứng với các giá trị x>> plot(x,y)>> xlabel(‘x’)>> ylabel(‘y = f(x) = x3 + 4x2 - 7x – 10’);>> title(‘Vẽ đồ thị’);
CHƯƠNG 4: XỬ LÝ CÁC HÀM TOÁN HỌC
Giảng viên: Hoàng Xuân Dương
132
67
CHƯƠNG 4: XỬ LÝ CÁC HÀM TOÁN HỌC
Giảng viên: Hoàng Xuân Dương
133
I. ĐA THỨC: 7. Đa thức hữu tỉ:Ví dụ: Cho phân thức:
Phân chia phân thức ra từng hệ số:
Nếu chiều dài hay bậc của Q(x) lớn hơn P(x) thì k=0
( )( )
( )( )( )( )4x3x1x
7x42xQxP
++++
=
( )( ) k
4xC
3xB
1xA
xQxP
++
++
++
=
CHƯƠNG 4: XỬ LÝ CÁC HÀM TOÁN HỌC
Giảng viên: Hoàng Xuân Dương
134
I. ĐA THỨC: 7. Đa thức hữu tỉ (tt)Giải:>> num=2*[4 7];>> den=poly([-1 ; -3 ; -4]);>> [res,poles,k]=residue(num,den)res = -6.0000
5.00001.0000
poles= -4.0000-3.0000-1.0000
k = [ ] % 4x6
3x5
1x1
)x(Q)x(P
+−
++
+=
68
CHƯƠNG 4: XỬ LÝ CÁC HÀM TOÁN HỌC
Giảng viên: Hoàng Xuân Dương
135
I. ĐA THỨC: 7. Đa thức hữu tỉ (tt)Ngược lại từ res, poles, k có thể tìm lại đa thức P(x), Q(x)>> [P,Q]=residue(res,poles,k)
P = 0 8 14Q = 1 8 19 12
Bài tập: Tìm các hệ số của các hàm sau1. H(s)=10(s+2)/s(s+4)(s+5)2. H(s)=4/(s+1)(s+2)3. H(s)=10s/(s+1)(s+4)4. H(s)=(s+1)/s(s+2)(s+3)5. H(s)=10s2/(s+1)(s+5)
CHƯƠNG 4: XỬ LÝ CÁC HÀM TOÁN HỌC
Giảng viên: Hoàng Xuân Dương
136
II. PHÉP NỘI SUY:1. Nội suy một chiều:Hàm nội suy (interpolation) một chiều thông dụng nhất:
Yi=interp1(X,Y,Xi)Yi=interp1(Y,Xi)Yi=interp1(X,Y,Xi,’method’)Yi=interp1(X,Y,Xi,’method’,’extrap’)Yi=interp1(X,Y,Xi,’method’,extrapval)
Y là tập dữ liệu ứng với giá trị cho bởi tập XYi là giá trị dữ liệu được nội suy ở giá trị Xi
69
CHƯƠNG 4: XỬ LÝ CÁC HÀM TOÁN HỌC
Giảng viên: Hoàng Xuân Dương
137
II. PHÉP NỘI SUY:1. Nội suy một chiều (tt)method là phương pháp sử dụng khi nội suy:
• nearest: nội suy cận gần nhất• linear: nội suy tuyến tính (mặc định)• spline, pchip, cubic, v5cubic: nội suy bậc 3
extrap: dùng khi ngoại suy, các giá trị ngoài tầm x, giá trịtrả về là extrapval
CHƯƠNG 4: XỬ LÝ CÁC HÀM TOÁN HỌC
Giảng viên: Hoàng Xuân Dương
138
II. PHÉP NỘI SUY:1. Nội suy một chiều (tt)Ví dụ:>> hour=1:12;>> temps=[5 8 9 15 25 29 31 30 22 25 27 24];>> plot(hour,temps,hour,temps,'.')>> h=linspace(1,12);>> t =interp1(hour,temps,h,'linear');>> t1=interp1(hour,temps,h,'cubic');>> t2=interp1(hour,temps,h,'nearest');>> hold on>> plot(h,t,'g.')>> plot(h,t1,'r.')>> plot(h,t2,'k.')
70
CHƯƠNG 4: XỬ LÝ CÁC HÀM TOÁN HỌC
Giảng viên: Hoàng Xuân Dương
139
CHƯƠNG 4: XỬ LÝ CÁC HÀM TOÁN HỌC
Giảng viên: Hoàng Xuân Dương
140
II. PHÉP NỘI SUY:2. Nội suy hai chiều:
Nội suy 2 chiều dùng cho hàm 2 biến z=f(x,y)Hàm nội suy hai chiều thông dụng nhất:Zi=interp2(X,Y,Z,Xi,Yi)Zi=interp2(Z,Xi,Yi)Zi=interp2(Z,ntimes)Zi=interp2(X,Y,Z,Xi,Yi,’method’)
Z là tập dữ liệu ứng với giá trị cho bởi tập X,YZi là giá trị dữ liệu được nội suy ở giá trị Xi,Yi
71
CHƯƠNG 4: XỬ LÝ CÁC HÀM TOÁN HỌC
Giảng viên: Hoàng Xuân Dương
141
II. PHÉP NỘI SUY:2. Nội suy hai chiều (tt)Ví dụ: Cho một tập dữ liệu lương nhân viên:>> years=1950:10:1990>> service=10:10:30>> wage=[150.697 199.592 187.625
179.323 195.072 250.287203.212 179.092 322.767226.505 153.706 426.730249.633 120.281 598.243]
Nội suy xem một nhân viên có 15 năm phục vụ lãnh lương bao nhiêu vào năm 1975
>> w=interp2(service,years,wage,15,1975)w= 190.6287
CHƯƠNG 4: XỬ LÝ CÁC HÀM TOÁN HỌC
Giảng viên: Hoàng Xuân Dương
142
II. PHÉP NỘI SUY:3. Nội suy nhiều chiều:
Vi=interp3(X,Y,Z,V,Xi,Yi,Zi)Vi=interpn(X1,X2,X3,…,V, Y1, Y2, Y3,…)
72
CHƯƠNG 4: XỬ LÝ CÁC HÀM TOÁN HỌC
Giảng viên: Hoàng Xuân Dương
143
III. HÀM CỦA HÀM:Matlab biểu diễn các hàm toán học theo 2 cách: định nghĩa bằng hàm M và định nghĩa bằng inline
Ví dụ:
có thể tạo file hamtruyen.m
hay định nghĩa từ dòng lệnh:
>> f=inline(‘10*(s+3)/(s*(s+5)*(s+10))’);
có thể tạo hàm nhiều biến với inline>> f=inline(‘y*sin(x)+x*sin(y)’,’x’,’y’)
)10s)(5s(s)3s(10y++
+=
function y=hamtruyen(s)
y=10*(s+3)/(s*(s+5)*(s+10))
CHƯƠNG 4: XỬ LÝ CÁC HÀM TOÁN HỌC
Giảng viên: Hoàng Xuân Dương
144
III. HÀM CỦA HÀM:Hàm feval dùng để tính giá trị của một hàm theo biến:Ví dụ:>> f=inline(‘sin(x)+sin(y)’);>> feval(f,90,45)ans=1.7449
Ví dụ: hamtruyen.m
>> feval(@hamtruyen,3)ans=10
function y=hamtruyen(x)y=2*x^2-3*x+1;
73
CHƯƠNG 4: XỬ LÝ CÁC HÀM TOÁN HỌC
Giảng viên: Hoàng Xuân Dương
145
III. HÀM CỦA HÀM:Hàm fplot dùng để vẽ hàm theo biến:Ví dụ: hamtruyen.m
>> fplot(@hamtruyen,[0,2])>> grid on
function y=hamtruyen(x)y=2*x^2-3*x+1;
CHƯƠNG 4: XỬ LÝ CÁC HÀM TOÁN HỌC
Giảng viên: Hoàng Xuân Dương
146
IV. XỬ LÝ HÀM DƯỚI DẠNG CHUỖI BIỂU THỨC:
Matlab không chỉ tính toán trên các số cụ thể mà còn cóthể thực hiện tính toán trên ký hiệu Có thể sử dụng một chuỗi biểu thức để biểu diễn hàm
Ví dụ:
)]'d,c;b,a[('symdcba
M
)'x*2sin()2^xcos(')x2sin()xcos(
)'x*2(sqrt/1'x2
1
)'n^x*2/(1'x21
2
n
⇒⎥⎦
⎤⎢⎣
⎡=
−⇒−
⇒
⇒
74
CHƯƠNG 4: XỬ LÝ CÁC HÀM TOÁN HỌC
Giảng viên: Hoàng Xuân Dương
147
IV. XỬ LÝ HÀM DƯỚI DẠNG CHUỖI BIỂU THỨC:
Hàm Ý nghĩa
syms Khai báo biến
sym Định nghĩa hàm
linsolve Giải hệ phương trình
symsub Trừ hàm
symmul Nhân hàm
symdiv Chia hàm
symadd Cộng hàm
sympow Lũy thừa hàm
diff Đạo hàm
int Tích phân
Hàm Ý nghĩa
symop Tạo hàm mới
symsum Tổng hàm
eval Tính trị hàm
numeric Tính trị hàm
subs Thay đổi giá trị biến
numden Tử+mẫu số hàm
poly2sym Tìm hệ số của hàm
sym2poly Tạo hàm từ hệ số
compose Hàm của hàm
finverse Tìm hàm ngược
CHƯƠNG 4: XỬ LÝ CÁC HÀM TOÁN HỌC
Giảng viên: Hoàng Xuân Dương
148
IV. XỬ LÝ HÀM DƯỚI DẠNG CHUỖI BIỂU THỨC:
Hàm Ý nghĩa
ezplot Vẽ hàm
factor Phân tích tp bậc 1
simplify Đơn giản hàm
simple Tối giản hàm
pretty Biểu diễn trực quan
collect Khai triển hàm
horner
expand Khai triển hàm
taylor Khai triển taylor
solve Giải phương trình
Hàm Ý nghĩa
dsolve Giải phương trình vi phân
laplace Biến đổi laplace
ifourier Biến đổi fourier ngược
iztrans Biến đổi z ngược
bode Vẽ biểu đồ bode
freqs Vẽ đáp ứng tần số
ztrans Biến đổi z
nyquist Vẽ biểu đồ Nyquist
ilaplace Biến đổi laplace ngược
fourier Biến đổi fourier
75
CHƯƠNG 4: XỬ LÝ CÁC HÀM TOÁN HỌC
Giảng viên: Hoàng Xuân Dương
149
IV. XỬ LÝ HÀM DƯỚI DẠNG CHUỖI BIỂU THỨC:
1. Đạo hàm và vi phân gần đúng:
Đạo hàm của hàm lượng giác:
Ví dụ:>> f=sym('cos(x)') % hay f='cos(x)'f = cos(x)>> y=diff(f)y =-sin(x)>> x=linspace(0,2*pi);>> plot(x,eval(f),x,eval(y),'r')
CHƯƠNG 4: XỬ LÝ CÁC HÀM TOÁN HỌC
Giảng viên: Hoàng Xuân Dương
150
IV. XỬ LÝ HÀM DƯỚI DẠNG CHUỖI BIỂU THỨC:
1. Đạo hàm và vi phân gần đúng:
Đạo hàm một đa thức:
Ví dụ 1:>> f = diff(‘x^3+3*x^2+5*x+2’)
f = 3*x^2+6*x+5
>> x=linspace(-1,1);
>> y=polyval([3 6 5],x);
>> plot(x,y)
76
CHƯƠNG 4: XỬ LÝ CÁC HÀM TOÁN HỌC
Giảng viên: Hoàng Xuân Dương
151
IV. XỬ LÝ HÀM DƯỚI DẠNG CHUỖI BIỂU THỨC:
1. Đạo hàm và vi phân gần đúng:
Đạo hàm một đa thức:
Ví dụ 2:>> D=['sin(x) ';'cos(x) ';'sinc(x)'];>> x=linspace(-2*pi,2*pi);>> clf>> n=input(‘Chọn hình để vẽ: ’);>> plot(x,eval(D(n,:)))
CHƯƠNG 4: XỬ LÝ CÁC HÀM TOÁN HỌC
Giảng viên: Hoàng Xuân Dương
152
IV. XỬ LÝ HÀM DƯỚI DẠNG CHUỖI BIỂU THỨC:
1. Đạo hàm và vi phân gần đúng:
Đạo hàm hàm mũ:
Ví dụ:>> diff(‘x^n’,’x’) % đạo hàm theo x, diff(‘x^n’)ans = x^n*n/x>> diff(‘x^n’,’n’)ans = x^n*log(x)
77
CHƯƠNG 4: XỬ LÝ CÁC HÀM TOÁN HỌC
Giảng viên: Hoàng Xuân Dương
153
IV. XỬ LÝ HÀM DƯỚI DẠNG CHUỖI BIỂU THỨC:
1. Đạo hàm và vi phân gần đúng:
Đạo hàm đa thức hữu tỉ:
Ví dụ:>> diff(‘x/(1-x^2)’) ans = 1/(1-x^2)+2*x^2/(1-x^2)^2
Rút gọn biểu thức:>> simplify(sym(‘1/(1-x^2)+2*x^2/(1-x^2)^2’))ans = (1+x^2)/(-1+x^2)^2
CHƯƠNG 4: XỬ LÝ CÁC HÀM TOÁN HỌC
Giảng viên: Hoàng Xuân Dương
154
IV. XỬ LÝ HÀM DƯỚI DẠNG CHUỖI BIỂU THỨC:
1. Đạo hàm và vi phân gần đúng:
Đạo hàm mảng:
Ví dụ:>> syms x % định nghĩa biến>> A=[cos(x),sin(x);-sin(x),cos(x)]A = [ cos(x), sin(x)]
[ -sin(x), cos(x)]>> diff(A)ans =
[ -sin(x), cos(x)][ -cos(x), -sin(x)]
78
CHƯƠNG 4: XỬ LÝ CÁC HÀM TOÁN HỌC
Giảng viên: Hoàng Xuân Dương
155
IV. XỬ LÝ HÀM DƯỚI DẠNG CHUỖI BIỂU THỨC:
1. Đạo hàm và vi phân gần đúng:
Đạo hàm và vi phân cấp cao:
Ví dụ:
Đạo hàm cấp 2>> syms x >> diff(sin(x),2)ans = -sin(x)
Đạo hàm cấp 3>> diff(x^3,3)ans = 6
CHƯƠNG 4: XỬ LÝ CÁC HÀM TOÁN HỌC
Giảng viên: Hoàng Xuân Dương
156
IV. XỬ LÝ HÀM DƯỚI DẠNG CHUỖI BIỂU THỨC:
1. Đạo hàm và vi phân gần đúng:
Đạo hàm và vi phân cấp cao (tt)
Ví dụ:
Đạo hàm cấp 2 theo a>> syms x a;>> f='a^2*x^3+x^2'f = a^2*x^3+x^2>> diff(f,a,2)ans = 2*x^3
79
CHƯƠNG 4: XỬ LÝ CÁC HÀM TOÁN HỌC
Giảng viên: Hoàng Xuân Dương
157
IV. XỬ LÝ HÀM DƯỚI DẠNG CHUỖI BIỂU THỨC:
2. Tích phân:
Tích phân bất định:
Ví dụ:>> syms x x1 alpha u t;>> int(1/(1+x^2)) % tích phân mặc định theo xans = atan(x)>> int(1/(1+x^2),t) % tích phân theo tans = 1/(1+x^2)*t>> int(sin(alpha*u),alpha)ans = -1/u*cos(alpha*u)
CHƯƠNG 4: XỬ LÝ CÁC HÀM TOÁN HỌC
Giảng viên: Hoàng Xuân Dương
158
IV. XỬ LÝ HÀM DƯỚI DẠNG CHUỖI BIỂU THỨC:
2. Tích phân:
Tích phân bất định (tt)>> int(sin(alpha*u),u)ans = -1/alpha*cos(alpha*u)
Nếu khi tính tích phân hay nguyên hàm của một lượng quálớn hay phức tạp, đòi hỏi chiếm bộ nhớ lớn thì nó không thực hiện và trả về kết quả
>> int('log(x)/exp(x^2)')ans = int(log(x)/exp(x^2),x)>> int('sin(x)/x')ans = sinint(x) % sinint(x) = int(sin(t)/t,t,0,x)
80
CHƯƠNG 4: XỬ LÝ CÁC HÀM TOÁN HỌC
Giảng viên: Hoàng Xuân Dương
159
IV. XỬ LÝ HÀM DƯỚI DẠNG CHUỖI BIỂU THỨC:
2. Tích phân:
Tích phân mảng
Ví dụ:>> syms x t;>> A=[cos(x*t),sin(x*t);-sin(x*t),cos(x*t)];>> int(A,t)ans = [ 1/x*sin(x*t), -cos(x*t)/x]
[ cos(x*t)/x, 1/x*sin(x*t)]>> int([exp(t),exp(alpha*t)])ans = [exp(t), exp(alpha*t)/alpha]
CHƯƠNG 4: XỬ LÝ CÁC HÀM TOÁN HỌC
Giảng viên: Hoàng Xuân Dương
160
IV. XỬ LÝ HÀM DƯỚI DẠNG CHUỖI BIỂU THỨC:
2. Tích phân:
Tích phân xác định
Ví dụ:>> syms x x1 alpha t;>> int(x1*log(1+x1),0,1) % tích phân từ 0 1ans = 1/4>> int('sin(s+2*x)','s',pi/2,pi) % s chưa khai báoans = 2*cos(x)^2-1-2*sin(x)*cos(x)>> int(sin(x),0,t) % cận không được trùngans = -cos(t)+1 % với đối số của hàm
81
CHƯƠNG 4: XỬ LÝ CÁC HÀM TOÁN HỌC
Giảng viên: Hoàng Xuân Dương
161
IV. XỬ LÝ HÀM DƯỚI DẠNG CHUỖI BIỂU THỨC:
2. Tích phân:
Tích phân xác định (tt)
Ví dụ:Biểu diễn bằng đồ thị>> t=linspace(0,4*pi);>> y1=sin(t);>> y2=1-cos(t);>> plot(t,y1,t,y2,'r.')
CHƯƠNG 4: XỬ LÝ CÁC HÀM TOÁN HỌC
Giảng viên: Hoàng Xuân Dương
162
IV. XỬ LÝ HÀM DƯỚI DẠNG CHUỖI BIỂU THỨC:
2. Tích phân:
Tích phân xác định (tt)
Tổng quát:>> int('sin(s+2*x)','m','n')ans = -1/2*cos(s+2*n)+1/2*cos(s+2*m)
82
CHƯƠNG 4: XỬ LÝ CÁC HÀM TOÁN HỌC
Giảng viên: Hoàng Xuân Dương
163
IV. XỬ LÝ HÀM DƯỚI DẠNG CHUỖI BIỂU THỨC:
3. Ma trận:
Định thức:
Ví dụ:>> M=sym('[a,b;c,d]')M = [ a, b]
[ c, d]>> determ(M) % định thứcans = a*d-b*c
Hay:>> M='[a,b;c,d]'
CHƯƠNG 4: XỬ LÝ CÁC HÀM TOÁN HỌC
Giảng viên: Hoàng Xuân Dương
164
IV. XỬ LÝ HÀM DƯỚI DẠNG CHUỖI BIỂU THỨC:
3. Ma trận:
Định thức (tt)
Giải hệ phương trình>> A=[1 -2 1;2 1 -4;3 -4 -1];>> b=[2;-1;0]>> x=linsolve(A,b)x = [ 7/2]
[ 2][ 5/2]
% x = linsolve(A,b) tương đương với x = sym(A)\sym(b)
83
CHƯƠNG 4: XỬ LÝ CÁC HÀM TOÁN HỌC
Giảng viên: Hoàng Xuân Dương
165
IV. XỬ LÝ HÀM DƯỚI DẠNG CHUỖI BIỂU THỨC:
3. Ma trận:
Tính toán với ma trận:
Ví dụ:>> G=sym('[cos(t),sin(t);-sin(t),cos(t)]')G = [ cos(t), sin(t)]
[ -sin(t), cos(t)]
Cộng mỗi phần tử G cho t>> symadd(G,'t')ans =
[ cos(t)+t, sin(t)+t][ -sin(t)+t, cos(t)+t]
CHƯƠNG 4: XỬ LÝ CÁC HÀM TOÁN HỌC
Giảng viên: Hoàng Xuân Dương
166
Trừ mỗi phần tử G cho t>> symsub(G,'t')
Nhân mỗi phần tử G cho t>> symmul(G,'t')
Chia mỗi phần tử G cho t>> symdiv(G,'t')
Nhân 2 ma trận>> symmul(G,G)ans =
[ cos(t)^2-sin(t)^2, 2*cos(t)*sin(t)][ -2*cos(t)*sin(t), cos(t)^2-sin(t)^2]
84
CHƯƠNG 4: XỬ LÝ CÁC HÀM TOÁN HỌC
Giảng viên: Hoàng Xuân Dương
167
Rút gọn biểu thức>> simplify(ans)ans =
[ 2*cos(t)^2-1, 2*cos(t)*sin(t)][ -2*cos(t)*sin(t), 2*cos(t)^2-1]
Hay:>> simple(ans) % sau một số bước rút gọnans = [ cos(2*t), sin(2*t)]
[ -sin(2*t), cos(2*t)]
CHƯƠNG 4: XỬ LÝ CÁC HÀM TOÁN HỌC
Giảng viên: Hoàng Xuân Dương
168
IV. XỬ LÝ HÀM DƯỚI DẠNG CHUỖI BIỂU THỨC:
4. Đa thức:
Tính toán với đa thức:
Ví dụ:>> f='2*x^2+3*x-5';g='x^2+x+7';>> symadd(f,g) % Tính biểu thức f+gans = 3*x^2+4*x+2>> symsub(f,g) % Tính biểu thức f-gans = x^2+2*x-12>> symmul(f,g) % Tính biểu thức f*gans = (2*x^2+3*x-5)*(x^2+x+7)
85
CHƯƠNG 4: XỬ LÝ CÁC HÀM TOÁN HỌC
Giảng viên: Hoàng Xuân Dương
169
IV. XỬ LÝ HÀM DƯỚI DẠNG CHUỖI BIỂU THỨC:
4. Đa thức:
Tính toán với đa thức (tt)>> symdiv(f,g) % Tính biểu thức f/gans = (2*x^2+3*x-5)/(x^2+x+7)>> sympow(f,'3') % Tính biểu thức f^3ans = (2*x^2+3*x-5)^3>> sympow(f,'1/2') % Tính biểu thức f^1/2ans = (2*x^2+3*x-5)^(1/2)
CHƯƠNG 4: XỬ LÝ CÁC HÀM TOÁN HỌC
Giảng viên: Hoàng Xuân Dương
170
IV. XỬ LÝ HÀM DƯỚI DẠNG CHUỖI BIỂU THỨC:
4. Đa thức:
Xây dựng đa thức từ các ký hiệu:
Ví dụ:>> f=‘cos(x)’;g=‘sin(2*x)’;>> symop(f,'/',g,'+',3)ans = cos(x)/sin(2*x)+3
Kiểm tra lại các phép toán đa thức:>> funtool
86
CHƯƠNG 4: XỬ LÝ CÁC HÀM TOÁN HỌC
Giảng viên: Hoàng Xuân Dương
171
CHƯƠNG 4: XỬ LÝ CÁC HÀM TOÁN HỌC
Giảng viên: Hoàng Xuân Dương
172
IV. XỬ LÝ HÀM DƯỚI DẠNG CHUỖI BIỂU THỨC:
5. Hàm hữu tỉ:
Xác định tử số và mẫu số của biểu thức
Ví dụ:>> f=sym('a*x^2/(b-x)');>> [n,d]=numden(f)n = -a*x^2d = -b+x>> f=sym('3/2*x^2+2/3*x-3/5');>> [n,d]=numden(f)n = 45*x^2+20*x-18d = 30
87
CHƯƠNG 4: XỬ LÝ CÁC HÀM TOÁN HỌC
Giảng viên: Hoàng Xuân Dương
173
IV. XỬ LÝ HÀM DƯỚI DẠNG CHUỖI BIỂU THỨC:
5. Hàm hữu tỉ:
Tính tổng của 2 đa thức hữu tỉ:
Ví dụ:>> f=sym('(x^2+3)/(2*x-1)');g=sym('3*x/(x-1)');>> [n,d]=numden(f+g)n = x^3+5*x^2-3d = (2*x-1)*(x-1)
CHƯƠNG 4: XỬ LÝ CÁC HÀM TOÁN HỌC
Giảng viên: Hoàng Xuân Dương
174
IV. XỬ LÝ HÀM DƯỚI DẠNG CHUỖI BIỂU THỨC:
5. Hàm hữu tỉ:
Ma trận:
Ví dụ:>> k=sym('[3/2,(2*x+1)/3;4/x^2,(3*x+4)]')k = [ 3/2, (2*x+1)/3]
[ 4/x^2, (3*x+4)]>> [n,d]=numden(k)n = [ 3, 2*x+1]
[ 4, 3*x+4]d = [ 2, 3]
[ x^2, 1]
88
CHƯƠNG 4: XỬ LÝ CÁC HÀM TOÁN HỌC
Giảng viên: Hoàng Xuân Dương
175
IV. XỬ LÝ HÀM DƯỚI DẠNG CHUỖI BIỂU THỨC:
6. Tìm hàm:
Ví dụ:>> f=sym('1/(1+x^2)');g=sym('sin(x)');>> h=sym('1/(1+u^2)');k=sym('sin(v)');>> compose(f,g) % tính f(g(x))ans = 1/(1+sin(x)^2)>> compose(g,f) % tính g(f(x))ans = sin(1/(x^2+1))>> compose(h,k,'u','v') % tính h(k(v))ans = 1/(1+sin(v)^2)
CHƯƠNG 4: XỬ LÝ CÁC HÀM TOÁN HỌC
Giảng viên: Hoàng Xuân Dương
176
IV. XỬ LÝ HÀM DƯỚI DẠNG CHUỖI BIỂU THỨC:
7. Tìm hàm ngược:
Ví dụ:>> finverse(sym('1/x'))ans = 1/x>> finverse(sym('exp(x)'))ans = log(x)>> finverse(sym('sin(x)'))ans = asin(x)>> finverse(sym('x^2')) % lỗians = x^(1/2)
89
CHƯƠNG 4: XỬ LÝ CÁC HÀM TOÁN HỌC
Giảng viên: Hoàng Xuân Dương
177
IV. XỬ LÝ HÀM DƯỚI DẠNG CHUỖI BIỂU THỨC:
8. Chuỗi:
Cú pháp: symsum(f,a,b) tính tổng hàm f từ a đến b
Tổng hữu hạn:>> symsum(sym('x^2'),0,'x-1')ans = 1/3*x^3-1/2*x^2+1/6*x %
>> factor(ans) % đổi lại dạng kết quảans = 1/6*x*(2*x-1)*(x-1)% có thể dùng simple(ans)
xxxxx
61
21
31 23
1
0
2 +−=∑−
CHƯƠNG 4: XỬ LÝ CÁC HÀM TOÁN HỌC
Giảng viên: Hoàng Xuân Dương
178
IV. XỬ LÝ HÀM DƯỚI DẠNG CHUỖI BIỂU THỨC:
8. Chuỗi (tt)>> symsum(sym('(2*n-1)^2'),1,'n')ans = 11/3*n+8/3-4*(n+1)^2+4/3*(n+1)^3>> factor(ans)ans = 1/3*n*(2*n-1)*(2*n+1) %
Không tính được các tổng hội tụ có điều kiện
>> symsum(sym('x^k'),0,'n')ans = sum(x^k,x = 0 .. n) %
( ) ( )( )3
1212122
1
+−=−∑ nnnn
n
1x,x1
1xn
0k
k <−
=∑=
90
CHƯƠNG 4: XỬ LÝ CÁC HÀM TOÁN HỌC
Giảng viên: Hoàng Xuân Dương
179
IV. XỬ LÝ HÀM DƯỚI DẠNG CHUỖI BIỂU THỨC:
8. Chuỗi:
Tổng vô hạn:>> symsum(sym('k'),0,inf)ans = inf
Khi không có điều kiện hội tụ:>> symsum(sym('x^k'),0,'inf')ans = sum(x^k,x = 0 .. inf)
Tính tổng 1/(2*n-1)^2 với n từ 1..vô cùng>> symsum(sym('1/(2*n-1)^2'),1,inf)ans = 1/8*pi^2
CHƯƠNG 4: XỬ LÝ CÁC HÀM TOÁN HỌC
Giảng viên: Hoàng Xuân Dương
180
IV. XỬ LÝ HÀM DƯỚI DẠNG CHUỖI BIỂU THỨC:
9. Thay đổi giá trị hàm và biến:
Hàm:>> phi='(1+sqrt(5))/2'phi = (1+sqrt(5))/2>> numeric(phi) % đổi dạng sốans = 1.6180
Hoặc dùng hàm tính trị>> eval(phi)ans = 1.6180
91
CHƯƠNG 4: XỬ LÝ CÁC HÀM TOÁN HỌC
Giảng viên: Hoàng Xuân Dương
181
IV. XỬ LÝ HÀM DƯỚI DẠNG CHUỖI BIỂU THỨC:
9. Thay đổi giá trị hàm và biến:
Hàm (tt)>> syms x>> f=2*x^2+x^3-3*x+5;>> n=sym2poly(f) % tìm các hệ số đa thứcn = 1 2 -3 5% tạo lại đa thức từ hệ số>> p=poly2sym(n) % mặc định là xp = 2*x^2+x^3-3*x+5>> p=poly2sym(n,'s') % thay x bằng sp = s^3+2*s^2-3*s+5
CHƯƠNG 4: XỬ LÝ CÁC HÀM TOÁN HỌC
Giảng viên: Hoàng Xuân Dương
182
IV. XỬ LÝ HÀM DƯỚI DẠNG CHUỖI BIỂU THỨC:
9. Thay đổi giá trị hàm và biến:
Biến:>> syms f g h x a b c>> f=a*x^2+b*x+c;
Thay x bằng s>> subs(f,'s',x)ans = a*s^2+b*s+c
Thay a bằng alpha>> subs(f,'alpha',a)ans = alpha*x^2+b*x+c
92
CHƯƠNG 4: XỬ LÝ CÁC HÀM TOÁN HỌC
Giảng viên: Hoàng Xuân Dương
183
IV. XỬ LÝ HÀM DƯỚI DẠNG CHUỖI BIỂU THỨC:
9. Thay đổi giá trị hàm và biến:
Biến (tt)>> g=3*x^2+5*x-4;>> h=subs(g,'x','2')h = 3*(2)^2+5*(2)-4>> numeric(h)ans = 18>> isstr(h)ans = 0 % h không là chuỗi
CHƯƠNG 4: XỬ LÝ CÁC HÀM TOÁN HỌC
Giảng viên: Hoàng Xuân Dương
184
IV. XỬ LÝ HÀM DƯỚI DẠNG CHUỖI BIỂU THỨC:
10. Vẽ đồ thị theo biểu thức:
Ví dụ:>> ezplot('cos(x)') % vẽ hàm cos và tự điền nhãn vào>> ezplot('abs(cos(x))',[0 2*pi])>> ezplot('sin(2*x)*cos(x)',[0 2*pi])>> ezplot('-16*x^2+64*x+96‘,[0 6])
93
CHƯƠNG 4: XỬ LÝ CÁC HÀM TOÁN HỌC
Giảng viên: Hoàng Xuân Dương
185
CHƯƠNG 4: XỬ LÝ CÁC HÀM TOÁN HỌC
Giảng viên: Hoàng Xuân Dương
186
IV. XỬ LÝ HÀM DƯỚI DẠNG CHUỖI BIỂU THỨC:
11. Định dạng và đơn giản biểu thức:
Sắp xếp>> int('sin(s+2*x)','s',pi/2,pi)ans = 2*cos(x)^2-1-2*sin(x)*cos(x)>> pretty(ans)
22 cos(x) - 1 - 2 sin(x) cos(x)
94
CHƯƠNG 4: XỬ LÝ CÁC HÀM TOÁN HỌC
Giảng viên: Hoàng Xuân Dương
187
IV. XỬ LÝ HÀM DƯỚI DẠNG CHUỖI BIỂU THỨC:
11. Định dạng và đơn giản biểu thức:
Khai triển Taylor>> syms x>> f=taylor(log(x+1)/(x-5))f=-1/5*x+3/50*x^2-41/750*x^3+293/7500*x^4-1207/37500*x^5>> pretty(f)
2 41 3 293 4 1207 5- 1/5 x + 3/50 x - --- x + ---- x - ----- x
750 7500 37500
CHƯƠNG 4: XỬ LÝ CÁC HÀM TOÁN HỌC
Giảng viên: Hoàng Xuân Dương
188
IV. XỬ LÝ HÀM DƯỚI DẠNG CHUỖI BIỂU THỨC:
11. Định dạng và đơn giản biểu thức:
Khai triển hằng đẳng thức>> f=sym('x^2-1')f = x^2-1>> factor(f)ans = (x-1)*(x+1)>> collect(ans) % lấy lại biểu thức fans = x^2-1
95
CHƯƠNG 4: XỬ LÝ CÁC HÀM TOÁN HỌC
Giảng viên: Hoàng Xuân Dương
189
IV. XỬ LÝ HÀM DƯỚI DẠNG CHUỖI BIỂU THỨC:
11. Định dạng và đơn giản biểu thức:
Tổng quát:>> f=sym('(x^2-1)*(x-2)*(x-3)')f = (x^2-1)*(x-2)*(x-3)>> collect(f)ans = x^4-5*x^3+5*x^2+5*x-6>> horner(ans)ans = -6+(5+(5+(x-5)*x)*x)*x>> factor(ans)ans = (x-1)*(x-2)*(x-3)*(x+1)>> expand(f)ans = x^4-5*x^3+5*x^2+5*x-6
CHƯƠNG 4: XỬ LÝ CÁC HÀM TOÁN HỌC
Giảng viên: Hoàng Xuân Dương
190
IV. XỬ LÝ HÀM DƯỚI DẠNG CHUỖI BIỂU THỨC:
11. Định dạng và đơn giản biểu thức:
Đơn giản biểu thức>> simplify(sym('log(2*x/y)'))ans = log(2)+log(x/y)>> simplify(sym('sin(x)^2+3*x+cos(x)^2-5'))ans = -4+3*x>> simplify(sym('(-a^2+1)/(1-a)'))ans = a+1>> f=sym('(1/x^3+6/x^2+12/x+8)^(1/3)');>> simple(f)ans = (2*x+1)/x
96
CHƯƠNG 4: XỬ LÝ CÁC HÀM TOÁN HỌC
Giảng viên: Hoàng Xuân Dương
191
IV. XỬ LÝ HÀM DƯỚI DẠNG CHUỖI BIỂU THỨC:
12. Giải phương trình bậc n:
Giải phương trình bậc 2>> solve('x^2+2*x-1')ans = [ 2^(1/2)-1]
[ -1-2^(1/2)]>> numeric(ans)ans =
0.4142-2.4142
CHƯƠNG 4: XỬ LÝ CÁC HÀM TOÁN HỌC
Giảng viên: Hoàng Xuân Dương
192
IV. XỬ LÝ HÀM DƯỚI DẠNG CHUỖI BIỂU THỨC:
12. Giải phương trình bậc n:
Giải phương trình bậc 2 (tt)
>> [x,y]=solve('x^2+x*y+y=3','x^2-4*x+3=0')x =
[ 1][ 3]
y = [ 1][ -3/2]
97
CHƯƠNG 4: XỬ LÝ CÁC HÀM TOÁN HỌC
Giảng viên: Hoàng Xuân Dương
193
IV. XỬ LÝ HÀM DƯỚI DẠNG CHUỖI BIỂU THỨC:
12. Giải phương trình bậc n:
Giải phương trình bậc 3
>> solve('x^3+2*x^2-4*x+1')ans = [ 1]
[ -3/2+1/2*13^(1/2)][ -3/2 -1/2*13^(1/2)]
>> numeric(ans)ans = 1.0000
0.3028-3.3028
CHƯƠNG 4: XỬ LÝ CÁC HÀM TOÁN HỌC
Giảng viên: Hoàng Xuân Dương
194
IV. XỬ LÝ HÀM DƯỚI DẠNG CHUỖI BIỂU THỨC:
12. Giải phương trình bậc n:
Giải phương trình lượng giác>> solve('2*cos(x)+2')ans = pi>> solve('cos(x)=sin(x)')ans = 1/4*pi>> solve('exp(x)=tan(x)')ans = 1.3063269404230792361743566584407>> numeric(ans)ans = 1.3063
98
CHƯƠNG 4: XỬ LÝ CÁC HÀM TOÁN HỌC
Giảng viên: Hoàng Xuân Dương
195
IV. XỬ LÝ HÀM DƯỚI DẠNG CHUỖI BIỂU THỨC:
13. Giải hệ phương trình bậc nhất tuyến tính:Ví dụ:>> y1=sym('2*x1+2*x2-3*x3+x4-4');>> y2=sym('4*x1+3*x2-x3+2*x4-6');>> y3=sym('8*x1+5*x2-3*x3+4*x4-12');>> y4=sym('3*x1+3*x2-2*x3+2*x4-6');>> [x1,x2,x3,x4]=solve(y1,y2,y3,y4,'x1,x2,x3,x4')x1 = 1/3x2 = 1/3x3 = -1/3x4 = 5/3
CHƯƠNG 4: XỬ LÝ CÁC HÀM TOÁN HỌC
Giảng viên: Hoàng Xuân Dương
196
IV. XỬ LÝ HÀM DƯỚI DẠNG CHUỖI BIỂU THỨC:
14. Giải phương trình vi phân:
Phương trình vi phân cấp 1
Ví dụ: giải phương trình vi phân y’=dy/dx=ytg(x)+cos(x)>> dsolve('Dy=y*tan(x)+cos(x)','x')
ans = (1/4*sin(2*x)+1/2*x+C1)/cos(x) % C1 là đk đầu
Ví dụ: giải phương trình y’=dy/dx=1+y^2 với y(0)=1>> dsolve('Dy=1+y^2','y(0)=1','x')
ans = tan(x+1/4*pi)
Hay:>> dsolve('Dy-y^2-1=0','y(0)=1','x')
99
CHƯƠNG 4: XỬ LÝ CÁC HÀM TOÁN HỌC
Giảng viên: Hoàng Xuân Dương
197
IV. XỬ LÝ HÀM DƯỚI DẠNG CHUỖI BIỂU THỨC:
14. Giải phương trình vi phân:
Phương trình vi phân cấp 2
Ví dụ: giải y’’=cos(2x)-y với y(0)=1 và y’(0)=0>> dsolve('D2y=cos(2*x)-y','Dy(0)=0','y(0)=1','x')
ans = 4/3*cos(x)-1/3*cos(2*x)
Ví dụ: giải y’’-2y’-3y=0 với y(0)=1 và y(1)=1>> y= dsolve('D2y-2*Dy-3*y=0','y(0)=0','y(1)=1','x')
y =1/(exp(3)-exp(-1))*exp(3*x)-1/(exp(3)-exp(-1))*exp(-x)
CHƯƠNG 4: XỬ LÝ CÁC HÀM TOÁN HỌC
Giảng viên: Hoàng Xuân Dương
198
IV. XỬ LÝ HÀM DƯỚI DẠNG CHUỖI BIỂU THỨC:
14. Giải phương trình vi phân:
Phương trình vi phân cấp 2 (tt)>> y=simple(y);
y = (exp(-x)-exp(3*x))/(exp(-1)-exp(3))>> pretty(y)
exp(-x) - exp(3 x)------------------exp(-1) - exp(3)
>> ezplot(y,[-6 2])
100
CHƯƠNG 4: XỬ LÝ CÁC HÀM TOÁN HỌC
Giảng viên: Hoàng Xuân Dương
199
CHƯƠNG 4: XỬ LÝ CÁC HÀM TOÁN HỌC
Giảng viên: Hoàng Xuân Dương
200
IV. XỬ LÝ HÀM DƯỚI DẠNG CHUỖI BIỂU THỨC:
14. Giải phương trình vi phân:
Hệ phương trình vi phân cấp 1
Ví dụ: df/dx = 3f+4g với f(0)=0
dg/dx = -4f+3g với g(0)=0
>>[f,g] = dsolve('Df=3*f+4*g','Dg=-4*f+3*g','f(0)=0','g(0)=1','x')f = exp(3*x)*sin(4*x)
g = exp(3*x)*cos(4*x)
101
CHƯƠNG 4: XỬ LÝ CÁC HÀM TOÁN HỌC
Giảng viên: Hoàng Xuân Dương
201
IV. XỬ LÝ HÀM DƯỚI DẠNG CHUỖI BIỂU THỨC:
15. Các phép biến đổi:
Biến đổi Laplace:>> syms t s x a w>> laplace(sin(t))ans = 1/(s^2+1)>> ilaplace(1/(s^2+1)) % Biến đổi ngượcans = sin(t)>> laplace(12*exp(-3*x))ans = 12/(s+3)>> laplace(sym(1))ans = 1/s
CHƯƠNG 4: XỬ LÝ CÁC HÀM TOÁN HỌC
Giảng viên: Hoàng Xuân Dương
202
IV. XỬ LÝ HÀM DƯỚI DẠNG CHUỖI BIỂU THỨC:
15. Các phép biến đổi:
Biến đổi Laplace (tt)>> laplace(sym(diff(x^2)))ans = 2/s^2>> laplace(cos(x*w),w,t)ans = t/(t^2+x^2)>> laplace(sin(w*x),t)ans = w/(t^2+w^2)>> laplace(x^sym(3/2),t)ans = 3/4/t^(5/2)*pi^(1/2)
102
CHƯƠNG 4: XỬ LÝ CÁC HÀM TOÁN HỌC
Giảng viên: Hoàng Xuân Dương
203
IV. XỬ LÝ HÀM DƯỚI DẠNG CHUỖI BIỂU THỨC:
15. Các phép biến đổi:
Biến đổi Laplace (tt)Ví dụ: Tìm nghiệm một hệ thống biết hàm truyền đạt:
>> ilaplace(1/((s+1)*(s^2+5*s+6))+(s+6)/(s^2+5*s+6))ans = 1/2*exp(-t)-5/2*exp(-3*t)+3*exp(-2*t)
( ) ( )( )( )
( )6s5s6s
6s5s1s1SH 22 ++
++
+++=
CHƯƠNG 4: XỬ LÝ CÁC HÀM TOÁN HỌC
Giảng viên: Hoàng Xuân Dương
204
IV. XỬ LÝ HÀM DƯỚI DẠNG CHUỖI BIỂU THỨC:
15. Các phép biến đổi:
Biến đổi Fourier:>> syms t x
>> fourier(exp(-x^2),t)
ans = pi^(1/2)*exp(-1/4*t^2)
>> ifourier(pi^(1/2)*exp(-1/4*t^2)) % Biến đổi ngược
ans = 3991211251234741/2251799813685248/pi^(1/2)*exp(-x^2)
>> factor(3991211251234741/2251799813685248/pi^(1/2)*exp(-x^2))
ans = exp(-x^2)
>>simplify(3991211251234741/2251799813685248/pi^(1/2)*exp(-x^2))
ans = exp(-x^2)
103
CHƯƠNG 4: XỬ LÝ CÁC HÀM TOÁN HỌC
Giảng viên: Hoàng Xuân Dương
205
IV. XỬ LÝ HÀM DƯỚI DẠNG CHUỖI BIỂU THỨC:
15. Các phép biến đổi:
Biến đổi z:>> syms a n z>> ztrans(a^n)ans = z/a/(z/a-1)>> simplify(ans)ans = -z/(-z+a)>> iztrans(z/(z-a)) % Biến đổi ngượcans = a^n
CHƯƠNG 4: XỬ LÝ CÁC HÀM TOÁN HỌC
Giảng viên: Hoàng Xuân Dương
206
IV. XỬ LÝ HÀM DƯỚI DẠNG CHUỖI BIỂU THỨC:
15. Các phép biến đổi:
Vẽ trong miền tần số:Cho hệ thống có hàm số chuyển:
Nhập vào tử và mẫu số:>> num=[2 5 1];den=[1 2 3];
Vẽ giản đồ bode>> bode(num,den)
Vẽ đáp ứng tần số>> freqs(num,den)
Vẽ giản đồ Nyquist>> nyquist(num,den)
( )3s2s1s5s2SH 2
2
++++
=
104
CHƯƠNG 4: XỬ LÝ CÁC HÀM TOÁN HỌC
Giảng viên: Hoàng Xuân Dương
207
CHƯƠNG 4: XỬ LÝ CÁC HÀM TOÁN HỌC
Giảng viên: Hoàng Xuân Dương
208
V. BÀI TẬP:
1) Tính trị các đa thức sau với x=1
2) Thực hiện vẽ đồ thị cho các hàm sau (khoảng vẽ tự chọn)
f(x)=3x2+7x+4
g(x)=(x+1)/(x-2)+6x
h(x)=3x3+6x2+3x
( )( )( )( ) ( )( ) ( )
( )( )( )( ) ( )( ) ( )
( )( )( )( )( )( )( )( )2x4x1x51x6x2x7x6x9
3x8x1x6x71x6x83P
2x4x3x8x1x6x2
1x5x7x6x91x6x71x6x8
2P
x7x6x96x71x6x8
1x53x8x1x
2x4x1x6x21P
32223
22
322
2
23
2
232
2
2
32
−+−−++−−++−++
=
−++−+−+
−+
+−+−++
=
+−+−++
−+
−++−+−+
=
105
CHƯƠNG 4: XỬ LÝ CÁC HÀM TOÁN HỌC
Giảng viên: Hoàng Xuân Dương
209
3) Hãy cho biết các dòng sau sai ở vị trí nào:>> hamtruyen=inline('8*(s+a)/(s*(s+4)(s+3))')
>> fval(@hamtruyen,3,7)
>> plot(@hamtruyen,[4 8])
>> grid
4) Giải thích các dòng sau:>> syms x
>> a=[sin(x);cos(x)]
>> y=diff(a);
>> x=linspace(0,2*pi);
>> plot(x,eval(y(1,1)), '-r',x,eval(y(2,1)), '.b');
>> gtext('cos(x)'); gtext('sin(x)'); title('Bai tap chuong 4');
CHƯƠNG 4: XỬ LÝ CÁC HÀM TOÁN HỌC
Giảng viên: Hoàng Xuân Dương
210
5) Hãy cho biết kết quả các dòng sau:>> A=sym('[x^2-1,x+1,x-1,4]')>> symadd(A,2)>> symadd(A,'2')>> symadd(A(1),A(2))>> symmul(A(1),A(3))>> compose(A(1),A(3))>> compose(compose(A(1),A(2)),A(4))>> sympow(A(4),'2')>> symop(A(1),'+',A(2),'*',A(3),'-',A(4))>> symmul(symmul(A(1),A(4)),symmul(A(2),A(3)))>> sym2poly(symmul(A(2),A(1)))>> symmul(A,A)
106
Bài giảng Tin học chuyên ngành
Giảng viên: Hoàng Xuân Dương
211
CHƯƠNG 5:
CHƯƠNG 5: ĐỒ HỌA MATLAB
Giảng viên: Hoàng Xuân Dương
212
I. ĐỒ HỌA 2DII. ĐỒ HỌA 3DIII. CÁC LOẠI HÀM ĐẶC BIỆT
107
CHƯƠNG 5: ĐỒ HỌA MATLAB
Giảng viên: Hoàng Xuân Dương
213
I. ĐỒ HỌA 2D:Các bước cơ bản để sử dụng các hàm vẽ:
1. Chuẩn bị dữ liệux = 0:0.2:12;y1 = bessel(1,x);y2 = bessel(2,x);y3 = bessel(3,x);
2. Chọn cửa sổ và vị trí một vùng vẽ trong của sổfigure(1)subplot(2,2,1)
3. Gọi các hàm vẽh = plot(x,y1,x,y2,x,y3);
4. Chọn nét vẽ và màu sắcset(h,'LineWidth',2,{'LineStyle'},{'--';':';'-.'})set(h,{'Color'},{'r';'g';'b'})
CHƯƠNG 5: ĐỒ HỌA MATLAB
Giảng viên: Hoàng Xuân Dương
214
I. ĐỒ HỌA 2D:5. Cài đặt thông số trục và lưới
axis([0 12 -0.5 1])grid on
6. Tạo các chú thích và canh lề cho hình vẽxlabel('Time')ylabel('Amplitude')legend(h,'First','Second','Third')title('Bessel Functions')[y,ix] = min(y1);text(x(ix),y,'First Min \rightarrow',...
'HorizontalAlignment','right')7. Xuất hình vẽ
print -depsc -tiff -r200 myplot
108
CHƯƠNG 5: ĐỒ HỌA MATLAB
Giảng viên: Hoàng Xuân Dương
215
I. ĐỒ HỌA 2D:Các hàm vẽ cơ bản:
Hàm Ý nghĩaplot Vẽ 2D với 2 trục x và y tuyến tínhplot3 Vẽ 3D với 3 trục x, y và z tuyến tínhloglog Vẽ với 2 trục x và y là logarithmic
semilogx Vẽ với trục x là logarithmic và y tuyến tínhsemilogy Vẽ với trục y là logarithmic và x tuyến tínhplotyy Vẽ có 2 trục y
CHƯƠNG 5: ĐỒ HỌA MATLAB
Giảng viên: Hoàng Xuân Dương
216
I. ĐỒ HỌA 2D:1. Hàm plot: Cú pháp hàm plot như sau
plot(Y)plot(X1,Y1,...)plot(X1,Y1,LineSpec,...)plot(...,'PropertyName',PropertyValue,...)plot(axes_handle,...)h = plot(...)hlines = plot('v6',...)
109
CHƯƠNG 5: ĐỒ HỌA MATLAB
Giảng viên: Hoàng Xuân Dương
217
I. ĐỒ HỌA 2D:1. Hàm plot: Ví dụ:>> x=linspace(0,2*pi);>> plot(x,sin(x),x,cos(x))>> grid on
CHƯƠNG 5: ĐỒ HỌA MATLAB
Giảng viên: Hoàng Xuân Dương
218
I. ĐỒ HỌA 2D:1. Hàm plot (tt)
Handle: Mỗi một đối tượng trong màn hình đồ hoạ đều được nhận diện bằng một con số, được gọi làhandle của đối tượng
Một số hàm liên quan đến các handle đặc biệt:0 handle đối tượng gốcgcf trả về handle cho figure hiện hànhgca trả về handle cho trục vẽ hiện hànhgco trả về handle cho đối tượng hiện hànhgcbf trả về handle cho callback figuregcbo trả về handle cho callback object
110
CHƯƠNG 5: ĐỒ HỌA MATLAB
Giảng viên: Hoàng Xuân Dương
219
I. ĐỒ HỌA 2D:1. Hàm plot (tt)
Handle (tt)Ví dụ:>> x=linspace(0,2*pi);>> h=plot(x,sin(x),x,cos(x))h = 103.0004
3.0016>> gcfans = 1>> gcaans = 101.0009>> set(h(1),'color','r')
CHƯƠNG 5: ĐỒ HỌA MATLAB
Giảng viên: Hoàng Xuân Dương
220
I. ĐỒ HỌA 2D:1. Hàm plot (tt)
Các loại nét vẽ đặc biệt:plot(x,y,’linestyle_marker_color’)
linestyle Kiểu đường
'-' Solid line (default)
'--' Dashed line
':' Dotted line
'-.' Dash-dot line
'none' No line
111
CHƯƠNG 5: ĐỒ HỌA MATLAB
Giảng viên: Hoàng Xuân Dương
221
marker Ý nghĩa'+' Plus sign'o' Circle
'.' Point
'diamond' or 'd' Diamond'^' Upward-pointing triangle'v' Downward-pointing triangle'>' Right-pointing triangle'<' Left-pointing triangle
'pentagram' or 'p' Five-pointed star (pentagram)'hexagram' or 'h' Six-pointed star (hexagram)
'none' No marker (default)
'*' Asterisk
'x' Cross'square' or 's' Square
CHƯƠNG 5: ĐỒ HỌA MATLAB
Giảng viên: Hoàng Xuân Dương
222
Giá trị RGB Color Màu
[1 1 0] y
m
c
r
g
b
w
k
yellow
[1 0 1] magenta
[1 0 0] red
[0 1 0] green
[0 1 1] cyan
[0 0 1] blue
[1 1 1] white
[0 0 0] black
112
CHƯƠNG 5: ĐỒ HỌA MATLAB
Giảng viên: Hoàng Xuân Dương
223
I. ĐỒ HỌA 2D:1. Hàm plot (tt)
Các loại nét vẽ đặc biệt (tt)Ví dụ>> t=0:pi/100:2*pi;>> y1=sin(t);y2=sin(t-0.25);y3=sin(t-0.5);>> plot(t,y1,'-',t,y2,'--',t,y3,':')
CHƯƠNG 5: ĐỒ HỌA MATLAB
Giảng viên: Hoàng Xuân Dương
224
I. ĐỒ HỌA 2D:1. Hàm plot (tt)
Vẽ điểm - đường - các ký hiệu:Ví dụ 1:>> x = 0:pi/15:4*pi;>> y1 = exp(2*cos(x));>> y2 = exp(2*sin(x));>> plot(x,y1,'+r',x,y2,'-.ob')
113
CHƯƠNG 5: ĐỒ HỌA MATLAB
Giảng viên: Hoàng Xuân Dương
225
I. ĐỒ HỌA 2D:1. Hàm plot (tt)
Vẽ điểm - đường - các ký hiệu:Ví dụ 2:>> t = 0:pi/20:2*pi;>> plot(t,sin(t),'-.r*')>> hold on>> plot(t,sin(t-pi/2),'--mo')>> plot(t,sin(t-pi),':bs')>> hold off
CHƯƠNG 5: ĐỒ HỌA MATLAB
Giảng viên: Hoàng Xuân Dương
226
I. ĐỒ HỌA 2D:1. Hàm plot (tt)
Các màu và kích thước nét vẽ:plot(x,y,'-mo',...
'LineWidth',0.5,... 'MarkerEdgeColor','k',... 'MarkerFaceColor',[.49 1 .63],...'MarkerSize',6)
Trong đó:- lineWidth là độ rộng nét vẽ (mặc định là 0.5)- markerEdgrcolor là màu cạnh marker- markerfacecolor là màu tô- Markersize là kích thước nét vẽ (mặc định là 6)
114
CHƯƠNG 5: ĐỒ HỌA MATLAB
Giảng viên: Hoàng Xuân Dương
227
I. ĐỒ HỌA 2D:1. Hàm plot:
Các màu và kích thước nét vẽ (tt)Ví dụ 1:>> t = 0:pi/20:2*pi;>> plot(t,sin(2*t),'-mo',... % nét vẽ hình tròn'LineWidth',2,... 'MarkerEdgeColor','k',... % màu cạnh hình tròn'MarkerFaceColor',[.49 1 .63],...% màu tô các hình tròn'MarkerSize',12) % kích thước các hình tròn
CHƯƠNG 5: ĐỒ HỌA MATLAB
Giảng viên: Hoàng Xuân Dương
228
115
CHƯƠNG 5: ĐỒ HỌA MATLAB
Giảng viên: Hoàng Xuân Dương
229
I. ĐỒ HỌA 2D:1. Hàm plot (tt)
Các màu và kích thước nét vẽ (tt)Ví dụ 2:>> x=(-pi:pi/2:pi);>> y1=sin(x); y2=cos(x);>> plot(x,y1,'--','linewidth',4)>> hold on>> plot(x,y2,'o','markersize',12)>> grid on
CHƯƠNG 5: ĐỒ HỌA MATLAB
Giảng viên: Hoàng Xuân Dương
230
I. ĐỒ HỌA 2D:2. Các hàm gán nhãn
Hàm Ý nghĩa
text Hiển thị 1 chuỗi
title Tựa đề
xlabel Đặt nhãn cho trục x
legend Chú thích trên hình
ylabel Đặt nhãn cho trục y
zlabel Đặt nhãn cho trục z
gtext Hiển thị 1 chuỗi sử dụng chuột
116
CHƯƠNG 5: ĐỒ HỌA MATLAB
Giảng viên: Hoàng Xuân Dương
231
I. ĐỒ HỌA 2D:2. Các hàm gán nhãn (tt)
a. textCú pháp:
text(x,y,'string')text(x,y,z,'string')text(...'PropertyName',PropertyValue...)h = text(...)
Trong đó:(x,y) toạ độ vị trí stringPropertyName tên thuộc tínhPropertyValue giá trị thuộc tính
CHƯƠNG 5: ĐỒ HỌA MATLAB
Giảng viên: Hoàng Xuân Dương
232
Các thuộc tính của text:verticalalignment
{top|cap|middle|baseline|bottom}Thuộc tính canh lề theo chiều đứng cho text theo vị trí đặt text
Ví dụ:>> text(x,y,'string','Verticalalignment','top',...
117
CHƯƠNG 5: ĐỒ HỌA MATLAB
Giảng viên: Hoàng Xuân Dương
233
Các thuộc tính của text:horizontalalignment {left|center|right}Thuộc tính canh lề theo hàng ngang cho text theo vị trí đặt text
Ví dụ:>> text(x,y,'string','HorizontalAlignment','right',...
CHƯƠNG 5: ĐỒ HỌA MATLAB
Giảng viên: Hoàng Xuân Dương
234
Các thuộc tính của text:rotation scalar(degrees)
Xoay text đi một góc, mặc định là 0Fontname
Kiểu font chữ của text (mặc định Helvetica). Có thể kết hợp với các option để định dạng:
\bf - bold font \it - italics font \sl - oblique font (rarely available) \rm - normal font
Ví dụ:>> text(11,380,'\itConcentration','Rotation',-55,...'FontName','Tahoma')
118
CHƯƠNG 5: ĐỒ HỌA MATLAB
Giảng viên: Hoàng Xuân Dương
235
Các thuộc tính của text:Fontsize
Kích thước font chữ (mặc định là 10)Ví dụ:>> text(11,380,'Concentration','Rotation',-55, 'fontsize',12)
stringChuỗi văn bản cần được hiển thị. Có thể sử dụng các ký hiệu trong bảng sau để tạo các ký tự đặc biệt:
Bài giảng Tin học chuyên ngành
Giảng viên: Hoàng Xuân Dương
236
119
Bài giảng Tin học chuyên ngành
Giảng viên: Hoàng Xuân Dương
237
CHƯƠNG 5: ĐỒ HỌA MATLAB
Giảng viên: Hoàng Xuân Dương
238
Các thuộc tính của text:string
Ví dụ:>> plot(0:pi/20:2*pi,sin(0:pi/20:2*pi))>> text(pi,0,' \leftarrow sin(\pi)','FontSize',18)
120
CHƯƠNG 5: ĐỒ HỌA MATLAB
Giảng viên: Hoàng Xuân Dương
239
I. ĐỒ HỌA 2D:2. Các hàm gán nhãn (tt)
b. tittle:Cú pháp:
title('string')title(fname)title(...,'PropertyName',PropertyValue,...)h = title(...)
Ví dụ:>> x=linspace(0,2*pi);>> plot(x,sin(x))>> title('Do thi sin(x)', 'FontName',...'SVNelvetica','Fontsize',15,'color','r')
CHƯƠNG 5: ĐỒ HỌA MATLAB
Giảng viên: Hoàng Xuân Dương
240
I. ĐỒ HỌA 2D:2. Các hàm gán nhãn (tt)
b. tittle (tt)
121
CHƯƠNG 5: ĐỒ HỌA MATLAB
Giảng viên: Hoàng Xuân Dương
241
I. ĐỒ HỌA 2D:2. Các hàm gán nhãn (tt)
c. xlabel-ylabel-zlabelCú pháp:
xlabel('string')xlabel(fname)xlabel(...,'PropertyName',PropertyValue,...)h = xlabel(...)
ylabel(...)h = ylabel(...)
zlabel(...)h = zlabel(...)
CHƯƠNG 5: ĐỒ HỌA MATLAB
Giảng viên: Hoàng Xuân Dương
242
I. ĐỒ HỌA 2D:2. Các hàm gán nhãn (tt)
c. xlabel-ylabel-zlabel (tt)Ví dụ:>> xlabel('Truc x','Fontname','SVNhelvetica',...'Fontsize',15,'color','g')>> ylabel('Do thi y va z','Fontname','SVNhelvetica',...'Fontsize',15,'color','b')>> title('Do hoa 2D','Fontname','SVNhelvetica',…'Fontsize',15,'color','r')
122
CHƯƠNG 5: ĐỒ HỌA MATLAB
Giảng viên: Hoàng Xuân Dương
243
I. ĐỒ HỌA 2D:2. Các hàm gán nhãn (tt)
d. legend: Đặt chú thích cho hình vẽCú pháp:
legend('string1','string2',...)legend(h,'string1','string2',...)legend(string_matrix)legend(h,string_matrix)legend(axes_handle,...)legend('off')legend(h,...)legend(...,pos)h = legend(...)
CHƯƠNG 5: ĐỒ HỌA MATLAB
Giảng viên: Hoàng Xuân Dương
244
I. ĐỒ HỌA 2D:2. Các hàm gán nhãn (tt)
d. legend (tt)
Ví dụ:>> t=0:pi/100:2*pi;>> y1=sin(t);y2=sin(t-0.25);y3=sin(t-0.5);>> plot(t,y1,'-',t,y2,'--',t,y3,':')>> legend('sin(t)','sin(t-0.25)','sin(t-0.5)',1)
123
CHƯƠNG 5: ĐỒ HỌA MATLAB
Giảng viên: Hoàng Xuân Dương
245
I. ĐỒ HỌA 2D:2. Các hàm gán nhãn (tt)
e. gtextĐặt text theo vị trí click chuột trên màn hình đồ họa, trong không gian 2 chiềuCú pháp:
gtext('string')h = gtext('string')
CHƯƠNG 5: ĐỒ HỌA MATLAB
Giảng viên: Hoàng Xuân Dương
246
I. ĐỒ HỌA 2D:2. Các hàm gán nhãn (tt)Ví dụ:
>> x=linspace(0,2*pi,30);>> y=sin(x);z=cos(x);>> plot(x,y,x,z)>> grid>> xlabel('Truc x','Fontname','SVNhelvetica','Fontsize',15,'color','g')>> ylabel('Do thi y va z','Fontname','SVNhelvetica','Fontsize',15,'color','b')>> title('Do hoa 2D','Fontname','SVNhelvetica','Fontsize',15,'color','r')>> text(2.5,0.7,'Do thi sin(x)',...'FontName','SVNelvetica','Fontsize',11,'color','b')>> gtext('Do thi cos(x)','FontName','SVNelvetica','Fontsize',12,'color','g')>> legend('sin(x)','cos(x)',-1) % ghi chú về hình vẽ
124
CHƯƠNG 5: ĐỒ HỌA MATLAB
Giảng viên: Hoàng Xuân Dương
247
CHƯƠNG 5: ĐỒ HỌA MATLAB
Giảng viên: Hoàng Xuân Dương
248
I. ĐỒ HỌA 2D:3. Các hàm cài đặt:
Hàm subplot(m,n,p):Chia màn hình ra làm m hàng và n cột để vẽ hình, với:
• m: là hàng
• n: là cột
• p: là vị trí cần vẽ>> x=linspace(-2*pi,2*pi);
>> subplot(2,2,1); plot(x,sin(x)); title('y=sin(x)')
>> subplot(2,2,2); plot(x,sinc(x)); title('y=sinc(x)')
>> subplot(2,2,3); plot(x,cos(x)); title('y=cos(x)')
>> subplot(2,2,4); plot(x,1-sin(x)); title('y=1-sin(x)')
>> subplot % trả về mặc định
125
CHƯƠNG 5: ĐỒ HỌA MATLAB
Giảng viên: Hoàng Xuân Dương
249
CHƯƠNG 5: ĐỒ HỌA MATLAB
Giảng viên: Hoàng Xuân Dương
250
I. ĐỒ HỌA 2D:3. Các hàm cài đặt (tt)
set(h,'LineWidth',2,{'LineStyle'},{'--';':';'-.'})Thay đổi nét vẽ, với:
• LineWidth: Độ lớn nét vẽ
• LineStyle: Loại viết vẽ liên tục hay gián đoạn
Ví dụ:>> x=linspace(-1,1);>> h=plot(x,x.*x)>> set(h,'LineWidth',5,'LineStyle','--')
126
CHƯƠNG 5: ĐỒ HỌA MATLAB
Giảng viên: Hoàng Xuân Dương
251
CHƯƠNG 5: ĐỒ HỌA MATLAB
Giảng viên: Hoàng Xuân Dương
252
I. ĐỒ HỌA 2D:3. Các hàm cài đặt (tt)
Hàm set(h,{'Color'},{'r';'g';'b'})Thay đổi màu vẽ (với các ký tự màu đã được đề cập trong chương 1)
Ví dụ:>> x=linspace(-1,1);>> h=plot(x,x.*x)>> set(h,'Color','r')
127
CHƯƠNG 5: ĐỒ HỌA MATLAB
Giảng viên: Hoàng Xuân Dương
253
I. ĐỒ HỌA 2D:3. Các hàm cài đặt (tt)
Hàm axis([xmin xmax ymin ymax])Đặt lại trục vẽ
Ví dụ:>> x=linspace(-1,1);>> h=plot(x,x.*x)>> axis([-2 2 -2 2])
CHƯƠNG 5: ĐỒ HỌA MATLAB
Giảng viên: Hoàng Xuân Dương
254
I. ĐỒ HỌA 2D:3. Các hàm cài đặt (tt)Ví dụ:>> x=0:0.2:12;>> y1=bessel(1,x);>> y2=bessel(2,x);>> y3=bessel(3,x);>> figure(1)>> h=plot(x,y1,x,y2,x,y3);>> set(h,'LineWidth',2,{'LineStyle'},{'--';':';'-.'})>> set(h,{'Color'},{'r';'g';'b'})>> axis([0 12 -0.5 1])>> grid on
128
CHƯƠNG 5: ĐỒ HỌA MATLAB
Giảng viên: Hoàng Xuân Dương
255
% Đặt nhãn cho trục:>> xlabel('Truc thoi gian','FontName','SVNelvetica','Fontsize',15,'color','g')>> ylabel('Bien do','FontName','SVNelvetica','Fontsize',15,'color','b')>> title('Ham bessel','FontName','SVNelvetica','Fontsize',15,'color','r')>> legend(h,'bessel 1','bessel 2','bessel 3',-1)% Chú thích hình:>> [y,ix]=min(y1); % tìm min trong mảng (trả về giá trị, chỉ số)>> text(x(ix),y,'Nho nhat\rightarrow','HorizontalAlignment','right',...'FontName','SVNelvetica','Fontsize',12,'color','m')>> [yy,ixx]=max(y1); % tìm max trong mảng (trả về giá trị, chỉ số)>> text(x(ixx),yy,'\leftarrowLon nhat','HorizontalAlignment','left',...'FontName','SVNelvetica','Fontsize',12,'color','b')>> ymean=mean(y1); % tìm trung bình trong mảng (trả về giá trị)>> text(.2,ymean,'\leftarrowTrung binh','HorizontalAlignment','left',...'FontName','SVNelvetica','Fontsize',12,'color','b')
CHƯƠNG 5: ĐỒ HỌA MATLAB
Giảng viên: Hoàng Xuân Dương
256
129
CHƯƠNG 5: ĐỒ HỌA MATLAB
Giảng viên: Hoàng Xuân Dương
257
I. ĐỒ HỌA 2D:3. Các hàm cài đặt (tt)
Đặt loại nét vẽ mặc định :Ví dụ:>> x = 0:pi/10:2*pi;>> y1 = sin(x); y2 = sin(x-pi/2); y3 = sin(x-pi);% Đặt 3 loại đường vẽ>> set(0,'DefaultAxesLineStyleOrder',{'-o',':s','--+'})% Đặt màu vẽ là xám>> set(0,'DefaultAxesColorOrder',[0.5,0.5,0.5])% Vẽ 3 hình>> plot(x,y1,x,y2,x,y3)% Trả về mặc định>> set(0,'DefaultAxesLineStyleOrder','remove')>> set(0,'DefaultAxesColorOrder','remove')
CHƯƠNG 5: ĐỒ HỌA MATLAB
Giảng viên: Hoàng Xuân Dương
258
130
CHƯƠNG 5: ĐỒ HỌA MATLAB
Giảng viên: Hoàng Xuân Dương
259
I. ĐỒ HỌA 2D:3. Các hàm cài đặt (tt)
Đặt trục vẽ:Cú pháp:semilogx(Y)semilogx(X1,Y1,...)semilogx(X1,Y1,LineSpec,...)semilogx(...,'PropertyName',PropertyValue,...)h = semilogx(...)hlines = semilogx('v6',...)semilogy(...)h = semilogy(...)hlines = semilogy('v6',...)
CHƯƠNG 5: ĐỒ HỌA MATLAB
Giảng viên: Hoàng Xuân Dương
260
I. ĐỒ HỌA 2D:3. Các hàm cài đặt (tt)
Đặt trục vẽ:Ví dụ:>> x=0:.1:10;>> semilogx(1:100,'+')>> hold on>> semilogx(1:3:300,1:100,'--')>> hold off
131
CHƯƠNG 5: ĐỒ HỌA MATLAB
Giảng viên: Hoàng Xuân Dương
261
I. ĐỒ HỌA 2D:4. Hàm plotyy:Cú pháp hàm plotyy như sau:
plotyy(X1,Y1,X2,Y2)plotyy(X1,Y1,X2,Y2,'function')plotyy(X1,Y1,X2,Y2,'function1','function2')[AX,H1,H2] = plotyy(...) sẽ trả về:
AX = handle của trụcH1 = handle của hình 1H2 = handle của hình 2
'function' có thể là plot, semilogx, semilogy, loglog, stem, hay bất kỳ hàm Matlab theo cú pháp:
h = function(x,y)
CHƯƠNG 5: ĐỒ HỌA MATLAB
Giảng viên: Hoàng Xuân Dương
262
I. ĐỒ HỌA 2D:4. Hàm plotyy (tt)Ví dụ 1:>> t = 0:pi/20:2*pi;>> y1=sin(t);>> y2=cos(t);>> plotyy(t,y1,t,y2,'plot','stem')% stem là hàm vẽ dữ liệu rời rạc.
132
CHƯƠNG 5: ĐỒ HỌA MATLAB
Giảng viên: Hoàng Xuân Dương
263
CHƯƠNG 5: ĐỒ HỌA MATLAB
Giảng viên: Hoàng Xuân Dương
264
I. ĐỒ HỌA 2D:4. Hàm plotyy (tt)Ví dụ 2:>> x = 0:0.01:20;>> y1 = 200*exp(-0.05*x).*sin(x);>> y2 = 0.8*exp(-0.5*x).*sin(10*x);>> [AX,H1,H2] = plotyy(x,y1,x,y2,'plot');>> set(get(AX(1),'Ylabel'),'String','Left Y-axis')>> set(get(AX(2),'Ylabel'),'String','Right Y-axis')>> title('Labeling plotyy')>> set(H1,'LineStyle','--')>> xlabel('Zero to 20 \musec.')>> set(H2,'LineStyle',':')
133
CHƯƠNG 5: ĐỒ HỌA MATLAB
Giảng viên: Hoàng Xuân Dương
265
CHƯƠNG 5: ĐỒ HỌA MATLAB
Giảng viên: Hoàng Xuân Dương
266
I. ĐỒ HỌA 2D:5. Hàm plot3:Cú pháp:
plot3(X1,Y1,Z1,...)plot3(X1,Y1,Z1,LineSpec,...)plot3(...,'PropertyName',PropertyValue,...)h = plot3(...)
134
CHƯƠNG 5: ĐỒ HỌA MATLAB
Giảng viên: Hoàng Xuân Dương
267
I. ĐỒ HỌA 2D:5. Hàm plot3 (tt)Ví dụ 1:>> t = 0:pi/50:10*pi;>> plot3(sin(t),cos(t),t)>> grid on>> axis square% chọn 3 trục x,y,z bằng nhau
CHƯƠNG 5: ĐỒ HỌA MATLAB
Giảng viên: Hoàng Xuân Dương
268
I. ĐỒ HỌA 2D:5. Hàm plot3 (tt)Ví dụ 2: Dữ liệu là ma trận>> [X,Y]=meshgrid([-2:0.1:2]); % Tạo tập ma trận dữ liệu>> Z=X.*exp(-X.^2-Y.^2);>> plot3(X,Y,Z)>> grid on>> xlabel('Truc x','FontName','SVNhelvetica','FontSize',15,'color','r')>> ylabel('Truc y','FontName','SVNhelvetica','FontSize',15,'color','g')>> zlabel('Truc z','FontName','SVNhelvetica','FontSize',15,'color','b')
135
CHƯƠNG 5: ĐỒ HỌA MATLAB
Giảng viên: Hoàng Xuân Dương
269
CHƯƠNG 5: ĐỒ HỌA MATLAB
Giảng viên: Hoàng Xuân Dương
270
I. ĐỒ HỌA 2D:6. Đặt thông số cho trục:
axis: Đặt giá trị trụcaxis([xmin xmax ymin ymax])axis([xmin xmax ymin ymax zmin zmax])v = axisaxis autoaxis manualaxis tightaxis fill….
136
CHƯƠNG 5: ĐỒ HỌA MATLAB
Giảng viên: Hoàng Xuân Dương
271
I. ĐỒ HỌA 2D:6. Đặt thông số cho trục (tt)
….axis equal % tỉ lệ các trục bằng nhauaxis square % độ dài các trục bằng nhauaxis normalaxis offaxis on
CHƯƠNG 5: ĐỒ HỌA MATLAB
Giảng viên: Hoàng Xuân Dương
272
I. ĐỒ HỌA 2D:6. Đặt thông số cho trục (tt)Ví dụ 1:>> x = -pi:.1:pi;>> y = sin(x);>> plot(x,y,'r')>> set(gca,'XTick',-pi:pi/2:pi) %định các điểm trên trục x>> set(gca,'XTickLabel',{'-pi','-pi/2','0','pi/2','pi'})>> xlabel('-\pi \leq \Theta \leq \pi','Fontsize',15,'color','b')>> ylabel('sin(\Theta)','Fontsize',15,'color','g')
137
CHƯƠNG 5: ĐỒ HỌA MATLAB
Giảng viên: Hoàng Xuân Dương
273
I. ĐỒ HỌA 2D:6. Đặt thông số cho trục (tt)Ví dụ 1 (tt)>> title('Ve sin(\Theta)','Fontname','SVNhelvetica',...'Fontsize',15,'color','r')>> text(-pi/4,sin(-pi/4),'\leftarrow sin(-\pi\div4)',...'HorizontalAlignment','left','color','r')>> hold on>> set(findobj(gca,'Type','line','Color',[1 0 0]),...
'Color',[0,0,1],'LineWidth',2)>> hold off>> set(findobj(gca,'Type','line','Color',[0 0 1]),...
'Color',[0 1 0],'LineWidth',2)
CHƯƠNG 5: ĐỒ HỌA MATLAB
Giảng viên: Hoàng Xuân Dương
274
138
CHƯƠNG 5: ĐỒ HỌA MATLAB
Giảng viên: Hoàng Xuân Dương
275
I. ĐỒ HỌA 2D:6. Đặt thông số cho trục (tt)Ví dụ 2: Cài đặt tỉ lệ>> t = 0:pi/20:2*pi;>> plot(sin(t),2*cos(t))>> grid on>> axis square
hoặc:>> axis equal
hoặc:>> axis equal tight
CHƯƠNG 5: ĐỒ HỌA MATLAB
Giảng viên: Hoàng Xuân Dương
276
139
CHƯƠNG 5: ĐỒ HỌA MATLAB
Giảng viên: Hoàng Xuân Dương
277
I. ĐỒ HỌA 2D:7. Vẽ nhiều hình:Ví dụ:>> h1=figure % Tạo khung hình 1>> x=linspace(0,2*pi);>> plot(x,sin(x));>> axis([0 2*pi -1 1]);title('sin(x)');>> h2=figure % Tạo khung hình 2>> plot(x,cos(x));>> axis([0 2*pi -1 1]);title('cos(x)');>> h3=figure>> plot(x,2.*sin(x).*cos(x));>> axis([0 2*pi -1 1]);title('2*sin(x)*cos(x)');
CHƯƠNG 5: ĐỒ HỌA MATLAB
Giảng viên: Hoàng Xuân Dương
278
I. ĐỒ HỌA 2D:7. Vẽ nhiều hình (tt)Ví dụ (tt)>> h4=figure>> plot(x,sin(x)./cos(x));>> axis([0 2*pi -1 1]);title('sin(x)/cos(x)');>> close % Xóa hình bất kỳ>> close(h1) % Xóa hình 1>> clf % Xóa hình không xóa khung>> close all % Xóa tất cả>> clf reset
140
CHƯƠNG 5: ĐỒ HỌA MATLAB
Giảng viên: Hoàng Xuân Dương
279
II. ĐỒ HỌA 3D:1. Cách sử dụng các hàm vẽ:
1. Chuẩn bị dữ liệu
z=peaks(20)
2. Chọn vị trí trong cửa sổ để vẽfigure(1)subplot(2,1,2)
3. Gọi hàm vẽ 3D
h = surf(z);
4. Chọn màu và tô bóngcolormap hotshading interpset(h,'EdgeColor','k')
CHƯƠNG 5: ĐỒ HỌA MATLAB
Giảng viên: Hoàng Xuân Dương
280
5. Thêm lightinglight('Position',[-2,2,20])lighting phongmaterial([0.4,0.6,0.5,30])set(h,'FaceColor',[0.7 0.7 0],...'BackFaceLighting','lit')
6. Chọn viewview([30,25])set(gca,'CameraViewAngleMode','Manual')
7. Chọn trụcaxis([5 15 5 15 -8 8])set(gca,'ZTickLabel','Negative||Positive')
141
CHƯƠNG 5: ĐỒ HỌA MATLAB
Giảng viên: Hoàng Xuân Dương
281
8. Chọn tỉ lệ
set(gca,'PlotBoxAspectRatio',[2.5 2.5 1])
9. Tạo các nhãnxlabel('X Axis')ylabel('Y Axis')zlabel('Function Value')title('Peaks')
10. Inset(gcf,'PaperPositionMode','auto')print -dps2
CHƯƠNG 5: ĐỒ HỌA MATLAB
Giảng viên: Hoàng Xuân Dương
282
II. ĐỒ HỌA 3D:2. Vẽ dữ liệu 3D:Nếu x, y và z là 3 vector có cùng kích thước:
plot3(x,y,z)Ví dụ 1:>> t = 0:pi/50:10*pi;>> plot3(sin(t),cos(t),t)>> axis square; >> grid on
142
CHƯƠNG 5: ĐỒ HỌA MATLAB
Giảng viên: Hoàng Xuân Dương
283
II. ĐỒ HỌA 3D:2. Vẽ dữ liệu 3D (tt)Ví dụ 2:>> [X,Y] = meshgrid([-2:0.1:2]);>> Z = X.*exp(-X.^2-Y.^2);>> plot3(X,Y,Z)>> grid on
CHƯƠNG 5: ĐỒ HỌA MATLAB
Giảng viên: Hoàng Xuân Dương
284
II. ĐỒ HỌA 3D:3. Các loại hàm vẽ bề mặt :
a. Hàm mesh:mesh(X,Y,Z)mesh(Z)mesh(...,C)mesh(...,'PropertyName',PropertyValue,...)mesh(axes_handles,...)meshc(...)meshz(...)
143
CHƯƠNG 5: ĐỒ HỌA MATLAB
Giảng viên: Hoàng Xuân Dương
285
II. ĐỒ HỌA 3D:3. Các loại hàm vẽ bề mặt (tt)
a. Hàm mesh (tt)Ví dụ:>> [X,Y] = meshgrid(-3:.125:3);>> Z = peaks(X,Y);>> meshc(X,Y,Z); >> axis([-3 3 -3 3 -10 5])
hoặc>> meshz(X,Y,Z);
hoặc>> mesh(X,Y,Z);
CHƯƠNG 5: ĐỒ HỌA MATLAB
Giảng viên: Hoàng Xuân Dương
286
II. ĐỒ HỌA 3D:3. Các loại hàm vẽ bề mặt (tt)
b. Hàm surf:surf(Z)surf(X,Y,Z)surf(X,Y,Z,C)surf(...,'PropertyName',PropertyValue)surf(axes_handle,...)surfc(...)
144
CHƯƠNG 5: ĐỒ HỌA MATLAB
Giảng viên: Hoàng Xuân Dương
287
II. ĐỒ HỌA 3D:3. Các loại hàm vẽ bề mặt (tt)
b. Hàm surf (tt)Ví dụ:>> [X,Y,Z] = peaks(30);>> surfc(X,Y,Z)>> colormap hsv>> axis([-3 3 -3 3 -10 5])
CHƯƠNG 5: ĐỒ HỌA MATLAB
Giảng viên: Hoàng Xuân Dương
288
II. ĐỒ HỌA 3D:4. Sử dụng màu:Cú pháp:
colormap(map)colormap('default')cmap = colormap
Một colormap là một ma trận m hàng, 3 cột (ứng với 3 màu R G B). Các giá trị từ 0.0 đến 1.0
map(k,:) = [r(k) g(k) b(k)]Ví dụ:>> cm = colormap;>> cm(57,:)ans = 1 0 0
145
CHƯƠNG 5: ĐỒ HỌA MATLAB
Giảng viên: Hoàng Xuân Dương
289
II. ĐỒ HỌA 3D:4. Sử dụng màu (tt)colormap(func(n)) tạo ma trận n hàng theo hàm func
func có thể là: hsv, hot, cool, summer, gray, jet, bone, winter…
Ví dụ:>> cm=colormap(hot(20))>> colormap(gray)>> colormap jet
CHƯƠNG 5: ĐỒ HỌA MATLAB
Giảng viên: Hoàng Xuân Dương
290
Red Green Blue Color
0 0 0 black
1 1 1 white
1 0 0 red
0.49 1 0.83 aquamarine
0 1 0 green
0 0 1 blue
1 1 0 yellow
1 0 1 magenta
0 1 1 cyan
0.5 0.5 0.5 gray
0.5 0 0 Dark red
1 0.62 0.40 copper
146
CHƯƠNG 5: ĐỒ HỌA MATLAB
Giảng viên: Hoàng Xuân Dương
291
II. ĐỒ HỌA 3D:4. Sử dụng màu (tt)Ví dụ 1:>> load flujet>> image(X)>> colormap(jet)
CHƯƠNG 5: ĐỒ HỌA MATLAB
Giảng viên: Hoàng Xuân Dương
292
II. ĐỒ HỌA 3D:4. Sử dụng màu (tt)Ví dụ 2:>> load spine >> image(X)>> colormap bone
147
CHƯƠNG 5: ĐỒ HỌA MATLAB
Giảng viên: Hoàng Xuân Dương
293
II. ĐỒ HỌA 3D:4. Sử dụng màu (tt)Ví dụ 3:>> P = peaks(40);>> C = del2(P);>> surf(P,C)>> colormap hot
CHƯƠNG 5: ĐỒ HỌA MATLAB
Giảng viên: Hoàng Xuân Dương
294
II. ĐỒ HỌA 3D:5. Định nghĩa View:
a. Đặt view:
Trong trường hợp mặc định, Matlab tự động chọn view+ 2D thì có azimuth (phương vị) = 00 và elevation (độ cao) 900
+ 3D thì có azimuth = -37.50 và elevation 300
148
CHƯƠNG 5: ĐỒ HỌA MATLAB
Giảng viên: Hoàng Xuân Dương
295
II. ĐỒ HỌA 3D:5. Định nghĩa View (tt)
a. Đặt view (tt)Ví dụ:>> [X,Y]=meshgrid([-2:.25:2]);>> Z=X.*exp(-X.^2 -Y.^2);>> surf(X,Y,Z)>> view([180 0])>> view([-37.5 -30])
CHƯƠNG 5: ĐỒ HỌA MATLAB
Giảng viên: Hoàng Xuân Dương
296
II. ĐỒ HỌA 3D:5. Định nghĩa View:
b. Đặt trục:axis([xmin xmax ymin ymax zmin zmax])
Mặc định có tọa độ axis([-5 5 -5 5 0 1])Ví dụ:>> t = 0:pi/6:4*pi;>> [x,y,z] = cylinder(4+cos(t),30);>> surf(x,y,z)>> axis square>> axis equal>> axis([-6 6 -6 6 0 2])
149
CHƯƠNG 5: ĐỒ HỌA MATLAB
Giảng viên: Hoàng Xuân Dương
297
CHƯƠNG 5: ĐỒ HỌA MATLAB
Giảng viên: Hoàng Xuân Dương
298
II. ĐỒ HỌA 3D:6. Di chuyển hình:Ví dụ 1:>> axis equal>> for j=1:30plot(fft(eye(j+16)))M(j)=getframe;end
Hay:>> movie(M)
150
CHƯƠNG 5: ĐỒ HỌA MATLAB
Giảng viên: Hoàng Xuân Dương
299
II. ĐỒ HỌA 3D:6. Di chuyển hình (tt)Ví dụ 1(tt)Hay:>> axis equal>> set(gca,'Nextplot','replacechildren')>> for j=1:30plot(fft(eye(j+16)))M(j)=getframe;end
Hay:>> movie(M)>> movie(M,30)
CHƯƠNG 5: ĐỒ HỌA MATLAB
Giảng viên: Hoàng Xuân Dương
300
II. ĐỒ HỌA 3D:6. Di chuyển hình (tt)Ví dụ 2:>> [xx,yy,zz]=peaks(30);>> surf(xx,yy,zz);>> axis off>> for j=1:50view(-37.5+24*(j-1),30)n(:,1)=getframe;end>> movie(n)
151
CHƯƠNG 5: ĐỒ HỌA MATLAB
Giảng viên: Hoàng Xuân Dương
301
III. CÁC LOẠI HÀM ĐẶC BIỆT:1. Hàm bar: Dùng để diễn tả các dữ liệu rời rạc theo dạng biểu đồ cột
a. Hàm bar và barh:bar(Y) % Đồ thị thanh đứngbar(x,Y)bar(...,width)bar(...,'style')bar(...,LineSpec)[xb,yb] = bar(...)h = bar(...)barh(...) % Đồ thị thanh ngang[xb,yb] = barh(...)h = barh(...)
CHƯƠNG 5: ĐỒ HỌA MATLAB
Giảng viên: Hoàng Xuân Dương
302
III. CÁC LOẠI HÀM ĐẶC BIỆT:1. Hàm bar (tt)
a. Hàm bar và barh (tt)Trong đó:
width: là độ rộng có mặc định là 0.8LineSpec: là màu vẽ [R G B]style: Kiểu của bar
- group- stack
Ví dụ 1:>> x = -2.9:0.2:2.9;>> bar(x,exp(-x.*x))>> colormap hsv
152
CHƯƠNG 5: ĐỒ HỌA MATLAB
Giảng viên: Hoàng Xuân Dương
303
CHƯƠNG 5: ĐỒ HỌA MATLAB
Giảng viên: Hoàng Xuân Dương
304
III. CÁC LOẠI HÀM ĐẶC BIỆT:1. Hàm bar (tt)
a. Hàm bar và barh (tt)Ví dụ 2:>> Y = round(rand(5,3)*10);>> subplot(2,2,1); bar(Y,'group'); title 'Group'>> subplot(2,2,2); bar(Y,'stack'); title 'Stack'>> subplot(2,2,3); barh(Y,'stack'); title 'Stack'>> subplot(2,2,4); bar(Y,1.5); title 'Width = 1.5'
153
CHƯƠNG 5: ĐỒ HỌA MATLAB
Giảng viên: Hoàng Xuân Dương
305
CHƯƠNG 5: ĐỒ HỌA MATLAB
Giảng viên: Hoàng Xuân Dương
306
III. CÁC LOẠI HÀM ĐẶC BIỆT:1. Hàm bar (tt)
a. Hàm bar và barh (tt)Ví dụ 3:>>Y = [5 2 1; 8 7 3; 9 8 6; 5 5 5; 4 3 2];>> bar(Y,'stack')>> grid on>> set(gca,'layer','top')
154
CHƯƠNG 5: ĐỒ HỌA MATLAB
Giảng viên: Hoàng Xuân Dương
307
III. CÁC LOẠI HÀM ĐẶC BIỆT:1. Hàm bar (tt)
b. Hàm bar3 và bar3h:bar3(Y)bar3(x,Y)bar3(...,width)bar3(...,'style')bar3(...,LineSpec)h = bar3(...)bar3h(...)h = bar3h(...)
CHƯƠNG 5: ĐỒ HỌA MATLAB
Giảng viên: Hoàng Xuân Dương
308
III. CÁC LOẠI HÀM ĐẶC BIỆT:1. Hàm bar (tt)
b. Hàm bar3 và bar3h (tt)Trong đó:
width: là độ rộng có mặc định là 0.8LineSpec: là màu vẽ [R G B]style: Kiểu của bar
- grouped- stacked- detached
155
CHƯƠNG 5: ĐỒ HỌA MATLAB
Giảng viên: Hoàng Xuân Dương
309
Ví dụ:>> Y = cool(7); colormap([1 0 0;0 1 0;0 0 1]);>> subplot(1,2,1); bar3(Y,'detached'); title('Detached')>> subplot(1,2,2); bar3(Y,0.25,'detached'); title('Width = 0.25')
CHƯƠNG 5: ĐỒ HỌA MATLAB
Giảng viên: Hoàng Xuân Dương
310
Ví dụ (tt)>> subplot(1,2,1); bar3(Y,'grouped'); title('Grouped')>> subplot(1,2,2); bar3(Y,0.5,'grouped'); title('Width = 0.5')
156
CHƯƠNG 5: ĐỒ HỌA MATLAB
Giảng viên: Hoàng Xuân Dương
311
Ví dụ (tt)>> subplot(1,2,1); bar3(Y,'stacked'); title('Stacked')>> subplot(1,2,2); bar3(Y,0.3,'stacked'); title('Width = 0.3')
CHƯƠNG 5: ĐỒ HỌA MATLAB
Giảng viên: Hoàng Xuân Dương
312
III. CÁC LOẠI HÀM ĐẶC BIỆT:1. Hàm bar (tt)
c. Hàm stairs:stairs(Y)stairs(X,Y)stairs(...,LineSpec)[xb,yb] = stairs(Y)[xb,yb] = stairs(X,Y)
Ví dụ:>> x = 0:.25:10;>> stairs(x,sin(x))
157
CHƯƠNG 5: ĐỒ HỌA MATLAB
Giảng viên: Hoàng Xuân Dương
313
III. CÁC LOẠI HÀM ĐẶC BIỆT:1. Hàm bar (tt)
d. Giới hạn trục:Ví dụ:>> temp = [29 23 27 25 20 23 23 27];>> days = 0:5:35;>> bar(days,temp)>> xlabel('Day')>> ylabel('Temperature (^{o}C)') >> set(gca,'YLim',[15 30],'Layer','top')
CHƯƠNG 5: ĐỒ HỌA MATLAB
Giảng viên: Hoàng Xuân Dương
314
158
CHƯƠNG 5: ĐỒ HỌA MATLAB
Giảng viên: Hoàng Xuân Dương
315
III. CÁC LOẠI HÀM ĐẶC BIỆT:2. Hàm area:
area(Y)area(X,Y)area(...,ymin)area(...,'PropertyName',PropertyValue,...)h = area(...)
Ví dụ:>> Y = [1, 5, 3; 3, 2, 7; 1, 5, 3; 2, 6, 1];>> area(Y); grid on>> colormap summer>> set(gca,'Layer','top')>> title 'Stacked Area Plot'
CHƯƠNG 5: ĐỒ HỌA MATLAB
Giảng viên: Hoàng Xuân Dương
316
159
CHƯƠNG 5: ĐỒ HỌA MATLAB
Giảng viên: Hoàng Xuân Dương
317
III. CÁC LOẠI HÀM ĐẶC BIỆT:3. Hàm pie: Hàm vẽ dạng rẽ quạt
a. pie:pie(X)pie(X,explode)pie(...,labels)pie(axes_handle,...)h = pie(...)
Ví dụ 1:>> pie(1:4,{'Product A',…'Product B','Product C','Product D'})
CHƯƠNG 5: ĐỒ HỌA MATLAB
Giảng viên: Hoàng Xuân Dương
318
III. CÁC LOẠI HÀM ĐẶC BIỆT:3. Hàm pie (tt)
a. pie (tt)Ví dụ 2:>> x = [1 3 0.5 2.5 2];>> explode = [0 1 0 0 0];>> pie(x,explode)>> colormap jet
160
CHƯƠNG 5: ĐỒ HỌA MATLAB
Giảng viên: Hoàng Xuân Dương
319
III. CÁC LOẠI HÀM ĐẶC BIỆT:3. Hàm pie (tt)
a. pie (tt)Ví dụ 3:>> X = [ 19.3 22.1 51.6;
34.2 70.3 82.4;61.4 82.9 90.8;50.5 54.9 59.1;29.4 36.3 47.0];
>> x = sum(X); explode = zeros(size(x));>> [c,offset] = max(x);>> explode(offset) = 1;>> h = pie(x,explode); colormap summer
CHƯƠNG 5: ĐỒ HỌA MATLAB
Giảng viên: Hoàng Xuân Dương
320
III. CÁC LOẠI HÀM ĐẶC BIỆT:3. Hàm pie (tt)
b. pie3:pie3(X)pie3(X,explode)pie3(...,labels)pie3(axes_handle,...)h = pie3(...)
Ví dụ 1:>> x = [1 3 0.5 2.5 2];>> explode = [0 1 0 0 0];>> pie3(x,explode)>> colormap hsv
161
CHƯƠNG 5: ĐỒ HỌA MATLAB
Giảng viên: Hoàng Xuân Dương
321
III. CÁC LOẠI HÀM ĐẶC BIỆT:4. Hàm Histograms:
a. Histograms trong tọa độ phẳng:n = hist(Y)n = hist(Y,x)n = hist(Y,nbins)[n,xout] = hist(...)hist(...)hist(axes_handle,...)
Ví dụ 1:>> yn = randn(10000,1);>> hist(yn)
CHƯƠNG 5: ĐỒ HỌA MATLAB
Giảng viên: Hoàng Xuân Dương
322
III. CÁC LOẠI HÀM ĐẶC BIỆT:4. Hàm Histograms (tt)
a. Histograms trong tọa độ phẳng (tt)Ví dụ 2:>> Y = randn(10000,3);>> hist(Y)
162
CHƯƠNG 5: ĐỒ HỌA MATLAB
Giảng viên: Hoàng Xuân Dương
323
III. CÁC LOẠI HÀM ĐẶC BIỆT:4. Hàm Histograms (tt)
a. Histograms trong tọa độ phẳng (tt)Ví dụ 3:>> x = -2.9:0.1:2.9;>> y = randn(10000,1);>> hist(y,x)% thay đổi màu>> h = findobj(gca,'Type','patch');>> set(h,'FaceColor','r','EdgeColor','w')
CHƯƠNG 5: ĐỒ HỌA MATLAB
Giảng viên: Hoàng Xuân Dương
324
163
CHƯƠNG 5: ĐỒ HỌA MATLAB
Giảng viên: Hoàng Xuân Dương
325
III. CÁC LOẠI HÀM ĐẶC BIỆT:4. Hàm Histograms (tt)
b. Histograms trong tọa độ cực:rose(theta)rose(theta,x)rose(theta,nbins)rose(axes_handles,...)h = rose(...)[tout,rout] = rose(...)
CHƯƠNG 5: ĐỒ HỌA MATLAB
Giảng viên: Hoàng Xuân Dương
326
III. CÁC LOẠI HÀM ĐẶC BIỆT:4. Hàm Histograms (tt)
b. Histograms trong tọa độ cực (tt)Ví dụ:>> theta = 2*pi*rand(1,50);>> rose(theta)>> hline = findobj(gca,'Type','line');>> set(hline,'LineWidth',1.5)
164
CHƯƠNG 5: ĐỒ HỌA MATLAB
Giảng viên: Hoàng Xuân Dương
327
CHƯƠNG 5: ĐỒ HỌA MATLAB
Giảng viên: Hoàng Xuân Dương
328
III. CÁC LOẠI HÀM ĐẶC BIỆT:4. Hàm Histograms (tt)
c. Chỉ định số Bin trong Histograms:Ví dụ:>> yn = randn(10000,1);>> yu = rand(10000,1);>> x = min(yn):.2:max(yn);>> subplot(1,2,1); hist(yn,x)>> title('Normally Distributed Random Numbers','FontSize',10)>> subplot(1,2,2); hist(yu,25)>> title('Uniformly Distributed Random Numbers','FontSize',10)
165
CHƯƠNG 5: ĐỒ HỌA MATLAB
Giảng viên: Hoàng Xuân Dương
329
CHƯƠNG 5: ĐỒ HỌA MATLAB
Giảng viên: Hoàng Xuân Dương
330
III. CÁC LOẠI HÀM ĐẶC BIỆT:5. Dữ liệu rời rạc:
a. Hàm stem: Vẽ 1 chuỗi dữ liệustem(Y)stem(X,Y)stem(...,'fill') % tô màu vòng tròn cuối stemstem(...,LineSpec)stem(axes_handle,...)h = stem(...)hlines = stem('v6',...)
166
CHƯƠNG 5: ĐỒ HỌA MATLAB
Giảng viên: Hoàng Xuân Dương
331
III. CÁC LOẠI HÀM ĐẶC BIỆT:5. Dữ liệu rời rạc (tt)
a. Hàm stem (tt)Ví dụ:>> t = linspace(-2*pi,2*pi,10);>> h = stem(t,cos(t),'fill','--');>> set(h,'MarkerFaceColor','red')
CHƯƠNG 5: ĐỒ HỌA MATLAB
Giảng viên: Hoàng Xuân Dương
332
167
CHƯƠNG 5: ĐỒ HỌA MATLAB
Giảng viên: Hoàng Xuân Dương
333
III. CÁC LOẠI HÀM ĐẶC BIỆT:5. Dữ liệu rời rạc (tt)
b. Vẽ nhiều hình:Ví dụ 1: Vẽ 2 chuỗi dữ liệu trên 1 hình>> x = 0:25;>> y = [exp(-.07*x).*cos(x);exp(.05*x).*cos(x)]';>> h = stem(x,y);>> set(h(1),'MarkerFaceColor','blue')>> set(h(2),'MarkerFaceColor','red','Marker','square')
CHƯƠNG 5: ĐỒ HỌA MATLAB
Giảng viên: Hoàng Xuân Dương
334
168
CHƯƠNG 5: ĐỒ HỌA MATLAB
Giảng viên: Hoàng Xuân Dương
335
III. CÁC LOẠI HÀM ĐẶC BIỆT:5. Dữ liệu rời rạc (tt)
b. Vẽ nhiều hình (tt)Ví dụ 2:>> x = linspace(0,2*pi,60);>> a = sin(x); b = cos(x);>> stem_handles = stem(x,a+b);>> hold on>> plot_handles = plot(x,a,'--r',x,b,'--g');>> hold off>> legend_handles = [stem_handles(1);plot_handles];>> legend(legend_handles,'a + b','a = sin(x)','b = cos(x)',3)>> xlabel('Time in \musecs'); ylabel('Magnitude')>> title('Linear Combination of Two Functions')
CHƯƠNG 5: ĐỒ HỌA MATLAB
Giảng viên: Hoàng Xuân Dương
336
169
CHƯƠNG 5: ĐỒ HỌA MATLAB
Giảng viên: Hoàng Xuân Dương
337
III. CÁC LOẠI HÀM ĐẶC BIỆT:5. Dữ liệu rời rạc (tt)
c. Hàm stem3: Vẽ 1 chuỗi dữ liệu 3 chiềustem3(Z)stem3(X,Y,Z)stem3(...,'fill')stem3(...,LineSpec)h = stem3(...)hlines = stem3('v6',...)
CHƯƠNG 5: ĐỒ HỌA MATLAB
Giảng viên: Hoàng Xuân Dương
338
III. CÁC LOẠI HÀM ĐẶC BIỆT:5. Dữ liệu rời rạc (tt)
c. Hàm stem3 (tt)Ví dụ 1:>> X = linspace(0,1,10);>> Y = X./2;>> Z = sin(X) + cos(Y);>> stem3(X,Y,Z,'fill')>> view(-25,30)
170
CHƯƠNG 5: ĐỒ HỌA MATLAB
Giảng viên: Hoàng Xuân Dương
339
III. CÁC LOẠI HÀM ĐẶC BIỆT:5. Dữ liệu rời rạc (tt)
c. Hàm stem3 (tt)Ví dụ 2:>> th = (0:127)/128*2*pi;>> x = cos(th);>> y = sin(th);>> f = abs(fft(ones(10,1),128));>> stem3(x,y,f','d','fill')>> view([-65 30])
Bài giảng Tin học chuyên ngành
Giảng viên: Hoàng Xuân Dương
340
CHƯƠNG 6:
171
CHƯƠNG 6: SIMULINK VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
341
I. SIMULINK
II. MỘT SỐ HỆ THỐNG
III. MẠCH ĐIỆN
IV. KHỐI SUBSYSTEM
V. BÀI TẬP
CHƯƠNG 6: SIMULINK VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
342
I. SIMULINK1. Khái niệm:
Simulink là công cụ dùng để mô phỏng và phân tích các hệ thống liên tục, rời rạc, tuyến tính và phi tuyến thông qua giao diện dạng sơ đồ khốiTrên cửa sổ lệnh gõ simulink hoặc chọn biểu tượng simulink trên thanh công cụ của MatlabCửa sổ Simulink Library Browser xuất hiện
172
CHƯƠNG 6: SIMULINK VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
343
I. SIMULINK1. Khái niệm (tt)
Các thư viện gốc
Các thư viện con của thư viện được chọn
Mô tả thư viện được chọn
CHƯƠNG 6: SIMULINK VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
344
I. SIMULINK1. Khái niệm (tt)
Simulink tổ chức các khối theo thư viện, mỗi thư viện gồm nhiều thư viện con. Các thư viện phục vụ cho các chuyên ngành khác nhauCác thư viện con là tập hợp các khốiKhối biểu diễn một hệ thống động sơ cấp, gồm có đầu vào, đầu ra và các trạng thái bên trongMỗi khối liên kết một hàm hệ thống cho biết quan hệgiữa đầu vào với đầu ra
173
CHƯƠNG 6: SIMULINK VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
345
I. SIMULINK1. Khái niệm (tt)Ví dụ:
Khối nhân vô hướng hoặc ma trậnX
Product
min
MinMax
Khối tính min (hoặc max) vector ngõ vào
PulseGenerator
Khối phát xung
CHƯƠNG 6: SIMULINK VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
346
I. SIMULINK2. Thực hiện mô hình:
Muốn tạo một mô hình, chọn File-New-Model, một cửa sổ soạn thảo mở ra. Chọn các khối trong cửa sổ Simulink Library Browserrồi kéo qua cửa sổ soạn thảo
174
CHƯƠNG 6: SIMULINK VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
347
I. SIMULINK2. Thực hiện mô hình (tt)
Các thao tác khi tạo sơ đồ khối
Thao tác Phím + chuột
Chọn khối hay đường LMB (left mouse button)
Chọn nhiều khối hay nhiều đường Shift+LMB
Chép khối từ cửa sổ khác Bấm chuột và kéo thả (kéo khối)
Di chuyển khối Kéo khối
Tạo khối giống nhau RMB và kéo thả hay LMB+Ctrl và kéo
Nối các khối LMB
Tháo khối Shift+kéo khối
Chọn khối kế Tab
Chọn khối trước Shift+Tab
CHƯƠNG 6: SIMULINK VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
348
Các thao tác khi tạo sơ đồ khốiThao tác Phím + chuột
Mở hệ con đã chọn Enter
Tạo chú giải Double click trong giản đồ
Chép chú giải Ctrl+kéo
Di chuyển chú giải Kéo
Biên tập chú giải LMB vào text
Bỏ chú giải Shift+chọn chú giải rồi bấm del
Quay khối 900 theo chiều kim Ctrl+R
Lật khối (đảo đầu vào ra) Ctrl+I
Chuyển đến cha của hệ con Esc
Xóa khối Chọn + bấm del
I. SIMULINK2. Thực hiện mô hình (tt)
175
CHƯƠNG 6: SIMULINK VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
349
I. SIMULINK2. Thực hiện mô hình (tt)Muốn thêm chú thích vào hình, chọn vào chỗ trống trong sơ đồ khối, nhập các chú thích.Sau khi vẽ xong sơ đồ khối, chuyển sang giai đoạn mô phỏng. Chọn Simulation/startChọn File/save để lưu sơ đồ thành tập tin với đuôi .mdl
CHƯƠNG 6: SIMULINK VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
350
Continuous-Khối hàm liên tụcDerivative Đạo hàm tín hiệu vàoIntegrator Tích phân tín hiệu vàoMemory Khối nhớState-Space Phương trình trạng thái liên tụcTransfer Fcn Hàm truyền liên tụcTransport Delay DelayVariable Transport Delay Delay thay đổi
Zero-Pole Hàm truyền theo cực và zero
Discontinuous-Khối hàm phi tuyếnBacklash Khe hởCoulomb & Viscous Friction Ma sát khô và ướtDead Zone Vùng chếtManual Switch Chọn bằng tay
3. Thư viện simulink:
176
CHƯƠNG 6: SIMULINK VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
351
Multiport Switch Chọn các khối vàoQuantizer Lượng tửRate Limiter Giới hạn đạo hàm tín hiệuRelay Khâu rơle
Tích phân rời rạc
Saturation Khâu bão hòaSwitch Chuyển mạch giữa hai ngõ vào
Discrete-Các khối rời rạc
Discrete Filter Lọc IIR và FIRDiscrete State-Space Phương trình trạng thái rời rạcDiscrete-Time IntegratorDiscrete Transfer Fcn Hàm truyền rời rạcDiscrete Zero-Pole Hàm truyền rời rạc theo cực zeroFirst-Order Hold Bộ lấy mẫu và giữ bậc mộtUnit Delay Bộ trễ một chu kỳ lấy mẫu
CHƯƠNG 6: SIMULINK VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
352
Zero-Order Hold Bộ lấy mẫu và giữ bậc zeroLook up Tables-Khối tra bảng
Direct Look-Up Table (n-D) Bảng tra hai chiềuFcn Tạo hàm
Tra bảng n chiều
Look-Up Table Tra bảngLook-Up Table (2-D) Tra bảng hai chiềuLook-Up Table (n-D)MATLAB Fcn Hàm MatlabS-Function Hàm S
Math Operations-Thư viện toán học
Abs Lấy trị tuyệt đốiAlgebraic Constraint Giới hạn đại sốBitwise Logical Operator Toán tử logic (dịch bit, mask, invert)Combinatorial Logic Mạch tổ hợp
177
CHƯƠNG 6: SIMULINK VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
353
Complex to Magnitude-Angle Tính biên độ và pha tín hiệu số phứcComplex to Real-Imag Tính phần thực và phần ảo của số phức
Tạo tín hiệu số phức từ biên độ và pha
Lấy cực đại hay cực tiểu
Derivative Tính đạo hàmDot Product Tính tích chấmGain Khối tỉ lệLogical Operator Toán tử logicMagnitude-Angle to ComplexMath Function Hàm toán họcMatrix Gain Nhân tín hiệu vào với ma trậnMinMaxProduct Tính tích hay thương đầu vàoReal-Imag to Complex Đổi phần thực và ảo ra tín hiệu phứcRelational Operator Toán tử quan hệRounding Function Làm tròn
CHƯƠNG 6: SIMULINK VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
354
Sign Lấy dấuSlider Gain Con trượt thay đổi độ lợi
Tạo ngõ ra cho subsystem
Chọn tín hiệu vào
Data Store Write Ghi khối nhớ dữ liệuDemux Tách tín hiệu
Sum Tính tổngTrigonometric Function Tính hàm lượng giác
Ports & Subsystens-Tạo hệ conIn1 Tạo ngõ vào cho subsystemOut1Subsystem Khối subsystem chứa inport và outport
Signal Routing-Tạo bus tín hiệuBus SelectorData Store Memory Ấn định khối nhớ dữ liệuData Store Read Đọc khối nhớ dữ liệu
178
CHƯƠNG 6: SIMULINK VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
355
From Nhận tín hiệu từ khối gotoChuyển tín hiệu đến khối From
Khóa hai chiều đk bằng tay
Multiport Switch Khóa nhiều chiều
Switch Khóa hai chiều
Display Hiển thị giá trị đầu vàoScope Hiển thị giá trị ra khi mô phỏngStop Simulation Ngừng mô phỏngTo File Ghi dữ liệu vào file
Mux Kết hợp nhiều đường thành đường vectorSelector Chọn các phần tử của vector ngõ vào
GotoGoto Tag Visibility Ấn định tag của khối gotoManual SwitchMerge Hợp nhiều đường thành đường vô hướng
Sinks-Các khối hiển thị hay lưu tín hiệu ra
CHƯƠNG 6: SIMULINK VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
356
To Workspace Ghi dữ liệu vào biến trong WorkspaceXY Graph Vẽ đồ thị X-Y
Tạo sóng sin tần số tăng dần
Tạo xung sốĐọc dữ liệu từ file
Tạo giá trị hằng
Sources-Các khối tạo tín hiệu
Band-Limited White Noise Tạo nhiễu trắngChirp SignalClock Thời gian mô phỏngConstantDigital Clock Tạo tg mô phỏng ở các khoảng lấy mẫuDigital Pulse GeneratorFrom FileFrom Workspace Đọc dữ liệu từ biến trong WorkspacePulse Generator Tạo xungRamp Tạo hàm dốcRandom Number Tạo số ngẫu nhiên phân bố chuẩn
179
CHƯƠNG 6: SIMULINK VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
357
Repeating Sequence Tạo tín hiệu lặp lạiSignal Generator Tạo dạng sóng
Tạo sóng sin
Tạo số ngẫu nhiên phân bố đều
Sine WaveStep Tạo hàm nấcUniform Random Number
CHƯƠNG 6: SIMULINK VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
358
I. SIMULINK4. Function block parameters:
Để định các thông số cho các hàm hệ thống liên kết với khối, double click vào khối để mở cửa sổ Function block parameters.
Ví dụ 1: Khối tích phân integrator
S1
180
CHƯƠNG 6: SIMULINK VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
359
Reset về điều kiện đầu khi tín hiệu reset tác động (none, rising, falling,...)
Nguồn điều kiện đầu (int, ext)
Chọn giới hạn ra hay không ?
Giới hạn trên
Giới hạn dưới
Thêm ngõ ra bão hoà
Thêm ngõ ra trạng thái
Dung sai tuyệt đối trạng thái khối
CHƯƠNG 6: SIMULINK VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
360
I. SIMULINK4. Function block parameters (tt)Ví dụ 2: Khối phương trình trạng thái State-Space
Điều chỉnh các thông số để phương trình trạng thái của hệthống có dạng:
x’=Ax+Buy =Cx+Du
[ ] ux01y
u01
x1001
'x
+=
⎥⎦
⎤⎢⎣
⎡+⎥
⎦
⎤⎢⎣
⎡=
181
CHƯƠNG 6: SIMULINK VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
361
CHƯƠNG 6: SIMULINK VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
362
I. SIMULINK5. Mô phỏng:
Có thể chạy mô phỏng bằng Simulation/Start hoặc trong command window:>> [t,x,y]=sim(model,timespan,options,ut)>> [t,x,y1,y2,…,yn]=sim(model,timespan,options,ut)
Trong đó:t: vector thời gian mô phỏngx: ma trận các trạng thái liên tục và rời rạcy: Ma trận các ngõ ramodel: tên mô hìnhtimespan: thời gian bắt đầu và kết thúc mô phỏngoptions: Các thông số tùy chọn theo lệnh simsetut: giá trị tín hiệu vào
182
CHƯƠNG 6: SIMULINK VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
363
II. MỘT SỐ HỆ THỐNG1. Hệ thống Backlash:
a. Khối MUX có 2 ngõ vào:Thiết kế hệ thống như hình vẽ, lưu thành trigger.mdl
CHƯƠNG 6: SIMULINK VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
364
II. MỘT SỐ HỆ THỐNG1. Hệ thống Backlash:
a. Khối MUX có 2 ngõ vào (tt)Khối Sin Wave: Simulink/ SourcesKhối Backlash: Simulink/ DiscontinuitesKhối Mux: Simulink/ Signal routingKhối Outport: Simulink/ Ports & SubsystemsKhối Scope: Simulink/ Sinks
183
CHƯƠNG 6: SIMULINK VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
365
II. MỘT SỐ HỆ THỐNG1. Hệ thống Backlash:
a. Khối MUX có 2 ngõ vào (tt)Chạy thử:
1. Chọn simulation/start2. Double click khối scope để xem dạng sóng
CHƯƠNG 6: SIMULINK VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
366
II. MỘT SỐ HỆ THỐNG1. Hệ thống Backlash:
a. Khối MUX có 2 ngõ vào (tt)Trong command window:>> [t,x,y]=sim('trigger',20) % tập thời gian 0-20y là ma trận kết quả có 2 cột, cột 1 chứa kết quả sau khi qua khối backlash, cột 2 là sóng sin nguyên thủy
>> plot(t,y)hay>> plot(t,y(:,1)) % Vẽ cột 1hay>> plot(t,y(:,2)) % Vẽ cột 2
184
CHƯƠNG 6: SIMULINK VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
367
CHƯƠNG 6: SIMULINK VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
368
II. MỘT SỐ HỆ THỐNG1. Hệ thống Backlash:
a. Khối MUX có 2 ngõ vào (tt)Có thể thay đổi thông số cho nguồn sin bằng cách double click khối Sin Wave, thay đổi giá trị như biên độ, tần số,…Có thể gọi lại mô hình bằng cách trong Command window:>> trigger
185
CHƯƠNG 6: SIMULINK VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
369
II. MỘT SỐ HỆ THỐNG1. Hệ thống Backlash (tt)
b. Khối MUX có 3 ngõ vào
CHƯƠNG 6: SIMULINK VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
370
II. MỘT SỐ HỆ THỐNG1. Hệ thống Backlash (tt)
b. Khối MUX có 3 ngõ vào (tt)>> [t,x,y]=sim('trigger3',5)y là ma trận kết quả có 3 cột, với cột 3 là ma trận t>> plot(y(:,3),y(:,1:2))Hay>> plot(y(:,3),y(:,1), y(:,3),y(:,2))
186
CHƯƠNG 6: SIMULINK VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
371
CHƯƠNG 6: SIMULINK VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
372
II. MỘT SỐ HỆ THỐNG2. Hệ thống phương trình Van Der PolPhương trình Van der Pol có dạng:
x’’+(x^2+1)*x’+x=0Với:
x’=x1(1-x2^2)-x2x2’=x1
trong đó hằng số Mu=1
187
CHƯƠNG 6: SIMULINK VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
373
II. MỘT SỐ HỆ THỐNG2. Hệ thống phương trình Van Der Pol
CHƯƠNG 6: SIMULINK VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
374
II. MỘT SỐ HỆ THỐNG2. Hệ thống phương trình Van Der PolThực hiện với:
Khối Fcn: Simulink/ User-defines FunctionKhối Product, Gain, Sum: Simulink/ Math operationsKhối Integrator: Simulink/ ContinuousỞ khối tích phân thứ 2, vào properties chọn điều kiện đầu là bằng 1Lưu mô hình với tên ptvdp.mdl
>> [t,x,y]=sim('ptvdp',30);>> plot(t,y(:,1),':b',t,y(:,2),'--r')
188
CHƯƠNG 6: SIMULINK VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
375
CHƯƠNG 6: SIMULINK VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
376
189
CHƯƠNG 6: SIMULINK VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
377
II. MỘT SỐ HỆ THỐNG3. Đáp ứng hệ thống
a. Sử dụng sóng sin vào cố định
CHƯƠNG 6: SIMULINK VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
378
II. MỘT SỐ HỆ THỐNG3. Đáp ứng hệ thống
a. Sử dụng sóng sin vào cố địnhLưu mô hình với tên transfer.mdl
>> [t,x,y]=sim('transfer',10);>> plot(t,y(:,1),':b',t,y(:,2),'--r')
Hệ thống có hồi tiếp âm nên sóng sin vào có tần sốcàng cao thì sóng ra tại ‘Ngo ra 1’ có biên độ càng nhỏ. Đây là dạng mạch lọc thông thấp
190
CHƯƠNG 6: SIMULINK VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
379
CHƯƠNG 6: SIMULINK VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
380
191
CHƯƠNG 6: SIMULINK VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
381
II. MỘT SỐ HỆ THỐNG3. Đáp ứng hệ thống (tt)
b. Khối Signal Generator
CHƯƠNG 6: SIMULINK VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
382
II. MỘT SỐ HỆ THỐNG3. Đáp ứng hệ thống
b. Khối Signal Generator (tt)Thực hiện với:
Khối Signal Generator: Simulink/ SourceVào properties chọn đơn vị của tần số là rad/s (hinh vẽ), dạng sóng có thể là sin, vuông, tam giác hoặc ngẫu nhiên.
Lưu mô hình với tên kdai.mdl>> [t,x,y]=sim('kdai',10);>> plot(t,y)Khối Signal Generator có thể thay bằng khối Inport đểnhập tín hiệu cần khuếch đại từ ngoài vào
192
CHƯƠNG 6: SIMULINK VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
383
CHƯƠNG 6: SIMULINK VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
384
193
CHƯƠNG 6: SIMULINK VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
385
CHƯƠNG 6: SIMULINK VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
386
II. MỘT SỐ HỆ THỐNG3. Đáp ứng hệ thống
c. Hệ thống rời rạc
194
CHƯƠNG 6: SIMULINK VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
387
II. MỘT SỐ HỆ THỐNG3. Đáp ứng hệ thống
c. Hệ thống rời rạcThực hiện với:
Khối Discreate Transfer Fcn: Simulink/ discreateVào properties định các tham số cho hàm truyềnKhối Step: Simulink/ SourceỞ khối Fcn thứ 2, vào properties chọn thời gian lấy mẫu bằng 0.7Lưu mô hình với tên htrrac.mdl
>> [t,x,y]=sim('htrrac',30);>> stairs(t,y,':r')
CHƯƠNG 6: SIMULINK VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
388
195
CHƯƠNG 6: SIMULINK VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
389
II. MỘT SỐ HỆ THỐNG4. Khối to Workspace
Khối Workspace sẽ tự động trả về giá trị nằm trong biến được khai báo trong property mà không cần sửdụng hàm sim( )Khi dùng khối này phải khai báo biến và chọn loại giátrị trả về
CHƯƠNG 6: SIMULINK VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
390
II. MỘT SỐ HỆ THỐNG4. Khối to Workspace (tt)Ví dụ: Thiết kế hệ thống như hình vẽ
196
CHƯƠNG 6: SIMULINK VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
391
II. MỘT SỐ HỆ THỐNG4. Khối to Workspace (tt)
Khối To Workspace: Simulink/ SinksKhai báo biến delays và trị trả về là arrayKhối Transport delay: Simulink/ ContinuousLưu mô hình với tên delay.mdl
>> delays % quan sát biến trả về>> plot(delays)
CHƯƠNG 6: SIMULINK VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
392
197
CHƯƠNG 6: SIMULINK VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
393
III. MẠCH ĐIỆN1. Đo điện thế:
a. Khối Voltage Measurement:
CHƯƠNG 6: SIMULINK VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
394
III. MẠCH ĐIỆN1. Đo điện thế:
a. Khối Voltage Measurement (tt)Thực hiện với:
AC Voltage Source: Simpowersystems/ Electrical SourceKhai báo 3 VAC, tần số 50Hz và pha=0Khối mass: Simpowersystems/ ConnectorsVoltage Mesurement: Simpowersystems/ MesurementKhối Series RLC Branch: Simpowersystems/ ElementsChọn thời gian Stop time là 10sChọn time range là 0.10sLưu mô hình với tên voltRLC.mdl
198
CHƯƠNG 6: SIMULINK VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
395
Chọn simulink / start để chạy mô phỏng
CHƯƠNG 6: SIMULINK VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
396
Trong command window:>> [t,x,y]=sim('voltRLC',0.02); plot(t,y)
199
CHƯƠNG 6: SIMULINK VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
397
III. MẠCH ĐIỆN2. Đo dòng điện:
CHƯƠNG 6: SIMULINK VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
398
III. MẠCH ĐIỆN2. Đo dòng điện:Thực hiện với:
AC Current Source: Simpowersystems/ Electrical SourceKhai báo dòng, tần số và pha.Khối T Connect: Simpowersystems/ ConnectorsCurrent Mesurement: Simpowersystems/ MesurementChọn thời gian Time range là 0.5sLưu mô hình với tên currnet.mdl
>> [t,x,y]=sim('current'); plot(t,y)>> [t,x,y]=sim('current',0.2); plot(t,y)
200
CHƯƠNG 6: SIMULINK VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
399
CHƯƠNG 6: SIMULINK VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
400
III. MẠCH ĐIỆN3. Phần mạch số
201
CHƯƠNG 6: SIMULINK VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
401
III. MẠCH ĐIỆN3. Phần mạch số (tt)Thực hiện với:
Khối Constant: Simulink/ SourcesKhối Clock: Simulink Extras/ Flip FlopsKhối D-FF: Simulink Extras/ Flip FlopsKhối NOT: Simulink/ Math Operatiobs/ Logic operationVào parameters chọn NOTLưu mô hình với tên chiaf.mdl
CHƯƠNG 6: SIMULINK VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
402
202
CHƯƠNG 6: SIMULINK VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
403
IV. KHỐI SUBSYSTEM:Trong thiết kế hệ thống, để đơn giản người ta thường chia hệ thống ra từng phần nhỏ được gọi là subsystem
CHƯƠNG 6: SIMULINK VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
404
IV. KHỐI SUBSYSTEM:Có thể thực hiện theo 2 cách:
1. Tạo hệ con trước:i. Chọn Ports & Subsystems, kéo khối vào cửa sổ soạn
thảoii. Tạo các khối liên kết bên trongiii. Dùng khối inport/outport để biểu diễn tín hiệu vào ra
của hệ con
203
CHƯƠNG 6: SIMULINK VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
405
IV. KHỐI SUBSYSTEM:1. Tạo hệ con trước (tt)Ví dụ: Tạo khối 1/(z-1) Tạo các hệ con
Click chuột vào hệ con
Xóa đường nối
Thêm các khối
Nối các khối
CHƯƠNG 6: SIMULINK VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
406
IV. KHỐI SUBSYSTEM:2. Tạo hệ con từ khối có sẵn:i. Dùng chuột đóng khung các khối và đường nốiii. Chọn Edit/Creat Subsystemiii. Simulink thay các khối đã chọn bằng một khối chung
và mang một tên chung
204
CHƯƠNG 6: SIMULINK VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
407
IV. KHỐI SUBSYSTEM:2. Tạo hệ con từ khối có sẵn:
CHƯƠNG 6: SIMULINK VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
408
IV. KHỐI SUBSYSTEM:3. Tạo mặt nạ hệ con:
Hệ con gồm nhiều khối có các thông số khác nhau, cóthể dùng một mặt nạ chung cho các khối này, đại diện cho hệ con và các thông số cho khối
Ví dụ: Tạo một hệ con thực hiện hàm y=mx+b- m, b là các thông số phải đưa vào- x là tín hiệu vào- y là tín hiệu ra
205
CHƯƠNG 6: SIMULINK VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
409
IV. KHỐI SUBSYSTEM:3. Tạo mặt nạ hệ con:
Tạo hệ con:
Vào menu Edit/Mask Subsystem• Trong Documentation: Đặt tên mặt nạ ở Mask type,
các chú thích trong Mask Description,…• Thêm các thông số, biến, kiểu loại… trong tab
Parameters
CHƯƠNG 6: SIMULINK VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
410
206
CHƯƠNG 6: SIMULINK VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
411
IV. KHỐI SUBSYSTEM:3. Tạo mặt nạ hệ con:
CHƯƠNG 6: SIMULINK VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
412
V. BÀI TẬP:Bài tập 1:
207
CHƯƠNG 6: SIMULINK VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
413
CHƯƠNG 6: SIMULINK VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
414
V. BÀI TẬP:Bài tập 2:
208
CHƯƠNG 6: SIMULINK VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
415
V. BÀI TẬP:Bài tập 3:
CHƯƠNG 6: SIMULINK VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
416
V. BÀI TẬP:Bài tập 4:
209
CHƯƠNG 6: SIMULINK VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
417
V. BÀI TẬP:Bài tập 5:
Bài giảng Tin học chuyên ngành
Giảng viên: Hoàng Xuân Dương
418
CHƯƠNG 7:
210
CHƯƠNG 7: GUI VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
419
I. GRAPHICAL USER INTERFACE
II. TẠO MENU BẰNG GUI
III. TẠO CÁC ĐỐI TƯỢNG ĐIỀU KHIỂN
IV. ĐO TẦN SỐ
V. ĐỒ HỌA 2D
VI. CÁC HÀM VẼ 3D
VII. BIẾN ĐIỆU ANALOG
VIII. BIẾN ĐIỆU DIGITAL
IX. CÁC HỘP HỘI THOẠI DIALOG CỦA WINDOWS
CHƯƠNG 7: GUI VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
420
1. Giao diện GUI:• Chọn biểu tượng guide trên thanh toolbar, hoặc thực hiện
guide trên dòng lệnh cửa sổ GUIDE Quick Start
I. GRAPHICAL USER INTERFACE
211
CHƯƠNG 7: GUI VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
421
1. Giao diện GUI (tt)• Có thể chọn các mẫu giao diện thiết kế sẵn hay bấm chọn
GUI trống theo mặc định:
I. GRAPHICAL USER INTERFACE
Danh sách các thành phần đối tượng
Vùng layout, nơi đặt các thành phần đối tượng
CHƯƠNG 7: GUI VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
422
1. Giao diện GUI (tt)
I. GRAPHICAL USER INTERFACE
Component Ý nghĩa
Axes Vẽ hệ trục
Check box Hộp kiểm tra, đưa vào các chọn lựa bằng chuột
Edit text Hộp đưa vào văn bản
Frame Khung bao một vùng cửa sổ hình
List box Bảng các mục để chọn lựa
Pop-up menu Menu sổ xuống, chọn lựa bằng chuột
Push button Nút nhấn, kích hoạt một hành động
Radio button Giống check box nhưng chỉ chọn một
Slider Con trượt, đưa giá trị vào trong một tầm giới hạn
Static text Dòng văn bản để đặt tiêu đề, nhãn, hướng dẫn
Toggle button Như push button nhưng hiển thị trạng thái khác nhau mỗi khi nhấn
212
CHƯƠNG 7: GUI VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
423
1. Giao diện GUI (tt)• Song song với việc tạo ra một giao diện .fig là một file .m.
Nó chứa các nội dung có liên quan trực tiếp đến giao diện
I. GRAPHICAL USER INTERFACE
CHƯƠNG 7: GUI VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
424
1. Giao diện GUI (tt)• Trong đó có một số biến thông dụng:
varargout: chỉ chung các đối số trả vềvarargin: Chỉ chung các đối số đưa vào hàmnargin: Số lượng các đối số đưa vàonargout: Số lượng các đối số trả vềhandles: Cấu trúc handle của mọi component trong figure
Ví dụ: - nút nhấn có tag pushbutton1 có handle là handles.pushbutton1- figure có tag figure1 có handle là handles.figure1
I. GRAPHICAL USER INTERFACE
213
CHƯƠNG 7: GUI VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
425
1. Giao diện GUI (tt)• Bấm chuột trái vào các component muốn tạo, kéo chuột ra
vùng layout, nơi muốn đặt component. Có thể dùng chuột để thay đổi kích thước component
I. GRAPHICAL USER INTERFACE
CHƯƠNG 7: GUI VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
426
2. Soạn thảo các thuộc tính• Double click tại component để mở Inspect Properties
định các thông số cho các component
I. GRAPHICAL USER INTERFACE
Vùng các thuộc tính cho component
Vùng giá trị của các thuộc tính
214
CHƯƠNG 7: GUI VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
427
2. Soạn thảo các thuộc tính (tt)
I. GRAPHICAL USER INTERFACE
Thuộc tính Ý nghĩa
Tag Tên gán cho component
BackgroundColor Màu nền của component
ForegroundColor Màu chữ trên component
FontName, FontAngle,… Các đặc tính của font chữ trên component
String Văn bản hiển thị trên component
Visible Hiển thị component hay không
Nếu là layout
Color Màu nền cửa sổ
Name Tên cửa sổ
Enable Cho phép component hoạt động hay không
Resize Điều chỉnh kích thước cửa sổ
CHƯƠNG 7: GUI VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
428
3. Các Callback:Quan trọng nhất đối với các component là callback, làcác hàm con (function) mà file .m sẽ gọi khi tác động vào componentMỗi khi thêm vào một component, Matlab đều thêm vào file .m một hàm callback tương ứng (trừ frame, static text, axes)Hầu hết nội dung các callback được người sử dụng viết
Ví dụ: Xem nội dung file .m của một figure với một nút nhấn (pushbutton) như sau
I. GRAPHICAL USER INTERFACE
215
CHƯƠNG 7: GUI VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
429
Trong đó:- pushbutton1_Callback: hàm được gọi khi nhấn vào pushbutton1- hObject: handle của riêng nút nhấn- handles: Chứa tất cả các handle có trong file .m- eventdata: Tham số gọi hàm
I. GRAPHICAL USER INTERFACE
CHƯƠNG 7: GUI VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
430
3. Các Callback (tt)Các hàm Callback chung cho mọi component
I. GRAPHICAL USER INTERFACE
Callback Ý nghĩa
ButtondownFcn Callback được gọi khi click chuột trên đối tượng
CreateFcn Callback được tạo khi thiết lập đối tượng
DeleteFcn Callback được gọi trước khi hủy bỏ đối tượng
Nếu là Figure
CloseRequestFcn Được gọi khi đóng bởi lệnh close hay quit Matlab
KeyPressFcn Nhấn phím khi con chạy trong cửa sổ
ResizeFcn Khi resize của sổ figure
WindowButtonMotionFcn Khi di chuyển chuột trong cửa sổ figure
WindowButtonDownFcn Click chuột trên cửa sổ figure (không trên đối tượng)
WindowButtonUpFcn Nhả chuột sau khi đã bấm
216
CHƯƠNG 7: GUI VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
431
Nội dung:Cách tạo menu bằng GUITạo phím nóng cho menuCách tạo trục vẽCách vẽ hình trong GUICách đổi ViewSử dụng biến toàn cục globalHàm zoom fillHàm zoom outHàm CreateFcnHàm CloseRequestFcn của đối tượngTạo Contextmenu
II.TẠO MENU BẰNG GUI
CHƯƠNG 7: GUI VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
432
1. Tạo GUI:Tạo một blank GUI
II.TẠO MENU BẰNG GUI
217
CHƯƠNG 7: GUI VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
433
1. Tạo GUI (tt)Trong Inspect Properties:
- Name: Tao menu bang GUI- Filename: GUI_1- Position: x=1;
y=1;width=130;height=30;
- Resize: off- Handle Visibility: on
II.TẠO MENU BẰNG GUI
CHƯƠNG 7: GUI VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
434
2. Tạo menuChọn Tools-Menu EditorChọn New Menu- Thay Untitled_1 bằng Ve_hinh
II.TẠO MENU BẰNG GUI
218
CHƯƠNG 7: GUI VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
435
2. Tạo menu (tt)Chọn New Menu Item để tạo menu con- Thay Untitled_2 bằng Hinh_sin
II.TẠO MENU BẰNG GUI
CHƯƠNG 7: GUI VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
436
3. Tạo trục để vẽ hìnhChọn biểu tượng Axes để tạo trục vẽ
II.TẠO MENU BẰNG GUI
219
CHƯƠNG 7: GUI VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
437
3. Tạo trục để vẽ hình (tt)Trong Inspect Properties- Nextplot: replacechildren- Màu nền: tùy ý- Xcolor: tùy ý- Xgrid: on- Ycolor: tùy ý- Ygrid: on- Zcolor: tùy ý- Zgrid: on
II.TẠO MENU BẰNG GUI
CHƯƠNG 7: GUI VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
438
4. Tạo hàm CreateFcn và CloseRequestFcn:Right click trên giao diện chính, chọn lần lượt - View Callbacks-CreateFcn- View Callbacks-CloseRequestFcn
Trong tập tin GUI_1.m có thêm 2 hàm mới
II.TẠO MENU BẰNG GUI
220
CHƯƠNG 7: GUI VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
439
CHƯƠNG 7: GUI VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
440
4. Tạo hàm CreateFcn và CloseRequestFcn (tt)Hàm figure1_CreateFcn:
Sẽ thi hành đầu tiên khi chạy ứng dụng GUI_1.mThường để khai báo biến toàn cục global hay vẽ demo ban đầu
Hàm figure1_CloseRequestFcn: Để đề phòng người sử dụng thoát ngang ứng dụng
II.TẠO MENU BẰNG GUI
% --- Executes during object creation, after setting all properties.function figure1_CreateFcn(hObject, eventdata, handles)% ……global hsinx=linspace(0,2*pi);y=cos(x);hsin=plot(x,y);% --- Executes when user attempts to close figure1.function figure1_CloseRequestFcn(hObject, eventdata, handles)% ……delete(hObject);
221
CHƯƠNG 7: GUI VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
441
4. Tạo hàm CreateFcn và CloseRequestFcn (tt)
II.TẠO MENU BẰNG GUI
CHƯƠNG 7: GUI VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
442
5. Tạo hàm kích hoạt:Hàm tự thêm vào tập tin GUI_1.m để kích hoạt menu Hinh_sin
Chạy tập tin GUI_1.m, vào menu Hinh_sin để xem kết quả
II.TẠO MENU BẰNG GUI
% --------------------------------------------------------------------function Hinh_sin_Callback(hObject, eventdata, handles)global hsinx=linspace(0,2*pi);y=sin(x); Đoạn thêm vàohsin=plot(x,y);title('Ham sin(x)')% --------------------------------------------------------------------
222
CHƯƠNG 7: GUI VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
443
5. Tạo hàm kích hoạt (tt)
II.TẠO MENU BẰNG GUI
CHƯƠNG 7: GUI VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
444
6. Tạo các menu khác :
II.TẠO MENU BẰNG GUI
223
CHƯƠNG 7: GUI VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
445
6. Tạo các menu khác (tt)Kích hoạt các menu mới thêm vào:
II.TẠO MENU BẰNG GUI
% --------------------------------------------------------------------function Hinh_sin_Callback(hObject, eventdata, handles)global hsinx=linspace(0,2*pi);y=sin(x);hsin=plot(x,y);title('Ham sin(x)')% --------------------------------------------------------------------function Hinh_sinc_Callback(hObject, eventdata, handles)global hsinx=linspace(-2*pi,2*pi);y=sinc(x);hsin=plot(x,y);title('Ham sinc(x)')
CHƯƠNG 7: GUI VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
446
II.TẠO MENU BẰNG GUI
% --------------------------------------------------------------------function Hinh_cos_Callback(hObject, eventdata, handles)global hsinx=linspace(0,2*pi);y=cos(x);hsin=plot(x,y);title('Ham cos(x)')% --------------------------------------------------------------------function Hinh_tan_Callback(hObject, eventdata, handles)global hsinx=linspace(-2*pi,2*pi);y=tan(x);hsin=plot(x,y);title('Ham tan(x)')% --------------------------------------------------------------------function View_2D_Callback(hObject, eventdata, handles)View(2)
224
CHƯƠNG 7: GUI VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
447
II.TẠO MENU BẰNG GUI
% --------------------------------------------------------------------function View_3D_Callback(hObject, eventdata, handles)View(3)% --------------------------------------------------------------------function Zoom_fill_Callback(hObject, eventdata, handles)zoom fill% --------------------------------------------------------------------function Zoom_out_Callback(hObject, eventdata, handles)ax=get(handles.figure1,'CurrentAxes');set(ax,'CameraViewAngleMode','auto');% --------------------------------------------------------------------function Bang_mau_Callback(hObject, eventdata, handles)global hsinuisetcolor(hsin,'Bang mau Windows')% --------------------------------------------------------------------function Thoat_Callback(hObject, eventdata, handles)closereq
CHƯƠNG 7: GUI VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
448
6. Tạo các menu khác (tt)
II.TẠO MENU BẰNG GUI
225
CHƯƠNG 7: GUI VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
449
6. Tạo các menu khác (tt)
II.TẠO MENU BẰNG GUI
CHƯƠNG 7: GUI VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
450
6. Tạo các menu khác (tt)
II.TẠO MENU BẰNG GUI
226
CHƯƠNG 7: GUI VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
451
7. Tạo Contextmenu:Menu hiển thị khi right click trên giao diện chínhMở Menu Editor-Context MenusTạo các contextmenu như hình vẽ:
II.TẠO MENU BẰNG GUI
CHƯƠNG 7: GUI VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
452
7. Tạo Contextmenu (tt)Viết các hàm kích hoạt trong GUI_1.m
Vào Property Inspector-UIContextMenu chọn Loai_viet_ve
II.TẠO MENU BẰNG GUI
% --------------------------------------------------------------------function Loai_1_Callback(hObject, eventdata, handles)global hsinset(hsin,'LineStyle','*')% --------------------------------------------------------------------function Loai_2_Callback(hObject, eventdata, handles)global hsinset(hsin,'LineStyle','.')
227
CHƯƠNG 7: GUI VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
453
7. Tạo Contextmenu (tt)
II.TẠO MENU BẰNG GUI
CHƯƠNG 7: GUI VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
454
III.TẠO CÁC ĐỐI TƯỢNG ĐIỀU KHIỂN
Nội dung:Tạo giao diện để giải bài toán đổi nhiệt độTạo và cách kích hoạt EditTạo và cách kích hoạt SliderTạo và cách kích hoạt RadioButtonTạo và vẽ nhiều hình trên cùng một trục Axes
228
CHƯƠNG 7: GUI VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
455
III.TẠO CÁC ĐỐI TƯỢNG ĐIỀU KHIỂN
1. Tạo GUI:Tạo một blank GUI
CHƯƠNG 7: GUI VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
456
III.TẠO CÁC ĐỐI TƯỢNG ĐIỀU KHIỂN
1. Tạo GUI (tt)Tạo GUI như hình vẽ
frame
Tiêu đề figure
Axes
229
CHƯƠNG 7: GUI VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
457
III.TẠO CÁC ĐỐI TƯỢNG ĐIỀU KHIỂN
1. Tạo GUI (tt)Menu-Inspect Properties Định thuộc tính các đối tượng
Figure
Màu nền giao diện Color Tùy ý
Tên tập tin .m Filename GUI_2
Tên Tiêu đề Name Tao cac doi tuong dieu khien
Độ lớn giao diện Position [10 7 90 20]
Chọn trục vẽ Handle Visibility on
frame1TagTên của frame
Tùy ýBackgroundColorMàu nền
Frame
CHƯƠNG 7: GUI VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
458
III.TẠO CÁC ĐỐI TƯỢNG ĐIỀU KHIỂN
1. Tạo GUI (tt)
Static Text (số lượng 2)
STT Fontsize String Tag
1 12
12
Vao do F: text_DoF
2 Do C la: text_DoC
Slider (số lượng: 1)
32
Value
[0.01 0.1]
SliderStep
0
Min
100
Max
1
STT
Edit (số lượng 2)
12
12
Fontsize
edit_DoC02
edit_DoF321
TagStringSTT
230
CHƯƠNG 7: GUI VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
459
III.TẠO CÁC ĐỐI TƯỢNG ĐIỀU KHIỂN
1. Tạo GUI (tt)
Axes (số lượng:1)
STT NextPlot XGrid
replacechildren on
YGrid ZGrid
1 on on
RadioButton (số lượng: 3)
radiobutton_DoR[0.0]Do R2
[0.0]
[1.0]
Value
Do K
Do C
String
radiobutton_DoK3
radiobutton_DoC1
TagSTT
CHƯƠNG 7: GUI VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
460
III.TẠO CÁC ĐỐI TƯỢNG ĐIỀU KHIỂN
2. Viết hàm kích hoạt các đối tượng:Thêm vào nội dung GUI_2.m
% Chương trình kích hoạt edit_DoF để lần lượt đổi nhiệt độfunction edit_DoF_Callback(hObject, eventdata, handles)F=get(handles.edit_DoF,'string');F=eval(F);doC=get(handles.radiobutton_DoC,'value');doR=get(handles.radiobutton_DoR,'value');doK=get(handles.radiobutton_DoK,'value');if (doC)
kq=(F-32)*(5/9);elseif (doK)
C=(F-32)*(5/9);kq=C+273.15;
elseif (doR)kq=F+459.7;
endset(handles.edit_DoC,'string',num2str(kq))
231
CHƯƠNG 7: GUI VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
461
% Chương trình cho phép chọn một RadioButton duy nhất% --- Executes on button press in radiobutton_DoC.function radiobutton_DoC_Callback(hObject, eventdata, handles)set(handles.radiobutton_DoC,'value',1);set(handles.radiobutton_DoR,'value',0);set(handles.radiobutton_DoK,'value',0);% Gọi đến hàm kích hoạt edit_DoFedit_DoF_Callback(hObject, eventdata, handles)% --- Executes on button press in radiobutton_DoR.function radiobutton_DoR_Callback(hObject, eventdata, handles)set(handles.radiobutton_DoC,'value',0);set(handles.radiobutton_DoR,'value',1);set(handles.radiobutton_DoK,'value',0);edit_DoF_Callback(hObject, eventdata, handles)% --- Executes on button press in radiobutton_DoK.function radiobutton_DoK_Callback(hObject, eventdata, handles)set(handles.radiobutton_DoC,'value',0);set(handles.radiobutton_DoR,'value',0);set(handles.radiobutton_DoK,'value',1);edit_DoF_Callback(hObject, eventdata, handles)
CHƯƠNG 7: GUI VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
462
III.TẠO CÁC ĐỐI TƯỢNG ĐIỀU KHIỂN
2. Viết hàm kích hoạt các đối tượng (tt)Chạy tập tin GUI_2.mNhập giá trị vào lần lượt chọn các RadioButton
232
CHƯƠNG 7: GUI VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
463
III.TẠO CÁC ĐỐI TƯỢNG ĐIỀU KHIỂN
2. Viết hàm kích hoạt các đối tượng (tt)Viết hàm kích hoạt cho slider
% --- Executes on slider movement.function slider1_Callback(hObject, eventdata, handles)value=get(handles.slider1,'value');set(handles.edit_DoF,'string',num2str(value));edit_DoF_Callback(hObject, eventdata, handles);
CHƯƠNG 7: GUI VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
464
III.TẠO CÁC ĐỐI TƯỢNG ĐIỀU KHIỂN
3. Vẽ nhiều hình trên cùng một trục:Viết hàm thêm vào để vẽ hình:
function vehinh_Callback(hObject, eventdata, handles)fahr=get(handles.edit_DoF,'string');fahr=str2num(fahr);f=[fahr-50,fahr,fahr+50];t=f+459.7;t(2,1:3)=(f-32)*5/9;t(3,1:3)=t(1,1:3)+273.15;names(1,:)='Do rankine';names(2,:)='Do C ';names(3,:)='Do Kenvil ';hh=plot(f,t(1,1:3),'-',f(2),t(1,2),'*',f,t(2,1:3),'-',f(2),t(2,2),'+',...
f,t(3,1:3),'-',f(2),t(3,2),'>');text(f(1),t(1,3),names(1,:),'fontname','SVnhelvetica','fontsize',10,'color','r');text(f(1),t(2,3),names(2,:),'fontname','SVnhelvetica','fontsize',10,'color','b');text(f(1),t(3,3),names(3,:),'fontname','SVnhelvetica','fontsize',10,'color','g');
233
CHƯƠNG 7: GUI VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
465
III.TẠO CÁC ĐỐI TƯỢNG ĐIỀU KHIỂN
3. Vẽ nhiều hình trên cùng một trục (tt)Viết thêm vào cuối hàm edit_DoF_Callback câu lệnh sau:
function edit_DoF_Callback(hObject, eventdata, handles)% hObject handle to edit_DoF (see GCBO)
::
vehinh_Callback(hObject, eventdata, handles);
CHƯƠNG 7: GUI VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
466
III.TẠO CÁC ĐỐI TƯỢNG ĐIỀU KHIỂN
3. Vẽ nhiều hình trên cùng một trục (tt)
234
CHƯƠNG 7: GUI VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
467
Nội dung:Tạo và Callback ButtonTạo TooltipString cho các đối tượngTạo timerĐo tần số
IV.ĐO TẦN SỐ
CHƯƠNG 7: GUI VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
468
1. Tạo GUI:Tạo một GUI như hình vẽ:
IV.ĐO TẦN SỐ
235
CHƯƠNG 7: GUI VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
469
1. Tạo GUI (tt)Menu-Inspect Properties Định thuộc tính các đối tượng
IV.ĐO TẦN SỐ
Figure
Màu nền giao diện Color Tùy ý
Tên tập tin .m Filename GUI_3
Tên Tiêu đề Name Do tan so
Độ lớn giao diện Position [1 1 128 36]
Chọn trục vẽ Handle Visibility on
frameTagTên của frame
Tùy ýBackgroundColorMàu nền
Frame
CHƯƠNG 7: GUI VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
470
IV.ĐO TẦN SỐStatic Text (số lượng 12)
STT Fontsize String Tag
1 30
30
11
11
11
15
15
15
11
15
15
15
Song sin co F = text_title
2 7:38:18 text_clock
4 Vao tan so: text_TSo
5 LenStart text_LenStart
6 0 text_Start0
7 1 text_Start1
8 100 text_Start100
9 LenStop text_LenStop
10 0 text_Stop0
11 100
3 Vao bien do: text_BDo
12
text_Stop100
100 text_Stop1000
236
CHƯƠNG 7: GUI VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
471
IV.ĐO TẦN SỐEdit (số lượng: 2)
STT String Tag TooltipString
1 1
2
edit_BDo Vao bien do
2 edit_TSo Vao tan so
100
100
Value
[0.01 0.1]
[0.01 0.1]
SliderStep
0
0
Min
Slider (số lượng: 2)
100
100
Max
Gio han cuoislider_Stop2
Gioi han dauslider_Start1
TooltipStringTagSTT
RadioButton (số lượng: 3)
Chack vao de doi mauradiobutton_Color[0.0]Doi mau2
[1.0]
[0.0]
Value
Grid
Do tan so
String
Check vao de chon luoiradiobutton_Grid3
Check vao de do tan soradiobutton_TSo1
TooltipStringTagSTT
CHƯƠNG 7: GUI VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
472
IV.ĐO TẦN SỐ
PushButton (số lượng:1)
STT String Fontsize
Close 20
Tag TooltipString
1 pushbutton_Close Thoat khoi ung dung
Axes (số lượng:1)
on
XGrid
replacechildren
NextPlot
onon1
ZGridYGridSTT
237
CHƯƠNG 7: GUI VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
473
1. Tạo GUI (tt)Khi chạy ta có giao diện như sau:
IV.ĐO TẦN SỐ
CHƯƠNG 7: GUI VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
474
IV.ĐO TẦN SỐ
2. Viết hàm kích hoạt các đối tượng:Tạo các hàm CreatFcn và CloseRequestFcn
238
CHƯƠNG 7: GUI VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
475
IV.ĐO TẦN SỐ
2. Viết hàm kích hoạt các đối tượng (tt)Thêm vào nội dung GUI_3.m
%----------------------------------------------------------------function varargout = GUI_3_OutputFcn(hObject, eventdata, handles)varargout{1} = handles.output;Timer(handles); % Gọi hàm timer%----------------------------------------------------------------function Timer(handles)% Hàm hiển thị đồng hồ hệ thốngwhile find(get(0,'children')==handles.figure1)
now=fix(clock);timestr=[num2str(now(4)) ':' sprintf('%02d',now(5))];timestr=[timestr ':' sprintf('%02d',now(6))];set(handles.text_clock,'string',timestr);pause(1);
end%----------------------------------------------------------------
CHƯƠNG 7: GUI VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
476
IV.ĐO TẦN SỐ
2. Viết hàm kích hoạt các đối tượng (tt)
function Vesin(handles)global Hsin y %Khai bao bien toan cucBiendo=get(handles.edit_BDo,'string'); %Lay day du thong so de veBiendo=eval(Biendo);Tanso=get(handles.edit_TSo,'string');Tanso=eval(Tanso);Lenstart=get(handles.slider_Start,'value');Lenstop=get(handles.slider_Stop,'value');x=linspace(1,2*Tanso*pi+1);y=Biendo*sin(x); %Noi suy truoc khi veHsin=plot(y(Lenstart:Lenstop)); %Ve vao truc duoc taostr=[sprintf('Song sin co F = %.2g',Tanso)]; %Thay doi tua deset(handles.text_title,'string',str);str=[sprintf('%g',Lenstart)];set(handles.text_Start1,'string',str);str=[sprintf('%g',Lenstop)];set(handles.text_Stop100,'string',str);
239
CHƯƠNG 7: GUI VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
477
IV.ĐO TẦN SỐ
2. Viết hàm kích hoạt các đối tượng (tt)Callback cho các đối tượng:
%------------------------------------------------------------------------------function edit_BDo_Callback(hObject, eventdata, handles)Vesin(handles);%------------------------------------------------------------------------------function edit_TSo_Callback(hObject, eventdata, handles)Vesin(handles);% --- Executes on slider movement.function slider_Start_Callback(hObject, eventdata, handles)Vesin(handles);% --- Executes on slider movement.function slider_Stop_Callback(hObject, eventdata, handles)Vesin(handles);% --- Executes on button press in pushbutton_Close.function pushbutton_Close_Callback(hObject, eventdata, handles)closereq;
CHƯƠNG 7: GUI VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
478
IV.ĐO TẦN SỐ
2. Viết hàm kích hoạt các đối tượng (tt)
% --- Executes on button press in radiobutton_TSo.function radiobutton_TSo_Callback(hObject, eventdata, handles)global y[x1,y1]=ginput(1);text(x1,y1,'|-->','color','r')[x2,y2]=ginput(1);text(x2-4,y2,'<--|','color','r')Len=length(y);F=Len/(x2-x1);string=[sprintf('%.2g',F)];text((x2+x1-4)/2,y1,string,'color','r');set(gcbo,'value',0);string=[sprintf('Song sin co F = %.2g',F)];set(handles.text_title,'string',string);
240
CHƯƠNG 7: GUI VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
479
IV.ĐO TẦN SỐ
2. Viết hàm kích hoạt các đối tượng (tt)% --- Executes on button press in radiobutton_Color.function radiobutton_Color_Callback(hObject, eventdata, handles)global Hsinuisetcolor(Hsin,'Bang mau windows');set(handles.radiobutton_Color,'value',0);% --- Executes on button press in radiobutton_Grid.function radiobutton_Grid_Callback(hObject, eventdata, handles)check=get(gcbo,'value');if (check==1)
grid onelse
grid offend
CHƯƠNG 7: GUI VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
480
IV.ĐO TẦN SỐ
3. Thực thi ứng dụng:
241
CHƯƠNG 7: GUI VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
481
Nội dung:Tạo và callback checkboxTạo TooltipString cho các đối tượngFormat và đặt nhãn cho trục vẽVẽ hình bằng cách đặt lạiTạo popupmenu
V.ĐỒ HỌA 2D
CHƯƠNG 7: GUI VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
482
1. Tạo GUI:Tạo một GUI như hình vẽ:
V.ĐỒ HỌA 2D
242
CHƯƠNG 7: GUI VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
483
1. Tạo GUI (tt)Định các thuộc tính cho các đối tượng
V.ĐỒ HỌA 2D
Figure
Màu nền giao diện Color Tùy ý
Tên tập tin .m Filename GUI_4
Tên Tiêu đề Name Do hoa 2D
Độ lớn giao diện Position [1 1 128 36]
Chọn trục vẽ Handle Visibility on
frameTagTên của frame
Tùy ýBackgroundColorMàu nền
Frame
Axes (số lượng:1)
onXGrid
replacechildrenNextPlot
onon1ZGridYGridSTT
CHƯƠNG 7: GUI VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
484
1. Tạo GUI (tt)
V.ĐỒ HỌA 2D
Static Text (số lượng 8)
STT Fontsize String Tag
1 30
12
12
12
12
12
12
12
Ham: x.^2 text_hamve
2 Vao ham can ve: text_ham
4 Loai viet text_loaiviet
5 Mau dau text_Start
6 Mau cuoi text_Stop
7 -8 text_piStart
8 8
3 Loai net: text_loainet
text_piStop
x.^2
String
Vao ham can veedit_ham1
TooltipStringTagSTT
Edit (số lượng: 1)
243
CHƯƠNG 7: GUI VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
485
1. Tạo GUI (tt)
V.ĐỒ HỌA 2D
popupmenu (số lượng: 2)
STT String UserData
str2mat('1','2','3','4','5')
str2mat(':','--','+','*','>')
Tag TooltipString
1
Value
Loai 1Loai 2Loai 3Loai 4Loai 5
[1.0]
2
Loai :Loai –Loai +Loai *Loai >
[1.0]
Popupmenu_net Chon net pen
Popupmenu_loai Chon loai pen
CHƯƠNG 7: GUI VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
486
1. Tạo GUI (tt)
V.ĐỒ HỌA 2D
Slider (số lượng: 2)
STT Max Min SliderStep Value
[0.0625 0.125] -8
8[0.0625 0.125]
-8
Tag TooltipString
1
0
0
100
slider_Start Gioi han thap
2 slider_Stop Gio han cao
PushButton (số lượng:1)
20
Fontsize
Quit
String
Thoat ve Windowspushbutton_Quit1
TooltipStringTagSTT
Check box (số lượng:1)
12
Fontsize
Doi Font
String
Chon FontCheckbox_Font1
TooltipStringTagSTT
244
CHƯƠNG 7: GUI VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
487
1. Các hàm kích hoạt:Thêm vào nội dung GUI_4.m:
V.ĐỒ HỌA 2D
% --- Executes during object creation, after setting all properties.function frame_CreateFcn(hObject, eventdata, handles)global Start Stop hinhStart=-8;Stop=8;% Dat tua de cho nhan va tructitle('Hinh ve','Fontsize',15,'Color','r');xlabel('Truc x','Fontsize',15,'Color','r');ylabel('Truc y','Fontsize',15,'Color','r');x=linspace(-8,8);func=x.^2;hinh=plot(x,func);% --- Executes when user attempts to close figure1.function figure1_CloseRequestFcn(hObject, eventdata, handles)%delete(hObject);closereq
CHƯƠNG 7: GUI VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
488
1. Các hàm kích hoạt (tt)
V.ĐỒ HỌA 2D
function edit_ham_Callback(hObject, eventdata, handles)global Start Stop hinhfunc=get(hObject,'string'); str=['Ham : ' func];x=linspace(Start,Stop); func=eval(func);hinh=plot(x,func);set(handles.text_hamve,'string',str);% --- Executes on selection change in popupmenu_net.function popupmenu_net_Callback(hObject, eventdata, handles)global hinhgiatri=get(hObject,'value');loai=get(hObject,'UserData');set(hinh,'LineWidth',str2num(loai(giatri,:)))% --- Executes on selection change in popupmenu_loaiviet.function popupmenu_loaiviet_Callback(hObject, eventdata, handles)global hinhgiatri=get(hObject,'value');loai=get(hObject,'UserData');set(hinh,'LineStyle',loai(giatri,:))
245
CHƯƠNG 7: GUI VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
489
V.ĐỒ HỌA 2D
% --- Executes on button press in checkbox_Font.function checkbox_Font_Callback(hObject, eventdata, handles)check=get(hObject,'value')if (check==1)
uisetfont(handles.text_hamve,'Bang chon Font')set(hObject,'value',0)
end% --- Executes on slider movement.function slider_Start_Callback(hObject, eventdata, handles)global StartStart=get(hObject,'value')set(handles.text_piStart,'string',num2str(Start))Truc;% --- Executes on slider movement.function slider_Stop_Callback(hObject, eventdata, handles)global StopStop=get(hObject,'value')set(handles.text_piStop,'string',num2str(Stop))Truc;
CHƯƠNG 7: GUI VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
490
1. Các hàm kích hoạt (tt)
V.ĐỒ HỌA 2D
% --- Ham doi truc vefunction Trucglobal Start StophandlesAxis=get(gcf,'CurrentAxes');set(handlesAxis,...
'XLim',[Start Stop],...'XTick',linspace(Start,Stop,5),...'XTickLabel',{num2str(Start),...
'',...num2str((Start+Stop)/2),...'',...num2str(Stop)});
% --- Executes on button press in pushbutton_quit.function pushbutton_quit_Callback(hObject, eventdata, handles)quit
246
CHƯƠNG 7: GUI VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
491
3. Chạy ứng dụng:
V.ĐỒ HỌA 2D
CHƯƠNG 7: GUI VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
492
Nội dung:Tạo và callback listboxĐồ họa 3D
VI.ỨNG DỤNG CÁC HÀM VẼ 3D
247
CHƯƠNG 7: GUI VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
493
1. Tạo GUI:Tạo một GUI như hình vẽ:
VI.ỨNG DỤNG CÁC HÀM VẼ 3D
CHƯƠNG 7: GUI VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
494
1. Tạo GUI (tt)Định thuộc tính các đối tượng
VI.ỨNG DỤNG CÁC HÀM VẼ 3D
Figure
Màu nền giao diện Color Tùy ý
Tên tập tin .m Filename GUI_5
Tên Tiêu đề Name Do hoa 3D
Độ lớn giao diện Position [1 1 128 36]
Chọn trục vẽ Handle Visibility on
frame1TagTên của frame
Tùy ýBackgroundColorMàu nền
Frame
248
CHƯƠNG 7: GUI VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
495
VI.ỨNG DỤNG CÁC HÀM VẼ 3D
Static Text (số lượng 6)
STT Fontsize String Visible
off
off
off
off
off
Tag
1
on
Ham peaks text_title
2
30
12
12
12
12
Ham ve 3D: text_hamve3D
4 Truc 3D: text_truc
5 Kieu: text_kieu
6 Bai tap ung dung30 text_baitap
3 Shapding: text_shapding
off
Visible
Edit (số lượng 1)
12
Fontsize
Edit_hamve3Dpeaks1
TagStringSTT
CHƯƠNG 7: GUI VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
496
VI.ỨNG DỤNG CÁC HÀM VẼ 3D
Popupmenu (số lượng 2)
STT String value UserData
{'faceted';'flat';'interp'}
{'on';'off';'ij';'xy'}
Tag
1
Visible
[1.0]facetedflatinterp
Popupmenu_shapding
2
off
[1.0] off
onoffijxy
Popupmenu_truc
off
off
off
Visible
Pushbutton (số lượng 3)
12
12
12
Fontsize
pushbuttom_helpHelp2
pushbuttom_moveMove1
pushbuttom_closeClose3
TagStringSTT
249
CHƯƠNG 7: GUI VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
497
VI.ỨNG DỤNG CÁC HÀM VẼ 3D
listbox (số lượng 1)
STT String value UserData
str2mat('surf','surfl','mesh',…'meshz','waterfall','pcolor')
Tag
1
Visible
[1.0]
surfsurflmeshmeshzwaterfallpcolor
off listbox_kieu
Axes (số lượng:1)
on
Visible
on
XGrid
replacechildren
NextPlot
onon1
ZGridYGridSTT
CHƯƠNG 7: GUI VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
498
2. Viết các hàm kích hoạt:Thêm vào nội dung GUI_5.m
VI.ỨNG DỤNG CÁC HÀM VẼ 3D
%----------------------------------------------------------------function edit_hamve3D_Callback(hObject, eventdata, handles)Ve3D(handles);% --- Executes on selection change in popupmenu_shapding.function popupmenu_shapding_Callback(hObject, eventdata, handles)value=get(handles.popupmenu_shapding,'value');color=get(handles.popupmenu_shapding,'UserData');Shading(color{value})% --- Executes on selection change in popupmenu_truc.function popupmenu_truc_Callback(hObject, eventdata, handles)value=get(handles.popupmenu_truc,'value');truc=get(handles.popupmenu_truc,'UserData');axis(truc{value})% --- Executes on selection change in listbox_kieu.function listbox_kieu_Callback(hObject, eventdata, handles)Ve3D(handles);
250
CHƯƠNG 7: GUI VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
499
2. Viết các hàm kích hoạt (tt)
VI.ỨNG DỤNG CÁC HÀM VẼ 3D
% --- Executes on button press in pushbutton_move.function pushbutton_move_Callback(hObject, eventdata, handles)for j=1:10
view(-37.5+24*(j-1),30);n(:,1)=getframe;
endmovie(n,5)% --- Executes on button press in pushbutton_help.function pushbutton_help_Callback(hObject, eventdata, handles)graf3d('info')% --- Executes on button press in pushbutton_close.function pushbutton_close_Callback(hObject, eventdata, handles)closereq% --- Executes when user attempts to close figure1.function figure1_CloseRequestFcn(hObject, eventdata, handles)delete(hObject);closereq
CHƯƠNG 7: GUI VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
500
2. Viết các hàm kích hoạt (tt)
VI.ỨNG DỤNG CÁC HÀM VẼ 3D
% --- If Enable == 'on', executes on mouse press in 5 pixel border.function varargout = text_baitap_ButtonDownFcn(hObject, eventdata, handles)handles=guihandles(gcbo); %Lay tat ca cac handlepromptstr={'Cho vao password'};inistr={''}; dlgTitle='Nhap Password'; lineNo=1;result=inputdlg(promptstr,dlgTitle,lineNo,inistr);if strcmp(result,'GUI_5')
set(handles.text_baitap,'visible','off');set(handles.frame1,'visible','on')set(handles.text_hamve3D,'visible','on'); set(handles.edit_hamve3D,'visible','on')set(handles.text_shapding,'visible','on'); set(handles.popupmenu_shapding,'visible','on'); ………
251
CHƯƠNG 7: GUI VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
501
2. Viết các hàm kích hoạt (tt)
VI.ỨNG DỤNG CÁC HÀM VẼ 3D
………set(handles.text_truc,'visible','on');set(handles.popupmenu_truc,'visible','on'); set(handles.text_kieu,'visible','on');set(handles.listbox_kieu,'visible','on');set(handles.text_title,'visible','on');set(handles.axes1,'visible','on'); set(handles.pushbutton_close,'visible','on');set(handles.pushbutton_help,'visible','on'); set(handles.pushbutton_move,'visible','on');Ve3D(handles);
elseerrordlg('Password ?');
end
CHƯƠNG 7: GUI VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
502
2. Viết các hàm kích hoạt (tt)
VI.ỨNG DỤNG CÁC HÀM VẼ 3D
function Ve3D(handles)global Hhinhfunc=get(handles.edit_hamve3D,'string');[x,y]=meshgrid(-2*pi:.5:2*pi,-2*pi:.5:2*pi);z=eval(func);giatri=get(handles.listbox_kieu,'value');loai=get(handles.listbox_kieu,'UserData');str=['Loai' ':' loai(giatri,:)];set(handles.text_title,'string',str)if (giatri==1) Hhinh=surf(z);elseif (giatri==2) Hhinh=surfl(z);elseif (giatri==3) Hhinh=mesh(z);elseif (giatri==4) Hhinh=meshz(z);elseif (giatri==5) Hhinh=waterfall(z);elseif (giatri==6) Hhinh=pcolor(z);end
252
CHƯƠNG 7: GUI VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
503
3. Thực thi ứng dụng:Nhập mật khẩu
VI.ỨNG DỤNG CÁC HÀM VẼ 3D
CHƯƠNG 7: GUI VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
504
3. Thực thi ứng dụng (tt)
VI.ỨNG DỤNG CÁC HÀM VẼ 3D
253
CHƯƠNG 7: GUI VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
505
Nội dung:Vẽ với nhiều trụcBiến điệu AM, FM, PM
VII.BIẾN ĐIỆU ANALOG
CHƯƠNG 7: GUI VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
506
1. Tạo GUI:
Tạo một GUI như hình vẽ:
VII.BIẾN ĐIỆU ANALOG
254
CHƯƠNG 7: GUI VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
507
1. Tạo GUI (tt)
Định các thuộc tính:
VII.BIẾN ĐIỆU ANALOG
Đối tượng STT String Fontsize
1 30
12
12
12
12
Popup Menu 1AMFMPM
10 Popupmenu_BD
1 2 10 edit_Fs
2 5 10 edit_FcEdit Text
10
2
3
4
5
3
Tag
Bien dieu Analog text_title
Loai bien dieu: text_hamve3D
Tan so Fc text_truc
Chi so m text_kieu
0.9 edit_m
Tan so FS text_shapdingStatic Text
CHƯƠNG 7: GUI VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
508
1. Tạo GUI (tt)
Định các thuộc tính:
VII.BIẾN ĐIỆU ANALOG
Đối tượng STT String Fontsize
1
2
Tag
Bien dieu pushbutton_BD
Close pushbutton_closePushButton
on
YGrid
on
XGrid
axes1
onreplacechildren
1
Axes axes22
ZGrid
3
STT
axes3
TagNextPlotĐối tượng
255
CHƯƠNG 7: GUI VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
509
2. Tạo các hàm kích hoạt:Bổ sung vào tập tin GUI_6.m
VII.BIẾN ĐIỆU ANALOG
% --- Executes on button press in pushbutton_BD.function pushbutton_BD_Callback(hObject, eventdata, handles)Biendieu(handles)% --- Executes on button press in pushbutton_close.function pushbutton_close_Callback(hObject, eventdata, handles)closereq;% --- Executes during object creation, after setting all properties.function frame_CreateFcn(hObject, eventdata, handles)handles=guihandles(gcbo);Biendieu(handles)
CHƯƠNG 7: GUI VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
510
2. Tạo các hàm kích hoạt (tt)
VII.BIẾN ĐIỆU ANALOG
% Ham tu viet de ve hinhfunction Biendieu(handles)loai=get(handles.popupmenu_BD,'value');Fs=get(handles.edit_Fs,'string'); Fs=eval(Fs);Fc=get(handles.edit_Fc,'string'); Fc=eval(Fc);m=get(handles.edit_m,'string'); m=eval(m);switch (loai)
case 1AM(handles,Fs,Fc,m)set(handles.text_title,'string','Bien dieu AM');
case 2FM(handles,Fs,Fc,m)set(handles.text_title,'string','Bien dieu FM');
case 3PM(handles,Fs,Fc,m)set(handles.text_title,'string','Bien dieu PM');
end
256
CHƯƠNG 7: GUI VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
511
2. Tạo các hàm kích hoạt (tt)
VII.BIẾN ĐIỆU ANALOG
% Ham tu viet de bien dieu AMfunction AM(handles,Fs,Fc,m)t=(0:1000)/1000; x=cos(2*pi*Fs*t); c=cos(2*pi*Fc*t);y=0.5*(1+m*x).*c;plot(t,m*x,'Parent',handles.axes1);plot(t,y,'Parent',handles.axes2);[f,Pyy]=Pho(handles,y);plot(f,Pyy(1:257),'r','Parent',handles.axes3);% Ham tu viet de bien dieu FMfunction FM(handles,Fs,Fc,m)t=(0:1000)/1000; x=cos(2*pi*Fs*t); c=cos(2*pi*Fc*t);y=cos((2*pi*Fc*t)+(m/(2*pi*Fs))*200*sin(2*pi*Fs*t));plot(t,m*x,'Parent',handles.axes1);plot(t,y,'Parent',handles.axes2);[f,Pyy]=Pho(handles,y);plot(f,Pyy(1:257),'r','Parent',handles.axes3);
CHƯƠNG 7: GUI VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
512
2. Tạo các hàm kích hoạt (tt)
VII.BIẾN ĐIỆU ANALOG
% Ham tu viet de bien dieu PMfunction PM(handles,Fs,Fc,m)t=(0:1000)/1000; x=cos(2*pi*Fs*t); c=cos(2*pi*Fc*t);y=cos((2*pi*Fc*t)+(m/(2*pi*Fs))*200*cos(2*pi*Fs*t));plot(t,m*x,'Parent',handles.axes1);plot(t,y,'Parent',handles.axes2);[f,Pyy]=Pho(handles,y);plot(f,Pyy(1:257),'r','Parent',handles.axes3);% Ham tu viet de ve phofunction [f,Pyy]=Pho(handles,y)yy=fft(y,512);Pyy=yy.*conj(yy)/512;f=1000*(0:256)/512
257
CHƯƠNG 7: GUI VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
513
3. Chạy ứng dụng:
VII.BIẾN ĐIỆU ANALOG
CHƯƠNG 7: GUI VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
514
3. Chạy ứng dụng:
VII.BIẾN ĐIỆU ANALOG
258
CHƯƠNG 7: GUI VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
515
Nội dung:Vẽ với nhiều trụcBiến điệu ASK, FSK, PSK
VIII.BIẾN ĐIỆU DIGITAL
CHƯƠNG 7: GUI VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
516
1. Tạo GUI:Tạo một GUI như hình vẽ:
VIII.BIẾN ĐIỆU DIGITAL
259
CHƯƠNG 7: GUI VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
517
1. Tạo GUI (tt)Các thuộc tính của các component
VIII.BIẾN ĐIỆU DIGITAL
Đối tượng STT String Fontsize
1 30
12
12
12
5 Hang so lay mau: 12 text_laymau
6 Song mang Fc: 12 text_Fc
Static Text
7 Nhap Fmark 12 text_Fmark
12
Popup Menu 1ASKFSKPSK
10 Popupmenu_BD
2
3
4
8
Tag
Bien dieu text_title
Loai bien dieu: text_BD
Toc do bit: text_tocdo
Nhap Fspace: text_Fspace
Nhap chuoi so: text_chuoiso
CHƯƠNG 7: GUI VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
518
1. Tạo GUI (tt)
VIII.BIẾN ĐIỆU DIGITAL
Đối tượng STT String Fontsize
1 1 0 1 0 0 1 10 edit_chuoiso
2 300 10 edit_tocdo
3 120 10 edit_laymauEdit Text
6 2000 10 edit_Fspace
PushButton 1 Bien dieu 20 pushbutton_BD
4 1500 10 edit_Fc
5 1200 10 edit_Fmark
Tag
on
YGrid
on
XGrid
axes1
onreplacechildren
1
Axes axes22
ZGrid
3
STT
axes3
TagNextPlotĐối tượng
260
CHƯƠNG 7: GUI VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
519
2. Tạo các hàm callback:
VIII.BIẾN ĐIỆU DIGITAL
function popupmenu_BD_Callback(hObject, eventdata, handles)value=get(gcbo,'value');if value==1 %ASK
set(handles.edit_Fc,'enable','on')set(handles.edit_Fmark,'enable','off')set(handles.edit_laymau,'enable','off')
elseif value==2 %FSKset(handles.edit_Fc,'enable','off')set(handles.edit_Fmark,'enable','on')set(handles.edit_laymau,'enable','on')
elseif value==3 %PSKset(handles.edit_Fc,'enable','on')set(handles.edit_Fmark,'enable','off')set(handles.edit_laymau,'enable','off')
end% --- Executes on button press in pushbutton_BD.function pushbutton_BD_Callback(hObject, eventdata, handles)Biendieu(handles);
CHƯƠNG 7: GUI VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
520
VIII.BIẾN ĐIỆU DIGITAL% --- Executes during object creation, after setting all properties.function frame1_CreateFcn(hObject, eventdata, handles)handles=guihandles(gcbo);Biendieu(handles);% --- Ham bien dieufunction Biendieu(handles)% Nhan chuoi sobinary_seq=get(handles.edit_chuoiso,'string');binary_seq=str2num(binary_seq);%Nhan gia tri toc do bitR=get(handles.edit_tocdo,'string');R=eval(R);%Nhan gia tri FcFc=get(handles.edit_Fc,'string');Fc=eval(Fc);%Nhan gia tri hang lay mauSampling=get(handles.edit_laymau,'string');Sampling=eval(Sampling);%Nhan gia tri Fmark(Fcmin) la tan so nho nhat cua song mang……
261
CHƯƠNG 7: GUI VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
521
VIII.BIẾN ĐIỆU DIGITAL......Fmark=get(handles.edit_Fmark,'string');Fmark=eval(Fmark);%Nhan gia tri Fspace(Fcmin) la tan so cao nhat cua song mangFspace=get(handles.edit_Fspace,'string');Fspace=eval(Fspace);Fs=R*Sampling;%Xet muc duoc chon trong popupmenuLoaiBD=get(handles.popupmenu_BD,'value');if LoaiBD==1 %ASK
if (Fc>=(R*Sampling)/2)ErrorDlg('Fspace<Sampling*(R/2)'); return;
endve_digital(handles,binary_seq,Fs)out=ASK(handles,binary_seq,Fc,Fs,R);Pho_digital(handles,out);set(handles.text_title,'string','Bien dieu ASK')
elseif LoaiBD==2 %FSKif (Fc>=(R*Sampling)/2)
……
CHƯƠNG 7: GUI VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
522
VIII.BIẾN ĐIỆU DIGITAL
……ErrorDlg('Fspace<Sampling*(R/2)'); return;
endif (Fmark<R)
ErrorDlg('Fmark>=R'); return;endve_digital(handles,binary_seq,Fs)out=FSK(handles,binary_seq,[Fmark Fspace],Fs,R);Pho_digital(handles,out);set(handles.text_title,'string','Bien dieu FSK')
elseif LoaiBD==3 %PSKif (Fc>=(R*Sampling)/2)
ErrorDlg('Fspace<Sampling*(R/2)'); return;endve_digital(handles,binary_seq,Fs)out=PSK(handles,binary_seq,Fc,Fs,R);Pho_digital(handles,out);set(handles.text_title,'string','Bien dieu PSK')
end
262
CHƯƠNG 7: GUI VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
523
VIII.BIẾN ĐIỆU DIGITAL
% Ham ve tin hieu sofunction ve_digital(handles,binary_seq,Fs)SAMPLING_FREQ=Fs;Ts=1/SAMPLING_FREQ;binary_seq=binary_seq(:); %Doi thanh cotno_sample=length(binary_seq); %Xet chieu dai chuoiamplitude=max(abs(binary_seq));time=[1:(no_sample)]*Ts;ax=[min(time)/100 max(time) -2*amplitude 2*amplitude];axes(handles.axes1)stair(time,binary_seq); %Ham ve tin hieu soaxis(ax);set(gca,'XTickLabel',{'','','','','',''});xlabel('Tin hieu nen','fontname','SVNhelvetica','fontsize',12,'color','r');% --- Ham stair ---function [xo,yo]=stair(x,y)n=length(x);……
CHƯƠNG 7: GUI VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
524
VIII.BIẾN ĐIỆU DIGITAL
……if nargin==1
y=x; x=1:n;enddelta=(max(x)-min(x))/(n-1);nn=2*n;yy=zeros(nn+2,1);xx=yy;t=x(:)'-delta;xx(1:2:nn)=t;xx(2:2:nn)=t;xx(nn+1:nn+2)=t(n)+[delta;delta];yy(2:2:nn)=y;yy(3:2:nn+1)=y;if nargout==0
plot(xx,yy)else
xo=xx; yo=yy;end
263
CHƯƠNG 7: GUI VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
525
VIII.BIẾN ĐIỆU DIGITAL
% Ham bien dieu ASKfunction out=ASK(handles,binary_seq,Fc,Fs,R)%Tao data cua dang song khong tro ve zero nrzx=wave_gen(handles,binary_seq,'unipolar_nrz',Fs,R);out=mixer(x,osc(Fc,Fs));Ts=1/Fc;out=out(:);no_sample=length(out);amplitude=max(abs(out));t=[1:(no_sample)]*Ts;ax=[min(t) max(t) -2*amplitude 2*amplitude]axes(handles.axes2)y=plot(t,out);axis(ax);set(gca,'XTickLabel',{'','','','','',''});xlabel('Tin hieu sau khi bien dieu','fontname',…
'SVNhelvetica','fontsize',12,'color','r');
CHƯƠNG 7: GUI VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
526
VIII.BIẾN ĐIỆU DIGITAL
% Ham tao dang song nrzfunction out=wave_gen(handles,binary_sequence,linecode,Fs,Rb)binary_sequence=binary_sequence(:);if (any(abs(binary_sequence)-sign(binary_sequence)))
error('Khong phai tin hieu digital')endif strcmp(linecode,'unipolar_nrz')
pulse='rect_nrz(Rb,Fs)';b_seq=binary_sequence;
elseif strcmp(linecode,'polar_nrz')pulse='rect_nrz(Rb,Fs)';b_seq=bin2pol(handles,binary_sequence);
elseerror('Ma khong phu hop')
endx=(b_seq*eval(pulse))';out=x(:);
264
CHƯƠNG 7: GUI VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
527
VIII.BIẾN ĐIỆU DIGITAL
%Tao tin hieu khong tro ve zerofunction out=rect_nrz(Rb,Fs)out=ones(1,Fs/Rb);%Ham tao song mangfunction [carrier]=osc(fc,Fs)t=[1:50000]/Fs;carrier=sin(2*pi*t*fc);% Ham tron 2 tin hieufunction [out]=mixer(in,fc)%Z=MIXER(X,Y) Tao chuoi Z: Z(n)=X(n)*Y(n)n=length(in);carrier=fc(1:n);x=in;x=x(:)';out=carrier.*x;
CHƯƠNG 7: GUI VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
528
VIII.BIẾN ĐIỆU DIGITAL
% Ham ve phofunction Pho_digital(handles,x)x=x(:);xx=fft(x,512);Pxx=xx.*conj(xx)/512;f=1000*(0:255)/512;no_sample=length(Pxx);amplitude=max(abs(Pxx));ax=[min(f) max(f) -2*amplitude 2*amplitude]axes(handles.axes3)plot(f,Pxx(1:256),'r');axis(ax);set(gca,'XTickLabel',{'','','','','',''});xlabel('Pho cua song bien dieu','fontname',...
'SVNhelvetica','fontsize',12,'color','r');
265
CHƯƠNG 7: GUI VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
529
VIII.BIẾN ĐIỆU DIGITAL
%Ham bien dieu FSKfunction out=FSK(handles,binary_seq,Fc,Fs,Rb)CARRIER_FREQUENCY=[min(Fc) max(Fc)];x=wave_gen(handles,binary_seq,'polar_nrz',Fs,Rb);f_r=(CARRIER_FREQUENCY(2)+CARRIER_FREQUENCY(1))/2kf=(CARRIER_FREQUENCY(2)-CARRIER_FREQUENCY(1))/2out=vco_digital(x,f_r,kf,Fs);Ts=1/f_r; out=out(:); no_sample=length(out);amplitude=max(abs(out)); t=[1:(no_sample)]*Ts;ax=[min(t) max(t) -2*amplitude 2*amplitude]axes(handles.axes2)y=plot(t,out);axis(ax);set(gca,'XTickLabel',{'','','','','',''});xlabel('Tin hieu sau khi bien dieu','fontname',...
'SVNhelvetica','fontsize',12,'color','r');% Ham luong cuc hoa chuoi nhi phan vaofunction [polar_sequence]=bin2pol(handles,binary_sequence)polar_sequence=2*binary_sequence-ones(size(binary_sequence));
CHƯƠNG 7: GUI VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
530
VIII.BIẾN ĐIỆU DIGITAL% Dao dong duoc dieu khien bang dien thefunction [out]=vco_digital(in,arg2,arg3,Fs)Ts=1/Fs; fc=arg2; kf=arg3;lenfc=ones(length(in),1)*fc;phase=cumsum((lenfc+in*kf)*Ts*2*pi);out=sin(phase);% Ham bien dieu PSKfunction out=PSK(handles,binary_seq,Fc,Fs,Rb)x=wave_gen(handles,binary_seq,'polar_nrz',Fs,Rb);out=mixer(x,osc(Fc,Fs));Ts=1/Fc; out=out(:); no_sample=length(out);amplitude=max(abs(out));t=[1:(no_sample)]*Ts;ax=[min(t) max(t) -2*amplitude 2*amplitude]axes(handles.axes2)plot(t,out);axis(ax);set(gca,'XTickLabel',{'','','','','',''});xlabel('Tin hieu sau khi bien dieu','fontname',...
'SVNhelvetica','fontsize',12,'color','r');
266
CHƯƠNG 7: GUI VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
531
3. Chạy ứng dụng:
VIII.BIẾN ĐIỆU DIGITAL
CHƯƠNG 7: GUI VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
532
3. Chạy ứng dụng (tt)
VIII.BIẾN ĐIỆU DIGITAL
267
CHƯƠNG 7: GUI VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
533
3. Chạy ứng dụng (tt)
VIII.BIẾN ĐIỆU DIGITAL
CHƯƠNG 7: GUI VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
534
IX.CÁC HỘP HỘI THOẠI DIALOG CỦA WINDOWS
Dialog boxes Ý nghĩa
errordlg Tạo dialog box báo lỗi
helpdlg Hiển thị một dialog box giúp đỡ
inputdlg Tạo một dialog box nhập liệu
listdlg Tạo một dialog danh sách chọn lựa
msgbox Tạo một dialog box thông tin
pagedlg Tạo một dialog box page layout
printdlg Hiển thị một dialog in
Các hộp thoại dialog:
268
CHƯƠNG 7: GUI VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
535
IX.CÁC HỘP HỘI THOẠI DIALOG CỦA WINDOWS
Dialog boxes Ý nghĩa
questdlg Tạo một dialog hỏi
uiputfile Hiển thị dialog box nhận tên của file để ghi
uisetcolor Chọn màu bằng bảng màu của windows
uisetfont Chọn font
uigetfile Hiển thị dialog box nhận tên của file cần đọc
warndlg Tạo một dialog cảnh báo
Các hộp thoại dialog (tt)
CHƯƠNG 7: GUI VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
536
IX.CÁC HỘP HỘI THOẠI DIALOG CỦA WINDOWS
1. errordlgCú pháp:
errordlgerrordlg('errorstring')errordlg('errorstring','dlgname')errordlg('errorstring','dlgname','on')%'on' cho phép hay không thay thế dialog có cùng tênh = errordlg(...)
Ví dụ:errordlg('File not found','File Error')
269
CHƯƠNG 7: GUI VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
537
IX.CÁC HỘP HỘI THOẠI DIALOG CỦA WINDOWS
2. helpdlgCú pháp:
helpdlghelpdlg('helpstring')helpdlg('helpstring','dlgname')h = helpdlg(...)
Ví dụ:helpdlg('Choose 10 points from the figure','Point Selection');
CHƯƠNG 7: GUI VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
538
IX.CÁC HỘP HỘI THOẠI DIALOG CỦA WINDOWS
3. inputdlgCú pháp:
answer = inputdlg(prompt)answer = inputdlg(prompt,title)answer = inputdlg(prompt,title,lineNo)answer = inputdlg(prompt,title,lineNo,defAns)answer = inputdlg(prompt,title,lineNo,defAns,Resize)
Trong đó:prompt Các tring xuất hiện trên các hộp nhập liệutitle Tiêu đề của hộp thoạilineNo Số dòng trong ô nhập liệudefAns Kết quả nhập liệu mặc định (xuất hiện ban đầu)resize Cho phép hay không thay đổi kích thước dialog box
'on' hay 'off'
270
CHƯƠNG 7: GUI VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
539
IX.CÁC HỘP HỘI THOẠI DIALOG CỦA WINDOWS
3. inputdlg (tt)Ví dụ:
prompt = {'Enter matrix size:','Enter colormap name:'};title = 'Input for peaks function';lines= 1;def = {'20','hsv'};answer = inputdlg(prompt,title,lines,def);
CHƯƠNG 7: GUI VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
540
IX.CÁC HỘP HỘI THOẠI DIALOG CỦA WINDOWS
4. listdlgCú pháp:
[Selection,ok] = listdlg('ListString',S,...)% Cho phép chọn một hay nhiều item trong danh sách
Trong đó:Selection vector chứa các string được chọnok = 1 khi chọn nút OK
0 khi chọn cancel hoặc đóng hộp thoạiS là các thông số trong bảng sau:
271
CHƯƠNG 7: GUI VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
541
IX.CÁC HỘP HỘI THOẠI DIALOG CỦA WINDOWS
4. listdlg (tt)
Parameter Ý nghĩa
'ListString' Dãy các chuỗi để chọn nằm trong list box
'SelectionMode''single' chỉ cho chọn 1'multiple' (the default) cho phép chọn nhiều
'ListSize'Kích thước list box, tính bằng pixel,là vector [width height]. Mặc định là [160 300]
'CancelString' String cho nút nhấn Cancel. Mặc định là 'Cancel'.
'InitialValue' Item được chọn ban đầu. Mặc định là 1 (item đầu)
'PromptString' Các string xuất hiện phía trên listbox. Mặc định {}
'OKString' String cho nút nhấn OK. Mặc định là 'OK'
'Name' Tieu đề của dialog box. Mặc định là ' '
CHƯƠNG 7: GUI VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
542
IX.CÁC HỘP HỘI THOẠI DIALOG CỦA WINDOWS
4. listdlg (tt)Ví dụ:
d=dir;str={d.name};[s,v]=listdlg('PromptString','Select a file:',...
'SelectionMode','single',...'ListString',str)
272
CHƯƠNG 7: GUI VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
543
IX.CÁC HỘP HỘI THOẠI DIALOG CỦA WINDOWS
5. msgboxCú pháp:
msgbox(message)msgbox(message,title)msgbox(message,title,'icon')msgbox(message,title,'custom',iconData,iconCmap)msgbox(...,'createMode')h = msgbox(...)
Trong đó:'icon' là {'none','error','help','warn','custom'}iconData chứa dữ liệu ảnh tạo nên iconiconCmap Màu dùng cho ảnh'createMode' {'modal','non-modal', 'replace'}
CHƯƠNG 7: GUI VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
544
IX.CÁC HỘP HỘI THOẠI DIALOG CỦA WINDOWS
5. msgbox (tt)Ví dụ:
msgbox('Day la icon giup do','Vi du ve msgbox','help')
msgbox('Day la icon bao loi','Vi du ve msgbox','error')
273
CHƯƠNG 7: GUI VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
545
IX.CÁC HỘP HỘI THOẠI DIALOG CỦA WINDOWS
5. msgbox (tt)Ví dụ:
msgbox('Day la icon canh bao','Vi du ve msgbox','warn')
msgbox('Day la icon binh thuong','Vi du ve msgbox')
CHƯƠNG 7: GUI VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
546
IX.CÁC HỘP HỘI THOẠI DIALOG CỦA WINDOWS
6. pagedlgCú pháp:
pagedlgpagedlg(fig)
274
CHƯƠNG 7: GUI VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
547
IX.CÁC HỘP HỘI THOẠI DIALOG CỦA WINDOWS
7. printdlgCú pháp:
printdlgprintdlg(fig)printdlg('-crossplatform',fig)printdlg('-setup',fig)
CHƯƠNG 7: GUI VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
548
IX.CÁC HỘP HỘI THOẠI DIALOG CỦA WINDOWS
7. printdlg (tt)Ví dụ:
printdlg(fig) in cửa sổ đồ họa được chỉ định
275
CHƯƠNG 7: GUI VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
549
IX.CÁC HỘP HỘI THOẠI DIALOG CỦA WINDOWS
7. printdlg (tt)Ví dụ:
printdlg('-crossplatform',fig) sử dụng chuẩn của Matlab
CHƯƠNG 7: GUI VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
550
IX.CÁC HỘP HỘI THOẠI DIALOG CỦA WINDOWS
7. printdlg (tt)Ví dụ:
printdlg('-setup',fig) cho phép cài đặt thông số in
276
CHƯƠNG 7: GUI VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
551
IX.CÁC HỘP HỘI THOẠI DIALOG CỦA WINDOWS
8. questdlgCú pháp:
button = questdlg('qstring')button = questdlg('qstring','title')button = questdlg('qstring','title','default')button = questdlg('qstring','title','str1','str2','default')button = questdlg('qstring','title','str1','str2','str3','default')% hộp thoại có 3 nút 'Yes', 'No', 'Cancel‘% button nhận giá trị trả về
Trong đó:'default' Nút chọn mặc định {'Yes', 'No', 'Cancel'}'str1','str2','str3' Tạo các nút nhấn có tên…
CHƯƠNG 7: GUI VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
552
IX.CÁC HỘP HỘI THOẠI DIALOG CỦA WINDOWS
8. questdlg (tt)Ví dụ:
button = questdlg('Do you want to continue?',...'Continue Operation','Yes','No','Help','No');if strcmp(button,'Yes') disp('Creating file')elseif strcmp(button,'No') disp('Canceled file operation')elseif strcmp(button,'Help') disp('Sorry, no help available')end
277
CHƯƠNG 7: GUI VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
553
IX.CÁC HỘP HỘI THOẠI DIALOG CỦA WINDOWS
9. uigetfileCú pháp:
uigetfileuigetfile('FilterSpec')uigetfile('FilterSpec','DialogTitle')uigetfile('FilterSpec','DialogTitle',x,y)[fname,pname] = uigetfile(...)
Trong đó:'FilterSpec' Lọc chọn các tập tin. Mặc định là *.m[x,y] Vị trí xuất hiện hộp thoại[fname,pname] Trả về tên tập tin và đường dẫn
CHƯƠNG 7: GUI VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
554
IX.CÁC HỘP HỘI THOẠI DIALOG CỦA WINDOWS
9. uigetfile (tt)Ví dụ:
>> [fname,pname] = uigetfile('*.m','Sample Dialog Box')fname = canhhoa.mpname = D:\work\
278
CHƯƠNG 7: GUI VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
555
IX.CÁC HỘP HỘI THOẠI DIALOG CỦA WINDOWS
10. uiputfileCú pháp:
uiputfileuiputfile('InitFile')uiputfile('InitFile','DialogTitle')uiputfile('InitFile','DialogTitle',x,y)[fname,pname] = uiputfile(...)
Trong đó:'InitFile' Hộp thoại hiển thị các file trong thư mục hiện hành
xác định bởi 'InitFile'[fname,pname] Trả về tên file và đường dẫn ghi file
CHƯƠNG 7: GUI VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
556
IX.CÁC HỘP HỘI THOẠI DIALOG CỦA WINDOWS
10. uiputfile (tt)Ví dụ:
>> [newfile,newpath] = uiputfile('animinit.m','Save file name');newfile = animinit.mnewpath = D:\work\
279
CHƯƠNG 7: GUI VÀ ỨNG DỤNG
Giảng viên: Hoàng Xuân Dương
557
IX.CÁC HỘP HỘI THOẠI DIALOG CỦA WINDOWS
11. warndlgCú pháp:
h = warndlg('warningstring','dlgname')
Ví dụ:warndlg('Pressing OK will clear memory','!! Warning !!')
top related