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