Tailieu.vncty.com 06 matlab-osadq3_j2qu_20130412090644_577

192
BI GING ĐIN T TIN HC NG DNG TRONG K THUT ĐA CHT & DU KHÍ Tc gi : ThS. Đỗ Quang Khnh ThS. Bi T An B môn : Khoan & Khai thc du kh Copyright 2007 MATLAB

description

http://tailieu.vncty.com/index.php

Transcript of Tailieu.vncty.com 06 matlab-osadq3_j2qu_20130412090644_577

Page 1: Tailieu.vncty.com   06 matlab-osadq3_j2qu_20130412090644_577

BAI GIANG ĐIÊN TƯ

TIN HOC ƯNG DUNGTRONG KY THUÂT ĐIA CHÂT & DÂU KHÍ

Tac gia : ThS. Đỗ Quang Khanh

ThS. Bui Tư An

Bô môn : Khoan & Khai thac dâu khi

Copyright 2007

MATLAB

Page 2: Tailieu.vncty.com   06 matlab-osadq3_j2qu_20130412090644_577

Copyright 2007

MATLAB 2

MATLAB CĂN BẢN

Tổng quan về MATLAB

Các phép toán, biểu thức và hàm cơ bản

Lập trình trong MATLAB

Đồ họa cơ bản

Cấu trúc chương trình

BÀI TẬP

Page 3: Tailieu.vncty.com   06 matlab-osadq3_j2qu_20130412090644_577

Copyright 2007

MATLAB 3

CÁC VÂN ĐỀ NÂNG CAO TRONG MATLAB

Symbolic trong MATLAB

Ma trận và đại số tuyến tính

Hàm số và phương trình

Đồ họa nâng cao

Vấn đề tạo giao diện

BÀI TẬP

Page 4: Tailieu.vncty.com   06 matlab-osadq3_j2qu_20130412090644_577

Copyright 2007

MATLAB 4

TỔNG QUAN VỀ MATLAB

MATLAB (Matrix Laboratory) là một ngôn ngữ thông dịch,

cho phép thực hiện nhanh chóng các giải thuật, hiển thị dữ

liệu (dưới dạng đồ thị 2D, 3D, hình ảnh và thậm chí chuỗi

hình ảnh) và thực hiện các giao tiếp đồ họa dễ dàng.

Ưu điểm:

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

sử 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.

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.

Page 5: Tailieu.vncty.com   06 matlab-osadq3_j2qu_20130412090644_577

Copyright 2007

MATLAB 5

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

Page 6: Tailieu.vncty.com   06 matlab-osadq3_j2qu_20130412090644_577

Copyright 2007

MATLAB 6

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 kỹ thuật 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, Dầu khí, Địa chất, hóa học,…

Page 7: Tailieu.vncty.com   06 matlab-osadq3_j2qu_20130412090644_577

Copyright 2007

MATLAB 7

Cac khai niệm cơ ban

Khi chạy chương trình MATLAB, thì cửa sổ này sẽ xuất hiện

Cửa sổ lệnh

Cửa sổ không gian làm việc

Cửa sổ lịch sử lệnh

Page 8: Tailieu.vncty.com   06 matlab-osadq3_j2qu_20130412090644_577

Copyright 2007

MATLAB 8

Cac khai niệm cơ ban (tt)

Hoạt động trong MATLAB

Command window (cửa sổ lệnh)

− Dấu “>>” dùng để chạy lệnh, viết chương trình, Chạy

chương trình.

Command history window (cửa sổ lịch sử lệnh)

− 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.

Current Directory (cửa sổ thư mục hiện tại)

− Cho biết thư mục hiện tại làm việc. Mặc định khi cài

MATLAB701\work (Version 7.01)

Workspace (cửa sổ không gian làm việc)

− Cho biết các biến được sử dụng trong chương trình.

Page 9: Tailieu.vncty.com   06 matlab-osadq3_j2qu_20130412090644_577

Copyright 2007

MATLAB 9

Cac khai niệm cơ ban

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ọa

help xem phần trợ giúp một số lệnh

quit, exit Thoát Matlab

Ctrl+c Dừng chương trình

pause Ngừng tạm thời chương trình

edit Gọi chương trình soạn thảo type đọc nội dung file.m

input Nhập dữ liệu từ bàn phím

demo Gọi chương trình demo

echo on/off Tắt mở hiển thị các lệnh trong M-files

Page 10: Tailieu.vncty.com   06 matlab-osadq3_j2qu_20130412090644_577

Copyright 2007

MATLAB 10

Cac khai niệm cơ ban (tt) CÁC TOÁN TỬ VÀ KÍ TỰ ĐẶC BIỆT

• plus (+) cộng

• uplus (+) Cộng unary

• minus ( - ) Trừ

• uminus (-) Trừ unary

• mtimes(. *) Nhân ma trận

• times (*) Nhân mảng

• mpower (^) lũy thừa ma trận

• power (. ^ ) lũy thừa mảng

• mldivide (\ ) Chia trái ma trận

• Mrdivide( /) Chia phải ma trận

• ldivide (.\ ) Chia trái mảng

• mdivide (./ ) Chia phải ma trận

• kron Sản phẩm cơ năng

Page 11: Tailieu.vncty.com   06 matlab-osadq3_j2qu_20130412090644_577

Copyright 2007

MATLAB 11

Cac khai niệm cơ ban (tt)

Toán tử quan hệ

• eq (== ) Bằng

• ne ( ~= ) Không bằng

• lt (< ) Nhỏ hơn

• gt (>) Lớn hơn

• le (<= ) Nhỏ hơn hoặc bằng

• ge (>= ) Lớn hơn hoặc bằng

Page 12: Tailieu.vncty.com   06 matlab-osadq3_j2qu_20130412090644_577

Copyright 2007

MATLAB 12

Cac khai niệm cơ ban (tt)

Toán tử logic

• and (&) Logic và

• or ( | ) Logic hoặc

• not ( ~ ) Logic phủ định

• xor Logic hoặc phủ định

• any True nếu mọi phần tử của vector

khác không.

• all True nếu tất cả các phần tử khác

không

Page 13: Tailieu.vncty.com   06 matlab-osadq3_j2qu_20130412090644_577

Copyright 2007

MATLAB 13

Cac khai niệm cơ ban (tt) Các kí tự đặc biệt

: Dấu hai chấm

() Dấu ngoặc đơn

[ ] Dấu ngoặc vuông

{ } Dấu ngoặc nhọn

. Dấu thập phân

. Truy nhập cấu cấu trúc trường

.. Thư mục mẹ

... Dấu tiếp tục

, Dấu phẩy

; Dấu chấm phẩy

% Dấu chú thích

Page 14: Tailieu.vncty.com   06 matlab-osadq3_j2qu_20130412090644_577

Copyright 2007

MATLAB 14

Cac khai niệm cơ ban (tt)

% Dấu chú thích

! Liên quan câu lệnh của hệ điều hành

= Gán

‘ Nhảy

transpose(.’) Chuyển vị

ctranspose(‘ ) Chuyển vị số phức liên hợp

horzcat [, ] Ghép chuỗi theo chiều ngang

vertcat[; ] Ghép chuỗi theo chiều đứng

subsasgn Gán subscripted

bsref Tham chiếu subscripted

subsindex Chỉ số subscripted

Page 15: Tailieu.vncty.com   06 matlab-osadq3_j2qu_20130412090644_577

Copyright 2007

MATLAB 15

Cac khai niệm cơ ban (tt)

BIẾN

Quy định về tên biến:

− Giống các ngôn ngữ khác, Matlab có những quy định về tên

biến phải là một từ, không chứa dấu cách, và phải tuân thủ

theo các quy tắc sau:

Có thể chứa nhiều nhất 31 kí tự, còn các kí tự sau kí tự

31 sẽ bị lờ đi.

Ví du: Thoi_gian_dong_cua_vuaximang100, …

Tên biến bắt đầu phải là chữ cái, tiếp theo có thể là chữ

số, dấu gạch dưới.

Thí dụ: Do_bien_thien, Heso, heso, Donhot,

donhot…

Kí tự chấm “.” không được dùng vì nó có ý nghĩa đặc

biệt

Page 16: Tailieu.vncty.com   06 matlab-osadq3_j2qu_20130412090644_577

Copyright 2007

MATLAB 16

BIẾN (tt)

Một số biến được đĩnh nghĩa trước:

− 1/0

Warning: Divide by zero.

(Type "warning off MATLAB:divideByZero" to suppress this

warning.)

ans = Inf

− 0/0

Warning: Divide by zero.

(Type "warning off MATLAB:divideByZero" to suppress this

warning.)

ans = NaN

− Eps

ans = 2.2204e-016

Page 17: Tailieu.vncty.com   06 matlab-osadq3_j2qu_20130412090644_577

Copyright 2007

MATLAB 17

Môt số biến được định nghĩa trước (tt)

Ý

Page 18: Tailieu.vncty.com   06 matlab-osadq3_j2qu_20130412090644_577

Copyright 2007

MATLAB 18

Độ 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 sau đây:

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.

Length(A) Trả về chiều dài của A, giá trị lớn

nhất của hàng và cột.

Ngoài ra còn có các hàm: Size(A,p); [m,n] =

size(A)

Page 19: Tailieu.vncty.com   06 matlab-osadq3_j2qu_20130412090644_577

Copyright 2007

MATLAB 19

BIẾN (tt) Thí 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

Page 20: Tailieu.vncty.com   06 matlab-osadq3_j2qu_20130412090644_577

Copyright 2007

MATLAB 20

BIẾN (tt)

BIẾN MÔI TRƯỜNG (Environmental Variable)

Thí dụ:

>> a = 1

a =

1

>> b = ‘MATLAB’

b =

Matlab

Ta nói, a, b là các biến môi trường.

Page 21: Tailieu.vncty.com   06 matlab-osadq3_j2qu_20130412090644_577

Copyright 2007

MATLAB 21

BIẾN (tt)

Khi làm việc trong MATLAB ở trong cửa sổ lệnh cũng

như các giá trị đã được tạo ra. Những lệnh và biến

này được thường trú trong môi trường làm việc của

MATLAB (Workspace) và có thể được nạp trở lại khi

muốn.

Đời sống của những biến chấm dứt khi ta thoát khỏi

chương trình MATLAB.

Như Thí dụ trên, a được hiểu la một biến số, b là một

chuỗi.

Khi định nghĩa biến môi trường, nếu gán giá trị cho nó

thì kiểu biến sẽ phụ thuộc vào kiểu giá trị đã gán cho

nó.

Page 22: Tailieu.vncty.com   06 matlab-osadq3_j2qu_20130412090644_577

Copyright 2007

MATLAB 22

BIẾN (tt)

BIẾN CỤC BỘ (Local Variable)

Biến này chỉ tồn tại trong một hàm MATLAB và

không hiện hữu trong cửa sổ lệnh.

Thí dụ:

function[mean,stdev] = stat(x);

n = length(x);

mean = sum(x)/n;

stdev = sqrt(mean);

Trong trường hợp này n là biến cục bộ và chỉ

được truy xuất trong một hàm.

Page 23: Tailieu.vncty.com   06 matlab-osadq3_j2qu_20130412090644_577

Copyright 2007

MATLAB 23

BIẾN (tt)

BIẾN TOÀN CỤC (Global Variable)

Được định nghĩa bằng từ khóa global. Việc

xóa biến toàn cục dùng lệnh clear global

Isglobal(ten_bien): trả về 1 (ten_bien là biến

toàn cục), 0 (ten_bien không phải là biến toàn

cục)

Thí dụ:

Global x y z

x, y, z là các biến toàn cục.

Page 24: Tailieu.vncty.com   06 matlab-osadq3_j2qu_20130412090644_577

Copyright 2007

MATLAB 24

BIẾN (tt)

Thường mỗi hàm trong MATLAB được viết dưới

dạng M File, có riêng những biến cục bộ cho

từng hàm và được lưu trữ trong một vùng biến

đặc biệt, việc gọi hàm trong một hàm đều có thể

truy xuất biến này.

Nên dùng KÍ TỰ HOA để đặt tên biến toàn cục

để tránh trùng tên với các biến trong Workspace.

Page 25: Tailieu.vncty.com   06 matlab-osadq3_j2qu_20130412090644_577

Copyright 2007

MATLAB 25

BIẾN (tt)

BIẾN SYMBOLIC

Symbolic processing là thuật ngữ dùng mô tả cách thức

máy tính thực hiện tính các biểu thức toán học (Thí dụ,

rút gọn một đa thức, đặt thừa số chung, tính giá trị một

biểu thức đại số, giải phương trình đại số, giải phương

trình vi phân, …)

Khởi tạo biến symbolic:

x = sym(‘x’): Tạo biến symbolic có tên là x.

x = sym(‘x’,’real’): Tạo biến symbolic có tên x và là biến

không bị ràng buộc phải là biến thực.

k = sym(‘p’,’positive’): Tạo biến symbolic k là biến thực,

dương.

Khởi tạo hằng symbolic: Nhằm tránh mắc sai lầm khi

làm tròn.

Page 26: Tailieu.vncty.com   06 matlab-osadq3_j2qu_20130412090644_577

Copyright 2007

MATLAB 26

BIẾN (tt)Khởi tạo hằng symbolic

Thí dụ:

>> hai_phan_ba = sym(‘2/3’);

>> pi = sym(‘pi’);

>> hai_phan_ba =

hai_phan_ba =

2/3 % Không hiển thị giá trị xấp xỉ

>> Pi

Pi =

pi % không hiển thị giá trị xấp xỉ.

- Liệt kê các biên symbolic hiện hành, sử dụng hàm <syms>

Page 27: Tailieu.vncty.com   06 matlab-osadq3_j2qu_20130412090644_577

Copyright 2007

MATLAB 27

BIẾN (tt) - Symbolic Liệt kê các biến Symbolic

>> syms x y;

>> p = 2*x + 3*y;

% Tạo biến symbolic p thông qua biểu thức symbolic

>> u = sqrt(x^2 + y^2);

% Tạo biến symbolic u thông qua biêu thức symbolic

>> d = subs(u, {x,y},{2,3})

% Tính giá trị biểu thức u khi x = 2, y = 3.

d =

13

>> v = subs(u,{x,y},{3,4})

% Tính giá trị biểu thức khi x = 3; y = 4;

v =

5

>> syms

‘r’ ‘s’ ‘x’ ‘y’

Page 28: Tailieu.vncty.com   06 matlab-osadq3_j2qu_20130412090644_577

Copyright 2007

MATLAB 28

BIẾN (tt) - Symbolic

Khởi tạo ma trận symbolic bằng biến symbolic.

Thí dụ:

>> n = 3;

>> syms x;

>> A = x.^ [[0:n]’.* [0:n]];

% Dùng phép biến đổi lũy thừa mảng

A = [1, 1, 1, 1]

[1, x, x^2, x^3]

[1, x^2, x^4, x^6]

[1, x^3, x^6, x^9]

Page 29: Tailieu.vncty.com   06 matlab-osadq3_j2qu_20130412090644_577

Copyright 2007

MATLAB 29

BIẾN (tt) - Symbolic

Tìm biến symbolic trong một hàm

Thí dụ:

>> syms b x y z;

>> findsym(5*b + 2*z)

% Hàm này tìm biến symbolic trong một hàm

ans =

b, z

Page 30: Tailieu.vncty.com   06 matlab-osadq3_j2qu_20130412090644_577

Copyright 2007

MATLAB 30

BIẾN (tt)

LƯU và NẠP Biến

Biến sẽ bị xóa sạch khi:

− Dùng lệnh: clear all

− Thoát chương trình MATLAB

Lưu biến:

− Để sử dụng lại cho phiên làm việc sau; dùng

lệnh <save> (lưu tất cả các biến do

Workspace đang quản lý(tên, kích thước, giá

trị) vào một tập tin nhị phân (binary file) có

tên matlab.mat

Page 31: Tailieu.vncty.com   06 matlab-osadq3_j2qu_20130412090644_577

Copyright 2007

MATLAB 31

BIẾN (tt)

Nạp biến:

− Dùng lệnh <load> Nạp tất cả các biến đã lưu vào

Workspace để dùng lại

Nếu không muốn dùng tập tin mặc định

matlab.mat, ta sử dụng lệnh <Save filename> để

lưu tất cả biến vào tập tin có tên filename.mat và

muốn nạp lại biến khi dùng lệnh <load filename>

Lưu một vài biến trong cửa sổ workspace

− Lệnh <Save filename var1 var2 …>

Nói chung cách đơn giản nhất là: Từ cửa sổ Menu

File ở cửa sổ lệnh chọn <Sace Workspace As>

Đặt tên tập tin (có đuôi mở rộng là *.mat)

Page 32: Tailieu.vncty.com   06 matlab-osadq3_j2qu_20130412090644_577

Copyright 2007

MATLAB 32

Câu chú thich

Tất cả các văn bản đằng sau kí hiệu phần trăm

(%) đều là câu giải thích.

Thí dụ:

> heso_a = 10 % Hệ số a ptb2

heso_a =

10

>> heso_b = 20 % Hệ số b ptb2

heso_b =

20

Page 33: Tailieu.vncty.com   06 matlab-osadq3_j2qu_20130412090644_577

Copyright 2007

MATLAB 33

Số phức

Một trong những điểm mạnh nhất của MATLAB là làm việc

với 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(x) Tạo số phức từ phần thực và ảo

Page 34: Tailieu.vncty.com   06 matlab-osadq3_j2qu_20130412090644_577

Copyright 2007

MATLAB 34

Số phức (tt) Thí dụ:

>> a=1+3i

a = 1.0000 + 3.0000i

>> b=2-4i

b = 2.0000 - 4.0000i

>> a+b

ans = 3.0000 - 1.0000i

>> abs(a)

ans = 3.1623 % độ lớn của a

>> real(b) % phần thực của số phức b

ans = 2

>> imag(b) %phần ảo của số phức b

ans = -4

>> complex(2,2)

ans = 2.0000 + 2.0000i

Page 35: Tailieu.vncty.com   06 matlab-osadq3_j2qu_20130412090644_577

Copyright 2007

MATLAB 35

Môt số hàm toan học thông thường

Tên hàm Mô tả, kết quả trả về

Any(x)1 hoặc vecto hàng đơn vị nếu bất kỳ phần tử nào

của vecto hoặc ma trận x khác 0.

All(x)là 1 hoặc vecto hàng đơn vị nếu tất cả các phần tử

nào của vecto hoặc ma trận x khác 0.

Isnan(x)Là một tại những vị trí NaN (Not a Number, Thí dụ

0/0) trong x

Isinf(x) Là 1 tại những vị trí Inf (Infinitive, 1/0) trong x.

Finite(x) Là 1 tại những vị trí có giá trị hữu hạn trong x.

Isstr(x) Là 1 nếu x là một string (chuỗi)

Issym(x) Là 1 nếu x là một biến sym

Abs(x) Trị truyệt đối hoặc biên độ số phức

Acos(x) Hàm cosin ngược

Acosh(x) Hyperbolic cosin ngược

Ceil(x) Làm tròn về phía trên

Atan(x) Hàm số tang ngược

Asin(x) Hàm số sin ngược

Page 36: Tailieu.vncty.com   06 matlab-osadq3_j2qu_20130412090644_577

Copyright 2007

MATLAB 36

Môt số hàm toan học thông thường

Tên hàm Mô tả, kết quả trả về

cos(x) Hàm cosin

cosh(x) Hyperbol cosin

exp(x) Hàm mũ ex

fix(x) Xấp xỉ không

floor(x) Làm tròn về phía zero

log(x) Hàm logarit tự nhiên

log10(x) Hàm logarit thập phân

round(x) Làm tròn về số nguyên gần nhất

sign(x)Hàm dấu, Thí dụ: sign(1.2) = 1,sign(-23.4) = -1, sign(0)

= 0

sin(x) Hàm sin

sinh(x) Hàm Hyperbol sin

sqrt(x) Căn khai căn bậc hai

gdc(x,y) Bội số chung lớn nhất của hai số nguyên x và y.

lcm(x,y) Bội số chung nhỏ nhất của hai số nguyên x và y.

x^y Hàm mũ

Page 37: Tailieu.vncty.com   06 matlab-osadq3_j2qu_20130412090644_577

Copyright 2007

MATLAB 37

Môt số hàm toan cơ ban

Tên hàm Mô tả, kết quả trả về

rem(x,y) Số dư phép chia x/y

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)

Page 38: Tailieu.vncty.com   06 matlab-osadq3_j2qu_20130412090644_577

Copyright 2007

MATLAB 38

Môt số hàm cơ ban (tt)

Thí dụ:

>> 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(x)

min_v = 1

>> mean(x)

ans = 2

>> sum(x)

ans = 6

Page 39: Tailieu.vncty.com   06 matlab-osadq3_j2qu_20130412090644_577

Copyright 2007

MATLAB 39

Cac Hàm liên quan đến ĐA THƯC

Đa thức được biểu diễn bằng vecto bậc một có bậc giảm dần.

Cho hai đa thức f, g lần lượt được biểu diễn bởi a và b. Ta sẽ có các hàm sau:

Conv(a,b) Nhân hai đa thức

Deconv(a,b) Chia hai đa thức

a + b Tổng hai đa thức

a – b Hiệu hai đa thức

roots(a) nghiệm của đa thức f được biểu diễn bởi vecto a.

poly(r) Trả về các hệ số của đa thức có nghiệm là vecto r.

Lưu ý: Khi cộng và trừ các đa thức phải có cùng kích thước.

Page 40: Tailieu.vncty.com   06 matlab-osadq3_j2qu_20130412090644_577

Copyright 2007

MATLAB 40

Hàm ĐA THƯC (tt)

Thí dụ: Giải phương trình: x4 + 10x3 + 0x - 1 = 0

Giải: Ta biểu diễn đa thức x4 + 10x3 + 0x - 1 bằng một vectơ

hàng với các phần tử là các hệ số của đa thức sắp xếp

theo thứ tự bậc giảm dần.

>> a = [1 10 -2 0 -1];

Nghiệm của đa thức có thể được tính bằng hàm: roots(a)

>> R = roots(a)

R =

-10.1971

0.5291

-0.1660 + 0.3972i

-0.1660-0.3972i

Page 41: Tailieu.vncty.com   06 matlab-osadq3_j2qu_20130412090644_577

Copyright 2007

MATLAB 41

Hàm ĐA THƯC (tt)

Từ các nghiệm của đa thức có thể xây dựng lại đa

thức bằng hàm: poly(a);

Thí dụ:

>>a = poly(R)

a = 1.0000 10.0000 -2.0000 0.0000 -1.0000

>>a = [1 2 3 4]; % x3+2x2+3x+4

>>b = [5 6 7 8]; % 5x3+6x2+7x+8

>>Tich = conv(a,b)

Tich = 5 16 34 60 61 52 32

Page 42: Tailieu.vncty.com   06 matlab-osadq3_j2qu_20130412090644_577

Copyright 2007

MATLAB 42

Hàm ĐA THƯC (tt)

>>Thuong = deconv(a,b)

Thuong = 0.2000

>>Tong = a + b

Tong = 6 8 10 12

>>Hieu = a – b

Hieu = -4 -4 -4 -4

Page 43: Tailieu.vncty.com   06 matlab-osadq3_j2qu_20130412090644_577

Copyright 2007

MATLAB 43

CÁC LỆNH ĐIỀU KIỆN VÀ LẶP

Vòng lặp FOR:

Cấu trúc:

for i = n:m %n = phần tử đầu, m = phần tử cuối

<Lệnh>

end

Thí dụ vòng lặp FOR: Tính giai thừa của 100?

Page 44: Tailieu.vncty.com   06 matlab-osadq3_j2qu_20130412090644_577

Copyright 2007

MATLAB 44

CÁC LỆNH ĐIỀU KIỆN VÀ LẶP

Vòng lặp WHILE: lặp vòng khi biểu thức logic là true.

Cấu trúc:

while <biểu thức logic>

<Các lệnh>

end

Thí 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

Page 45: Tailieu.vncty.com   06 matlab-osadq3_j2qu_20130412090644_577

Copyright 2007

MATLAB 45

CÁC LỆNH ĐIỀU KIỆN VÀ LẶP

Lệnh if else elseif

Cấu trúc:

Nếu <BT logic> là true thì <Các lệnh> được

thi hành, nếu không thì thực hiện các lệnh sau

end.

if <BT logic>

<lệnh 1>

else

<lệnh 2>

end

if <BT logic 1>

<lệnh 1>

elseif <BT logic 2>

<Lệnh 2>

end

if <BT logic>

<Các lệnh>

end

Page 46: Tailieu.vncty.com   06 matlab-osadq3_j2qu_20130412090644_577

Copyright 2007

MATLAB 46

CÁC LỆNH ĐIỀU KIỆN VÀ LẶP

Thí dụ 1:

if rem(a,2)==0

disp('la mot so chan')

b=a/2;

End

if n<0

disp('la so duong')

elseif n==0

disp('la so 0')

else

disp('la so am')

end

Page 47: Tailieu.vncty.com   06 matlab-osadq3_j2qu_20130412090644_577

Copyright 2007

MATLAB 47

CÁC LỆNH ĐIỀU KIỆN VÀ LẶP Thí 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 = 30

elseif (th==2)

if (rem(nam,4)~=0)

y=28

else

y=29

end

else

y=31

end

Page 48: Tailieu.vncty.com   06 matlab-osadq3_j2qu_20130412090644_577

Copyright 2007

MATLAB 48

CÁC LỆNH ĐIỀU KIỆN VÀ LẶP

Lệnh switch case: chọn nhiều trường hợp

Cấu trúc:

switch <Biểu thức (vô hướng hay chuỗi)>

case <trị 1>

<Các phát biểu % thực hiện nếu biểu thức là trị 1>

case <trị 2>

<Các phát biểu % thực hiện nếu biểu thức là trị 2>

otherwise

<Các phát biểu % thực hiện nếu biểu thức không phù hợp mọi trường hợp>

end

Page 49: Tailieu.vncty.com   06 matlab-osadq3_j2qu_20130412090644_577

Copyright 2007

MATLAB 49

CÁC LỆNH ĐIỀU KIỆN VÀ LẶP Thí dụ:

switch input_num

case -1

disp(‘negative one’);

case 0

disp(‘zero’);

case 1

disp(‘positive one’);

otherwise

disp(‘other value’);

end

Page 50: Tailieu.vncty.com   06 matlab-osadq3_j2qu_20130412090644_577

Copyright 2007

MATLAB 50

ĐỒ HOA CĂN BẢN

Tổng quát về đồ họa trong MATLAB

MATLAB có các hàm đồ họa để vẽ các đặc

tuyến bất kỳ trên mặt phẳng 2D, 3D, cho phép

tạo ra đối tượng đồ họa điều khiển được.

MATLAB cho phép người lập trình sử dụng “bộ

nhớ ảo”, khi đó có thể ghi các biến làm việc

thành tập tin *.mat trên đĩa và có thể nạp bộ

nhớ khi cần thiết. Nhờ vậy, MATLAB có thể giải

được các bài toán lớn và phức tạp.

Ngoài ra, MATLAB còn phép quản lý tập tin dữ

liệu trong chính môi trường MATLAB mà không

cần đến môi trường windows.

Page 51: Tailieu.vncty.com   06 matlab-osadq3_j2qu_20130412090644_577

Copyright 2007

MATLAB 51

ĐỒ HOA CĂN BẢN (tt)

Màu sắc và kiểu đường vẽ

Ký hiệu Màu Ký hiệu Kiểu nét

y Yellow . Point

m Magenta o Circle

c Cyan x X-mark

r Red + Plus

g Green * Star

b Blue - Solid line

w White : Dotted line

k Black-. Dash-dot line

-- Dased line

Page 52: Tailieu.vncty.com   06 matlab-osadq3_j2qu_20130412090644_577

Copyright 2007

MATLAB 52

ĐỒ HOA CĂN BẢN (tt)

Các kiểu data marker Ký hiệu trong plot

Dấu chấm (dot .) .

Dấu sao (asterisk *) *

Dấu gạch chéo (cross x) x

Vòng tròn (circle o) o (chữ o thường)

Dấu cộng (plus sign + ) +

Hình vuông (square ) s

Diamond ( ) d

Ngôi sao () p

Page 53: Tailieu.vncty.com   06 matlab-osadq3_j2qu_20130412090644_577

Copyright 2007

MATLAB 53

ĐỒ HOA CĂN BẢN (tt)

Đồ họa không gian 2 chiều trong MATLAB

Lệnh plot: Đồ thị tuyến tính X-Y, vẽ trong mặt

phẳng hai chiều.

Lệnh fplot: được dùng để vẽ hàm số một cách

“thông minh”, nó tự động phân tích hàm phải vẽ

và chọn số điểm thích hợp cần phải thể hiện để

phản ánh các đặc điểm của hàm.

− Cú pháp: fplot(‘string’, [xmin,xmax])

− Dạng đầy đủ: fplot(‘string’, [xmin xmax ymin ymax]

Page 54: Tailieu.vncty.com   06 matlab-osadq3_j2qu_20130412090644_577

Copyright 2007

MATLAB 54

ĐỒ HOA CĂN BẢN – Plot() (tt)

Thí dụ:

>>x = linspace(0,2*pi,30);

%Tạo mảng x gồm 30 phần tử có giá trị trong

khoảng 0 – 2*

>>y = sin(x);

>>plot(x,y) %vẽ đồ thị hàm y theo x

>>xlabel(‘x [0-2*pi]); ylabel(‘y’);

%đặt nhãn trục tọa độ x và y

>>title(‘y = sin(x)’) % đặt tên đồ thị

>>grid on % Tạo lưới cho đồ thị

Page 55: Tailieu.vncty.com   06 matlab-osadq3_j2qu_20130412090644_577

Copyright 2007

MATLAB 55

ĐỒ HOA CĂN BẢN – Plot() (tt)

Page 56: Tailieu.vncty.com   06 matlab-osadq3_j2qu_20130412090644_577

Copyright 2007

MATLAB 56

ĐỒ HOA CĂN BẢN – Plot() (tt)

Để vẽ hai đồ thị trên cùng một trục tọa độ

>>z = cos(x);

>>plot(x,y,’b-*’,x,z,’r’)

% Vẽ y và z trên cùng đồ thị, y là đường -* màu

xanh, z là đường -- màu đỏ

>>legend(‘y = sin(x)’,’z=cos(x)’) % chú thích trên

đồ thị

Page 57: Tailieu.vncty.com   06 matlab-osadq3_j2qu_20130412090644_577

Copyright 2007

MATLAB 57

ĐỒ HOA CĂN BẢN – Plot() (tt)

>>legend(‘y = sin(x)’,’z=cos(x)’)

Page 58: Tailieu.vncty.com   06 matlab-osadq3_j2qu_20130412090644_577

Copyright 2007

MATLAB 58

ĐỒ HOA CĂN BẢN (tt)

Để vẽ nhiều hàm trên cùng một đồ thị ta có thể

dùng lệnh “hold on” và “hold off”

>> t=0:pi/20:2*pi;

>> plot(t,sin(t),'-r*')

>> hold on

>> plot(sin(t-pi/2),'mo')

>> plot(sin(t-pi),':bs')

>> hold off

Page 59: Tailieu.vncty.com   06 matlab-osadq3_j2qu_20130412090644_577

Copyright 2007

MATLAB 59

ĐỒ HOA CĂN BẢN (tt)

Lệnh plot vẽ trong SỐ PHỨC

Nếu chỉ cố một đối số, hàm plot(y) sẽ vẽ các

giá trị của vector y theo chỉ số 1,2,3, … Nếu y là

số thực, hàm plot(y) trong trường hợp này sẽ

vẽ phần ảo theo phần thực tương ứng, nghĩa là

tương đương với plot(real(y),imag(y))

Page 60: Tailieu.vncty.com   06 matlab-osadq3_j2qu_20130412090644_577

Copyright 2007

MATLAB 60

ĐỒ HOA CĂN BẢN (tt)

Thí dụ:

>> x = .1+.9i;

>> u = [0:0.01:10];

>> plot(x.^u),xlabel('So thuc'),ylabel('Phan ao')

>> title('Do thi voi doi so phuc tap trong ham SO PHUC')

Page 61: Tailieu.vncty.com   06 matlab-osadq3_j2qu_20130412090644_577

Copyright 2007

MATLAB 61

ĐỒ HOA CĂN BẢN (tt)

Thí dụ lệnh fplot trong số phức:

>> f='cos(tan(x))-tan(sin(x))';

>> fplot(f,[1 2])

Page 62: Tailieu.vncty.com   06 matlab-osadq3_j2qu_20130412090644_577

Copyright 2007

MATLAB 62

ĐỒ HOA CĂN BẢN (tt)

Các lệnh vẽ trong các tọa độ đặc biệt

Polar(t,r): vẽ đồ thị trong tọa độ cực

Semilogx(x,y): Vẽ hàm y theo x với trục y vẽ theo thang log

Semilogy(x,y): Vẽ hàm y theo x với trục x vẽ theo thang log

Loglog(x,y) Vẽ hàm y theo x với thang log cho cả 2 trục tọa

độ

Plotyy(x,y,’function’): Vẽ đồ thị với 2 trục y theo kiểu vẽ

được chọn trong function. Trong đó function nhận các giá

trị plot, semilogy, semilogx…

Plot3(x,y,z): vẽ đường trong không gian 3 chiều.

Subplot(m,n,p): Chia cửa sổ figure ra nhiều ô, m ô theo

chiều đứng, n ô theo chiều ngang, vẽ đồ thị trong ô thứ p.

Page 63: Tailieu.vncty.com   06 matlab-osadq3_j2qu_20130412090644_577

Copyright 2007

MATLAB 63

ĐỒ HOA CĂN BẢN (tt) Thí dụ:

Lệnh polar(t,r): Vẽ đồ thị góc t (radian) trong tọa độ cực theo bán

kính r.

Lệnh polar(t,r,’linestype’): Vẽ góc t với đường vẽ và nét xác định

‘linestype’.

>>t = 0:.1:2*pi;

>>polar(t,sin(2*t)) >>polar(t,sin(2*t),'m-')

Page 64: Tailieu.vncty.com   06 matlab-osadq3_j2qu_20130412090644_577

Copyright 2007

MATLAB 64

ĐỒ HOA CĂN BẢN (tt)

Thí dụ, vẽ đường xoắn ốc Archimeder r = 2Ѳ với Ѳ thuộc [0,

4pi]

>> r = 2*t;

>> polar(t,r),title('Duong xoan oc Archimede r = 2\t');

Page 65: Tailieu.vncty.com   06 matlab-osadq3_j2qu_20130412090644_577

Copyright 2007

MATLAB 65

ĐỒ HOA CĂN BẢN (tt)

Thí dụ lệnh loglog(x,y)

>> x = logspace(-1,2);

>> loglog(x,exp(x))

Page 66: Tailieu.vncty.com   06 matlab-osadq3_j2qu_20130412090644_577

Copyright 2007

MATLAB 66

ĐỒ HOA CĂN BẢN (tt) Thí dụ lệnh semilogx(x,y)

>> x = logspace(-2,3);

>> y = x.^12 + 10;

>> semilogx(x,y) %tương tự cho lệnh semilogy()

Page 67: Tailieu.vncty.com   06 matlab-osadq3_j2qu_20130412090644_577

Copyright 2007

MATLAB 67

ĐỒ HOA CĂN BẢN (tt)

Thí dụ :

>> t=0:pi/20:6*pi;

>> x=sin(t);

>> y=sin(t-pi/2);

>> z=t;

>> subplot(121)

>> plotyy(t,x,t,y,'plot')

>> grid on

>> subplot(122)

>> plot3(x,y,z)

>> grid on

Page 68: Tailieu.vncty.com   06 matlab-osadq3_j2qu_20130412090644_577

Copyright 2007

MATLAB 68

ĐỒ HOA CĂN BẢN (tt)

Các lệnh vẽ liên quan đến SỐ PHỨC

quiver(x,y): vẽ các vector xuất phát từ các vị trí khác

nhau.

fearther(x,y): Vẽ các vector xuất phát từ trục x.

compass(x,y): Vẽ các vector từ một điểm gốc trong

hệ tọa độ cực.

rose(x)

Page 69: Tailieu.vncty.com   06 matlab-osadq3_j2qu_20130412090644_577

Copyright 2007

MATLAB 69

Thi dụ-Lệnh quiver

Giả sử ta có một trường vector như sau trong không gian R2:

P(x,y) = , Q(x,y) = , thử vẽ hình ảnh của trường trong

phạm vi x thuộc [1,5] và y thuộc [1,5].

Trước hết ta viết một sript file (lưu file này với tên Quiver.m)

như sau:

x y

Page 70: Tailieu.vncty.com   06 matlab-osadq3_j2qu_20130412090644_577

Copyright 2007

MATLAB 70

Thi dụ-Lệnh quiver (tt)

Sau đó, ta chạy file sript này(Gõ tên file này trong cửa sổ

lệnh->Enter), ta được hình ảnh sau:

Page 71: Tailieu.vncty.com   06 matlab-osadq3_j2qu_20130412090644_577

Copyright 2007

MATLAB 71

ĐỒ HOA CĂN BẢN (tt)

Các lệnh thao tác và điều khiển

figure

Hiển thị cửa sổ đồ họa hiện hành figure(gef)

Tạo ra cửa sổ đồ họa figure(‘propertyname’,’propertyvalue’,…)

holdChuyển từ trạng thái hold là on sang off và ngược lại

hold on Giữ lại tất cả màn hình đã vẽ

hold offXóa các màn hình đã vẽ chỉ thể hiện màn hình hiện hành mới (Chế độ mặc định)

axis Cân chỉnh trục tọa độ và hình dạng của nó

grid Grid On/ grid off/ grid: Tạo/ tắt lưới cho đồ thị

shg Hiển thị đồ thị trên màn hình

clg Xóa đồ thị trên màn hình

zoom Co vào hoặc dãn ra của đồ thị

Page 72: Tailieu.vncty.com   06 matlab-osadq3_j2qu_20130412090644_577

Copyright 2007

MATLAB 72

ĐỒ HOA CĂN BẢN (tt)

CÁC LỆNH VĂN BẢN TRÊN MÀN HÌNH ĐỒ HỌA

title(‘text’,’property 1’,’property 2’,…): Tiêu đề cho đồ thị

xlabel(‘text’,’property 1’,’property 2’,…): Nhãn trục hoành độ

ylabel(‘text’,’property 1’,’property 2’,…): Nhãn trục tung độ

text(x,y,z,‘chuỗi ‘): Văn bản ở bất kỳ vị trí nào trên đồ thị. X, Y

là tọa độ tâm bên trái của đồ thị.

legend(x,y): Chú thích của đường trên đồ thị

gtext(‘C’): Văn bản ở vị trí con trỏ.

Page 73: Tailieu.vncty.com   06 matlab-osadq3_j2qu_20130412090644_577

Copyright 2007

MATLAB 73

ĐỒ HOA CĂN BẢN (tt)

ĐỌC DỮ LIỆU TỪ MÀN HÌNH ĐỒ HỌA

Lấy tọa độ diểm trên đồ thị, khi một đồ thị được vẽ

xong, nếu muốn lấy tọa độ của một số điểm trên

đường này, ta sẽ dùng lệnh [x,y] = ginput(n); n là

số điểm cần lấy tọa độ.

Khi đồ thị hiện ra, ta nhấn phím trái chuột vào các

vị trí mong muốn lấy tọa độ trên đồ thị, các hoành

độ sẽ được chứa trong vector và tung độ trong

vector y.

Nếu quan hệ giữa hai đại lượng x, y cần được vẽ

bằng các điểm rời rạc, thay vì là đường nối các

điểm (x,y) như vẽ hàm, hàm plot sẽ dùng các điểm

được đánh dấu (data makers)

Page 74: Tailieu.vncty.com   06 matlab-osadq3_j2qu_20130412090644_577

Copyright 2007

MATLAB 74

ĐỒ HOA CĂN BẢN (tt)

Thí dụ, vẽ đồ thị từ số liệu rời rạc bằng cách sử dụng điểm đánh

dấu.

>> x=[5:18];

>> y=[1,2,3,5,4,5,5,7,8,6,9,11,14,20];

>> plot(x,y,'r s')

R: màu đỏ, s: hình vuông

Page 75: Tailieu.vncty.com   06 matlab-osadq3_j2qu_20130412090644_577

Copyright 2007

MATLAB 75

ĐỒ HOA CĂN BẢN (tt)

Thí dụ:

Nếu muốn nối liền các điểm được đánh dấu này bằng các

đoạn thẳng, chúng ta có thể vẽ 2 lần.

>>plot(x,y,'r o',x,y)

Page 76: Tailieu.vncty.com   06 matlab-osadq3_j2qu_20130412090644_577

Copyright 2007

MATLAB 76

ĐỒ HOA CĂN BẢN (tt)

Ngoài ra trong lệnh plot ta có thể đưa các thông số ‘lineWidth’

để định độ rộng của đường vẽ, thông số ‘MarkerSize’ để định

độ lớn (chiều cao) của các điểm được đánh dấu và thông số

“Color” để định màu của đồ thị.

Thí dụ:

>>plot(x,y,’o-’,’LineWidth’,3,’MarkerSize’,8,’Color’,’red’)

Page 77: Tailieu.vncty.com   06 matlab-osadq3_j2qu_20130412090644_577

Copyright 2007

MATLAB 77

ĐỒ HOA CĂN BẢN (tt)- Điền tiêu đề cho đồ thị, ta sử dụng lệnh: title(‘text’).

- Tạo lưới cho đồ thị: grid on

Thí dụ: <<title(‘do thi roi rac dung data marker o’)

Page 78: Tailieu.vncty.com   06 matlab-osadq3_j2qu_20130412090644_577

Copyright 2007

MATLAB 78

ĐỒ HOA CĂN BẢN (tt)

Kiến tạo hệ trục tọa độ

Lệnh Mô tả

Axis([xmin xmax ymin ymax])Thiết lập các giá trị min, max của hệ trục

dùng các giá trị được đưa ra trong vecto

hàng.

V= axisV là vector cột có chứa thang chia cho đồ thị

hiện tại: [xmin xmax ymin ymax]

Axis auto trả lại giá trị mặc định thang chia

Axis(‘auto’) Xmin=min(x), xmax = max(x)…

Axismanual Giới hạn thang chia nh thang chia hiện tại

Axis xy

Sử dụng (mặc định) hệ tọa độ decac trong đó

gốc tọa độ ở góc thấp nhất bên trái, trục

ngang tăng từ trái qua phải, trục đứng tăng

từ dưới lên.

Page 79: Tailieu.vncty.com   06 matlab-osadq3_j2qu_20130412090644_577

Copyright 2007

MATLAB 79

ĐỒ HOA CĂN BẢN (tt)

Lệnh Mô tả

Axis ij

Sử dụng hệ tọa độ ma trận, trong đó góc tọa độ ở

đỉnh góc trái, trục đứng tăng từ đỉnh xuống, trục

ngang từ trái qua phải.

AxissquareThiết lập đồ thị hiện tại là hình vuông, so với mặc

định là hình chữ nhật.

Axisequal Thiết lập thang chia giống nhau cho cả hai hệ trục

Axis tightequalTương tự như axisequal nhưng hộp đồ thị vừa đủ

đối với dữ liệu

Axis normal Tắt đi chế độ axis, equal, tight và vis3d

Axis off

Tắt bỏ chế độ nền trục, nhãn, lưới, và hộp, dấu.

Thoát khỏi chế độ lệnh title và bất cứ lệnh label nào

và thay đổi bởi lệnh text và gtext.

Axis on Ngược lại với axis off nếu chúng có thể

Page 80: Tailieu.vncty.com   06 matlab-osadq3_j2qu_20130412090644_577

Copyright 2007

MATLAB 80

ĐỒ HOA CƠ BẢN (tt)

Thí dụ:

>>x=linspace(0,2*pi,30);

>>y=sin(x);

>>z=cos(x);

>>plot(x,y,x,z)

>>box off

% Sau khi sử dụng lệnh

>>axis off

>>axis ij

>>axis square equal

>>axis xy normal

Page 81: Tailieu.vncty.com   06 matlab-osadq3_j2qu_20130412090644_577

Copyright 2007

MATLAB 81

ĐỒ HOA TRONG KHÔNG GIAN 3 CHIỀU

Các lệnh vẽ trong tọa độ Đềcac ba chiều

plot3: Vẽ đường thẳng và điểm trong không gian 3

chiều

Thí dụ:

Vẽ đường cong tham số:

x =e-0.05tsint

y =e-0.05tcost

z = t [0,10]

Page 82: Tailieu.vncty.com   06 matlab-osadq3_j2qu_20130412090644_577

Copyright 2007

MATLAB 82

ĐỒ HOA TRONG KHÔNG GIAN 3 CHIỀU (tt)

Thực hiện

>> t = [0:pi/50:10*pi];

>> x = exp(-0.05*t).*sin(t);

>> y = exp(-0.05*t).*cos(t);

>> z = t;

>> plot3(x,y,z),xlabel(‘x’),ylabel(‘y’),zlabel(‘z’)

>> zlabel(‘z’),grid;

Page 83: Tailieu.vncty.com   06 matlab-osadq3_j2qu_20130412090644_577

Copyright 2007

MATLAB 83

ĐỒ HOA TRONG KHÔNG GIAN 3 CHIỀU (tt)

CÁC LỆNH VẼ BIÊN DẠNG (contour)

contour: Vẽ các đường đồng mức

clabel: Nhãn

Page 84: Tailieu.vncty.com   06 matlab-osadq3_j2qu_20130412090644_577

Copyright 2007

MATLAB 84

ĐỒ HOA TRONG KHÔNG GIAN 3 CHIỀU (tt) CÁC LỆNH TẠO LƯỚI (grid)

Meshgrid(x,y)

Meshgrid(x,y,z)

Cylinder(r,u)

[X,Y,Z] = CYLINDER(R,N) forms the unit cylinder based on the generator curve in the vector R. Vector R contains the radius at equally spaced points along the unit height of the cylinder. The cylinder has N points around the circumference. SURF(X,Y,Z) displays the cylinder.

[X,Y,Z] = CYLINDER(R), and [X,Y,Z] = CYLINDER default to N = 20 and R = [1 1].

Sphere(n)

SPHERE Generate sphere.

[X,Y,Z] = SPHERE(N) generates three (N+1)-by-(N+1) matrices so that SURF(X,Y,Z) produces a unit sphere.

[X,Y,Z] = SPHERE uses N = 20.

Page 85: Tailieu.vncty.com   06 matlab-osadq3_j2qu_20130412090644_577

Copyright 2007

MATLAB 85

ĐỒ HOA TRONG KHÔNG GIAN 3 CHIỀU (tt)

Tạo một lưới các điểm trong mặt phẳng xy

Cú pháp:

[X,Y] = meshgrid(x,y)

Trong đó:

x = [xmin,x,xmax]

y = [ymin,y,ymax]

Chức năng:

− Hàm meshgrid sẽ phát sinh các tọa độ của một lưới chữ

nhật có m.n điểm với một góc (xmin,ymin) còn góc kia là

(xmax,ymax).

− Ma trận X có kích thước m.n gồm n cột giống nhau là vector

x’ và ma trận Y cũng có kích thước m.n hàng giống nhau là

vector y.

− Mỗi ô lưới sẽ có kích thước x, và y.

Page 86: Tailieu.vncty.com   06 matlab-osadq3_j2qu_20130412090644_577

Copyright 2007

MATLAB 86

ĐỒ HOA TRONG KHÔNG GIAN 3 CHIỀU (tt)

Các lệnh vẽ tương tự

meshc(X,Y,Z)

meshz(X,Y,Z)

MESHZ(...) or MESHC(…) is the same as MESH(...) except that a "curtain" or reference plane is drawn beneath.

surf(X,Y,Z)

SURF('v6',...) creates a surface object instead of a surface plot object for compatibility with MATLAB and earlier.

surfc(X,Y,Z) vẽ mặt giống như thực hiện mesh hay meshc nhưng mặt được tô bóng (shaded surface).

surfnorm

[Nx,Ny,Nz] = SURFNORM(Z) returns the surface normal components for the surface Z.

Page 87: Tailieu.vncty.com   06 matlab-osadq3_j2qu_20130412090644_577

Copyright 2007

MATLAB 87

ĐỒ HOA TRONG KHÔNG GIAN 3 CHIỀU (tt)

CÁC LỆNH VẼ MẶT LƯỚI TRONG 3D

Mesh

− MESH returns a handle to a surface plot object.

Meshz: Vẽ bề mặt với các đường thẳng đứng viền quanh

đồ thị.

Waterfall: Vẽ bề mặt với các đường lưới theo một hướng

như thác đổ.

WATERFALL(...) is the same as MESH(...) except that

the column lines of the mesh are not drawn - thus

producing a "waterfall" plot. For column-oriented data

analysis, use WATERFALL(Z') or WATERFALL(X',Y',Z').

Page 88: Tailieu.vncty.com   06 matlab-osadq3_j2qu_20130412090644_577

Copyright 2007

MATLAB 88

ĐỒ HOA TRONG KHÔNG GIAN 3 CHIỀU (tt)

Thí dụ: Vẽ mặt

Thực hiện:

>> x = [-2:.1:2];

>> y = [-2:.1:2];

>> [X,Y] = meshgrid(x,y); % Tạo lưới các điểm trong mặt

phẳng xy

>> Z = X.* exp(-X.^2-Y.^2);

>> mesh(X,Y,Z) % Vẽ các đường đồng mức dưới mặt.

>> xlabel(‘Truc x’), ylabel(‘Truc y’),zlabel(‘Truc z’)

22

. yxexz

Page 89: Tailieu.vncty.com   06 matlab-osadq3_j2qu_20130412090644_577

Copyright 2007

MATLAB 89

Thi dụ lệnh MESHZ

>> meshz(X,Y,Z)

Page 90: Tailieu.vncty.com   06 matlab-osadq3_j2qu_20130412090644_577

Copyright 2007

MATLAB 90

Thi dụ lệnh MESHC

>> Meshc(X,Y,Z)

Page 91: Tailieu.vncty.com   06 matlab-osadq3_j2qu_20130412090644_577

Copyright 2007

MATLAB 91

Thi dụ lệnh WATERFALL

>> waterfall(X,Y,Z)

Page 92: Tailieu.vncty.com   06 matlab-osadq3_j2qu_20130412090644_577

Copyright 2007

MATLAB 92

Thi dụ lệnh SURF

>> surf(X,Y,Z)

Page 93: Tailieu.vncty.com   06 matlab-osadq3_j2qu_20130412090644_577

Copyright 2007

MATLAB 93

Thi dụ lệnh SURFC

>> surfc(X,Y,Z)

Page 94: Tailieu.vncty.com   06 matlab-osadq3_j2qu_20130412090644_577

Copyright 2007

MATLAB 94

Thi dụ lệnh SURFNORM

>> surfnorm(X,Y,Z)

Page 95: Tailieu.vncty.com   06 matlab-osadq3_j2qu_20130412090644_577

Copyright 2007

MATLAB 95

Thi dụ lệnh CONTOUR

>> contour(X,Y,Z)

Page 96: Tailieu.vncty.com   06 matlab-osadq3_j2qu_20130412090644_577

Copyright 2007

MATLAB 96

ĐỒ HOA TRONG KHÔNG GIAN 3 CHIỀU (tt)

CÁC LỆNH QUAN SÁT

View

Rot90

Slice

Colormap

colorbar

Page 97: Tailieu.vncty.com   06 matlab-osadq3_j2qu_20130412090644_577

Copyright 2007

MATLAB 97

ĐỒ HOA TRONG KHÔNG GIAN 3 CHIỀU (tt)

Lệnh view

view([,])

Trong đó:

: Là góc phương vị tính bằng độ ngược chiều kim đồng hồ

từ phía trên của trục ngang (mặc định = -37.5o)

: Góc nhìn tính bằng độ xuống mặt phẳng xy (mặc định =

30o)

Thí dụ: view([0,90]) : Vẽ 2D là một trường hợp đặc biệt của

phép vẽ 3D.

- Hiển thị đồ thị 3D đã tạo ra dưới dạng 2D theo góc

phương vị và góc nhìn.

Page 98: Tailieu.vncty.com   06 matlab-osadq3_j2qu_20130412090644_577

Copyright 2007

MATLAB 98

ĐỒ HOA TRONG KHÔNG GIAN 3 CHIỀU (tt)

>> view([0,90]) và >> view([30,30])

% Hiển thị hình đã vẽ trong lệnh surfc(X,Y,Z)

Page 99: Tailieu.vncty.com   06 matlab-osadq3_j2qu_20130412090644_577

Copyright 2007

MATLAB 99

ĐỒ HOA TRONG KHÔNG GIAN 3 CHIỀU (tt)

Lệnh rot90

ROT90 Rotate matrix 90 degrees.

ROT90(A) is the 90 degree counterclockwise rotation of

matrix A..

ROT90(A,K) is the K*90 degree rotation of A, K = +-1,+-

2,...

Example:

A = [1 2 3 B = rot90(A) = [ 3 6

4 5 6 ] 2 5

1 4 ]

Page 100: Tailieu.vncty.com   06 matlab-osadq3_j2qu_20130412090644_577

Copyright 2007

MATLAB 100

ĐỒ HOA TRONG KHÔNG GIAN 3 CHIỀU (tt)

>>[x,y,z] = meshgrid(-2:.2:2,-2:.25:2,-:.16:2);

v = x .* exp(-x.^2 - y.^2 - z.^2);

slice(x,y,z,v,[-1.2 .8 2],2,[-2 -.2])

Page 101: Tailieu.vncty.com   06 matlab-osadq3_j2qu_20130412090644_577

Copyright 2007

MATLAB 101

ĐỒ HOA TRONG KHÔNG GIAN 3 CHIỀU (tt)

Thí dụ về lệnh Colormap và colorbar

>> [x,y] = meshgrid(-2:.2:2);

>> z = x.^(-x.^2-y.^2);

>> [C,h] = contour(x,y,z);

>> Clabel(C,h); %Nhãn biểu đồ contour

>> Surf(peaks(30))

>> Colormap cool; %Chọn biểu đồ màu

>> Colorbar % Hiển thị thanh biểu đồ màu

Page 102: Tailieu.vncty.com   06 matlab-osadq3_j2qu_20130412090644_577

Copyright 2007

MATLAB 102

ĐỒ HOA TRONG KHÔNG GIAN 3 CHIỀU (tt)

Page 103: Tailieu.vncty.com   06 matlab-osadq3_j2qu_20130412090644_577

Copyright 2007

MATLAB 103

ĐỒ HOA TRONG KHÔNG GIAN 3 CHIỀU (tt) Các lệnh đồ họa khác trong đồ họa 3D

1. fill3: Tô đa giác 3 mặt trong không gian 3D.

Cú pháp:

fill3(x,y,z,c): Tô đa giác 3D được định nghĩa bởi 3 vector x, y, z với màu tô được xác định bởi c.

fill3(x1,y1,z1,c1,x2,y2,z2,c2,…): Tô đa giác 3D xác định nhiều vùng tô.

2. comet3(z)

3. comet3(x,y,z)

4. comet3(x,y,z,p)

5. comet3

Các lệnh vẽ đườn viền 3 chiều trong 3D

6. contour3(z): Vẽ đường viền 3D cho tới mức z

7. contour3(z,n): Vẽ đường n viền 3D

8. contour3(x,y,z): Tương tự như trên, nhưng ma trận x,y để giới hạn trục x,y.

Page 104: Tailieu.vncty.com   06 matlab-osadq3_j2qu_20130412090644_577

Copyright 2007

MATLAB 104

ĐỒ HOA TRONG KHÔNG GIAN 3 CHIỀU (tt)

Lưu ý:

MATLAB cho phép chuyển đồ thị qua word…

Cách làm:

− Từ cửa sổ <Figure> <Edit> <Copy Figure>

Sau đó trở lại cửa sổ mà ta muốn chèn và

<Paste> nó vào một nơi ta mong muốn.

Page 105: Tailieu.vncty.com   06 matlab-osadq3_j2qu_20130412090644_577

Copyright 2007

MATLAB 105

M-FILE, or SCRIPT

Việc nhập lệnh từ dấu nhắc (>>) thì nhanh và hiệu quả, nhưng

khi thực hiện một lúc nhiều lệnh hoặc muốn thay đổi giá trị của

một hoặc nhiều biến và lặp lại một số lệnh thì việc nhập lệnh ở

dấu nhắc sẽ kém hiệu quả.

M-FILE tiện dụng cho việc giải bài toán lớn, MATLAB cung cấp

thủ tục để tạo hàm riêng cho người sử dụng với hình thức một

text file.

Giải pháp:

− Tập hợp các lệnh vào một file với phần mở rộng là (*.m)

Cụ thể:

− Để soạn thảo một M-File thì <New> <M-FILE>

− Để hiển thị những lệnh trong M-File khi chúng được thực

thi thì sử dụng lệnh echo on.

− Hiệu chỉnh M-FILE: <Open>

Page 106: Tailieu.vncty.com   06 matlab-osadq3_j2qu_20130412090644_577

Copyright 2007

MATLAB 106

M-FILE, or SCRIPT (tt)MỘT SỐ LÊNH QUẢN LÝ TẬP TIN

Cho phép liệt kê, xem, xóa, sửa, chuyển đổi thư mục …

− d: Chuyển đổi thư mục

− Chdir/cd

− dir: liệt kê tất cả thư mục hiện hành (tương tự lệnh IS)

− delete: Xóa tập tin M-FILE

− type: Hiển thị tập tin M-FILE trong cửa sổ lệnh.

− what: Hiển thị tất cả M-FILE trong thư mục hiện hành.

− which: Hiển thị thư mục …

Page 107: Tailieu.vncty.com   06 matlab-osadq3_j2qu_20130412090644_577

Copyright 2007

MATLAB 107

M-FILE, or SCRIPT (tt)

CẤU TRÚC MỘT CHƯƠNG TRÌNH

1. function[các biến đầu ra] = filename(các đối số)

function filename(các đối số)

function[các biến đầu ra] = filename

2. % là lời chú thích của chương trình

3. global ten_bien1 ten_bien2 …

4. Chương trình (các câu lệnh)

Page 108: Tailieu.vncty.com   06 matlab-osadq3_j2qu_20130412090644_577

Copyright 2007

MATLAB 108

M-FILE, or SCRIPT (tt)

CẤU TRÚC MỘT CHƯƠNG TRÌNH

Thí dụ:

Giải phương trình bậc hai: ax2 + by + c = 0

a. Khi biết các hệ số

b. Nhập 3 hệ số ở cửa sổ lệnh

Page 109: Tailieu.vncty.com   06 matlab-osadq3_j2qu_20130412090644_577

Copyright 2007

MATLAB 109

M-FILE, or SCRIPT (tt)a. Chương trình có tên ptb2_a.m

function x = ptb2(a,b,c)

% Giải phương trình bậc hai khi biết hệ số

p = [a b c];

roots(p);

x0 = -b/(2*a);

x = (x0 -10):.1:(x0+10);

y = a*x.2 + b*x + 10;

plot(x,y), title(‘Do thi bac hai’);

Trong cửa sổ lệnh:

>> x = ptb2(1,2,1)

x =

0 -1 -1

Page 110: Tailieu.vncty.com   06 matlab-osadq3_j2qu_20130412090644_577

Copyright 2007

MATLAB 110

M-FILE, or SCRIPT (tt)b. Chương trình có tên ptb2_b.m

% chú thích

a = input(‘Nhập a = ‘);

b = input(‘Nhập b = ‘);

c = input(‘Nhập c = ‘);

p = [a b c ]; % Khởi tạo vecto hệ số

x = roots(p);

disp(‘Nghiệm của phương trình bậc 2:’)

disp(x)

x = (x0 -10):.1:(x0+10);

y = a*x.^2 + b*x + 10;

plot(x,y)

title(‘Do thi bac hai’);

Page 111: Tailieu.vncty.com   06 matlab-osadq3_j2qu_20130412090644_577

Copyright 2007

MATLAB 111

M-FILE, or SCRIPT (tt)

Giải PTB2 bằng M-FILE

Page 112: Tailieu.vncty.com   06 matlab-osadq3_j2qu_20130412090644_577

Copyright 2007

MATLAB 112

M-FILE, or SCRIPT (tt)

>> ptb2

Nhap a = 1

Nhap b = -2

Nhap c = 1

Nghiem cua phuong trinh bac 2:

1

1

Page 113: Tailieu.vncty.com   06 matlab-osadq3_j2qu_20130412090644_577

Copyright 2007

MATLAB 113

M-FILE, or SCRIPT (tt)

SỬ DỤNG FILE SCRIPT

Chúng ta có thể soạn một script file theo cấu

trúc đề nghị như sau:

a. Phần chú thích (comments section): Viết

các dòng chú thích cho chương trình.

Dòng 1: Tên của chương trình và các từ

khóa mô tả chương trình (dòng này được

MATLAB gọi là dòng H1 và lệnh lookfor

của MATLAB sẽ tìm thông tin ở dòng H1

này khi có yêu cầu)

Page 114: Tailieu.vncty.com   06 matlab-osadq3_j2qu_20130412090644_577

Copyright 2007

MATLAB 114

M-FILE, or SCRIPT (tt)

Dòng 2: Tên người viết chương trình, ngày viết.

Định nghĩa các tên biến đầu vào và đầu ra. Có

thể thêm vào định nghĩa tên các biến trung

gian. Lưu ý là phải xác định rõ đơn vị đo lường.

Cho tất cả các biến đầu vào và đầu ra.

Tên của từng hàm tự tạo được sử dụng trong

chương trình.

b. Phần đưa vào các giá trị đầu vào (input section)

c. Phần tính toán (calculation section)

d. Phần trình bày kết quả: Dùng một số hàm của

MATLAB để trình bày kết quả.

Page 115: Tailieu.vncty.com   06 matlab-osadq3_j2qu_20130412090644_577

Copyright 2007

MATLAB 115

M-FILE, or SCRIPT (tt)

Thí dụ:

Soạn Script file tính diện tích hình tam giác

ABC, khi biết tọa độ ba điểm trong không gian

R3. Diện tích tam giác được tính bằng công

thức:

Trong đó, ký hiệu (^) chỉ tích có hướng của hai

vectơ AB và AC.

ACABS 2

1

Page 116: Tailieu.vncty.com   06 matlab-osadq3_j2qu_20130412090644_577

Copyright 2007

MATLAB 116

M-FILE, or SCRIPT (tt)

Trong cửa sổ Editor/Debugger, ta soạn các dòng lệnh như sau:

Page 117: Tailieu.vncty.com   06 matlab-osadq3_j2qu_20130412090644_577

Copyright 2007

MATLAB 117

M-FILE, or SCRIPT (tt)

Trong chương trình trên hàm cross(u,v) sẽ trả về một vectơ

là vectơ tích có hướng của 2 vectơ u và v.

Lưu ý: vectơ u (hoặc v) được xác định bởi các thành phần

số của nó.

Thí dụ:

u = [1,-2,4], v = [-4,2,0]

Hàm norm(p) sẽ tính module của vectơ p. Lệnh clear xuất

hiện trong đầu chương trình sẽ xóa toàn bộ các biến mà

WORKSPACE đang quản lý và dành vùng nhớ để quản lý

các biến của chương trình.

Dòng lệnh disp(S) sẽ hiện thị giá trị biến S ra cửa sổ lệnh-

command windows(so sánh với lệnh disp(‘text’), hiển thị

chuỗi ký tự).

Page 118: Tailieu.vncty.com   06 matlab-osadq3_j2qu_20130412090644_577

Copyright 2007

MATLAB 118

M-FILE, or SCRIPT (tt)THỰC HIỆN

% File dt_tamgiac.m: Chương trình tính diện tích hình tam giác,

% Tên người lập trình

% Dữ liệu đầu vào: Tọa ba điểm A,B,C

% Dữ liệu đầu ra: Diện tích S của ABC

% Biến trung gian p chỉ vectơ tích có hướng của hai vectơ AB x AC

clear

disp(‘CHUONG TRINH TINH DIEN TICH HINH TAM GIAC’)

disp(‘KHI BIET TOA DO BA DIEM’)

disp(‘=========================================’)

a = input(‘Tọa điểm A = ‘);

b = input(‘Tọa điểm B = ‘);

c = input(‘Tọa điểm C = ‘);

p = cross(b-a,c-a); % Tích có hướng của hai vectơ AB x AC

S = 0.5*norm(p); % Diện tích ABC

disp(‘Dien tich tam giac ABC:’)

disp(S)

Page 119: Tailieu.vncty.com   06 matlab-osadq3_j2qu_20130412090644_577

Copyright 2007

MATLAB 119

M-FILE, or SCRIPT (tt)

Khi chạy chương trình cho kết quả:

>> DT_Tamgiac

CT TINH DIEN TICH HINH TAM GIAC

KHI BIET TOA DO BA DIEM

==================================

Toa do diem A = [2,0,0]

Toa do diem B = [4,0,0]

Toa do diem C = [3,2,0]

Dien tich tam giac ABC:

2

Page 120: Tailieu.vncty.com   06 matlab-osadq3_j2qu_20130412090644_577

Copyright 2007

MATLAB 120

Toolbox Symbolic

MATLAB dùng các biểu thức ở dạng biểu tượng (symbolic)

như các chuỗi kí tự để phân biệt với các biến hay phép

toán dạng số học (numberic)

Xem Thí dụ dưới đây:

>> x = sym('x'); %Tao bien symbolic x

>> eq = 'x^2+2*x+a=0'; %Dinh nghia PT voi bien symbolic

x

>> solve(eq) %Ham dung de giai PT tren

ans =

-1+(1-a)^(1/2)

-1-(1-a)^(1/2)

Page 121: Tailieu.vncty.com   06 matlab-osadq3_j2qu_20130412090644_577

Copyright 2007

MATLAB 121

Toolbox Symbolic

Định nghĩa biểu thức symbolic

Biểu thức Trong MATLAB

dc

baM

dxx

xf

b

a

1

3

nx.2

1‘1/(2*x^n)’

M = sym(‘[a,b;c,d]’)

f = int(‘x^3/sqrt(1-x)’,’a’,’b’)

Page 122: Tailieu.vncty.com   06 matlab-osadq3_j2qu_20130412090644_577

Copyright 2007

MATLAB 122

Toolbox Symbolic

Hàm symbolic cho phép tính toán với các biểu

thức, Thí dụ:

>>diff(‘cos(x)’) % Tính đạo hàm của cos(x)

ans =

-sin(x)

>>M=sym(‘[a,b;c,d]’)

ans =

[a b]

[c d]

Page 123: Tailieu.vncty.com   06 matlab-osadq3_j2qu_20130412090644_577

Copyright 2007

MATLAB 123

Toolbox Symbolic

Ở đây, ‘cos(x)’ là một chuỗi, diff(‘cos(x)’) là một

biểu thức symbolic chứ không phải là một hàm số

học. Ở Thí dụ 2, M=sym(‘[a,b;c,d]’) là một biểu

thức symbolic.

Sử dụng symbolic để xây dựng các hàm toán học

dạng symbolic.

Khai báo biến (như đã trình bày các slide trước)

− sym(x)

− sym x

− syms x

Page 124: Tailieu.vncty.com   06 matlab-osadq3_j2qu_20130412090644_577

Copyright 2007

MATLAB 124

Toolbox Symbolic

Các lệnh toán học sử dụng symbolic

f và g là hai hàm symbolic

− f+g symadd(f,g)

− f-g symsub(f,g)

− f*g symmul(f,g)

− f/g symdiv(f,g)

− f^g sympow(f,g)

Page 125: Tailieu.vncty.com   06 matlab-osadq3_j2qu_20130412090644_577

Copyright 2007

MATLAB 125

Toolbox Symbolic

diff(f) Đạo hàm bậc nhất theo biến x

diff(f,’a’) Đạo hàm bậc nhất theo biến a

diff(f,’a’,n) Đạo hàm bậc n theo biến n

int(f) Tính tích phân theo biến x

int(f,’a’) Tính tích phân theo biến a

int(f,1,2) Tính tích phân theo biến x từ 1 đến 2.

int(f,’a’,1,2) Tính tích phân theo biến a từ 1 đến 2.

int(f,’n’,’m’) Tính tích phân theo biến x từ n đến m

solve(f) Giải phương trình f = 0

dsolve(f) Giải phương trình vi phân

dsolve(f,’a’

)

Giải PT vi phân với ĐK ban đầu

ezplot(f) Vẽ đồ thị hàm mà không cần giá trị của biến.

Page 126: Tailieu.vncty.com   06 matlab-osadq3_j2qu_20130412090644_577

Copyright 2007

MATLAB 126

Toolbox Symbolic

F=fourier(f) Biến đổi Fourier f(x)->F(w)

f=ifourier(F) Biến đổi Fourier ngược F(w)->f(x)

F=fourier(f,v) Biến đổi Fourier f(x)->F(v)

F=fourier(f,t,v) Biến đổi Fourier ngược f(t)->F(v)

F=ztrans(f) Biến đổi z f(n)->F(z)

f=ztrans(F) Biến đổi z ngược F(z)->f(n)

F=ztrans(f,w) Biến đổi z f(n)->F(w)

F=ztrans(F,k,w) Biến đổi z ngược f(k)->F(w)

F=laplace(f) Biến đổi Laplace f(t)->F(s)

f=laplace(F) Biến đổi Laplace F(s)->f(t)

Page 127: Tailieu.vncty.com   06 matlab-osadq3_j2qu_20130412090644_577

Copyright 2007

MATLAB 127

SIMULINK

Simulink 5.0 (Simulation and Link - R13) được MatWorks

giới thiệu vào tháng 6 năm 2003. Nó cho phép phân tích,

mô hình hóa và mô phỏng các hệ thống động tuyến tính và

phi tuyến, liên tục và rời rạc một cách trực quan trong môi

trường giao tiếp đồ họa, bằng các thao tác chuột đơn giản.

Có thể nói, không tận dụng được Simulink là một thiệt thòi

lớn cho người làm công tác mô phỏng!

Khởi động Simulink bằng một trong các cách sau:

nhập:

>>simulink

hoặc nhấp chuột vào trên menubar của Matlab

Page 128: Tailieu.vncty.com   06 matlab-osadq3_j2qu_20130412090644_577

Copyright 2007

MATLAB 128

SIMULINK

Thư viện simulink hiện ra như hình sau:

Trước tiên, sinh viên hãy nhấp chuột vào các thanh

cuộn của thư viện để có cái nhìn thân thiện về simulink.

Từ đây, để có thể tạo mô hình bằng simulink, hãy:

Nhấp chuột vào biểu tượng của thư viện simulink

Chọn: File – New – Model trong Menu của thư viện Simulink

Chọn: File – New – Model trong cửa sổ lệnh của Matlab

Page 129: Tailieu.vncty.com   06 matlab-osadq3_j2qu_20130412090644_577

Copyright 2007

MATLAB 129

SIMULINK

Môi trường soạn thảo của Simulink

Cửa sổ này cho phép ta ‘nhấp - kéo - thả’ vào

từng khối chức năng trong thư viện simulink. Thí

dụ, đặt vào đây khối ‘Sine Wave’ trong thư viện

simulink như hình sau:

Page 130: Tailieu.vncty.com   06 matlab-osadq3_j2qu_20130412090644_577

Copyright 2007

MATLAB 130

SIMULINK

Lấy một khối từ thư viện

Page 131: Tailieu.vncty.com   06 matlab-osadq3_j2qu_20130412090644_577

Copyright 2007

MATLAB 131

MẢNG và MA TRÂN

Mảng một chiều

Mảng một chiều (vecto) là tập hợp các số được sắp xếp có thứ tự.

length(u): Tính số phần tử trong mảng một chiều u.

Muốn truy xuất phần tử thứ n trong mảng thì: ten_mang(n);

Các phần tử của mảng đựơc phân cách nhau bởi dấu phẩy và được đặt trong đôi móc vuông [ ] (kiểu dòng).

Các phần tử trong mảng phân cách nhau dấu chấm phẩy thì gọi là mảng kiểu cột.

Page 132: Tailieu.vncty.com   06 matlab-osadq3_j2qu_20130412090644_577

Copyright 2007

MATLAB 132

MẢNG và MA TRÂN Cách tạo mảng:

* Ten_mang = [m1, m2, m3, …] % Mảng kiểu dòng

* Ten_mang = [m1; m2; m3, …] % Mảng kiểu cột

* Ten_mang = [m1 m2 m3 …] % Vectơ dòng

* Ten_mang = [m1

m2

m3

…]

* Ten_mang = [a::b] % Mảng kiểu cách đều.

Thí dụ:

>> x = [0:2:9]

x =

0 2 4 6 8

Page 133: Tailieu.vncty.com   06 matlab-osadq3_j2qu_20130412090644_577

Copyright 2007

MATLAB 133

MẢNG và MA TRÂN

• x = linspace(x1,x2,n)

% Tạo một vectơ dòng có các phẩn tử cách

đều, với x1 là cận dưới, x2 là cận trên, và n là

số điểm của dãy (kể cả 2 điểm x1, x2). Nếu n bị

bỏ qua, giá trị mặc định của nó là 100.

Thí dụ:

>> z = linspace(2,8,7)

z = 2 3 4 5 6 7 8

Page 134: Tailieu.vncty.com   06 matlab-osadq3_j2qu_20130412090644_577

Copyright 2007

MATLAB 134

MẢNG và MA TRÂN

x = logspace(a,b,n)

% Sẽ tạo ra 1 vectơ dòng có n phần tử cách

khoảng theo thang logarit, phần tử đầu là 10a và

phần tử cuối là 10b, các phần tử giữa có dạng

10x, trong đó x là 1 điểm cách đều giữa a và b.

Có (n-2) điểm như vậy. Nếu n bỏ đi trong câu lệnh

thì mặc định của nó là 50.

Thí dụ:

>> u = logspace(-1,1,4)

u =

0.1000 0.4642 2.1544 10.0000

Page 135: Tailieu.vncty.com   06 matlab-osadq3_j2qu_20130412090644_577

Copyright 2007

MATLAB 135

MẢNG và MA TRÂN

Các hàm liên quan đến mảng một chiều

a. roots(Ten_mang)

Nghiệm của một đa thức Ten_mang là một đa

thức được mô tả là một mảng có các phần tử là

các hệ số đa thức, bắt đầu ở bậc cao nhất.

Mảng kiểu cột.

b. poly(r)

Trả về một mảng kiểu đòng với các phần tử là

các hệ số của đa thức có nghiệm trước là các

phần tử của mảng r (bài toán ngược)

Page 136: Tailieu.vncty.com   06 matlab-osadq3_j2qu_20130412090644_577

Copyright 2007

MATLAB 136

MẢNG và MA TRÂN

c. polyval(a,x)

Dùng để tính giá trị của một đa thức có các hệ số chứa trong mảng a tại các điểm thuộc mảng x.

Kết quả là một mảng có kích thước bằng với mảng x.

d. find(x)

Trả một mảng chứa các chỉ số của các phần tử khác 0 trong mảng.

e. find(x<y)

Trả về một mảng chứa các chỉ số của các phần tử trong mảng x (hay y) thỏa điều kiện x < y. x có kích thước bằng y.

Page 137: Tailieu.vncty.com   06 matlab-osadq3_j2qu_20130412090644_577

Copyright 2007

MATLAB 137

MẢNG và MA TRÂN

f. Chuyển vectơ hàng sang vectơ cột:

Chuyển vị (transpose), dùng kí hiệu dấu nháy đơn ‘ bên phải vectơ (mảng một chiều) và ngược lại.

Thí dụ:

>> v = [3 5 9 7]’

v =

3

5

9

7

Page 138: Tailieu.vncty.com   06 matlab-osadq3_j2qu_20130412090644_577

Copyright 2007

MATLAB 138

MẢNG và MA TRÂN

g. Kết nối các vectơ:

Chúng ta có thể tạo vectơ mới bằng cách kết nối

các vectơ thành phần đã biết.

Thí dụ:

>> x = [2,5,6];

>> y = [7,8,1];

>> z = [x,y]

z = 2 5 6 7 8 1

Page 139: Tailieu.vncty.com   06 matlab-osadq3_j2qu_20130412090644_577

Copyright 2007

MATLAB 139

MẢNG và MA TRÂN i. Truy xuất một phần tử từ một vectơ:

Chúng ta có thể truy xuất một phần tử vectơ hay trích ra một nhóm các phần tử của vectơ theo một điều kiện nào đó (phát sinh ra vectơ mới).

Thí dụ:

>> u = [0,2,4,6,8,10];

>> u(3) % truy xuất phần tử thứ 3 của vectơ u

ans =

4

>> u(2:5) %Truy xuất phần tử thứ 2 đến thứ 5 của vectơ u

ans =

2 4 6 8

>> u([1 3 5]) %Truy xuất phần tử thứ 1, thứ 3, thứ 5 của vectơ u.

>> n = length(u) % Trả về số phần tử của vectơ u thuộc N.

n =

6

Page 140: Tailieu.vncty.com   06 matlab-osadq3_j2qu_20130412090644_577

Copyright 2007

MATLAB 140

MẢNG và MA TRÂN

MẢNG 2 CHIỀU (MA TRẬN)

Một mảng trong MATLAB còn có thể có nhiều dòng, nhiều cột; một mảng 2 chiều như vậy được gọi là MA TRẬN (matrix).

Nếu một ma trận A có m dòng và n cột, ta nói kích thước A là m.n. Đôi khi ma trận A còn được viết dưới dạng [aij], trong đó i, j lần lượt là các chỉ số DÒNG và chỉ số CỘT của phần tử aij.

Hai ma trận A và B được gọi là BẰNG NHAU nếu chúng có cùng kích thước và tất cả các phần tử tương ứng đều bằng nhau (aij = bij, với mọi i, j)

Các vectơ được MATLAB xem là các mảng 2 chiều đặc biệt: Chúng có kích thước 1xn (vectơ dòng) hoặc mx1 (vectơ cột). MATLAB xếp vectơ và mà trận vào lớp double array trong WORKSPACE.

Page 141: Tailieu.vncty.com   06 matlab-osadq3_j2qu_20130412090644_577

Copyright 2007

MATLAB 141

MẢNG và MA TRÂN

a. Cách tạo một ma trận trong MATLAB

Các phần tử thuộc cùng một dòng được phân

cách nhau bởi dấu phẩy(,), còn các dòng thì

phân cách nhau bằng dấu chấm phẩy (;)

Thí dụ:

>> A = [2,4,6;3,5,7]

A =

2 4 6

3 5 7

Page 142: Tailieu.vncty.com   06 matlab-osadq3_j2qu_20130412090644_577

Copyright 2007

MATLAB 142

MẢNG và MA TRÂN

b. Kết nối một vectơ vào 1 ma trận:

Nếu r = [-1, 0, 1] là một vectơ dòng có

cùng số cột với ma trận A thì lệnh B = [A:r]

sẽ nối vectơ dòng r vào ma trận A, để tạo

ra ma trận B có 3 dòng, 3 cột như sau:

B =

2 4 6

3 5 7

-1 0 1

Page 143: Tailieu.vncty.com   06 matlab-osadq3_j2qu_20130412090644_577

Copyright 2007

MATLAB 143

MẢNG và MA TRÂN

c. Ma trận chuyển vị (chuyển trí):

Nếu A là một ma trận có kích thước m.n thì ma trận chuyển vị (transpose) của A là một ma trận có kích thước n.m. Các cột thứ 1, thứ 2, thứ 3… Trong AT chính là dòng thứ 1, 2, 3 trong ma trận A.

MATLAB dùng dấu nháy đơn đặt bên phải ma trận để tạo ma trận chuyển vị.

Thí dụ:

>> A = [1 0;-4 2]

A =

-1 0

-4 2

>> AT=A’

AT =

1 -4

0 2

Page 144: Tailieu.vncty.com   06 matlab-osadq3_j2qu_20130412090644_577

Copyright 2007

MATLAB 144

MẢNG và MA TRÂN

d. Truy xuất một phần tử của ma trận (trích vectơ

dòng, cột, ma trận con)

Khi tạo xong một ma trận A nào đó, phát hiện

phần tử dòng 2, cột 3 bị gõ sai và chúng ta

muốn sửa lại phần tử này là 6, ta chỉ cần gõ

lệnh A(2,3) = 6. Trong MATLAB A(2,3) là ký

hiệu chỉ phần tử dòng 2, cột 3 của ma trận.

Với một ma trận cho trước, chúng ta có thể truy

xuất từng phần tử của ma trận, trích ra một

vectơ dòng hoặc một vectơ cột nào đó, hoặc

trích ra một ma trận con gồm nhiều dòng, nhiều

cột của ma trận A.

Page 145: Tailieu.vncty.com   06 matlab-osadq3_j2qu_20130412090644_577

Copyright 2007

MATLAB 145

MẢNG và MA TRÂN Thí dụ:

>> A = [1,2,3,4;6,7,8,9;0,5,10,15;-3,-4,-5,-6]A = 1 2 3 4 6 7 8 9 0 5 10 15 -3 -4 -5 -6

>> A(2,3) % truy xuất phần tử dòng 2, cột 3.ans =

8>> A(:,2) %Trích vectơ cột thứ 2ans =

275-4>> A(4,:) % Trích vectơ dòng thứ 4

ans = -3 -4 -5 -6

Page 146: Tailieu.vncty.com   06 matlab-osadq3_j2qu_20130412090644_577

Copyright 2007

MATLAB 146

MẢNG và MA TRÂN

>> A(:,2:4) % Tạo một ma trận con gồm các cột 2,3,4 của A

ans =

2 3 4

7 8 9

5 10 15

-4 -5 -6

>> A(1:2,:) %Tạo 1 ma trận con gồm các dòng 1,2 của A

ans =

1 2 3 4

6 7 8 9

>> A([1 3], [2 4]) % Tạo một ma trận con gồm các phần tử thuộc dòng 1,3 và cột 2,4.

Page 147: Tailieu.vncty.com   06 matlab-osadq3_j2qu_20130412090644_577

Copyright 2007

MATLAB 147

MẢNG và MA TRÂN

Tóm tắt:

A(k,:) : Véctơ dòng thứ k.

A (:,l): Vectơ cột thứ l.

A(k:m,:): Ma trận con có dòng thứ k, cột thứ m

A([array1], [array2]): Vectơ dòng để ghi số dòng

nào, cột nào cần trích ra.

Page 148: Tailieu.vncty.com   06 matlab-osadq3_j2qu_20130412090644_577

Copyright 2007

MATLAB 148

MẢNG và MA TRÂN

Mảng trống hoặc mảng không (empty or null

array)

MATLAB dùng kí hiệu [ ] để chỉ 1 mảng trống

là mảng không có phần tử nào cả. Các hàng

hoặc các cột của một ma trận có thể được bỏ

đi, bằng cách gán chúng bằng với mảng trống.

Thí dụ: A(2,:) = [ ], sẽ bỏ dòng thứ 2 của ma

trận A và như vậy sẽ làm thay đổi kích thước

của ma trận A ban đầu.

Page 149: Tailieu.vncty.com   06 matlab-osadq3_j2qu_20130412090644_577

Copyright 2007

MATLAB 149

MẢNG và MA TRÂN Thí dụ:

>> A

A =

1 2 3 4

5 6 7 8

0 5 10 15

-3 -4 -5 -6

>> A(2,:) = [ ]; % Bỏ dòng thứ 2 của ma trận A

>> A

A =

1 2 3 4

0 5 10 15

-3 -4 -5 -6

Page 150: Tailieu.vncty.com   06 matlab-osadq3_j2qu_20130412090644_577

Copyright 2007

MATLAB 150

MẢNG và MA TRÂN

Thí dụ:

>> A

A =

1 2 3 4

0 5 10 15

-3 -4 -5 -6

>> A(:,4) = [ ]; % Bỏ tiếp cột thứ 4

>> A

A =

1 2 3

0 5 10

-3 -4 -5

Page 151: Tailieu.vncty.com   06 matlab-osadq3_j2qu_20130412090644_577

Copyright 2007

MATLAB 151

MẢNG và MA TRÂN

Các ma trận đặc biệt

M = eye(n): tạo ra ma trận đơn vị cấp n

M = ones(m,n): Tạo ra ma trận có size = m.n,

có các phần tử đều bằng 1.

M = zeros(m,n): Tạo ra ma trận có size = m.n,

có các phần tử đều bằng 0.

M = zeros(n); M = ones(n): Tạo ra ma trận

vuông M cấp n có tất cả các phần tử đều bằng

o hoặc bằng 1.

Page 152: Tailieu.vncty.com   06 matlab-osadq3_j2qu_20130412090644_577

Copyright 2007

MATLAB 152

CÁC PHÉP TOÁN MA TRÂN

Phép cộng trừ

A+B

A-B

% A và B là 2 ma trận có cùng kích thước, hoặc 1 trong hai là đại lượng vô hướng.

Phép nhân

A*B %Tích hai ma trận. Số cột của A bằng số hàng của B.

A.*B % Nhân từng phần tử của A với từng phần tử của B tương ứng. A và B có cùng kích thước.

Page 153: Tailieu.vncty.com   06 matlab-osadq3_j2qu_20130412090644_577

Copyright 2007

MATLAB 153

CÁC PHÉP TOÁN MA TRÂN

Phép chia:

A\B % Chia trái ma trận.

A.\B % Chia trái mảng

A/B % Chia phải ma trận

A./B %Chia phải mảng

Phép lũy thừa:

A^k % Lũy thừa ma trận A bậc k. Lưu ý: Lỗi sẽ

phát sinh nếu cả A và k đều là ma trận.

A.^B % Lũy thừa mảng. Là một ma trận mà các

số hạng là A(i,j)^B(i,j)

Page 154: Tailieu.vncty.com   06 matlab-osadq3_j2qu_20130412090644_577

Copyright 2007

MATLAB 154

CÁC PHÉP TOÁN MA TRÂN

Ma trận chuyển vị:

A’

Ma trận nghịch đảo

inv(a) % Tương đương kí hiệu A-1

Định thức ma trận

det(A) % A phải là ma trận vuông

Phép quay ma trận

Rot90(A,n) % Các phần tử của ma trận được quay đi một góc 90o theo ngược chiều kim đồng hồ. A là ma trận vuông, n số lần quay.

Phép đảo ma trận

Fliplr(A) %đảo các phần tử của A từ trái sang phải.

Flipud(A) %đảo các phần tử của A từ trên xuống dưới

Page 155: Tailieu.vncty.com   06 matlab-osadq3_j2qu_20130412090644_577

Copyright 2007

MATLAB 155

HỆ PHƯƠNG TRÌNH ĐẠI SỐ TUYẾN TÍNH

Phương pháp nghịch đảo ma trận

Inv(A)

Invhilb(n):

pinv(A): Tính giả nghịch đảo ma trận nxm với m ≠ n.

Phương pháp khử Gauss

rref([A f])

Phương pháp khử Gauss-Jordan

Phương pháp phân rã ma trận LU

lu(A)

Cú pháp: [L, U, P]=lu(A)

− trả về ma trận tam giác dưới L, tam giác trên U và ma trận hoán đổi P (ma trận đơn vị mà các cột bị hoán chuyển). Ta có, L*U = P*A => X = U\(L\b)

Page 156: Tailieu.vncty.com   06 matlab-osadq3_j2qu_20130412090644_577

Copyright 2007

MATLAB 156

HỆ PHƯƠNG TRÌNH ĐẠI SỐ TUYẾN TÍNH

Phương pháp phân rã ma trận LU

− lu(A)

− Cú pháp: [L, U, P]=lu(A)

Trả về ma trận tam giác dưới L, tam giác

trên U và ma trận hoán đổi P (ma trận

đơn vị mà các cột bị hoán chuyển). Ta có,

L*U = P*A => X = U\(L\b)

Trả về ma trận tam giác trên U, còn ma

trận LP’=L*P. Ta có, LP*U = A => X = U \

(LP\b)

Page 157: Tailieu.vncty.com   06 matlab-osadq3_j2qu_20130412090644_577

Copyright 2007

MATLAB 157

TẠO GIAO DIỆN

Bài thí nghiệm này trang bị cho sinh viên một số

kiến thức cơ bản để xây dựng giao diện người

dùng trong môi trường Matlab, nhằm hoàn thiện

một chương trình ứng dụng nhất định.

Cũng như các ngôn ngữ cấp cao khác, Matlab

hổ trợ nhiều công cụ chức năng cho phép lập

trình tạo giao diện sử dụng đẹp và nhanh chóng.

Thí dụ, các dạng nút ấn, cửa sổ soạn thảo, các

dạng menu, …

Page 158: Tailieu.vncty.com   06 matlab-osadq3_j2qu_20130412090644_577

Copyright 2007

MATLAB 158

TẠO GIAO DIỆN

Các công cụ hổ trợ giao diện

Page 159: Tailieu.vncty.com   06 matlab-osadq3_j2qu_20130412090644_577

Copyright 2007

MATLAB 159

TẠO GIAO DIỆN

Để tạo GIAO DIỆN dùng công cụ GUIDE của MATLAB

>> guide

Hoặc File/Show GUI layout tool. Cửa sổ Guide Control Panel xuất

hiện. Từ cửa sổ này có thể truy xuất đến các cửa sổ khác.

Có thể chọn các mẫu giao diện có sẵn hay bấm OK để chọn GUI trống.

Page 160: Tailieu.vncty.com   06 matlab-osadq3_j2qu_20130412090644_577

Copyright 2007

MATLAB 160

TẠO GIAO DIỆN (tt)

Cửa sổ biên soạn GUI hiện ra

Vùng bên trái chứa danh sách các thành phần đối tượng, vùng có ô lưới là vùng hiển thị, nơi đặt các component, bạn bấm chuột trái vào các component muốn tạo, sau đó đưa con chuột ra vùng layout nơi muốn đặt component, bấm chuột trái dùng kích thước component. Muốn thay đổi kích chuột phải vào vùng layout, vào menu chọn thuộc tính bấm chuột trái, cửa sổ sau xuất hiện, vào BackGroundColor chọn màu nền thích hợp.

Cửa sổ thuộc tính

Page 161: Tailieu.vncty.com   06 matlab-osadq3_j2qu_20130412090644_577

Copyright 2007

MATLAB 161

TẠO GIAO DIỆN (tt)

Nếu muốn mở file.fig có sẵn, ta có thể chọn ngay từ cửa

sổ lệnh

>> guide ten_file.fig

Hay vào menu File rồi chọn Open. Hay Ctrl + O

Page 162: Tailieu.vncty.com   06 matlab-osadq3_j2qu_20130412090644_577

Copyright 2007

MATLAB 162

TẠO GIAO DIỆN (tt)

Align Objects (căn lề các đối tượng)

Tools/Align Objects…/

Page 163: Tailieu.vncty.com   06 matlab-osadq3_j2qu_20130412090644_577

Copyright 2007

MATLAB 163

TẠO GIAO DIỆN (tt)

Bấm kép chuột component trong

vùng layout để soạn tính chất của

component, Thí dụ bấm kép vào

Push Buton sẽ hiện ra cửa sổ

Property Inspector hoặc cũng có

thể bấm chuột phải để hiện ra

Context Menu (hình bên), sau đó

bấm Property Inspector. Mỗi

component là mỗi Object được điều

khiển bởi uicontrol (User Interface

Control)

Page 164: Tailieu.vncty.com   06 matlab-osadq3_j2qu_20130412090644_577

Copyright 2007

MATLAB 164

TẠO GIAO DIỆN (tt)

Các component mà GUI cho phép là:

Axes: vẽ hệ trục

Check box: là hộp kiểm tra cho phép đưa vào các chọn lựa khi

bấm chuột vào đó.

Edit text: Là hộp văn bản đưa chuỗi kí tự vào đó.

Frame: Khung bao một cửa sổ hình.

List box: Gồm một bảng các mục để chọn lựa

Pop-up menu: Menu sổ xuống trình bày một bảng các chọn

lựa khi bấm chuột vào.

Push button: Tương tự Checkbox nhưng chỉ chọn được một,

Radio button: (nút bật) giống push button nhưng có hiển thị

trạng thái thay đổi mỗi khi nhấn.

Popup Menu: Tạo menu.

Page 165: Tailieu.vncty.com   06 matlab-osadq3_j2qu_20130412090644_577

Copyright 2007

MATLAB 165

TẠO GIAO DIỆN (tt)

Một số component sẽ gây ra hành động khi tác

động vào nó bằng cách goi một hàm M mà người

dùng phải soạn thảo. Sau khi đã biên tập các

thuộc tính và gọi hàm, có thể cất figure và file áp

dụng M đi kèm bằng cách vào menu File-Save

hay File-Save as và đánh tên file.

Muốn chạy chương trình gọi ten_file.m (hoặc

dùng các lệnh openfig, open, hgfile.fig), file này

sẽ khởi động file ten_file.fig và xuất hiện cửa sổ

hình ảnh ten_file.fig mà ta sẽ thao tác trên các

component đã soạn thảo.

Page 166: Tailieu.vncty.com   06 matlab-osadq3_j2qu_20130412090644_577

Copyright 2007

MATLAB 166

TẠO GIAO DIỆN (tt) Tool – GUI Options để chọn các option cho giao diện

Các chọn lựa cho GUI

Page 167: Tailieu.vncty.com   06 matlab-osadq3_j2qu_20130412090644_577

Copyright 2007

MATLAB 167

TẠO GIAO DIỆN (tt)

Resize behavior có 3 lựa chọn:

Non-resizable: không thay đổi kích thước cửa FIG (mặc định).

Proportional: Người dùng có thể điều chỉnh kích thước cửa sổ

và các component trong đó sẽ tự điều chỉnh phù hợp

Other: Dùng hàm ResizeFcn để điều chỉnh.

Ô Command-Line accessibility có các lựa chọn:

Off: Các lệnh đánh sau dâu >> không tác động đến cửa sổ FIG.

On: Các dòng lệnh tác động đến cửa sổ FIG, GUI là current

figure

Callback: GUI là current fugure đối với các lệnh callback

Other: Phụ thuộc cửa sổ Property Inspector (thuộc tính

HandleVisibility và IntegerHandle)

Page 168: Tailieu.vncty.com   06 matlab-osadq3_j2qu_20130412090644_577

Copyright 2007

MATLAB 168

TẠO GIAO DIỆN (tt)

XÂY DỰNG GIAO DIỆN

StartStart

Xác định công việcXác định công việc

Draw GUIDraw GUI

TEST DESIGNTEST DESIGN

Viết codeViết code

Test codeTest code

StopStop

Page 169: Tailieu.vncty.com   06 matlab-osadq3_j2qu_20130412090644_577

Copyright 2007

MATLAB 169

TẠO GIAO DIỆN (tt)

Sau khi xác định được hình dáng của giao diện,

dùng chuột kéo các đối tượng cần sử dụng sang

figure, sắp xếp theo đúng ý tưởng thiết kế.

Thay đổi các thuộc tính của đối tượng.

Viết chương trình callback.

Chuyển sang chế độ active để thử chương trình.

Thí dụ 1: Tạo giao diện để giải và vẽ đồ thị

phương trình bậc 2. Giao diện gồm có 5 text, 5

edit, 2 push, 1check, 1 axes.

Page 170: Tailieu.vncty.com   06 matlab-osadq3_j2qu_20130412090644_577

Copyright 2007

MATLAB 170

TẠO GIAO DIỆN (tt)

Bài tập:

XÂY DỰNG GIAO DIỆN

EditA

EditB

EditC

EditX1

EditX2

Tag

a. Control b. Active

Giao diện ở chế độ thiết kế và thực thi

Page 171: Tailieu.vncty.com   06 matlab-osadq3_j2qu_20130412090644_577

Copyright 2007

MATLAB 171

TẠO GIAO DIỆN (tt)

Thí dụ 2: xây dựng một giao diện đơn giản sau

Page 172: Tailieu.vncty.com   06 matlab-osadq3_j2qu_20130412090644_577

Copyright 2007

MATLAB 172

TẠO GIAO DIỆN (tt) Tạo cửa sổ chính figure – ‘Welcome to User Interface’s

Giude’ theo cách sau:

Mở Matlab Editor

Nhập nội dung sau:

% User Interface's Guide % Matlab Experiments 2003 % TcAD, CIT, Cantho University % ---------------------------------------------------------------------------------- % Initialize whole figure... namefig = 'Welcome to User Interface''s Guide'; figpos = get(0,'DefaultFigurePosition'); % lay vi tri mac nhien figpos(1)= figpos(1)-10; figpos(2)= figpos(2)-10; figpos(3)= figpos(3)+10; figpos(4)= figpos(4)+10; % Tao figure fig=figure( ... 'Name', namefig, ... 'NumberTitle','off', ... 'Position',figpos);

Page 173: Tailieu.vncty.com   06 matlab-osadq3_j2qu_20130412090644_577

Copyright 2007

MATLAB 173

TẠO GIAO DIỆN (tt)

Lưu thành file giaodien.m

>>giaodien <Enter> % thi hanh

>>set(fig) % xem thuộc tính của figure trong cửa sổ lệnh

Quan sát kết quả trên hình

sau (Lưu ý các thuộc tính:

Name, Position)

Page 174: Tailieu.vncty.com   06 matlab-osadq3_j2qu_20130412090644_577

Copyright 2007

MATLAB 174

TẠO GIAO DIỆN (tt)

Thêm vào figure một axes cho phép hiển thị đồ họa:

Nhập tiếp nội dung sau vào file giaodien.m

% ----------------------------------------------------------------------------

% main axes

axs=axes('Position',[0.05 0.4 0.65 0.55]);

Lưu và thi hành file này.

Page 175: Tailieu.vncty.com   06 matlab-osadq3_j2qu_20130412090644_577

Copyright 2007

MATLAB 175

TẠO GIAO DIỆN (tt)

Hiển thị dòng ‘Matlab Experiments’ bên dưới axes:

Nhập tiếp nội dung sau vào file giaodien.m

% -------------------------------------------

% text

txtpos=[10 50 425 50];

txt=uicontrol(...

'Style','text',...

'BackgroundColor',[0.8 0.8 0.8],...

'ForegroundColor',[0.4 0.5 0.3],...

'String','Matlab Experiments',...

'Position',txtpos,...

'Fontname','Courier',...

'FontWeight','Bold',...

'FontSize',26);

Page 176: Tailieu.vncty.com   06 matlab-osadq3_j2qu_20130412090644_577

Copyright 2007

MATLAB 176

TẠO GIAO DIỆN (tt)

Lưu và thi hành file này.

Page 177: Tailieu.vncty.com   06 matlab-osadq3_j2qu_20130412090644_577

Copyright 2007

MATLAB 177

TẠO GIAO DIỆN (tt) Tạo một frame có shadow bên phải figure để đặt các nút chức

năng. Nhập tiếp nội dung sau vào file giaodien.m % ----------------------------------------------% Console frames p1=0.755; p2=0.05; p3=0.2; p4=0.90; frm1pos = [p1 p2 p3 p4]; frm2pos = [p1-0.005 p2+0.005 p3 p4]; % shadow frame frm1=uicontrol( ... 'Style','frame', ... 'Units','normalized', ... 'Position',frm1pos, ... 'ForegroundColor',[0.4 0.4 0.4],... 'BackgroundColor',[0.4 0.4 0.4]); % main frame frm2=uicontrol( ... 'Style','frame', ... 'Units','normalized', ... 'Position',frm2pos, ... 'ForegroundColor',[0.7 0.7 0.7],... 'BackgroundColor',[0.65 0.65 0.65]);

Page 178: Tailieu.vncty.com   06 matlab-osadq3_j2qu_20130412090644_577

Copyright 2007

MATLAB 178

TẠO GIAO DIỆN (tt)

Lưu và thi hành file này.

Page 179: Tailieu.vncty.com   06 matlab-osadq3_j2qu_20130412090644_577

Copyright 2007

MATLAB 179

TẠO GIAO DIỆN (tt)

Tạo nút ‘Close’ có chức năng đóng cửa sổ figure hiện hành:

Nhập tiếp nội dung sau vào file giaodien.m

% ------------------------------------------------------------

% Close button

closeHndl=uicontrol(...

'Style','pushbutton', ...

'Units','normalized', ...

'Position',[p1+0.01 p2+0.05 p3-0.025 0.05], ...

'String','Close', ...

'Foregroundcolor','b',...

'Fontsize',9,...

'Callback','close');

Lưu và thi hành file này.

Page 180: Tailieu.vncty.com   06 matlab-osadq3_j2qu_20130412090644_577

Copyright 2007

MATLAB 180

TẠO GIAO DIỆN (tt)

Vấn đề quan trọng nhất đối với một nút chức

năng là thi hành công việc tương ứng khi

người sử dụng thao tác. Thuộc tính ‘CallBack’

cho phép: thi hành một lệnh của Matlab dưới

dạng chuỗi (bao gồm lệnh gọi hàm, script file,

biểu thức toán, …). Sinh viên thử thay lệnh

close bằng một lệnh khác, chẳng hạn demos

và quan sát đáp ứng.

Tạo nút Sphere để vẽ một hình cầu 3D:

Nhập tiếp nội dung sau vào file giaodien.m

Page 181: Tailieu.vncty.com   06 matlab-osadq3_j2qu_20130412090644_577

Copyright 2007

MATLAB 181

TẠO GIAO DIỆN (tt)

Page 182: Tailieu.vncty.com   06 matlab-osadq3_j2qu_20130412090644_577

Copyright 2007

MATLAB 182

TẠO GIAO DIỆN (tt)

Lưu và thi hành file này.

Page 183: Tailieu.vncty.com   06 matlab-osadq3_j2qu_20130412090644_577

Copyright 2007

MATLAB 183

TẠO GIAO DIỆN (tt)

Tạo nút Picture để hiển thị ảnh màu:

Nhập tiếp nội dung sau vào file giaodien.m

% --------------------------------------------------------------

% Picture button

pic=uicontrol( ...

'Style','pushbutton', ...

'Units','normalized', ...

'Position',[p1+0.01 p4-0.125 p3-0.025 0.05], ...

'String','Picture', ...

'Foregroundcolor','b',...

'Fontsize',9,...

'Callback',['imshow(imread(''flowers.tif''))']);

Page 184: Tailieu.vncty.com   06 matlab-osadq3_j2qu_20130412090644_577

Copyright 2007

MATLAB 184

TẠO GIAO DIỆN (tt)

Lưu và thi hành file này.

Page 185: Tailieu.vncty.com   06 matlab-osadq3_j2qu_20130412090644_577

Copyright 2007

MATLAB 185

TẠO GIAO DIỆN (tt)

Sinh viên lưu ý cách biểu diễn nhiều lệnh ở dạng

chuỗi cho ‘CallBack’. Trong trường hợp có quá

nhiều lệnh phục vụ chức năng này, ta nên đưa

chúng vào một script file hoặc một hàm khác.

Ngoài ra, nếu ta tạo giao diện dưới dạng một hàm

(function) thì thuộc tính ‘CallBack’ cho phép gọi

một hàm con được viết ngay trong file này.

Page 186: Tailieu.vncty.com   06 matlab-osadq3_j2qu_20130412090644_577

Copyright 2007

MATLAB 186

TẠO GIAO DIỆN (tt)

Sinh viên hãy tạo thêm nút ‘About’ sao cho khi người sử

dụng ấn nút sẽ mở cửa sổ mới nằm ngay giữa màn hình

Page 187: Tailieu.vncty.com   06 matlab-osadq3_j2qu_20130412090644_577

Copyright 2007

MATLAB 187

BÀI TÂP 1

Cho hai ma trận:

1 2 1 0

A = ; B =

3 4 0 1

Dùng MATLAB để tính các biểu thức sau:

C = A + B; D = A – B; E = A*B; F = B*A; G = A.*B;

H = B.*A; I = A\B; J = A.\B; K = A/B; L = A./B;

M = A.^B; N = A^2,0; O = 2,0.^A

Page 188: Tailieu.vncty.com   06 matlab-osadq3_j2qu_20130412090644_577

Copyright 2007

MATLAB 188

BÀI TÂP 2

Cho vectơ hàng A = [4 5 6] và B = [1 2 3]

Dùng MATLAB để tính các biểu thức sau:

C = A+B; D = A – B; E = A*B; F = B*A;

Cho ma trận A = [4 5 6;2 0 5;1 3 4 ]

và B = [1 0 0]

Dùng MATLAB tính các biểu thức sau:

C =3*A; D = A*3; E = A.*3; F = 3.^A;

G = A/5; H = A./5; I = A\5; J = A.\5

Page 189: Tailieu.vncty.com   06 matlab-osadq3_j2qu_20130412090644_577

Copyright 2007

MATLAB 189

BÀI TÂP

3. Viết chương trình giải phương trình bậc n và vẽ đồ thị của

hàm theo 2 phương pháp nhập biến: nhập khi gọi hàm và

nhập bằng câu lệnh input. So sanh ưu nhược điểm khi

dùng hai phương pháp này.

4. Viết chương trình cho phép chọn kiểu vẽ 2D (plot), 3D

(mesh) để vẽ đồ thị của hàm một biến và hai biến bất kỳ.

Người sử dụng sẽ phải cung cấp kiểu vẽ, hàm số và

khoảng giá trị của biến cần vẽ. Nếu kiểu vẽ là 2D và hàm

hai biến, yêu cầu nhập lai cho đúng.

5. Viết chương trình giải phương trình hoặc hệ phương trình

bằng biến symbolic. Người sử dụng sẽ chọn lựa giải

phương trình hoặc giải hệ phương trình. Nếu giải hệ phải

cung cấp số phương trình.

Page 190: Tailieu.vncty.com   06 matlab-osadq3_j2qu_20130412090644_577

Copyright 2007

MATLAB 190

BÀI TÂP

6. Viết chương trình tìm đạo hàm và tích phân của

một hàm và vẽ đồ thị của hàm, vi phân, tích phân

của hàm trên cùng một đồ thị. Người sử dụng có

thể chọn biến của hàm. Người sử dụng có thể

nhập khoảng giá trị biến cần vẽ hoặc không.

7. Viết chương trình giải phương trình vi phân.

8. Làm lại bài 2 với biến symbolic

Page 191: Tailieu.vncty.com   06 matlab-osadq3_j2qu_20130412090644_577

Copyright 2007

MATLAB 191

BÀI TÂP (tt)

9. Tạo giao diện như hình vẽ. Nhập các thông số a, b, c , d.

Nhấn ‘Vẽ’, vẽ đồ thị. Nhấn ‘Giải nghiệm’, thì xuất nghiệm

ở x1, x2, x3. Khi chọn ‘PTB2’ thì các ô d và x3 ở chế độ

enable off.

Page 192: Tailieu.vncty.com   06 matlab-osadq3_j2qu_20130412090644_577

Copyright 2007

MATLAB 192

BÀI TÂP (tt)

10. Tạo giao diện như ở hình dưới. Người sử dụng nhập hàm

cần vẽ vào ô edit, sau đó chọn lực kiểu vẽ, colormap.