Tiếp nội dung phần 1, Giáo trình Matlab và ứng dụng trong viễn thông: Phần 2 cung cấp cho người học những kiến thức như: tín hiệu và hệ thống; thiết kế các bộ lọc; cơ bản về xử lý ảnh số; nâng cao chất lượng ảnh; nén ảnh số; mã hoá nguồn; truyền dẫn baseband và passband. Mời các bạn cùng tham khảo!
Trang 1PH ẦN II
ỨNG DỤNG MATLAB
Trang 4Ch ương 9
Mơ phỏng một hệ thống viễn thơng là một quá trình làm việc với các tín hiệu: kh i t o, biến đổi, thu phát, so sánh, xử lý, Để việc mơ phỏng đ ợc tiến hành thuận lợi và hiệu qu , cần
ph i cĩ đầy đ các cơng cụ xử lý tín hiệu cơ b n Đối với MATLAB, các cơng cụ này đ ợc cung cấp trong MATLAB Signal Processing Toolbox Đĩ là một tập hợp các hàm đ ợc xây
dựng trên cơ s các gi i thuật tốn học và hỗ trợ hầu hết các thao tác xử lý tín hiệu, bao gồm:
kh i t o tín hiệu, phân tích và thiết kế các bộ lọc t ơng tự và số, phân tích phổ, xử lý tín hiệu
thống kê, phân tích các hệ thống tuyến tính,
9.1 BIỂU DIỄN MỘT TÍN HIỆU TRONG MATLAB
MATLAB là một mơi tr ng tính tốn số, do đĩ một tín hiệu ph i đ ợc biểu diễn thơng qua các mẫu dữ liệu r i r c c a nĩ (tín hiệu đ ợc lấy mẫu) Nĩi cách khác, một tín hiệu bất kỳ
đ ợc biểu diễn bằng một vector hàng (kích th ớc 1 x n) hoặc vector cột (kích th ớc n x 1) Ví
dụ:
>> x = [1 1.2 1.5 1.2 1 0.8 0.5 0.8];
Để biểu diễn một tín hiệu đa kênh, ta sử dụng d ng ma trận Một tín hiệu m kênh cĩ chiều dài ng với mỗi kênh đều bằng n đ ợc biểu diễn bằng một ma trận kích th ớc n x m, trong đĩ
mỗi cột c a ma trận t ơng ng với một kênh, mỗi hàng c a ma trận ng với một th i điểm lấy
mẫu Ví dụ: sau đây là biểu diễn c a một tín hiệu 3 kênh:
9.2 TẠO TÍN HIỆU: VECTOR THỜI GIAN
Để t o một tín hiệu t ơng tự trong MATLAB, cần cĩ một vector th i gian để xác định các
th i điểm lấy mẫu tín hiệu Tín hiệu t o ra sẽ là một vector mà mỗi phần tử c a nĩ chính là giá trị c a mẫu tín hiệu đ ợc lấy th i điểm xác định b i phần tử t ơng ng c a vector th i gian Ví dụ, để t o tín hiệu y = sin(100πt) + 2sin(240πt), ta lấy mẫu tín hiệu t i các th i điểm cách nhau 0,001s và ta cĩ các vector th i gian và vector biểu diễn tín hiệu y nh sau:
>> t = (0:0.001:1)’;
>> y = sin(2*pi*50*t) + 2*sin(2*pi*120*t);
Dùng hàm plot để vẽ 100 mẫu đầu tiên c a y:
>> plot(t(1:100),y(1:100))
Trang 50 0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 -3
-2 -1 0 1 2 3
Hình 9.1
Với ph ơng pháp trên, ta có thể kh i t o bất kỳ tín hiệu nào ta muốn, chỉ cần xác định biểu
th c th i gian c a nó Sau đây là một số tín hiệu đặc biệt:
Các tín hiệu xung đơn vị, hàm nấc đơn vị và hàm dốc đơn vị:
>> t = (0:0.001:1)'; % vector th ời gian
Các tín hiệu tuần hoàn:
>> fs = 10000; % t ần số lấy mẫu
>> t = 0:1/fs:1.5; % vector th ời gian
Hàm sawtooth(t,width) t o tín hiệu sóng răng c a hoặc sóng tam giác có các đỉnh ±1, chu kỳ 2π, width là tỷ lệ th i gian lên trên tổng chu kỳ
Hàm square(t,width) t o tín hiệu sóng vuông có các m c là ±1, chu kỳ 2π, width là tỷ
lệ th i gian m c 1 trên tổng chu kỳ
Hàm pulstran: t o một chuỗi các xung có cùng d ng với một xung gốc
Ví dụ 9-1 Tạo một chuỗi xung là sự lặp lại c a các xung Gauss sau những khoảng thời
gian b ằng nhau Các thông số cụ thể như sau: tốc độ lấy mẫu c a chuỗi xung là 50kHZ, chiều
Trang 6dài chu ỗi xung là 10ms, tốc độ lặp lại c a chuỗi xung Gauss là 1kHz, suy hao theo hàm mũ cơ
s ố 0.8 Xung Gauss có tần số trung tâm là 10kHz, băng thông 50%
-0.6
-0.4
-0.2
0 0.2
c
ππ
)sin(
)(sin = (9.1)
n nx
Z k k x
n k
)2/sin(
)2/sin(
,2)
Trang 7Hình 9.3
9.3 LÀM VIỆC VỚI CÁC FILE DỮ LIỆU
Trong các phần trên, các dữ liệu cĩ thể đ ợc t o ra ch yếu bằng hai cách:
Nhập trực tiếp từ bàn phím các giá trị dữ liệu
Dùng các hàm cĩ sẵn c a MATLAB để t o ra các mẫu dữ liệu
Ngồi hai cách trên, dữ liệu cịn cĩ thể đ ợc t o ra bằng một trong những cách sau:
Dùng lệnh load c a MATLAB để t i dữ liệu ch a trong các file ASCII hoặc file MAT
vào khơng gian làm việc c a MATLAB
Đọc dữ liệu vào MATLAB bằng cách dùng các lệnh truy xuất ngo i vi cấp thấp nh
fopen, fread, fscanf
Xây dựng file MEX để đọc dữ liệu
9.4 PHÂN TÍCH VÀ THIẾT KẾ CÁC BỘ LỌC
Vấn đề phân tích và thiết kế các bộ lọc cĩ một ý nghĩa rất quan trọng trong lý thuyết xử lý tín
hiệu vì bất kỳ một hệ thống tuyến tính nào cũng cĩ thể xem nh là một bộ lọc với một đáp
ng xung hoặc một hàm truyền đ t nào đĩ
Cơ s tốn học c a quá trình lọc một tín hiệu là phép lấy tích chập Nếu x(k) là tín hiệu ngõ vào và y(k) là tín hịệu ngõ ra c a một bộ lọc cĩ đáp ng xung là h(k) thì y(k) chính là tích
x k h k
y( ) ( )* ( ) ( ) ( ) (9.3)
Nếu x(k) và h(k) cĩ chiều dài hữu h n thì y(k) cũng cĩ chiều dài hữu h n và phép lấy tích
chập nĩi trên cĩ thể thực hiện bằng cách gọi hàm conv trong MATLAB
>> y = conv(h,x)
Trang 8Chiều dài c a vector y bằng length(x) + length(h) – 1
Ngoài ra, ta cũng có thể lấy tích chập c a hai ma trận bằng cách dùng hàm tích chập hai chiều
conv2
Ví dụ:
1()
2()1(
)1()
2()1()()
()(
1
1
z X z m a z
a a
z n b z
b b z X z H z Y
Để biểu diễn một bộ lọc, MATLAB sử dụng hai vector hàng: vector a biểu diễn các hệ số c a
tử số và vector b biểu diễn các hệ số c a mẫu số
Tuỳ theo các vector a và b mà mỗi bộ lọc có thể có các tên gọi khác nhau Cụ thể là:
Nếu n = 0 (b là một vô h ớng) thì bộ lọc trên gọi là bộ lọc đáp ng xung vô h n (IIR – Infinite Impulse Response), bộ lọc toàn cực, bộ lọc hồi quy hoặc bộ lọc AR (autoregressive)
Nếu m = 0 (a là một vô h ớng) thì bộ lọc trên gọi là bộ lọc đáp ng xung hữu h n (FIR –Finite Impulse Response), bộ lọc toàn zero, bộ lọc không hồi quy hoặc bộ lọc trung bình thay đổi (MA – Moving Average)
Nếu c m và n đều lớn hơn 0, bộ lọc trên gọi là bộ lọc đáp ng xung vô h n (IIR – Infinite Impulse Response), bộ lọc cực-zero, bộ lọc hồi quy hoặc bộ lọc ARMA (autoregressive moving-average)
Từ ph ơng trình (9.4) có thể xây dựng một quá trình để xác định các mẫu dữ liệu ra Gi
sử a(1) = 1 Chuyển mẫu số sang vế trái rồi lấy biến đổi – z ng ợc c hai vế, ta đ ợc ph ơng trình sai phân:
y(k) + a(2)y(k-1) + + a(m-1)y(k-m) = b(1)x(k) + b(2)x(k-1) + + b(n+1)x(k-n)
Vậy:
y(k) = b(1)x(k) + b(2)x(k-1) + + b(n+1)x(k-n) - a(2)y(k-1) - - a(m-1)y(k-m) (9.5)
Trang 9Đây là d ng chuẩn c a biểu th c tín hiệu ra trong miền th i gian Gi sử điều kiện đầu bằng 0,
ta có quy trình tính toán nh sau:
y(1) = b(1)x(1)
y(2) = b(1)x(2) + b(2)x(1) –a(2)y(1)
y(3) = b(1)x(3) + b(2)x(2) + b(3)x(1) – a(2)y(2) – a(3)y(1) (9.6)
Trong MATLAB, quy trình này đ ợc thực hiện bằng hàm filter Chỉ cần cung cấp các vector
hệ số c a bộ lọc (a và b) cùng với vector tín hiệu vào, hàm sẽ tr về vector tín hiệu ra y có cùng chiều dài với x Nếu a(1) ≠ 1, hàm này sẽ chia các hệ số a cho a(1) tr ớc khi thực hiện
tính toán Hàm filter thực hiện bộ lọc theo cấu trúc trực tiếp d ng II Đây là cấu trúc chuẩn tắc
có số khâu trễ là ít nhất
Hình 9.4 C ấu trúc trực tiếp d ng II để thực hiện hàm filter
ng với mẫu th m c a ngõ ra, hàm filter thực hiện các phép tính sau:
y(m) = b(1)x(m) + z1(m-1)
)()2()1()()
()1(
trong đó zi là vector xác định các giá trị đầu c a ngõ ra các khối trễ, còn zf là vector các giá
trị này sau khi thực hiện xong hàm filter
Ví dụ 9-2 Bộ lọc số thông thấp tần số cắt ω = 0,4.π có hàm truy ền đạt:
H(z) =
3 2
1
3 2
1
06,042
,058,01
1,03
,03,01,0
z z
z
được dùng để lọc bỏ thành phần tần số cao trong tín hiệu x(n) = sin(πn/5) + cos(4πn/5), v ới 0
≤ n ≤ 100 Hãy xác định và vẽ tín hiệu ra y(n)
Trang 10y = filter(b,a,x); % Tín hi ệu ngõ ra bộ lọc y(n)
subplot(2,1,1);
title('Tin hieu vao');
Tin hieu vao
-1 -0.5 0 0.5 1 1.5
Tin hieu ra
Hình 9.5
9.5 CÁC HÀM KHÁC ĐỂ THỰC HIỆN LỌC
Ngồi hàm filter, để thực hiện các quá trình lọc, trong Signal Processing Toolbox, MATLAB cịn cung cấp thêm một số hàm khác, bao gồm hàm upfirdn thực hiện bộ lọc FIR đ ợc lấy
mẫu l i, hàm filtfilt cho phép lo i bỏ méo pha trong quá trình lọc, hàm fftfilt thực hiện quá
trình lọc trong miền tần số, hàm lactfilt thực hiện bộ lọc theo cấu trúc m ng (lattice)
9.5.1 THỰC HIỆN BĂNG LỌC ĐA TỐC ĐỘ (MULTIRATE FILTER BANK)
Các băng lọc đa tốc độ cĩ thể thực hiện bằng cách dùng hàm upfirdn Hàm này cho phép
thay đổi tốc độ lấy mẫu tín hiệu theo một tỷ lệ P/Q với P, Q là các số nguyên Cĩ thể xem hàm này là kết qu c a sự ghép liên tiếp ba hệ thống:
o Bộ lấy mẫu lên (chèn thêm bit 0) với hệ số tỷ lệ P
o Bộ lọc FIR cĩ đáp ng xung h
o Bộ lấy mẫu xuống với hệ số tỷ lệ Q
Trang 11Hình 9.6 Nguyên t ắc thực hiện hàm upfirdn
Cấu trúc nĩi trên đ ợc thực hiện bằng kỹ thuật lọc nhiều pha (polyphase), đĩ là trọng tâm c a
lý thuyết băng lọc đa tốc độ
>> y = upfirdn(x, h, P, Q)
Để thực hiện một băng lọc gồm nhiều bộ lọc ta dùng hàm upfirdn, trong đĩ bộ lọc h là một
ma trận mà mỗi cột biểu diễn một bộ lọc FIR Các tín hiệu ngõ ra cũng biểu diễn d ới d ng
ma trận
9.5.2 KHỬ MÉO PHA CHO BỘ LỌC IIR
Trong tr ng hợp bộ lọc FIR, ta cĩ thể thiết kế bộ lọc cĩ pha tuyến tính, dữ liệu ra chỉ lệch so
với dữ liệu vào một số l ợng ký hiệu cố định Nh ng với bộ lọc IIR, méo pha th ng cĩ tính
chất phi tuyến cao Thơng th ng, ng i ta sử dụng các thơng tin về tín hiệu t i các th i điểm
tr ớc và sau th i điểm hiện t i để khắc phục hiện t ợng méo pha này MATLAB xây dựng
hàm filtfilt để thực hiện gi i thuật nĩi trên
Đầu tiên chúng ta kh o sát mơ hình d ới đây Chú ý rằng nếu biến đổi z c a một chuỗi x(n) là X(z) thì biến đổi z c a chuỗi đ o ng ợc th i gian c a x sẽ là X(1/z)
Hình 9.7
Khi |z| = 1, t c là z=e jω, tín hiệu ngõ ra tr thành 2
)()(e jω H e jω
X Vậy nếu biết tất c các
mẫu c a tín hiệu x(n) thì sau hai lần lọc liên tiếp, ta đ ợc một tín hiệu cĩ độ lệch pha bằng 0
so với x(n)
Ví dụ 9-3 So sánh hai phương pháp lọc dùng hàm filter và hàm filtfilt để thực hiện lọc một
tín hi ệu sin cĩ hai thành phần tần số 3Hz và 40Hz bằng bộ lọc trung bình 10 điểm
fs = 100;
t = 0:1/fs:1;
x = sin(2*pi*t*3)+.25*sin(2*pi*t*40);
b = ones(1,10)/10; % 10 point averaging filter
y = filtfilt(b,1,x); % Noncausal filtering
yy = filter(b,1,x); % Normal filtering
plot(t,x,t,y,' ',t,yy,':')
legend('Tin hieu goc','Loc bang filfilt','Loc binh thuong')
Hình 9.8 là đồ thị thu đ ợc sau khi thực hiện ch ơng trình
Trang 12Hình 9.8
Từ đồ thị này ta nhận thấy c hai bộ lọc đều lo i bỏ đ ợc thành phần tần số 40Hz trong tín
hiệu gốc Tuy nhiên, trong khi tín hiệu ra c a bộ lọc filtfilt cùng pha với tín hiệu gốc thì tín
hiệu ra c a bộ lọc filter bị trễ đi kho ng 5 ký hiệu so với tín hiệu gốc Chúng ta cũng thấy
rằng biên độ ngõ ra c a bộ lọc filtfilt nhỏ hơn do kết qu c a việc bình ph ơng biên độ hàm
truyền H
L ưu ý: để kết quả lọc là tốt nhất, cần bảo đảm chiều dài c a tín hiệu vào tối thiểu phải gấp
ba l ần bậc c a bộ lọc filtfilt, và tín hiệu vào cĩ xu hướng giảm về 0 ở hai phía
9.5.3 THỰC HIỆN BỘ LỌC TRONG MIỀN TẦN SỐ
Do tính đối ngẫu giữa hai miền th i gian và tần số, bất kỳ một thao tác nào thực hiện đ ợc trong miền này đều cũng cĩ thể thực hiện đ ợc trong miền cịn l i
Trong miền tần số, bộ lọc IIR đ ợc thực hiện bằng cách nhân biến đổi Fourier r i r c (DFT)
c a tín hiệu vào với th ơng số c a các biến đổi Fourier c a các hệ số bộ lọc Ví dụ:
>> n = length(x);
>> y = ifft(fft(x).*fft(b,n)./fft(a,n));
Kết qu tính tốn t ơng tự nh hàm filter, tuy vẫn khác nhau đo n quá độ lúc đầu (hiệu ng biên) Khi chiều dài c a chuỗi vào càng tăng, ph ơng pháp này càng kém hiệu qu do ph i thêm vào nhiều điểm zero cho các hệ số bộ lọc khi tiến hành tính FFT, đồng th i gi i thuật FFT cũng gi m hiệu qu khi số điểm n tăng lên
Ng ợc l i, đối với các bộ lọc FIR, ta cĩ thể tách một chuỗi dài thành nhiều chuỗi ngắn hơn, sau đĩ dùng ph ơng pháp chồng và cộng (overlap and add) Hàm fftfilt c a MATLAB đ ợc
xây dựng dựa trên gi i thuật này
>> y = fftfilt(b,x)
>> y = fftfilt(b,x,n)
x là chuỗi vào, y là chuỗi ra, b là vector các hệ số c a bộ lọc, n là số điểm FFT tối thiểu
Hàm fftfilt(b,x) t ơng đ ơng với hàm filter(b,1,x)
Trang 13)(
n
n n
x (9.8)
Để tìm đáp ng xung c a một bộ lọc, ta cĩ thể t o một chuỗi xung đơn vị rồi dùng hàm filter:
>> imp = [1; zeros(49,1)];
>> h = filter(b,a,imp);
9.7 ĐÁP ỨNG TẦN SỐ
Signal Processing Toolbox cho phép thực hiện các phép phân tích trong miền tần số đối với
c bộ lọc t ơng tự lẫn bộ lọc số
9.7.1 TRONG MIỀN SỐ
Trong miền số, đáp ng tần số đ ợc tính tốn bằng gi i thuật FFT Hàm freqz sẽ tr về đáp
ng tần số ph c (FFT) p điểm c a bộ lọc số cĩ các vector hệ số là a và b
>> [H,W] = freqz(b,a,p)
H là đáp ng tần số c a bộ lọc đ ợc tính t i p điểm tần số cho b i vector W Các điểm tần số
đ ợc chọn cách đều nhau và nằm nửa trên c a vịng trịn đơn vị
m j j
n j j
j
e m a e
a a
e n b e
b b e
ω ω
=
)1()
2()1(
)1()
2()1()(
L ưu ý: trong MATLAB thường sử dụng các giá trị tần số chuẩn hố, trong đĩ tần số đơn vị là
t ần số Nyquist, t c một nửa tần số lấy mẫu Muốn chuyển từ tần số chuẩn hố sang tần số gĩc quanh vịng trịn đơn vị, chỉ cần nhân với π, mu ốn chuyển từ tần số chuẩn hố sang tần số Hertz, nhân v ới một nửa tần số lấy mẫu
Ví dụ 9-4 Tính và vẽ đáp ng tần số 256 điểm c a bộ lọc Butterworth bậc 9, tần số cắt
400Hz Bi ết tần số lấy mẫu là 2000Hz
Trang 14freqz(b,a,256,2000)
Kết qu :
-800 -600 -400 -200 0
9.7.2 TRONG MIEÀN ANALOG
Hàm freqs có th ể thực hiện các ch c năng t ơng tự nh hàm freqz nh ng đối với các bộ lọc
c a nó bằng cách dùng hàm freqz hoặc freqs, sau đó dùng hàm abs để lấy đáp ng biên độ
hoặc hàm angle để lấy đáp ng pha
MATLAB còn cung cấp hàm unwrap tr về đáp ng pha liên tục t i các vị trí ±360° (thông
th ng góc pha chỉ đ ợc tính trong ph m vi -360° đến +360° nên t i các vị trí này đáp ng pha sẽ có b ớc nh y) bằng cách thêm vào các bội số c a ±360° nếu cần thiết
Ngoài ra, ta cũng có thể sử dụng hàm phasez để có đáp ng pha liên tục nh trên Cú pháp
c a hàm phasez hoàn toàn t ơng tự nh hàm freqz, chỉ khác là kết qu tr về là đáp ng pha
Trang 15title('Dap ung bien do');
0.5
1
Dap ung bien do
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 -200
-100 0 100 200
Dap ung pha (gian doan tai 360 do)
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 -1500
-1000 -500 0
Dap ung pha (lien tuc)
Hình 9.10
đồ thị đáp ng pha đầu tiên, ta cĩ cĩ thể phân biệt các điểm nh y 360° (do gĩc pha v ợt ra ngồi giới h n hàm angle) với các điểm nh y 180° ( ng với các điểm zero c a đáp ng tần
số) Nếu dùng hàm unwrap ta cĩ thể phân biệt đ ợc các vị trí này (nh đồ thị th hai)
9.7.4 THỜI GIAN TRỄ
Độ trễ nhĩm (group delay) c a một bộ lọc là một thơng số đánh giá th i gian trễ trung bình
c a bộ lọc (là một hàm c a tần số) Nếu đáp ng tần số ph c c a bộ lọc là H( jω
e ) thì độ trễ nhĩm đ ợc xác định bằng biểu th c:
ωω
θω
τ
d
d g
)()
( =− (9.10) trong đĩ θ(ω) là đáp ng pha c a bộ lọc
Trong MATLAB, ta cĩ thể xác định độ trễ nhĩm bằng cách dùng hàm grpdelay với cú pháp
hồn tồn t ơng tự nh hàm freqz
Ví dụ:
>> [gd,w] = grpdelay(b,a,n)
tr về độ trễ nhĩm τg(ω)c a bộ lọc số xác định b i các vector hệ số a và b, đ ợc tính t i n điểm tần số xác định b i vector v
Độ trễ pha (phase delay) c a bộ lọc đ ợc định nghĩa b i:
Trang 16θω
τp( )=− ( ) (9.11)
T ơng tự với độ trễ nhĩm, độ trễ pha cũng cĩ thể đ ợc xác định bằng cách dùng hàm
phasedelay (v ới cú pháp hồn tồn t ơng tự freqz)
plot(f,gd,'b-',f,pd,'r '); grid; hold on;
legend('Do tre nhom','Do tre pha');
0 5 10 15 20
25
Do tre nhom
Do tre pha
Hình 9.11
9.8 GIẢN ĐỒ CỰC – ZERO
Ngồi các cách biểu diễn thơng qua đáp ng xung hoặc hàm truyền đ t, một hệ thống tuyến tính nĩi chung hay một bộ lọc nĩi riêng cũng cĩ thể biểu diễn d ới d ng gi n đồ cực – zero,
t c là sự phân bố các điểm cực và điểm zero c a hàm truyền đ t trong mặt phẳng z
Hàm zpplane cho phép vẽ gi n đồ cực – zero c a một hệ thống tuyến tính nếu chúng ta cung
cấp các điểm cực và zero c a hàm truyền hoặc cung cấp các vector hệ số a và b c a hệ thống
>> zplane(z,p) vẽ gi n đồ cực – zero dựa vào vector các zero z và vector các điểm cực p
>> zplane(b,a) vẽ gi n đồ cực – zero dựa vào vector các hệ số a và b
Trang 17L ưu ý: giữa mơ hình hàm truyền và mơ hình cực – zero cĩ thể được chuyển đổi qua lại bằng
cách dùng các hàm tf2zp và zp2tf
>> [b,a] = zp2tf(z,p,k)
>> [z,p,k] = tf2zp(b,a)
trong đĩ k là hệ số khuếch đ i khi z → ∞
9.9 CÁC MÔ HÌNH HỆ THỐNG TUYẾN TÍNH
Nh ta đã biết, một hệ thống tuyến tính cĩ thể đ ợc mơ t bằng nhiều mơ hình khác nhau nh
mơ hình hàm truyền, mơ hình cực – zero, Trong MATLAB, Signal Processing Toolbox cung cấp cho ta một cách đầy đ các mơ hình này Ng i sử dụng cĩ thể lựa chọn mơ hình nào thích hợp để mơ phỏng hệ thống một cách nhanh chĩng và chính xác nhất
9.9.1 CÁC MÔ HÌNH HỆ THỐNG RỜI RẠC THEO THỜI GIAN
Các mơ hình hệ thống r i r c đ ợc MATLAB hỗ trợ bao gồm:
Mơ hình hàm truyền đ t
Mơ hình độ lợi – cực – zero
Mơ hình khơng gian tr ng thái
Mơ hình khai triển hữu tỷ (mơ hình thặng d )
Mơ hình các khâu bậc hai (SOS – Second Order Sections)
1()
2()1(
)1()
2()1()()
()(
1
1
z X z m a z
a a
z n b z
b b z X z H z Y
Mơ hình độ lợi – cực – zero
Hàm truyền đ t c a hệ thống cĩ thể viết l i d ới d ng nhân tử:
))()) (
2())(
1((
))()) (
2())(
1(()(
)()(
m p z p
z p z
n q z q
z q z k z p
z q z H
MATLAb biểu diễn mơ hình bằng một vơ h ớng k chỉ độ lợi và hai vector z và p mà các phần
tử c a chúng lần l ợt là các zero (nghiệm c a q(z)) và các cực (các nghiệm c a p(z))
Cĩ thể dùng các hàm poly và roots để chuyển đổi qua l i giữa các vector cực và zero với các
vector hệ số c a bộ lọc Hàm poly tr về các hệ số c a đa th c nếu biết các nghiệm c a nĩ, cịn hàm roots tr về các nghiệm c a một đa th c chỉ cần cung cấp các hệ số c a đa th c Tuy nhiên, phần sau ta sẽ thấy rằng MATLAB cung cấp sẵn các hàm để chuyển trực tiếp từ mơ hình hàm truyền sang mơ hình cực – zero mà khơng cần ph i chuyển từng đa th c nh cách nêu trên
Trang 18Mô hình không gian tr ng thái
Bất kỳ một bộ lọc số nào cũng có thể đ ợc biểu diễn d ới d ng một hệ thống các ph ơng trình sai phân cấp một Cụ thể là một hệ thống tuyến tính r i r c có thể đ ợc mô t bằng hệ sau:
)()()(
)()()1(
n Dy n Cx n y
n Bu n Ax n
Mô hình khai tri ển các phân thức (mô hình thặng dư)
Bất kỳ hàm truyền đ t H(z) nào cũng có thể khai triển thành tổng c a các phân th c hữu tỷ theo d ng sau (còn gọi là d ng thặng d ):
) ( 1
1
)(1
)(
)1(1
)1()
n r z
p
r z
−
=
với điều kiện H(z) không có cực nào lặp l i Trong tr ng hợp H(z) có một cực r nào đó đ ợc
lặp l i s rlần (nghĩa là r là cực bội s rc a H(z)) thì ng với các cực p(j) = p(j+1) = = p(j+s r1) này, trong khai triển hữu tỷ c a H(z) sẽ có các số h ng sau:
-r r z j p
s j r z
j p
j r z
j p
j r
))(1(
)1(
))(1(
)1()
(1
)(
1 2
+
+
Mô hình này đ ợc biểu diễn bằng ba vector cột: vector p ch a các cực c a H(z), vector r
ch a các thặng d t ơng ng với các cực (t c các hệ số r(j) trong các biểu th c (9.15), (9.16))
và vector k ch a các hệ số k(i) Vậy length(r) = length(p) = length(a) – 1
Hàm residuez cho phép ta chuyển đổi từ mô hình hàm truyền sang mô hình thặng d và
Mô hình các khâu b ậc 2 (SOS – Second Order Sections)
Hàm truyền H(z) cũng có thẻ biểu diễn d ới d ng:
Trang 19= L
k k
k L
k k
z a z a a
z b z b b z
H
2 2 1 1 0 1
)( (9.17)
trong đó L là số khâu bậc hai trong hệ thống, mỗi hàm H k (z) biểu diễn một khâu bậc hai MATLAB biểu diễn mô hình SOS c a một hệ thống bằng một ma trận kích th ớc L x 6 với các phần tử đ ợc bố trí nh sau:
b
a a a b b b
a a a b b b sos
2 1 0 2 1 0
22 12 02 22 12 02
21 11 01 21 11 01
Hình 9.12 C ấu trúc lattice c a các bộ lọc FIR và IIR
Với các bộ lọc r i r c bậc n toàn điểm cực hoặc toàn zero, đ ợc biểu diễn b i đa th c với các
hệ số a(i), i = 1, 2, , n + 1, ta có thể tìm đ ợc n hệ số t ơng ng k(i), i = 1, 2, , n, các hệ số này là cơ s để xây dựng cấu trúc lattice cho bộ lọc Các hệ số k(i) này còn gọi là các hệ số
ph n x c a bộ lọc Hình 9.12 mô t cấu trúc lattice c a các bộ lọc FIR và IIR với các hệ số
Trang 20Hình 9.13 C ấu trúc lattice c a bộ lọc ARMA
Để tìm các hệ số c a cấu trúc lattice từ các hệ số a, b c a bộ lọc, ta dùng hàm tf2latc:
tr về cấu trúc lattice c a bộ lọc FIR hoặc bộ lọc FIR pha cực đ i hoặc cực tiểu
>> k = tf2latc(1,den) tr về cấu trúc lattice c a bộ lọc IIR toàn cực
>> [k,v] = tf2latc(num,den) tr về cấu trúc lattice c a bộ lọc IIR tổng quát
num, den là các vector hệ số c a bộ lọc còn k là vector các hệ số lattice, v là vector các hệ số
bậc thang
Ng ợc l i, từ cấu trúc lattice c a bộ lọc có thể suy ra hàm truyền đ t c a bộ lọc bằng cách
dùng hàm latc2tf
>> [num,den] = latc2tf(k,v)
>> [num,den] = latc2tf(k,'allpole') (K: cấu trúc lattice c a bộ lọc IIR toàn cực)
>> [num,den] = latc2tf(k,'allpass') (K: cấu trúc lattice c a bộ lọc IIR toàn thông)
>> num = latc2tf(k)
>> num = latc2tf(k,’max’) (K: cấu trúc lattice c a bộ lọc FIR pha cực đ i)
>> num = latc2tf(k,’min’) (K: cấu trúc lattice c a bộ lọc FIR pha cực tiểu)
Mô hình ma tr ận chập
Trong lý thuyết xử lý tín hiệu, phép lấy tích chập hai vector hay hai ma trận t ơng đ ơng với quá trình lọc một trong hai vector này bằng một bộ lọc có hệ số xác định b i vector còn l i Trên cơ s đó, ta có thể mô t một bộ lọc số bằng một ma trận chập
Với một vector cho tr ớc, hàm convmtx sẽ t o ra một ma trận chập sao cho tích c a ma trận
này với một vector x nào đó khác sẽ bằng với tích chập c a vector đã cho tr ớc với vector x,
với điều kiện vector x ph i có chiều dài thích hợp với kích th ớc c a ma trận chập để phép nhân ma trận có ý nghĩa
Trang 219.9.2 CÁC MÔ HÌNH HỆ THỐNG LIÊN TỤC THEO THỜI GIAN
Các mơ hình hệ thống liên tục theo th i gian dùng để mơ t các bộ lọc analog Đa số các mơ hình đã xây dựng cho các hệ thống r i r c đã đề cập trên cũng cĩ thể áp dụng cho các hệ
thống liên tục theo th i gian Cụ thể là các mơ hình sau:
Mơ hình khơng gian tr ng thái
Mơ hình khai triển phân th c hữu tỷ
Mơ hình hàm truyền đ t
Mơ hình độ lợi – cực – zero
Mơ hình khơng gian tr ng thái biểu diễn hệ thống bằng một hệ các ph ơng trình vi phân bậc
Bu Ax x
(9.19)
u là vector các ngõ vào (chiều dài nu), y là vector các ngõ ra (chiều dài ny), x là vector các
biến tr ng thái (chiều dài nx) A, B, C, D là các ma trận và MATLAB dùng các ma trận này
để biểu diễn mơ hình khơng gian tr ng thái c a hệ thống
Hệ thống liên tục cũng cĩ thể đ ợc mơ t bằng mơ hình hàm truyền đ t Laplace H(s):
2()
1(
)1()
2()
1()(
1
1
++++
++++
m a s
a s a
n b s
b s b s H
m m
n n
2())(
1((
))()) (
2())(
1(()(
)(
m p s p
s p s
n z s z
s z s k s p
s z
−
−
= (9.23) Đây chính là cơ s cho việc xây dựng một mơ hình khác cho hệ thống liên tục, đĩ là mơ hình
độ lợi – cực – zero T ơng tự nh với hệ thống r i r c, MATLAB biểu diễn mơ hình này bằng
một vơ h ớng k chỉ độ lợi và hai vector p và z ch a các cực và zero c a H(s)
9.9.3 CÁC PHÉP BIẾN ĐỔI HỆ THỐNG TUYẾN TÍNH
B ng 9.1 tĩm tắt các hàm MATLAB dùng để chuyển đổi giữa các mơ hình hệ thống tuyến tính Để chuyển từ một mơ hình (nguồn) sang một mơ hình khác (đích), ta xuất phát từ hàng
Trang 22cĩ ch a tên mơ hình nguồn, sau đĩ tìm ơ ng với cột mang tên mơ hình đích, nội dung trong ơ này chính là tên hàm để thực hiện chuyển đổi
B ng 9.1 Các hàm MATLAB th ực hiện các phép biến đổi hệ thống tuyến tính
Hàm truyền đ t Khơng gian tr ng thái
Độ lợi – cực - Phân thức hữu tỷ Bộ lọc lattice SOS
Ma trận chập Hàm truyền
9.10 BIẾN ĐỔI FOURIER RỜI RẠC
Biến đổi Fourier r i r c (DFT – Discrete Fourier Transform) là cơng cụ cơ b n nhất trong xử
lý số tín hiệu Trong Signal Processing Toolbox, hầu hết các hàm đều cĩ sử dụng gi i thuật FFT (một gi i thuật tính DFT nhằm gi m th i gian thực thi)
Trong MATLAB cĩ hai hàm fft và ifft dùng để tính tốn biến đổi DFT thuận và nghịch bằng
gi i thuật FFT Với một chuỗi tín hiệu vào x và biến đổi DFT c a nĩ là X, gi i thuật FFT
đ ợc thực hiện trên cơ s các biểu th c sau:
+
=+
0
1
0
)1(
1)1(
)1()
1(
N k
kn N
N n
kn N W k X N n
x
W n x k
X là biến đổi DFT c a tín hiệu vào, N là số điểm FFT
Ví dụ 9-7 Hãy xác định và vẽ biên độ và pha c a biến đổi DFT c a tín hiệu x(t) =
sin(30πt) + sin(80πt), t ần số lấy mẫu 100Hz.Dùng biến đổi DFT ngược để khơi phục lại tín
hi ệu ban đầu So sánh với tín hiệu gốc
Trang 23t = (0:1/100:10-1/100); % Vector th ời gian
Trang 240 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 -2
-1.5
-1 -0.5
0 0.5
1 1.5
x là tín hiệu vào còn indvec là vector chỉ số (mặc định là 1:N)
Đôi khi ta cần sắp xếp l i chuỗi vào sao cho các điểm zero trong chuỗi ngõ ra nằm kho ng giữa chuỗi Khi đó ta dùng hàm fftshift
Trang 25d 100x4(n)=10cos(0,0008πn2)+w(n), 0≤n≤ , với w(n) là chuỗi ngẫu nhiên phân bố đều trên đo n [-1,1]
(
x
)30()()[
1,0cos(
Sử dụng bộ sai phân này đối với các tín hiệu vào cho d ới đây (dùng hàm filter) Nhận xét
ph m vi sử dụng thích hợp c a bộ sai phân này
Một hệ thống tuyến tính bất biến theo th i gian đ ợc mô t b i ph ơng trình sai phân:
y(n) – 0,5y(n - 1) + 0,25y(n – 2) = x(n) + 2x(n – 1) + x(n – 3)
Trang 26i h(n)=0,9n
ii h(n) = sinc(0,2n)[u(n + 20) – u(n – 20)], h(0) = 1
iii.h(n) = sinc(0,2n)[u(n) – u(n – 40)], h(0) = 1
iv.h(n)=(0,5n +0,4n)u(n)
v h(n)=0,5n cos(0,1πn)
Lần l ợt kh o sát với các giá trị Eb/No bằng 0, 2, 4, 6, 8 dB và so sánh thông điệp nhận đ ợc
với thông điệp phát Vẽ đồ thị BER
# Bài t ập 9-7
Cho tín hiệu x(n) = 3cos(0,5πn + π/3) + 2sin(0,2πn) lần l ợt đi vào các hệ thống trong bài tập 9-6 Vẽ tín hiệu ra y(n) trong mỗi tr ng hợp
# Bài t ập 9-8
Một bộ lọc số đ ợc mô t b i ph ơng trình sai phân:
y(n) = x(n) + x(n – 1) + 0,9y(n – 1) – 0,81y(n – 2)
a Sử dụng hàm freqz, hãy vẽ đáp ng biên độ và đáp ng pha c a bộ lọc trên Xác định biên
(3
Hãy xác định: (i) hàm truyền đ t miền z, (ii) gi n đồ cực – zero, (iii) mô hình không gian
tr ng thái, (iv) mô hình SOS, (v) mô hình thặng d và (vi) mô hình lattice c a hệ thống
# Bài tập 9-10
Cho các hệ thống tuyến tính bất biến đ ợc định nghĩa thông qua các hàm truyền đ t sau đây:
a H(z) =
5,0
2 125,05,01
1)
−
−
−+
++
=
z z
z z z
Trang 27c
1 121
5,0125,0)
−+
−+
−
=
z
z z
z z
d
2 2
)3(
1)
Nếu các chuỗi x(n) và h(n) có chiều dài hữu h n lần l ợt là N và x N thì phép tích ch h ập y(n)
= x(n)*h(n) có thể thực hiện bằng phép nhân ma trận: gi sử x(n) và y(n) đ ợc sắp thành các vector cột x, y thì:
y = H.x Trong đó các hàng c a ma trận H là các vector h(n-k) với k = 0, 1, …, N -1 Ma tr h ận này gọi
function [y,H] = conv_tp(h,x)
Nhập vào x(n) và h(n), hàm tr về tích chập c a x(n) và h(n) cùng với ma trận Toeplitz H c a phép tích chập này
# Bài t ập 9-12
Một tín hiệu t ơng tự xa(n) = 2sin(4πt) + 5cos(8πt) đ ợc lấy mẫu các th i điểm t = 0,01n
với n = 0, 1, …, N – 1 để đ t đ ợc một chuỗi x(n) gồm N điểm Sử dụng biến đổi DFT N điểm để tìm đáp ng biên độ gần đúng c a xa(n)
Trong các giá trị N sau, hãy chọn giá trị thích hợp để có đáp ng biên độ chính xác nhất Vẽ
Trang 28Danh sách các hàm được giới thiệu trong chương 9
Các hàm t o tín hiệu
Các hàm vẽ tín hiệu
Các hàm làm việc với các file dữ liệu
Các hàm phân tích và thiết kế bộ lọc
Trang 29Các mô hình hệ thống tuyến tính
Các hàm biến đổi Fourier
kho ng giữa
Trang 30
Ch ương 10
Thiết kế bộ lọc là một quá trình xác định các hệ số c a bộ lọc sao cho tho mãn một số yêu
cầu thiết kế Thực hiện bộ lọc là quá trình lựa chọn và áp dụng một cấu trúc thích hợp cho bộ
lọc dựa trên các hệ số đã xác định trong quá trình thiết kế Đây là hai quá trình cơ b n cần
thực hiện tr ớc khi cĩ thể sử dụng bộ lọc để lọc một tín hiệu nào đĩ
10.1 CÁC CHỈ TIÊU THIẾT KẾ BỘ LỌC
Nĩi chung, một chỉ tiêu thiết kế chặt chẽ địi hỏi bộ lọc ph i tho mãn những yêu cầu về đáp
ng tần số bao gồm: d i thơng, d i chắn, độ gợn sĩng d i thơng, suy hao d i chắn, độ rộng vùng chuyển tiếp Những yêu cầu chi tiết hơn cĩ thể là: chọn bộ lọc cĩ bậc tối thiểu, chọn
d ng đáp ng biên độ hoặc yêu cầu sử dụng bộ lọc FIR
Trong miền tần số, bộ lọc đ ợc đặc tr ng b i đáp ng tần số Dựa vào đáp ng tần số c a bộ
lọc, tồn bộ d i tần số cĩ thể đ ợc chia thành ba vùng: d i thơng, d i chắn và d i chuyển tiếp Trong thực tế, đáp ng biên độ trong d i thơng khơng ph i là hằng số mà biến thiên trong kho ng (1±δ1)H0 với H0 là đáp ng biên độ trung bình δ1 đ ợc gọi là gợn sĩng d i thơng
T ơng tự, đáp ng biên độ trong d i chắn khơng ph i luơn bằng 0 mà biến thiên trong kho ng
từ 0 đến δ2H0 với δ2 là độ gợn sĩng d i chắn Bộ lọc cĩ chất l ợng tốt ph i cĩ d i chuyển tiếp
hẹp và các độ gợn sĩng nhỏ Hình 10.1 biểu diễn các thơng số nĩi trên c a đáp ng tần số:
Tất c các hàm thiết kế bộ lọc trong MATLAB đều sử dụng tần số chuẩn hố (theo tần số đơn
vị là tần số Nyquist, t c ½ tần số lấy mẫu), do đĩ khơng cần ph i cung cấp thêm thơng số tần
số lấy mẫu khi gọi các hàm này Muốn chuyển từ tần số chuẩn hố sang tần số gĩc, ta nhân
với π; muốn chuyển sang tần số Herzt, ta nhân với ½ tần số lấy mẫu
Các ph ơng pháp thiết kế bộ lọc số đ ợc phân thành hai nhĩm: thiết kế bộ lọc IIR và thiết kế
Trang 3110.2 THIẾT KẾ BỘ LỌC IIR
u điểm cơ b n c a các bộ lọc IIR so với các bộ lọc FIR là: bộ lọc IIR cĩ kh năng tho mãn các chỉ tiêu thiết kế với bậc c a bộ lọc thấp hơn so với bộ lọc FIR t ơng ng Nh ợc điểm
c a bộ lọc IIR là cĩ tính chất pha phi tuyến Tuy nhiên, do đặc điểm c a quá trình xử lý dữ
liệu trong MATLAB là mang tính chất “offline”, nghĩa là tồn bộ chuỗi dữ liệu vào đã đ ợc xác định tr ớc khi thực hiện lọc, do đĩ cĩ thể xây dựng bộ lọc khơng nhân qu , cĩ pha bằng 0
(thơng qua hàm filtfilt) để lo i bỏ méo pha phi tuyến
Các ph ơng pháp thiết kế bộ lọc IIR đ ợc sử dụng trong MATLAB gồm cĩ:
Ph ơng pháp thiết kế cổ diển dựa trên các nguyên mẫu analog, bao gồm các bộ lọc Butterworth, Chebychev lo i I, Chebychev lo i II, elliptic và Bessel
Ph ơng pháp thiết kế trực tiếp (Yulewalk) tìm một bộ lọc cĩ đáp ng biên độ xấp xỉ một hàm mà ng i thiết kế mong muốn Đây cũng là một ph ơng pháp để xây dựng một bộ lọc thơng d i nhiều băng
Ph ơng pháp mơ hình thơng số (parametric modelling)
Ph ơng pháp thiết kế Butterworth tổng quát hố
B ng 10.1 tĩm tắt các ph ơng pháp thiết kế bộ lọc IIR cùng với các hàm đ ợc MATLAB cung cấp để thực hiện các ph ơng pháp thiết kế này
B ng 10.1 Tĩm t ắt các ph ơng pháp thiết kế bộ lọc IIR và các hàm MATLAB t ơng ng
bilinear, impinvar
Thiết kế trực tiếp
Thi ết kế bộ lọc số trực tiếp trong miền th i gian
r i r c bằng ph ơng pháp tiệm cận biên độ
tr ớc
Các hàm t o mơ hình trong miền th i gian:
lpc, prony, stmcb Các hàm t o mơ hình trong miền tần số:
invfreqs, invfreqz
Trang 3210.2.1.THIẾT KẾ CÁC BỘ LỌC IIR CỔ ĐIỂN DỰA TRÊN CÁC NGUYÊN MẪU ANALOG
Nguyên tắc thiết kế bộ lọc IIR cổ điển là dựa trên sự chuyển đổi từ các bộ lọc thơng thấp analog thành các bộ lọc số t ơng đ ơng Quá trình thiết kế bộ lọc IIR cổ điển bao gồm các
b ớc sau:
o Tìm một bộ lọc thơng thấp t ơng tự với tần số cắt bằng 1 và dùng các phép biến đổi tần số
để chuyển bộ lọc nguyên mẫu này thành bộ lọc với cấu hình các d i thơng và d i chắn nh ta mong muốn
o Chuyển bộ lọc nĩi trên sang miền số
o R i r c hố bộ lọc
Chúng ta lần l ợt kh o sát chi tiết các b ớc c a quá trình thiết kế nĩi trên, đồng th i tìm hiểu các đặc tính nổi bật c a mỗi lo i bộ lọc IIR cổ điển
Thi ết kế các bộ lọc nguyên mẫu analog
MATLAB cung cấp các hàm để kh i t o các bộ lọc thơng thấp t ơng tự cĩ tần số cắt bằng 1, đây là b ớc đầu tiên trong quy trình thiết kế bộ lọc IIR cổ điển Cĩ 5 kiểu bộ lọc thơng thấp analog: bộ lọc Butterworth, bộ lọc Chebychev lo i I, bộ lọc Chebychev lo i II, bộ lọc elliptic
và bộ lọc Bessel Tất c đ ợc tĩm tắt trong b ng sau:
B ng 16.2 Tĩm t ắt các hàm kh i t o các bộ lọc thơng thấp nguyên mẫu
2 2
1
1)
(
Ω+
=
Ω (10.1) trong đĩ: N là bậc c a bộ lọc
Đáp ng tần số c a bộ lọc Butterworth bằng phẳng trong các d i thơng và d i chắn, là hàm đơn điệu gi m trên [0, +∞)
B ộ lọc Chebychev loại I:
Bộ lọc Chebychev lo i I tối thiểu hố trị tuyệt đối c a sai số giữa đáp ng tần số thực tế và lý
t ng trên tồn bộ d i thơng bằng cách đ a vào một l ợng gợn sĩng cân bằng trong tồn d i thơng Rp (tính bằng dB) Đây là bộ lọc tồn điểm cực, cĩ đáp ng gợn sĩng cân bằng trong
d i thơng và đáp ng bằng phẳng trong d i chắn Th i gian chuyển tiếp từ d i thơng sang d i
chắn nhanh hơn bộ lọc Butterworth |H(jΩ)| = 10−Rp/ 20t i Ω = 1 với Rp là độ gợn sĩng d i thơng
Đáp ng biên độ:
Trang 33
)(1
1)
Ω+
=
Ω
N T
H
ε (10.2) trong đĩ: ε là một hệ số phụ thuộc vào độ gợn sĩng d i thơng / 20
1 =10−Rpδ
1)1(
1
2 1
1 1
1 0
N x
T x xT x
T
x x T x
T
N N
N với (10.4)
B ộ lọc Chebychev loại II:
Bộ lọc Chebychev lo i I tối thiểu hố trị tuyệt đối c a sai số giữa đáp ng tần số thực tế và lý
t ng trên tồn bộ d i chắn bằng cách đ a vào một l ợng gợn sĩng cân bằng trong tồn d i
chắn Rs (tính bằng dB) Là bộ lọc cĩ c cực và zero, đáp ng bằng phẳng trong d i thơng và
gợn sĩng trong d i chắn D i chắn tiến về 0 chậm hơn so với bộ lọc Chebychev lo i I, thậm chí khơng hội tụ về 0 nếu N chẵn Tuy nhiên, u điểm c a nĩ là d i thơng bằng phẳng |H(jΩ)|
1
+ε U N (10.6)
trong đĩ: UN(x) là hàm elliptic Jacobian bậc N
ε là một hệ số phụ thuộc vào độ gợn sĩng d i thơng: Rp = 10log10(1+ε2
) (10.7)
Do sai số đ ợc tr i đều trên các d i thơng và d i chắn nên bộ lọc Elliptic là bộ lọc hiệu qu
nhất trên ph ơng diện tối thiểu hĩa số bậc c a bộ lọc Nếu cùng thơng số bậc và các yêu cầu khác thì bộ lọc Elliptic sẽ cĩ d i chuyển tiếp nhỏ nhất |H(jΩ)| = δ =1 / 20
Trang 34(,1)(
2
2 1
1 0
s B s s B N s
B
s s B s
B
N N
N
(10.9)
Bộ lọc Bessel có độ trễ nhóm phẳng tối đa t i tần số bằng 0 và gần nh bằng phẳng trong toàn
bộ d i thông Do đó, bộ lọc Bessel có đáp ng pha tuyến tính trên toàn d i thông Đặc tính này cho phép tín hiệu sau khi lọc giữ nguyên d ng sóng trong ph m vi tần số c a d i thông Tuy nhiên đặc tính này bị mất đi khi ta chuyển sang miền số Vì vậy MATLAB chỉ hỗ trợ cho thiết kế bộ lọc Bessel analog
Để tho mãn điều kiện suy hao d i chắn, bộ lọc Bessel cần có bậc cao hơn so với các lo i bộ
lọc khác Khi Ω = 1 thì |H(jΩ)| <
2
1
và gi m dần khi bậc c a bộ lọc tăng lên
Ví dụ 10-1 Khởi tạo một bộ lọc elliptic tương tự có bậc n = 5, gợn sóng dải thông Rp =
với các cú pháp t ơng ng c a chúng
B ng 10.3 Các hàm th ực hiện các phép biến đổi tần số
Thông thấp sang thông
/
1/
s [numt,dent] = lp2bs(num,den,Wo,Bw) [At,Bt,Ct,Dt] = lp2bs(A,B,C,D,Wo,Bw)
Từ b ng trên ta thấy rằng các phép biến đổi tần số có thể thực hiện đối với hai d ng mô hình
hệ thống tuyến tính: mô hình hàm truyền đ t và mô hình không gian tr ng thái Mô hình hàm truyền đ t đ ợc biểu diễn b i hai vector (num, den) (hoặc (numt, dent) sau khi biến đổi); còn mô hình không gian tr ng thái biểu diễn bằng 4 ma trận (A, B, C, D) (hoặc (At, Bt, Ct, Dt) sau khi biến đổi)
Trang 35Đối với các bộ lọc thông thấp và thông cao, ω0 chính là tần số cắt Với các bộ lọc thông d i
ω = (10.11) trong đó ω và 1 ω là các tần số cắt c a bộ lọc 2
Trong tr ng hợp thông d i và chắn d i, do sử dụng phép đổi biến bậc hai nên bậc c a bộ lọc
mới sẽ gấp đôi bậc c a bộ lọc cũ
Ví dụ 10-2 Thiết kế một bộ lọc thông dải tương tự thuộc dạng Chebychev loại I có bậc n
= 10, g ợn sóng dải thông Rp = 3dB, gợn sóng dải chắn Rs = 20 Các tần số cắt là Ω1 =π /5
và Ω2 =π V ẽ đáp ng biên độ c a bộ lọc
Trang 36R ời r c hoá bộ lọc
B ớc cuối cùng trong khâu thiết kế bộ lọc IIR là chuyển bộ lọc từ miền t ơng tự sang miền
số Có hai ph ơng pháp để thực hiện việc này: ph ơng pháp bất biến xung và ph ơng pháp
biến đổi song tuyến tính Các hàm MATLAB t ơng ng với hai ph ơng pháp này là
impinvar và bilinear (xem b ng 10.4)
B ng 10.4 Các hàm th ực hiện r i r c hoá bộ lọc t ơng tự
Biến đổi tương tự - số Hàm thực hiện biến đổi
Bất biến xung [numd,dend] = impinvar(num,den,fs) [numd,dend] = impinvar(num,den,fs,tol)
Biến đổi song tuyến tính [zd,pd,kd] = bilinear(z,p,k,fs,Fp) [numd,dend] = bilinear(num,den,fs,Fp)
[Ad,Bd,Cd,Dd] = bilinear(At,Bt,Ct,Dt,fs,Fp)
Ph ương pháp bất biến xung
Nội dung c a ph ơng pháp bất biến xung là: xây dựng một bộ lọc số mà đáp ng xung c a nó
là các mẫu r i r c c a đáp ng xung c a bộ lọc t ơng tự ban đầu Trong MATLAB, ph ơng pháp này đ ợc thực hiện b i hàm impinvar Hàm này chỉ chấp nhận mô hình hàm truyền đ t
c a bộ lọc
Để đ t kết qu tốt nhất, bộ lọc t ơng tự ph i không có thành phần tần số nào lớn hơn ½ tần số
lấy mẫu, vì các thành phần tần số này sẽ chồng lấn vào d i thông thấp trong quá trình lấy mẫu (tiêu chuẩn Nyquist) Ph ơng pháp bất biến xung có thể có tác dụng đối với một số bộ lọc thông thấp và thông d i nh ng không thích hợp đối với các bộ lọc thông cao và chắn d i
Ph ương pháp biến đổi song tuyến tính:
Phép biến đổi song tuyến tính là một ánh x từ miền liên tục (miền s) sang miền số (miền z) Phép biến đổi này biến hàm truyền Laplace H(s) trong miền s thành hàm truyền đ t H(z) trong
miền z theo quy tắc sau:
1 1
|)()(
H (10.12)
Phép biến đổi song tuyến tính biến trục o jΩ trong mặt phẳng s thành vòng tròn đơn vị trong
mặt phẳng z Một điểm trên trục o có tung độ Ω sẽ tr thành điểm trên vòng tròn đơn vị có:
ω (10.13)
Phép biến đổi song tuyến tính đ ợc thực hiện bằng hàm bilinear Giá trị mặc định c a hệ số k
là (2*Fs) (Fs là tần số lấy mẫu) Nếu cung cấp thêm thông số Fp (gọi là tần số phối hợp) thì:
k =
p f f
f
/tan
π
ω= 2 (10.15)
Hàm bilinear có thể thực hiện phép biến đổi tuyến tính trên ba d ng mô hình hệ thống tuyến tính: mô hình độ lợi – cực – zero, mô hình hàm truyền đ t và mô hình không gian tr ng thái
Trang 37Trong ví dụ 10.2, ta có thể r i r c hoá bộ lọc t o đ ợc bằng cách dùng hàm bilinear với tần
Normalized Frequency ( ×π rad/sample)
Ta thấy rằng tần số c nh trên c a d i thông nhỏ hơn 0,5Hz mặc dù, đối với bộ lọc t ơng tự giá
trị này đúng bằng 0,5Hz Nguyên nhân là do tính phi tuyến c a b n thân phép biến đổi song tuyến tính Để khắc phục hiện t ợng này, khi xây dựng bộ lọc t ơng tự, ta ph i tính l i các tần
số ng ỡng c a d i thông sao cho qua phép biến đổi song tuyến tính, nó chuyển một cách chính xác thành các tần số mong muốn nh trong ví dụ sau:
Ví dụ 10-3 Hiệu chỉnh lại ví dụ 10-2 đồng thời áp dụng phép biến đổi song tuyến tính để
thi ết kế bộ lọc số Chebychev loại I, bậc 10, dải thông 0,1 – 0,5Hz, tần số lấy mẫu 2Hz
Trang 38Hình 10.5
Các hàm thi ết kế bộ lọc IIR hoàn chỉnh
Để thuận tiện cho ng i sử dụng khi thực hiện quá trình thiết kế các nộ lọc IIR cổ điển, MATLAB cũng cung cấp các hàm thiết kế hoàn chỉnh các bộ lọc IIR thay vì ph i thực hiện
từng b ớc quy trình thiết kế nh phần trên Các hàm này tích hợp các quy trình đã đề cập trên đây l i, trong đó b ớc th ba c a quá trình, t c là b ớc r i r c hoá các bộ lọc t ơng tự, các hàm này đều sử dụng ph ơng pháp biến đổi song tuyến tính
Wn là vector gồm 2 phần tử xác định các tần số cắt (với các bộ lọc thông thấp, thông cao, Wn
tr thành một vô h ớng) Wn đ ợc chuẩn hoá theo ½ tần số lấy mẫu
form là một chuỗi xác định d ng bộ lọc: ‘low’ (bộ lọc thông thấp), ‘high’ (thông cao),
‘stop’ (chắn d i) Nếu Wn có hai phần tử và không có thông số form, hàm sẽ t o ra bộ lọc thông d i
Để t o các bộ lọc t ơng tự, ta thêm vào chuỗi ‘s’ vào danh sách các thông số
MATLAB cũng cung cấp hàm buttord để ớc l ợng bậc bộ lọc tối thiểu tho mãn các yêu
cầu thiết kế
>> [N, Wn] = buttord(Wp, Ws, Rp, Rs)
Trang 39Các thơng số nhập c a nĩ bao gồm các tần số ng ỡng c a d i thơng và d i chắn Wp và Ws, các giá trị mong muốn c a gợn sĩng d i thơng tối đa và suy hao tối thiểu c a d i chắn (Rp, Rs) Hàm tr về bậc tối thiểu c a bộ lọc cùng với vector Wn để cung cấp cho hàm butter
Bộ lọc Chebychev loại I: dùng hàm cheby1:
Ví dụ 10-4 Thiết kế một bộ lọc thơng dải cĩ băng thơng từ 1000Hz – 2000Hz, dải chắn bắt
đầu cách các tần số trên 500Hz, gợn sĩng dải thơng tối đa là 1dB, suy hao dải chắn tối thiểu
là 60dB T ần số lấy mẫu là 10kHz.Sử dụng bộ lọc Butterworth
10.2.2.THIẾT KẾ TRỰC TIẾP CÁC BỘ LỌC IIR TRONG MIỀN SỐ
Đây là ph ơng pháp thiết kế trực tiếp trong miền r i r c dựa vào một đáp ng tần số mong
muốn mà khơng dựa vào các bộ lọc analog Ph ơng pháp thiết kế này khơng bị bĩ buộc trong
Trang 40các d ng cấu hình thơng thấp, thơng cao, thơng d i hay chắn d i mà ta cĩ thể thiết kế một bộ
lọc số với đáp ng tần số bất kỳ, cĩ thể là gồm nhiều d i tần số
Ph ơng pháp này đ ợc thực hiện với hàm yulewalk Gi i thuật mà hàm này sử dụng là: tìm
biến đổi ng ợc FFT c a phổ cơng suất lý t ng mong muốn và gi i hệ ph ơng trình Walker sử dụng các mẫu dữ liệu c a hàm tự t ơng quan tìm đ ợc Bộ lọc IIR đ ợc thiết kế theo ph ơng pháp này là bộ lọc IIR đệ quy với ph ơng pháp bình ph ơng cực tiểu
Yule-Cú pháp:
>> [b,a] = yulewalk(n,f,m)
trong đĩ n là bậc bộ lọc, F là vector tần số và M là vector đáp ng biên độ t ơng ng với F
Ph ơng pháp này khơng quan tâm đến đáp ng pha (b,a) là các vector hệ số c a bộ lọc đ ợc thiết kế
Ví dụ 10-5 Dùng hàm yulewalk thiết kế một bộ lọc cĩ hai băng, vẽ đáp ng tần số thực tế
0.2 0.4 0.6 0.8 1 1.2
1.4
Dap ung thuc Dap ung ly tuong
Hình 10.6
10.2.3.THIẾT KẾ BỘ LỌC BUTTERWORTH TỔNG QUÁT
Hàm maxflat cho phép ta thiết kế các bộ lọc Butterworth, t c là bộ lọc Butterworth với số
cực và số zero khác nhau Điều này cĩ lợi trong một số tr ng hợp khi mà việc tính tốn các
cực ph c t p hơn so với các zero Cú pháp hàm maxflat t ơng tự nh hàm butter, nh ng
khác chỗ ta cĩ thể cung cấp hai thơng số bậc c a bộ lọc, một cho đa th c tử số và một cho
đa th c mẫu số