Tải bản đầy đủ (.pdf) (47 trang)

Bài giảng Xử lý tín hiệu nâng cao - Chương 1: Tổng quan về công cụ MATLAB

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (2.16 MB, 47 trang )

Xử lý tín hiệu nâng cao

CHƯƠNG I
Tổng quan về công cụ
MATLAB


Tài liệu tham khảo
1. Xử lý tín hiệu nâng cao - Nguyễn Quốc Trung
2. Digital signal processing using MATLAB Viney K.Ingle & John G.Proakis
3. Digital Signal and Image Processing Using
MATLAB - Gerard Blanchet & Maurice Charbit
4. Digital image processing using MATLAB Gonzalez Woods & Eddins
5. Xử lý số tín hiệu - Hồ Văn Sung
2


Nội dung
 Giới thiệu Matlab
 Tổng quan về lập trình Matlab
 Cách sử dụng biến trong Matlab
 Các lệnh và các hàm cơ bản
 Cách thao tác với ma trận
 Vẽ đồ thị trong Matlab
 Làm việc với hàm và m-file
 Lập trình GUI
3


Giới thiệu Matlab
 Matlab được phát triển bởi MathWorks


 Là một ngôn ngữ lập trình thông dịch
 Hỗ trợ lập trình hướng đối tượng
 Ứng dụng rộng rãi
 Có khả năng liên kết với nhiều ngôn ngữ
lập trình khác
4


Lịch sử phát triển
 Cuối thập niên 1970. MATLAB, nguyên sơ được
viết bởi ngôn ngữ Fortran
 Năm 1983, Jack Little, một người đã học ở MIT và
Stanford, đã viết lại MATLAB bằng ngôn ngữ C
 Năm 1984: Phiên bản đầu tiên MATLAB 1.0 viết
bằng C cho MS-DOS PC
 Năm 1986, MATLAB 2 ra đời trong đó hỗ trợ UNIX.
 Năm 1987, MATLAB 3 phát hành.
5


Lịch sử phát triển
 Năm 1992 MATLAB 4 thêm vào hỗ trợ 2-D và 3-D
 Năm 1996 MATLAB 5 bao gồm thêm các kiểu dữ
liệu, bộ sửa lỗi và bộ tạo dựng GUI
 Năm 2000 MATLAB 6
 Năm 2002 MATLAB 6.5
 Năm 2004 MATLAB 7
 Tháng 6, 2009, phiên bản MATLAB R2009a
6



Màn hình chính

7


Tổng quan về lập trình trong Matlab
 Lập trình hướng thủ tục
 Cú pháp, từ khóa
 Sử dụng các thư viện Toolbox
 Lập trình trong Matlab
 Sử dụng dòng lệnh
 Lập trình m-file
 Thiết kế chương trình có GUI

8


Sử dụng biến trong Matlab
 Không cần khai báo kiểu, số chiều, độ dài biến.
 Mỗi khi một cái tên mới xuất hiện với phép gán,
Matlab tạo biến và tự động cấp phát bộ nhớ cho nó.
 Ví dụ: sosv = 110 tạo một biến tên sosv (là một ma
trận 1x1) lưu giá trị 110.
 Nếu đó là biến cũ, nó sẽ thay đổi nội dung mới nếu
thực hiện phép gán.
 Ví dụ:
>>X = 3
>>X = 4


// X = 4.
9


Cách đặt tên biến
 Tên biến phải là một từ, không chưa dấu
cách, tên biến tối đa là 63 ký tự
 Tên biến phân biệt chữ hoa và chữ
thường
 Tên biến bắt đầu bằng chữ cái
 Ký tự dấu chấm “.” không được sử dụng
để trong đặt tên biến.

10


Các biến đặc biệt
Các biến đặc biệt
ans
pi

Giá trị
biến mặc định trả về kết quả
số pi

eps

Số nhỏ nhất lớn hơn 0

inf


Để chỉ số vô cùng

NaN hoặc nan
i và j

Để chỉ số ko xác định như kết quả của 0/0
Số phức, i=j=sqrt(-1)

realmin

Số dấu chấm động nhỏ nhất (2.2251e-308)

realmax

Số dấu chấm động lớn nhất (1.7977e+308)
11


Véc tơ và ma trận
 Các bài toán trong Matlab được quy về tính
toán và xử lý trên ma trận
 Ví dụ, tạo một ma trận trong Matlab:
>> M=[3 4 5 ; 2 1 4]
M =
3

4

5


2

1

4

 Các phần tử trong một cột cách nhau bởi dấu cách (space)
hoặc dấu phẩy
 Các hàng được cách nhau bằng dấu “;”
 Chỉ số các phần tử bắt đầu từ 1
12


Một số lệnh thông dụng
 clc: Xóa màn hình cửa sổ lệnh
 who: xem tên biến trong không gian làm việc của Matlab
>> who
Your variables are:
A

M

N

 whos: xem chi tiết hơn về các biến
>> whos
Name

Size


Bytes

Class

A

1x10

80

double array

M

6x3

144

double array

N

3x3

72

double array

Grand total is 37 elements using 296 bytes


 clear: Xóa các biến trong bộ nhớ của Matlab
 help: yêu cầu sự giúp đỡ

13


Các toán tử
Toán tử

Ký hiệu

Phép cộng

+

Phép trừ

­

Phép nhân

*

Phép chia

/ hoặc \

Phép lũy thừa


^

Chuyển vị ma trận

'

Các toán tử quan hệ

 >, <, >=, <=, ==

Các toán tử logic

&, |, ~
14


Các hàm toán học thông dụng
Tên hàm

Ý nghĩa

sin(x), cos(x), tan(x)

Các hàm lượng giác

asin(x), acos(x), atan(x)

Các hàm lượng giác ngược

exp(x)


Hàm mũ ex

log(x), log10(x), log2()

Logarit cơ số e, 10, 2

abs(x)

Hàm lấy trị tuyệt đối

Round(x), floor(x), fix(x), 
ceil(x)

Các hàm làm tròn
15


Thực hành
 1.1 Dự đoán kết quả xuất ra màn hình:
a. 2 ; 4
b. 2 / 4
c. 2 \ 4
d. 2 , 4
e. 2 : 4
 1.2 Tính bằng tay các biểu thức sau, rồi thử lại bằng Matlab:
a. 2 / 2 * 3
b. 6 – 2 / 5 + 7 ^ 2 – 1
c. 10 / 2 \ 5 – 3 + 2 * 4
d. 3 ^ 2 / 4

e. 3 ^ 2 ^ 2
f. round(6 / 9 + 3 * 2)
g. floor(6 / 9 + 3 * 2)
h. ceil(6 / 9 + 3 * 2)
k. fix(4/9)+fix(3*(5/6))
16


Thực hành
 1.3 Xác định công dụng của hàm solve, thực
hiện một ví dụ với hàm này
 1.4 Tạo một số ngẫu nhiên
 Có giá trị từ 0 đến 1
 Có giá trị từ 0 đến 100
 Có giá trị từ 30 đến 70

 1.5 Xác định ý nghĩa của các hàm
 mod(a,b)
 gcd(a,b)
 lcm(a,b)
17


Các toán tử và các hàm thao tác với ma trận
 Có thể dùng các hàm sau để tạo các ma trận
đặc biệt:
 zeros(N): Tạo ma trận các phần tử đều bằng 0 có kích
thước N
 ones(N): Tạo ma trận các phần tử đều bằng 1 có kích
thước N

 rand(N): Tạo ma trận ngẫu nhiên có kích thước N, các
phần tử phân bố đều.
 randn(N): Tạo ma trận ngẫu nhiên có kích thước N, các
phần tử tuân theo phân bố chuẩn
 magic(N): Tạo ma trận magic (tổng giá trị trong 1 hàng
bằng tổng giá trị trong 1 cột bằng tổng giá trị đường chéo)
có kích thước N
 eye(N): Tạo ma trận đơn vị
18


Các toán tử và các hàm trên ma trận
 Các toán tử trên ma trận
 Cộng: X=A+B
 Trừ: X=A-B
 Nhân: X=A*B
 Chia: X=A/B (A=X*B) hoặc X=A\B (B=A*X)
 Lũy thừa: X=A^2 (X=A*A)
 Xóa cột: A(:,3)=[] để xóa cột 3 trong ma trận A
 Xóa hàng: A(3,:)=[] để xóa hàng 3 trong ma trận A

 Các hàm thông dụng với ma trận
 Tính kích thước: d=size(A)
 Tính định thức: d=det(A)
 Tính ma trận nghịch đảo: X=inv(A)

19


Thực hành



1.6 Tạo một vector:


Có 10 phần tử có giá trị nguyên được lấy ngẫu nhiên trong khoảng [0, 100]



Có 10 phần tử có giá trị nguyên được lấy ngẫu nhiên trong khoảng [-20 ,10]



1.7 Cho x = [3 1 5 7 9 2 6], dự đoán kết quả các dòng lệnh sau và thử
lại bằng Matlab:
a. x(3)
b. x(1:7)
c. x(1:end)
d. x(1:end-1)
e. x(6:-2:1)
f. x([1 6 2 1 1])
g. sum(x)



1.8 Giải hệ phương trình:
2 x1 + x2 + 5 x3 + x4 = 5

x1 + x2 − 3 x3 − 4 x4 = −1
3x1 + 6 x2 − 2 x3 + x4 = 8

2 x1 + 2 x2 + 2 x3 − 3 x4 = 2

20


Sử dụng đồ thị trong Matlab
 Đồ thị trong hệ tọa độ phẳng
Phần lớn các câu lệnh vẽ đồ thị trong hệ tọa độ phẳng được
thực hiện bằng lệnh plot.

 Ví dụ:
>> x=linspace(0,2*pi,30);
>> y=sin(x);
>> plot(x,y)

 Kết quả:

21


Các tham số trong vẽ đồ thị
Tham 
số
b

Màu sắc

Các điểm

xanh da trời


Tham 
số
.

Nối các điểm

điểm

Tham 
số
­

g

xanh lá cây

0

tròn

:

đường chấm

r

đỏ

x


dấu x

­.

đường gạch 
chấm

c

xanh xám

+

dấu +

­­

đường gạch gạch

m

đỏ tím

*

hoa thị

y


vàng

s

vuông

k

đen

d

kim cương

w

trắng

v, ^,<,>

tam giác

p,h

ngôi sao

nét liền

22



Các lệnh khác với đồ thị
 grid on/off: thêm/bỏ đường lưới vào đồ
thị
 box on/off: thêm/bỏ hộp chứa đồ thị
 axis on/off: thêm/bỏ trục tọa độ
 xlabel('Trục x'): thêm nhãn cho trục x
 ylabel('Truc y'): thêm nhãn cho trục y
 title('Do thi ham sin'): thêm tiêu đề ở
đỉnh cho đồ thị
23


Đồ thị trong không gian 3D
 Để vẽ đồ thị đường trong không gian ba chiều ta sử
dụng lệnh plot3, khuôn dạng lệnh plot3 như sau:
plot3(x,y,z) trong đó x,y,z là các vector hoặc ma trận
 Ví dụ:
>> t=linspace(0,6*pi,100);
>> plot3(sin(t),cos(t),t)
 Kết quả:

24


Đồ thị trong không gian 3D
 Đối với đồ thị bề mặt và lưới, Matlab định
nghĩa bề mặt lưới bằng các điểm theo
hướng trục z ở trên đường kẻ ô hình
vuông trên mặt phẳng x-y.

 Trong Matlab có hàm meshgrid, với cú
pháp [X,Y]=meshgrid(x,y) tạo ra một ma
trận X và Y, trong đó ma trân X mà các
hàng nó là bản sao của vector x, và ma
trận Y có các cột là bản sao của vector y.
25


×