Tải bản đầy đủ (.doc) (87 trang)

Giáo trình xử lý tín hiệu nâng cao

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.4 MB, 87 trang )

Chương 1. TỔNG QUAN VỀ CÔNG CỤ MATLAB.............................................5
1.1. Giới thiệu.........................................................................................................5
1.2. Sử dụng biến trong matlab...............................................................................6
1.2.1. Quy cách đặt tên.......................................................................................6
1.2.2. Véc tơ và matrận.......................................................................................6
1.3. Một số lệnh thông dụng trong Matlab..............................................................9
1.4. Các toán tử và hàm........................................................................................10
1.4.1. Các toán tử và các hàm cơ bản...............................................................10
1.4.2. Các toán tử và các hàm thao tác với ma trận...........................................10
1.5. Sử dụng đồ thị trong Matlab..........................................................................12
1.5.1. Đồ thị trong hệ tọa độ phẳng..................................................................12
1.5.2. Đồ thị trong khơng gian ba chiều............................................................14
1.6. Lập trình trong Matlab...................................................................................16
1.7. Matlab GUI....................................................................................................17
1.7.1. Mơi trường làm việc...............................................................................17
1.7.2. Thuộc tính của các điều khiển................................................................18
1.7.3. Viết sự kiện cho các điều khiển..............................................................19
1.7.4. Debug trong Matlab................................................................................20
1.7.5. Vẽ đồ thị - sử dụng component AXES....................................................20
1.7.6. Điều khiển Toggle – nút bấm 2 trạng thái...............................................21
1.7.7. Điều khiển Slider – thanh trượt...............................................................21
1.8. Bài tập chương 1............................................................................................21
Chương 2. TÍN HIỆU RỜI RẠC...........................................................................23
2.1. Khái niệm về tín hiệu rời rạc và lấy mẫu tín hiệu..........................................23
2.2. Các tín hiệu cơ sở...........................................................................................23
2.2.1. Dãy xung đơn vị.....................................................................................23
2.2.2. Dãy nhảy bậc đơn vị...............................................................................24
2.2.3. Dãy tín hiệu hình sin...............................................................................26
2.2.4. Dãy e-mũ phức.......................................................................................27
2.3. Các phép tốn trên tín hiệu............................................................................28
2.3.1. Phép dịch chuyển....................................................................................28




2.3.2. Phép nhân, cộng tín hiệu.........................................................................29
2.3.3. Phép nhân chập 2 tín hiệu.......................................................................30
2.4. Phương trình sai phân hệ số hằng..................................................................30
2.5. Tín hiệu hai chiều (ảnh số).............................................................................31
2.5.1. Biểu diễn ảnh..........................................................................................31
2.5.2. Đọc ảnh, hiển thị và lưu ảnh...................................................................32
2.5.3. Cải thiện sự tương phản của ảnh.............................................................34
2.5.4. Tạo ảnh nhị phân từ ảnh đã cho..............................................................35
2.6. Bài tập chương 2............................................................................................35
Chương 3. PHÉP BIẾN ĐỔI FOURIER..............................................................38
3.1. Biến đổi Fourier của tín hiệu rời rạc..............................................................38
3.1.1. Định nghĩa..............................................................................................38
3.1.2. Các phương pháp thể hiện của X(ejω)....................................................39
3.1.3. Tính chất quan trọng của X(ejω):...........................................................40
3.2. Các tính chất của biến đổi Fourier.................................................................42
3.2.1. Tuyến tính...............................................................................................42
3.2.2. Tính chất trễ............................................................................................43
3.2.3. Trễ tần số................................................................................................43
3.2.4. Liên hợp phức.........................................................................................45
3.2.5. Nhân chập...............................................................................................45
3.2.6. Tích đại số..............................................................................................45
3.3. Phép biến đổi Fourier nhanh..........................................................................45
3.4. Biểu diễn hệ thống rời rạc trong miền tần số liên tục.....................................47
3.4.1. Đáp ứng tần số........................................................................................47
3.4.2. Các bộ lọc số lý tưởng............................................................................49
3.5. Phép biến đổi Fourier của tín hiệu hai chiều..................................................52
3.5.1. Phép biến đổi Fourier.............................................................................52
3.5.2. Phép lọc trên miền tần số........................................................................55

3.6. Bài tập chương 3............................................................................................57
Chương 4. BIỂU DIỄN HỆ THỐNG VÀ TÍN HIỆU RỜI RẠC TRONG MIỀN
Z
60


4.1. Phép biến rổi Z hai phía.................................................................................60
4.2. Một số tính chất của biến đổi Z......................................................................61
4.2.1. Tính tuyến tính.......................................................................................61
4.2.2. Dịch mẫu – tính chất trễ..........................................................................61
4.2.3. Dịch tần số..............................................................................................62
4.2.4. Biến số đảo.............................................................................................62
4.2.5. Liên hợp phức.........................................................................................62
4.2.6. Tích của hai dãy......................................................................................62
4.2.7. Tích chập của hai dãy.............................................................................62
4.3. Biến đổi Z của một số dãy cơ bản..................................................................63
4.4. Biến đổi Z ngược...........................................................................................63
4.5. Hàm truyền đạt của hệ thống rời rạc..............................................................66
4.6. Bài tập chương 4............................................................................................68
4.6.1. Bài tập sinh viên tự giải..........................................................................69
Chương 5. BỘ LỌC SỐ.........................................................................................71
5.1. Phân tích các mạnh lọc FIR đơn giản.............................................................71
5.1.1. Mạch lọc FIR thông thấp........................................................................71
5.1.2. Mạch lọc FIR thông cao.........................................................................73
5.2. Mạch lọc số IIR.............................................................................................74
5.2.1. Mạch lọc IIR thông thấp.........................................................................74
5.2.2. Mạch lọc IIR thông cao..........................................................................75
5.2.3. Mạch lọc IIR thông dải...........................................................................76
5.2.4. Mạch lọc IIR chặn dải.............................................................................77
Chương 6. XỬ LÝ ẢNH TRONG MATLAB.......................................................78

6.1. Nâng cao chất lượng ảnh bằng xử lý histogram.............................................78
6.1.1. Phép dãn Histogram sử dụng imtool của Matlab....................................78
6.1.2. San phẳng (cân bằng) histogram.............................................................79
6.2. Phép lọc ảnh trên miền khơng gian................................................................80
6.2.1. Phép lọc tuyến tính.................................................................................80
6.2.2. Lọc phi tuyến..........................................................................................83
6.2.3. Khôi phục ảnh.........................................................................................86


6.3. Tách biên ảnh.................................................................................................87


Chương 1. TỔNG QUAN VỀ CÔNG CỤ MATLAB
1.1. Giới thiệu
MatLab (Matrix Laboratory) là một ngơn ngữ lập trình cấp cao dạng thông dịch,
được phát triển bởi MathWorks. Matlab được ứng dụng để giải quyết các bài toán
khác nhau đặt biệt là các hệ phương trình tuyến tính, phi tuyến và đặc biệt là các bài
toán ma trận với kết quả nhanh chóng và chính xác. Matlab là một cơng cụ mạnh và
đáp ứng được cho nhiều lĩnh vựng đa dạng như các ngành về kỹ thuật như điện, điện
tử, vật lý, hóa học v.v... cho đến các ngành về kinh tế như thống kê, kế tốn v.v...
Cửa sổ chính làm việc trong Matlab bao gồm 3 cửa sổ chính là: Cửa sổ lệnh
(Command Window), cửa sổ thư mục – vùng làm việc (Current Directory –
Workspace) và cửa sổ chứa tập lệnh đã được sử dụng (Command History)

Matlab cho phép tính tốn số, tính tốn ma trận, vẽ đồ thị hàm số để biểu diễn thông
tin dưới dạng 2D hay 3D. Matlab chứa các toolbox, các gói chương trình (thư viện)
sử dụng cho các lĩnh vực rất đa dạng như: xử lý tín hiệu, nhận dạng hệ thống, xử lý


ảnh, mạng nơron, tối ưu hóa v.v… Matlab có thể giao tiếp với các chương trình và

các và các ngơn ngữ khác. Matlab có thể gọi các hàm được viết bằng C hay Java.

1.2. Sử dụng biến trong matlab
1.2.1. Quy cách đặt tên
Cũng giống như trong các ngôn ngữ lập trình khác, Matlab có những quy định riêng
về 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à 31 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.
Trong Matlab có những biến đặc biệt trong bảng sau:
Các biến đặc biệt
ans
pi
esp
inf
NaN hoặc nan
i và j
realmin
realmax

Giá trị
Biến mặc định trả về kết quả
số pi
Số nhỏ nhất lớn hơn 0
Để chỉ số vô cùng
Để chỉ số ko xác định như kết quả của 0/0
Số phức, i=j=sqrt(-1)
Số dấu chấm động nhỏ nhất (2-1022 = 2.2251e-308)
Số dấu chấm động lớn nhất (21024 = 1.7977e+308)


1.2.2. Véc tơ và matrận
Các bài tốn trong Matlab thơng thường được quy về việc tính tốn và xử lý trên ma
trận. Các biến, dữ liệu trong Matlab được coi như một ma trận thực hoặc phức. Ví
dụ, một giá trị vơ hướng được coi là một mà trận có kích thước 1x1, một vector cột
là một chỉ có 1 cột, một véc tơ hàng, hay một chuỗi số là một ma trận chỉ có một
hàng. Một ma trận có kích thước (m x n) trong Matlab là một ma trận có m hàng và
n cột.


Ví dụ, tạo một ma trận trong Matlab:
>> M=[3 4 5 ; 2 1 4]
M =
3
2

4
1

5
4

Như vậy giá trị nhập đã được gán cho các thành phần của ma trận, các phần tử trong
mỗi cột được cách nhau bằng một dấu cách (space) hoặc một dấu phảy, Các hàng
được cách nhau bằng dấu “;”. Về cách đánh chỉ số, trong Matlab, các phần tử được
đánh chỉ số từ 1.
Xét trong ví dụ trên:
>> M(1,1)
ans =
3

>> M(2,3)
ans =
4

Xâu ký tự cúng có thể được gán vào phần tử của ma trận, tuy nhiên số ký tự trên
mỗi hàng phải bằng nhau
Ví dụ:
>> M=['John','Peter';'David','Joe']
??? Error using ==> vertcat
All rows in the bracketed expression must have the same
number of columns.

Ví dụ:
>> M=['John','pete21';'adam3','ever4']
M =
Johnpete21
adam3ever4

M sẽ là một ma trận chứa ký tự của 2 xâu, và các phần tử ma trận sẽ là các ký tự của
2 xâu đó.


Ví dụ:
>> M(1,1)
ans =
J
>> M(2,2)
ans =
e


Trong trường hợp chúng ta muốn tạo một vector, trong đó các giá trị cách đều nhau
ví dụ (1,2,3,4,5,6…20) chúng ta có thể sử dụng cơng thức: M=(start:step:end)
Ví dụ:
>> M=(1:2:10)
M =
1

3

5

7

9

Trong trường hợp step=1, ta có thể sử dụng cơng thức thu gọn: M=(start:end)
Ví dụ:
>> M=[1:3;4:6]
M =
1
4

2
5

3
6

Kích thước của ma trận cũng có thể thay đổi, xét trong ví dụ trên nếu ta gán
M(3,3)=1, ta sẽ có:

>> M(3,3)=1
M =
1
4
0

2
5
0

3
6
1

Tương tự ma trận có thể mở rộng kích thước bằng cách gộp các ma trận lại.
Ví dụ:


>> N=ones(3)
N =
1
1
1

1
1
1

1
1

1

2
5
0

3
6
1

2
5
0
1
1
1

3
6
2
1
1
1

>> M=[M,N]
M =
1
4
0


1
1
1

1
1
1

1
1
1

Hoặc:
>> M=[M;N]
M =
1
4
0
1
1
1

1.3. Một số lệnh thơng dụng trong Matlab
• 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
Ví dụ:
>> who
Your variables are:
A


M

N

• whos: xem chi tiết hơn về các biến
Ví dụ:
>> whos
Name
A

Size

Bytes

1x10

80

Class
double array


M
N

6x3
3x3

144
72


double array
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 đỡ

1.4. Các toán tử và hàm
1.4.1. Các toán tử và các hàm cơ bản
Tương tự như máy tính đơn gản thơng thường, Matlab có thể thực hiện các phép
toán đơn giản, cụ thể như trong bảng dưới đây:
Toán tử
Phép cộng
Phép trừ
Phép nhân
Phép chia
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

Ký hiệu
+
*
/ hoặc \
^
'
=, >, <, >=, <=, ==

&, |, ~

Matlab cũng cung cấp hàm toán học, các hàm đặc biệt và các thuật toán hữu ich,
dưới đây là một số hàm thông dụng nhất:
Tên hàm
sin(x), cos(x), tan(x)
asin(x), acos(x), atan(x)
exp(x)
log(x), log10(x), log(2)
abs(x)
Round(x), floor(x), fix(x), ceil(x)

Ý nghĩa
Các hàm lượng giác
Các hàm lượng giác ngược
Hàm mũ ex
Logarit cơ số e, 10, 2
Hàm lấy trị tuyệt đối
Các hàm làm trịn

1.4.2. Các tố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ử tn 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ị
Các thao tác khác
• Cộng: X=A+B
• Trừ: X=A-B
• Nhân: X=A*B (nhân 2 ma trận, số hàng của A phải bằng số hàng của B)
X=A.*B (nhân các phần tử tương ứng với nhau, 2 ma trận có kích thước
bằng nhau)
• Chia: X=A/B (khi đó A=X*B) hoặc X=A\B (khi đó B=A*X)
• Lũy thừa: X=A^2 (X=A*A), X=A.^2 (lũy thừa các số hạng củ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)


1.5. Sử dụng đồ thị trong Matlab
1.5.1. Đồ 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(,y)

Kết quả:


Trong ví dụ trên hàm línpace(0,2*pi,30) tạo ra 30 điểm dữ liệu trong đoạn [0:2*pi].
Và tính các thành phần của vector y = sin(x). Lệnh plot sẽ nối các điểm này lại.
Trong trường hợp lệnh plot khơng có các tham số cấu hình, Matlab sẽ vẽ đồ thị với
nét liền như trên, để cấu hình thêm ta bổ sung thêm các tham số theo định dạng như
sau plot(x,y,'tham số). trong đó tham số có thể là:
Tham số

Màu sắc

Tham số

Các điểm

Tham số

Nối các điểm

b
g
r
c

xanh da trời
xanh lá cây
đỏ
xanh xám

.
0
x

+

điểm
tròn
dấu x
dấu +

:
-.
--

nét liền
đường chấm
đường gạch chấm
đường gạch gạch


m
y
k
w

đỏ tím
vàng
đen
trắng

*
s
d

v, ^,<,>
p,h

hoa thị
vng
kim cương
tam giác
ngơi sao

Ví dụ:
>> plot(x,y,'--*b')

Kết quả:

Ngồi ra có thể chỉnh sửa cách trình bày đồ thị bằng cách lệnh sau:
• grid on/off: thêm/bỏ đường lưới vào đồ thị
• box on/off: thêm/bỏ hộp chứa đồ thị
• asix 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ị
Để vẽ nhiều đồ thị trên một hình ta có thể sử dụng lệnh plot(x,y,m,n) khi đó đồ thị
với tọa độ x,y và đồ thị với tọa độ m,n sẽ được vẽ trên một hình. Ngồi ra có thể sử
dụng lệnh hold on:


Ví dụ:
>>
>>
>>

>>
>>
>>
>>

x=linspace(0,2*pi,30);
y=sin(x);
m=linspace(0,2*pi,30);
n=cos(x);
plot(x,y)
hold on
plot(m,n)

Một số đồ loại khác trong Matlab
• pie: vẽ đồ thị trịn
• pareto: đồ thị pareto
• bar: đồ thị dạng cột
1.5.2. Đồ thị trong không gian ba chiều
Đồ thị trong khơng gian ba chiều gồm 2 loại chính là đồ thị đường và đồ thị mặt
(lưới)
Để vẽ đồ thị đường trong không gian ba chiều ta sử dụng lệnh plot3, khn 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ả:

Đố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 vng trên mặt phẳng x-y.
Bước đầu tiên đưa ra đồ thị lưới của hàm hai biến z=f(x,y), tương ứng với mà trận X
và Y chứa các hàng và các cột lặp đi lặp lại. 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.
Ví dụ
>> [X,Y]=meshgrid(-1:0.5:1, -1:0.5:1)
X =
-1.0000
-1.0000
-1.0000
-1.0000
-1.0000

-0.5000
-0.5000
-0.5000
-0.5000
-0.5000

0
0
0
0
0

0.5000
0.5000
0.5000
0.5000

0.5000

1.0000
1.0000
1.0000
1.0000
1.0000

-1.0000
-0.5000
0
0.5000
1.0000

-1.0000
-0.5000
0
0.5000
1.0000

-1.0000
-0.5000
0
0.5000
1.0000

-1.0000
-0.5000
0
0.5000

1.0000

Y =
-1.0000
-0.5000
0
0.5000
1.0000


X,Y là một cặp ma trận tương ứng với một lưới chữ nhật trong mặt phẳng x-y. Z là
một hàm số theo x,y cuối cùng, sử dụng hàm mesh(x,y,z) để vẽ đồ thị.
Ví dụ:
>>
>>
>>
>>

[X,Y] = meshgrid(-8:.5:8);
R = sqrt(X.^2 + Y.^2) + eps;
Z = sin(R)./R;
mesh(X,Y,Z)

Kết quả:

1.6. Lập trình trong Matlab
Trong Matlab, ta thực hiện các yêu cầu tại dấu nhắc trong cửa sổ lệnh nhanh và hiệu
quả, tuy nhiên với những lệnh được sử dụng nhiều lần, hoặc trong những chương
trình lớn, sử dụng nhiều câu lệnh, ta có thẻ lưu trong file và yêu cầu Matlab mở file
để thực hiện các lệnh.

Ví dụ trong bài tốn vẽ độ thị trên, ta tạo một file dothi3D.m với nội dung:
function dothi3D
[X,Y] = meshgrid(-8:.5:8);
R = sqrt(X.^2 + Y.^2) + eps;
Z = sin(R)./R;
mesh(X,Y,Z)

Khi đó, để thực hiện nhóm câu lệnh trong file trên, tại dấu nhắc của cửa sổ lệnh, chỉ
việc gõ dothi3D


Khi lập trình trong Matlab chúng ta sử dụng các cấu trúc điều khiển và vịng lặp
giống như trong C:
• Biểu thức điều kiện: If, else , elseif. switch
• Vịng lặp: for, while.

1.7. Matlab GUI
Matlab GUI là là giao diện hình ảnh của chương trình, chúng bao gồm các nút bấm,
các thanh trượt, các cửa sổ, menu v.v... được sử dụng để cung cấp cho người dùng
một môi trường làm việc đơn giản và thân thiện.
1.7.1. Môi trường làm việc
Để bắt đầu, sử dụng lệnh guide

• Blank GUI (Default): Hộp thoại GUI trống khơng có một điều khiển nào cả.
• GUI with Uicontrols: Hộp thoại GUI với một vài control, Chương trình có thể
chạy ngay.
• GUI with Axes and Menu: Hộp thoại GUI với một uicontrol axes và button,
các menu để hiển thị đồ thị.
• Modal Question Dialog: Hộp thoại đặt câu hỏi Yes, No.



Khi đó Matlab sẽ tạo ra 2 file mới:
• File có phần mở rộng .fig chứa nội dung của giao diện
• File có phần mở rộng .m chứa những đoạn mã liên quan đến giao diện

Cịn menu thì quan trọng nhất là menu Tools có:
• Run (Ctr + T) : nhấn vào để chạy chương trình mà ta đã viết.
• Align Object: dùng để làm cho các điều khiển
• Grid and Rulers : Hiện thị lưới trợ giúp để vẽ giao diện
• Menu Editor : trình này để tạo menu cho điều khiển
• Tab Order Editor : sắp xếp Tab order là thứ tự khi ta nhấn phím Tab
• Gui Options : Tùy chỉnh khác
1.7.2. Thuộc tính của các điều khiển
Click đúp vào Edit Text bên trái để xuất hiện cửa sổ các thuộc tính của điều khiển.
Có thể sắp xếp theo chức năng hoặc theo thứ tự A-Z của tên thuộc tính bằng nút hiện
ở gõ bên trái.
Ví dụ đối với thuộc tính của editbox


Thuộc tính quan trọng của Edit Box bao gồm:
• Tag: đây là thuộc tính giống như Caption trong Visual Basic để đặt tên điều
khiển. Dùng tên này có thể thao tác đến các thuộc tính của đối tượng.
• String : là xâu kí tự hiện lên Edit Box.
1.7.3. Viết sự kiện cho các điều khiển
Khi nhấn vào nút Push Button sẽ gọi hàm Callback. Mọi điều khiển trong Matlab
đều có hàm Callback, hàm callback của mỗi điều khiển được gọi phụ thuộc vào từng
điều khiển khác nhau. Để việt lệnh cho hàm callback, bấm chuột phải, trong hàm
này có 2 tham số quan trọng:
• hObject : handle của điều khiển của control
• handles : là một cấu trúc chứa tất cả các điều khiển và dữ liệu người dùng.

Dùng cái này để truy suất các điều khiển khác.
Ví dụ
disp('Hello')


Chú ý, Matlab là ngơn ngữ lập trình thơng dịch vì vậy sau khi sửa mã, khơng cần
biên dịch lại.
Để lấy dữ liệu và thiết lập thuộc tính cho điều khiển ta sử dùng 2 hàm là set và
get, cú pháp như sau:
get(handles.tag_dieu_khien, ‘ten thuoc tinh’);
set(handles.tag_dieu_khien, ‘ten_thuoc_tinh’, gia_tri);

Ví dụ viết chương trình để cộng 2 số:
x=get(handles.edit1,'string');
y=get(handles.edit2,'string');
x=str2num(char(x));
y=str2num(char(y));
z=x+y;
set(handles.text1,'string',num2str(z));

1.7.4. Debug trong Matlab
Khi đã viết xong chương trình hồn chỉnh, để chạy chương trình có thể bấm nút Play
trên thanh cơng cụ hoặc F5 trong cửa sổ lập trình.
Trong trường hợp muốn debug chương trình, ta đặt breakpoint bằng phím F12, rồi
chạy chương trình, khi đó tại cửa sổ lệnh của Matlab con trước con trỏ để gõ lệnh sẽ
trở thành K>>
Muốn chuyển sang lệnh tiếp theo sử dụng phím tắt F10.
Trong q trình viết chương trình, có thể in biến đang sử dụng ra bằng lệnh msgbox
Ví dụ:
msgbox(x,'Thong bao');


Lệnh trên được sử dụng để hiển thị giá trị của biến x, thuận tiện cho q trình debug
chương trình, ngồi ra có thể được sử dụng để thông báo cho người sử dụng biết.
1.7.5. Vẽ đồ thị - sử dụng component AXES
Trong Matlab có component AXES được sử dụng để vẽ các đồ thị, khi trên form có
sẵn một component AXES, các lệnh vẽ đồ thị sẽ được vẽ trên componient đó. Trong
trường hợp có nhều AXES, cần sử dụng lệnh axes(handle) để xác định sẽ vẽ trên
AXES nào.


Ví dụ:
axes(handles.axes2);

Lệnh trên thơng báo cho Matlab biết rằng sẽ vẽ trên exes2.
x=0:0.01:2*pi
plot(x,sin(x),x,cos(x));
grid on;
title('Do thi ham sin va cos')

1.7.6. Điều khiển Toggle – nút bấm 2 trạng thái
Trong hàm callback, để lấy trạng thai của nút bấm, sử dụng hàm get
Ví dụ để tắt, bật lưới trên đồ thị.
button_state = get(hObject,'Value');
if button_state == get(hObject,'Max')
grid on;
elseif button_state == get(hObject,'Min')
grid off;
end

1.7.7. Điều khiển Slider – thanh trượt

Các thuộc tính cần quan tâm là thuộc tính min, max và sliderstep, trong thuộc tính
sliderstep, ta thay đổi giá trị x để thay đổi bước nhảy trên thay thanh trượt, giá trị x
nằm trong khoảng [0,1]
Một ví dụ đơn giản:
axes(handles.axes2);
k= get(hObject,'Value');
set(handles.edit1,'String',k)
n=1:k;
x=rand(1,k);
stem(n,x);

1.8. Bài tập chương 1
Bài 1.
a.
b.
c.
d.
e.
f.

Nhập vào ma trận: A=[16 3 2 13; 5 10 11 8; 9 6 7 12; 4 15 14 1]
Tìm kích thước ma trận A
Lấy dịng đầu tiên của ma trận A.
Tạo ma trận B bằng 2 cột của ma trận A.
Tạo ma trận B bằng 3 dòng đầu của ma trận A.
Tính tổng các phần tử trên các cột của A
Tính tổng các giá trị ở cột 1,


g. Tính tổng các phần tử trên các hàng của A

Hướng dẫn giải:
a.
b.
c.
d.
e.
f.
g.
Bài 2.

Sử dụng hàm size
A(1,:)
B = A(:,[2,3])
B = A(1:3,:)
sum(A)
sum(A(:,1))
sum(A')
1

0

−1

Giải hệ phương Ax=b, với: A= 2

5

3 và b = 1
0
−2


3 −1

1

Hướng dẫn giải:
Ax=b vậy x=inv(A)*b
Bài 3.

Vẽ đồ thị hàm số y1=sinx.cos2x và hàm số y2=sin(x2) trong [0-2],

khoảng chia 0.1. Và biểu diễn hai đồ thị trên cùng một cửa sổ.
Hướng dẫn giải:
x = 0: 0.1 : 2;
y1= sin(x).*cos(2*x);
y2 = sin(x.*x);
subplot(1,2,1);
plot(x,y1);title('ham y1 = sin(x) *
cos(2*x)');xlabel('X');ylabel('Y');
subplot(1,2,2);
plot(x,y2);title('ham y2 =
sin(x*x)');xlabel('X');ylabel('Y');

Bài 4.

Viết chương trình trong Matlab có nút bấm, để vẽ đồ thị


Chương 2. TÍN HIỆU RỜI RẠC
2.1. Khái niệm về tín hiệu rời rạc và lấy mẫu tín hiệu

Tín hiệu là biểu diễn vật lý của thơng tin, tín hiệu nhìn thấy là các sóng ánh sáng
mang thơng tin tới mắt, các tín hiệu nghe thấy là sự biến đổi áp suất khơng khí
truyền thới tai chúng ta.
Về mặt tốn học tín hiệu biểu diễn bởi một hàm của một hay nhiều biến số độc lập.
Trong lĩnh vực xử lý tín hiệu số, chỉ làm việc với các tín hiệu rời rạc.
Trong DPS, tín hiệu thời gian rời rạc, được biểu thị bằng một dãy rời rạc và được
viết như sau:
x[n]={-3 , 2, 4, -4, 0, 1…} với n là số nguyên
Tín hiệu tương tự ở đầu vào được chuyển sang dạng số nhờ một hệ biến đổi tương tự
- số. Q trình rời rạc hóa cịn gọi là q trình lấy mẫu tín hiệu.

2.2. Các tín hiệu cơ sở
2.2.1. Dãy xung đơn vị
Dãy xung đơn vị hay còn gọi là hàm Delta, có giá trị bằng đơn vị khi đối số = 0 và
có giá trị bằng 0 trong các trường hợp còn lại:

{

}

1, n = 0
δ ( n) = 
=  ,0,0, 1,0,0, 

0, n ≠ 0

Dãy xung đơn vị rất quan trọng, nó được sử dụng để xác định đáp ứng xung, với một
hệ thống tuyến tính nếu xác định được đáp ứng xung đơn vị thì có thể xác định
đượng đáp ứng của hệ thống. Bởi vì, một tín hiệu thời gian – rời rạc x[n] bất kỳ có
thể được triển khai thành một dãy xung đơn vị thích hợp theo cơng thức sau:


x[n] =



∑ x[k ]δ [n − k ]

k = −∞

Ở đây dãy δ[n-k] bằng đơn vị khi n=k và bằng 0 khi n khác k


Trong Matlab ta có thể biểu diễn như sau:

1, n = n0
δ ( n − n0 ) = 
, n1 ≤ n ≤ n2 , n1 ≤ n0 ≤ n2
0
,
n

n
0

Hàm delta có giá trị bằng 1 tại n0, như vậy ta có thể tạo trong Matlab, tạo hàm xung
đơn vị trên khoảng [n1,n2] ta viết một hàm trong matlab như sau:
function [x,n]=impseq(n0,n1,n2)
n=[n1:n2];
x=[(n-n0)==0];


Ví dụ: Tạo dãy xung đơn vị trong khoảng [-5:5]
n=[-5:5]
x=impseq(0,-5,5)
stem(n,x)

Kết quả:

2.2.2. Dãy nhảy bậc đơn vị
Dãy nhảy bậc đơn vị có giá trị bằng đơn vị khi đối số lớn hơn hoặc bằng 0, và bằng
0 khi đối số nhỏ hơn 0. Nó được ký hiệu là u[n] và được biểu diễn toán học như sau:

1 when n ≥ 0
u[ n] = 
0 when n < 0
Một dãy tín hiệu rời rạc theo thời gian bất kỳ x[n] để có thể khai triển thành một
tổng các dãy xung nhảy bậc đơn vị theo công thức:


x[ n ] =

+∞

∑ x[ k ](u[ n] − u[ n − 1])

k = −∞

Trong Matlab để tạo ra dãy xung nhảy bậc đơn vị ta xây dựng hàm stepseq:
function [x,n]=stepseq(n0,n1,n2)
n=[n1:n2];
x=[(n-n0)>=0];


Thực hành:
Ví dụ: vẽ đồ thị tín hiệu: x[n]=2*δ[n-5]-4*δ[n+7] trên đoạn [0:10]
n=[-10:10]
x=2*impseq(5,-10,10)-4*impseq(-7,-10,10)
stem(n,x);

Kết quả:

Ví dụ vẽ đồ thị tín hiệu rời rạc: x[ n] = e −0.3( n −10 ) { u ( n − 10 ) − u ( n − 20 )} trên đoạn
[0:20]
x=exp(-0.3*(n-10)).*(stepseq(10,0,20)-stepseq(20,0,20));
stem(n,x)

Kết quả:


×