TS. H Ồ V Ă N S U N G
Q
/t ự ỉe
h
à
n
h
XỬ LÝ SỐ TÍN HIỆU
VỠI MATLAB
NHÀ XUẤT BẢ N K H O A HỌC VÀ KỸ THUẬT
HÀ NÔI
• Đổ thị và đồ họa 2-D, 3-D.
Với những phần bổ sun^ /lói trên, liên lần xuất bản này 'Sitốn sách
cập nhật được một cách tươnịi dối đầy đủ nliữii^ kiến thức hiện cíại nhất về
"Xử lý sô tín hiệu". Các kiến thức đó được trình bẩv một cách chật chẽ, cô
đọng trong 14 thí nghiệm; gồm cả các thí nghiệm ảo lẫn các thí n^ììiệm thời
gian thực đ ể người đọc dễ cảm n/ìận, dễ tiếp thu.
Cuốn sách này là phần quan trọng nhấí của bộ sách " x ử lý số tín
hiệu". Biên soạn cuốn sách nàv, chúng tôi muốn thể hiện cúc nguyên tắc,
tính chất, các phép biến đổi và các ihĩg dụng của xử lý sô' tín hiệu bằng phần
mềm máy tính PC. Toàn bộ nội duuq của x ử lý sô tín hiệu tử phẩn cơ sỏ
đến năng cao, từ việc mô tả và biểu diễn tín hiệu đến các quá trình xử lý đa
tốc độ và dàn lọc, cũng như các hệ thống xử lý tín hiệu thời gian thực trên
"chíp” xử lý SỐTMS320C6711 cũng như các ứng dụng thực tế của DSP như
phân tích phổ, lọc số, biến đổi AID và D/A nhanh, từ kỹ thuật điều c h ế đến
các máy p hát quét tần sô' đã được thể hiện trên 14 bài thí nghiệm mô phỏng
và mô hình hoá bằng ngôn ngữ MATLAB kết hợp với c.
Các tlĩí nghiệm tiến hành trên phần mềm máy tính được gọi là các thí
nghiệm ảo. Với phần mềm MATLAB, các thí nghiệm này được thực lìiện một
cách hết sức mềm dẻo và linh lỉọat. Các tính chất và các thông sô' của hệ
thống xử lý được thay đổi, thử nghiệm và tính toán hết sức nlìơnlì chóng và
chính xác. Do vậy hệ thống xử lý được đánh giá, xem xét dưới nhiều góc độ
trước khi đưa vào thực thi thực tế. Về phương diện này thì phần mềm
MATLAB là một công cụ hàng đầu. Phần mềm bậc cao này dược các bộ
chuyển đổi dữ ỉiệu thời gian thực (KTDX) sử dụng đ ể cung cấp cãc giao diện
giữa máy tính PC với các bộ xử lý sô' DSK như C671L C6713, hay
C670ẨEVM đ ể thực hiện các thí nghiệm và các hệ thống íhóng tin thòi
gian thực.
Mỗi thí nghiệm, đều có phẩn tóm tắt lý thuyết, hướng dản viết chương
trình điều hành và hướng dẫn thực hiện, ciiổi cùng là kết quả thể hiệ n trên
màn hình máy tínlì hoặc trên máy hiện sóng. Với khoảng 100 chương trình
gốc, hàng vài trăm hàm MATLAB và hàng trăm bài tập thực hành, bạn đọc
có thể tự mình biến lìoá, phát triển thành lừìỉìg trăm các chương trình khác,
hoặc vận dụng các chương trình đó đ ể giải quyết các bài toán do chính nghê
nghiệp củơ các bạn đề ra. Đấy chính là sức hấp dẫn và ỷ nghĩa quan trọng
mà chúng tôi muốn dề cập khi soạn thảo cuốn sách này.
Toàn bộ nội dung của chươní> trình xử lý só tín hiệu từ cơ sở đến
nâng cao được tóm gọn trong 14 thí nghiệm: tronỊị dó thí nghiệm 1 và 2
giành đ ể nghiên cứu tín hiệu và cúc hệ thống LTỈ trái lĩnh vực thòi gian; thí
nghiệm 3, 4, 5 vả 6 dùng đê nghiên cứu, phân rích và l)iểu diễn tín hiệu cũng
như hệ thống L T I trên lĩnh vực tần số; íhí Ii^liiệm H, 9 và 10 dùng riêng cho
thiết k ế các h ạ i mạch lọc s ố ; nhiểii công cụ thiết kế mạch lọc mới đã dược
đưa vào chương 10, chẳng hạn như Giao diện đổ họa người dùng (GUI) và
các trình tiện ích cũng như các công cụ đ ể phân rích, thiết k ế mạch lọc,
thiết k ế hệ thống như PDATool, PVTool vù SPTool. Thí nghiệm 13 dùng d ể
nghiên cứií các hệ thống xử lý sổ đa tốc độ và dàn lọc. Thí nghiệm 14 dùng
đ ể xử lý tín hiệu thời gian thực trên DSK TM S320C67Ỉỉ. Chúng tôi giành
trọn thí nghiệm 7 đ ể nghiên cứu, xử lý sô' các tín hiệu thời gian liên tục;
trong đó nghiên cứu kỹ càng các kỹ thuật chuyển dổi AID và DIA tốc độ cao
cũng như các hệ thống lấy mầu quá áp dụng cho các hệ thống xử lý tín hiệu
thời gian thực. Toàn bộ thí nghiệm 11 dừng để nghiên cíãi và thực thi CCIC
loại cấu trúc khác nhau cho các mạch lọc SỐIIR và FIR. Toàn bộ thí nghiệm
12 dùng đ ểx ử ỉv các tín hiệu thống kê và tín hiệu hình ảnh.
Với 14 bài thí nghiệm trên phần mềm MATLAB và trên DSK
320C 67ỈỈ này, bạn đọc sẽ thấy sức hấp dẫn và hiệu quả tuyệt vời mà
ngôn ngữ lập trinh kỹ thuật phần mềm bậc cao này mang lại. Các kết quả
thực tế cũng như nhĩmg kiến thức mà bạn thu nhận trong qíia trình tiến
hành thi nghiệm sẽ kích thích sự say mé hiểu biết vả khả năng sáng tạo, giúp
bạn nhận thức rõ hơn tầm quan trọng cũng như tính cấn thiết và sức mạnh
của cônỊ nghệ xử lý s ố tín hiệu tiên tiến này.
Chúng tôi mong miiốn cuốn sách cập nhật dược nhiTỉĩg kiến thức
cũng như nliữtĩg phiên bản mới nhất về xử lý số tín hiệu và về phần mềm
MATLAB, đồng thời lại muốn cuốn sáclỉ nhanh clìónịỉ đến tay người đọc,
nên trmg quâ trình soạn thảo khó tránh đươc nhữìì^ khiếm khuyết. Chúng
tôi .xin chân thành cảm ơn và mong được quỷ dộc giả góp ỷ đ ể lần tái bản
sau cucn sách được hoàn thiện hơn. Các ỷ kiến đóng góp xin gỉrì theo địa
chỉ: N h ì xuất bản Khoa học và Kỹ thuật 70 Trần Hưiĩịỉ Đạo Hà Nội.
nr» ■'
»9
Tác giả
LỜI NÓI ĐẦU
Sau nhiều lần xuất bản, và tái bản, bộ sách "Xử lý số tín hiệu trên
máy tính PC với M A T L A B " đã được rất nhiềii người sử dụng; từ sinh viên
của các trường Đại học đến các công tihíììi và các kỹ sư thực hành; cả
ngành Điện tử Viễn thông lẫn Công nghệ Thóììg tin. Trong sô'các cuốn sách
đó, cuốn "Thực hành x ử lý số tín hiệu trên máy tính PC với M ATLAB " là
cuốn được quan tám nhiều hơn cả. Vì vậy, để cỉcip ứng nhu cầu học tập
ngày càng cao của bạn đọc cũng như sự lăng trưởng mạnh m ẽ của công
nghệ xử lý tín hiệu, trong lần xuất bản này, tác iịiả nhận thấy cẩn đổi tên
mới cho cô đọng hơn; đó là "Thực hành xử lý sô tín hiệu với M ATLAB";
đồng thời cần bổ sung và cập nhật thêm những kiến thức mới, cụ thể là:
1. Đưa thêm hai th í nghiệm mói là:
• Thí nghiệm thứ 12: x ử lý tín hiệu thống kê.
• Thí nghiệm thứ 14: x ử lý tín hiệu thời gian thực dùng
TMS320C6711.
2. Tăng cường và bổ sung nhiều chuyên mục mói:
• Giao diện đồ họa người dùng (GUI) và các trình tiện ích cũng
như các công cụ đ ể phân tích, thiết k ể mạch lọc, thiết k ế hệ
thống như P D À T ooỉ, PVTool và SPTool.
• M ã hoá tiếng nói và tín hiệu âm thanh dìiìig dàn lọc QMF
5 -kênh.
• Thiết k ế và thực thỉ hệ thống truyền thông đa sóng mang
o p d m i d m t '.
• Thiết k ế và thực thi bộ lọc FIR đa dải thời gian thực dùng DSK
TMS320C671I.
• Thiết k ế và thực thi các bộ cán hằng bậc cao dùng MATLAB và
D SK TNM S320C67ỈỈ.
3. N hiều p h ụ lục mới cũng đã được đưa thêm vào:
• Mảng và các phép toán trên mảng
• Các phép tính sô'phức.
K
sn
(1.4)
=
n = -K
Công suất trung bình của một dãy không tuần hoàn x[n] được
xác định bằng công thức:
1
av = lim
K ^
ocK
+ 1
Công suất trung bình cửa dãy tuần hoàn x[n] với chu kỳ N được
cho b ở i;
N
p =
^av
( 1.6 )
N n=0
Dãy xung đơn vị được ký hiệu bằng ô[n] và được xác định từ
biểu thức;
ô[n] =
1,
khi n = 0
0,
khi n
0
(1.7)
Dãy nhẩy bậc đơn vị ký hiệu u[n] được xác định từ biểu thức:
u[n] =
1,
khi n > 0
0,
khi n < 0
( 1.8)
• Dãy sine phức được biểu thị bằng hệ thức:
x[n] = A a
n^jcOon+(ị)
(1.9)
Dãy sine thực có biên độ là hằng số được biểu thị bằng :
8
x[n] = Acos(co,,n + O)
( 1. 10)
Trong đó A, co„ và (T’ là những số thực được gọi là biên độ, tần sô góc
và pha ban đẩu của dãy hàm số sine x[n]. f„ = (ừJ2n là tần số.
Dãy sin phức và sin thực là những dãy tuần hoàn với chu kỳ N nếu:
CO..N = 2iĩr
trong đó N là số nguyên dưcfng còn r là một số nguyên bất kỳ. Giá trị N nhỏ
nhất thoả mãn điều kiện (1.11) là chu kỳ cơ bản của dãy x[n] đó.
• Tích hai dãy dữ liệu x[n] và h[n] có cùng chiều dài N sẽ thu
được dãy dữ liệu y[n] có cùng chiều dài N và được thực hiện
bằng hệ thức:
y[n] = x[n] . h[n]
x[n]
(1.12)
— ►y[n] = x[n].h[n]
h[n]
• Cộng hai dãy dữ iiệu x[n] với h[n] có cùng chiều dài N sẽ thu
được dãy dữ liệu y[n] có cùng chiều dài N và được thực hiện
bằng hệ thức:
y[n] = x[n] + h[n]
x [n ].
(1.13)
+ )— ►y[n] = x[n] + h[n]
h[n]
N hán dãy x[n] vói hằng số a được thực hiện bằng hệ thức:
y[n] = a.x[n]
(1.14)
Phan ỉhu c
20
o
o
T5
.Ọ?99o,e 0060^ q o q q q o o q
e ĩĩlĩỉ
-eỔ O
cí>è
Ị
0>
i5
-2
10
15
20
25
30
35
40
30
35
40
Chi Sũ thoi gian n
Phan ao
“oO
c
a>
m
15
20
25
Chi so thoi gian
Hình 1.2. Mô tả phần thực và phần ảo của tín hiệu sin phức (1.20).
Để phát ra một dãy luỹ thừa thực, ta dùng chưcíng trình P1.3 sau đây.
%Chương trình P1.3
%Phát ra một dãy lũy thừa thực
clf
n=0:35;
a=1.2;K=0.2;
x=K*a.^n;
stem(n,x).
Đồ thị của dãy này cho trên hình 1.3.
14
120
o
1Í30
o
80
o
o
o
o
40
20
o
Qc > 0 - 0 Q O
(ệO Q Q -Q Q O ^.^
10
o
oo
o
o
o
99Ỹ.? ? Ĩ Ĩ
15
20
25
30
35
Chi so thoi gian
Hình 1.3. Tín hiệu luỹ thừa thực x[n] = 0,2(1,2)"
Bài tập:
1. Chạy P1.2 và phát ra dãy số phức.
2. Điều gì xẩy ra nếu thay c=(l/2)+(pi/6)*j.
3. Chạy P1.3 phát ra dãy luỹ thừa thực.
4. Sự khác nhau giữa toán tử số học
và A.
5. Bạn có thể dùng lệnh Matlab sum(S.*S) để tính năng lượng của một
dãy số thực S[n] . Hãy dùng lệnh này để tính năng lượng của dãy X
trong chương trình Pl-3 cho trường hợp a = 0,9 và K = 20.
1.1.3. Các tín hiệu thời gian - rời rạc dạng sin thực
Để phát ra tín hiệu sin thực, trong MATLAB dùng người ta sử dụng
các hàm số cos và sin. Chương trình P1.4 sau đây cho phép mô tả cách phát
ra tín hiệu sin thực thời gian - rời rạc
x[n] = 1,5 sin(0,27rn)
( 1.21)
15
D ay xung don vi
o
0.8
ICũ
Ũ .4
0.2
0
5
c h i s o t h o i g ia n n
II
Hình 1.1. Dãy xung đơn vị.
Bài tập ;
1. Biến đổi chưcỉng trình trên để tạo ra một dãy xung đcfn vị bị trễ 11
mẫu. Chạy chương trình đã được biến đổi và vẽ dãy mẫu đó.
2. Biến đổi chưcmg trình P1 để phát ra dãy nhẩy bậc đơn vị S[n] . Chạy
và hiển thị dãy nhảy bậc đó.
3. Biến đổi chưcmg trình P1 để tạo dãy nhẩy bậc đơn vị sd[n] sớm 7
mẫu . Chạy chưcrtig trình vừa biến đổi và hiển thị dãy đó.
1.1.2. Biểu diễn tín hiệu sin phức và sin thực
Dãy sin phức được mô tả bằng phưong trình:
ơon+j(cDon+0)
cos(coon + O) + j A
sin(coon + d)) (1.17)
Dãy sin thực :
x[n] = Acos(cù(,n+0)
12
(1-18)
với A, co,| và o là các số thực. A là biên độ ; ©(, là tần số góc; o là pha ban
đầu. f(,=a)(/27r là tần số.
Các dãy sin phức và sin thực là những dãy tuần hoàn nếu (0(,N là một
số nguyên bội của 271. Có nghĩa là;
0i)(,N = 27i:r
(1.19)
ở đây N là số nguyên dưofng, r là sô' nguyên bất kỳ. Số N nhỏ nhất thoả mãn
phưcmg trình trên được gọi là chu kỳ cơ bản của dãy.
Để phát ra dãy sin phức và thực ta dùng chương trình P1.2. Chương
trình này sẽ phát ra phần thực và phần ảo của tín hiệu sin phức
x[n] = 2exp[-(l/12)+j(7T/6)]
(1.20)
% Chương trình PI.2
% Phát ra dãy sin phức
clf;
c = -(l/12)+(pi/6)*i;
K = 2;
n = 0:40;
X = K*exp(c*n);
subplot(2,l,l);
stem(n,real(x));
xlabel('Chỉ số thời gian n');ylabel('Biên độ');
title('Phần thực');
subplot(2,l,2);
stem(n,imag(x));
xlabelCChỉ số thời gian n');ylabel('Biên độ');
titleCPhần ảo');
Đồ thị mô tả phần thực và phần ảo của tín hiệu sin phức cho trên
hình 1.2.
13
x[n]
►a
y[n] = a.x[n
►
• Ngược thời gian hay còn gọi là đổi chiều tín hiệu, hoặc phép
chuyển vị của một dãy có chiều dài vô hạn được thực hiện
bằng hệ thức:
y[n] = x[-n'
(1.15)
• Làm trễ dãy x[n] có chiều dài vô hạn một lượng M sẽ thu được
dãy y[n] có chiều dài vô hạn và được thực hiện nhờ biểu thức:
y[n] = x[n-M]
(1.16)
trong đó M là một số nguyên dương. Đây cũng chính là phép dịch
dãy x[n] về phía phải trục thời gian M mẫu và được ký hiệu là
Trường
hợp M = 1 thì được gọi là trễ đơn vị và ký hiệu z
Nếu M lấy dấu âm thì được gọi là sớm, tương đưcfng với việc dịch
dãy vế phía trái M mẫu trên trục thríi gian.
1.1. CÁC TÍN HIỆU C ơ SỞ
1.1.1. Dây xung đơn vị ô[n]
Dãy xung đofn vị có chiều dài N mẫu được phát ra nhờ lệnh
ổ = [ỉ zeros(I,N-l)J
ô=
1 0 0 0 0 0 0 0 0 0
10
Dãy xung đơn vị 6d[n] có chiều dài N bị trễ M mẫu (M
- Xem thêm -