PHẦN II
ỨNG DỤNG MATLAB
TRONG XỬ LÝ TÍN
Trang 4Mơ 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:
>> y = [x’ 2*x’ x’/pi] y = 1.0000 2.0000 0.3183 1.2000 2.4000 0.3820 1.5000 3.0000 0.4775 1.2000 2.4000 0.3820 1.0000 2.0000 0.3183 0.8000 1.6000 0.2546 0.5000 1.0000 0.1592 0.8000 1.6000 0.2546
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:
Trang 500.010.020.030.040.050.060.070.080.090.1-3-2-101Hì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 >> y = [1; zeros(99,1)]; % hàm xung đơn vị y = ones(100,1); % hàm nấc đơn vị
y = t; % hàm dốc
Các tín hiệu tuần hồn:
>> fs = 10000; % tần số lấy mẫu
>> t = 0:1/fs:1.5; % vector thời gian
>> x = sin(2*pi*50*t); % Tín hiệu l ợng giác (sine) >> y = square(2*pi*50*t); % Tín hiệu sĩng vuơng >> x = sawtooth(2*pi*50*t); % Tín hiệu sĩng răng c a
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ỳ Các tín hiệu aperiodic:
Hàm gauspuls(t,fc,bw) t o một xung Gaussian tần số RF cĩ biên độ bằng 1, tần số trung
tâm fc và băng thơng bw
Hàm chirp t o tín hiệu tần số quét, cĩ nhiều ph ơng pháp quét khác nhau: tuyến tính, bậc hai
hay logarithm
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
Trang 6D = [0:1/1E3:10E-3;0.8.^(0:10)]'; % cột 1 c a D xác định các thời điểm lặp % cột 2 c a D xác định biên độ t ơng ng c a xung Gauss (bị suy hao)
Y = pulstran(T,D,'gauspuls',10E3,0.5); % gọi hàm pulstran, hai thơng số
cuối
% là tần số trung tâm và tỷ lệ băng thơng c a xung Gauss plot(T,Y) % vẽ tín hiệu Kết qu nh sau: 00.0010.0020.0030.0040.0050.0060.0070.0080.0090.01-0.8-0.6-0.4-0.200.20.40.60.81Hình 9.2
Hàm sinc(x): là biến đổi Fourier ng ợc c a xung chữ nhật cĩ chiều rộng băng 2π và
chiều cao bằng 1: xxxcππ)sin()(sin = (9.1) x cĩ thể là một vector hay một ma trận
Hàm Dirichlet: cịn gọi là hàm sinc tuần hồn hay hàm sinc chồng lấn (aliased sinc), đ ợc định nghĩa nh sau: )(xDn = ⎪⎩⎪⎨⎧ − − = ∈otherwisexnnxZkkxnk)2/sin()2/sin(,2)1( ( 1) π (9.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 chập c a x(k) và h(k): ∑=+∞−∞ −==llxlkhkxkhky( ) ( )* ( ) ( ) () (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
Trang 8Ví dụ:
>> x = rand(5,1) % tín hiệu ngẫu nhiên chiều dài 5 >> h = [1 1 1 1]/4 % bộ lọc trung bình chiều dài bằng 4 >> y = conv(h,x) y = 0.2375 0.2953 0.4470 0.5685 0.5538 0.4960 0.3443 0.2228
Hàm truyền đ t c a bộ lọc: nếu X(z) là biến đổi – z c a tín hiệu vào x(k), Y(z) là biến đổi – z c a tín hiệu ra y(k) và H(z) là biến đổi – z c a h(k) thì:
)()1()2()1()1()2()1()().()( 11zXzmazaaznbzbbzXzHzYmn−−−−+++++ + + +==…… (9.4) H(z) đ ợc gọi là hàm truyền đ t c a bộ lọc Các hằng số a(i), b(i) là các hệ số c a bộ lọc và bậc c a bộ lọc bằng max{m,n}
Để 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 tồ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 tồ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:
Trang 9y(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 tố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()()2()( 21 mbxmzmaymz = + − − (9.7) )()1()1()()1()( 12 mbnxmzmanymzn− = − + n− − − −)()()()()(1 mbnxmanymzn− = −D ng cú pháp cơ b n c a hàm filter: >> [y,zf] = filter(b,a,x,zi)
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) = 1 2 332106,042,058,011,03,03,01,0−−−−−−−+− + z + z + zzzz
đượ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 10title('Tin hieu vao'); subplot(2,1,2);
plot(y);grid % Vẽ tín hiệu ra title('Tin hieu ra');
Kết qu thực thi ch ơng trình: 020406080100120-1.5-1-0.500.511.5
Tin hieu vao
020406080100120-1-0.500.511.5Tin hieu raHì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
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à jωez= , tín hiệu ngõ ra tr thành 2)()( jω jωeHe
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')
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
Trang 13⎩⎨⎧≠==0001)(nnnx (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ị
mjjnjjjemaeaaenbebbeH ω ωωωω−−−−+++++ + + +=)1()2()1()1()2()1()(…… (9.9)
Ngồi ra, cịn cĩ thể cung cấp cho hàm freqz các thơng số khác Sau đây là các cú pháp khác
c a hàm:
>> [h,w] = freqz(b,a,n,'whole') tính đáp ng tần số t i n điểm phân bố đều trên tồn bộ vịng trịn đơn vị.
>> h = freqz(b,a,w) tính đáp ng tần số t i các điểm xác định b i vector w
>> [h,f] = freqz(b,a,n,fs) hoặc [h,f] = freqz(b,a,n,'whole',fs) tính đáp ng tần số n điểm c a bộ lọc với tần số lấy mẫu là fs n điểm tần số phân bố đều trên kho ng [0, fs/2] (hoặc [0,fs] nếu dùng ‘whole’)
>> h = freqz(b,a,f,fs) tính đáp ng tần số t i các điểm xác định b i vector f, trong đĩ fs là tần số lấy mẫu
Nếu gọi hàm freqz mà khơng yêu cầu tr về các thơng số ra, hàm freqz sẽ vẽ đáp ng biên độ
và đáp ng pha c a bộ lọc
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 140100200300400500600700800900-800-600-400-2000Frequency (Hz)Phase (degrees)0100200300400500600700800900-400-300-200-1000Frequency (Hz)Magnitude (dB)Hình 9.9
9.7.2 TRONG MIỀ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
analog
>> [h,w] = freqs(b,a) >> h = freqs(b,a,w)
9.7.3 ĐÁP ỨNG BIÊN ĐỘ VÀ ĐÁP ỨNG PHA
Muốn cĩ đáp ng biên độ và đáp ng pha c a một bộ lọc, ta chỉ cần xác định đáp ng tần số 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
Ngồ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 hồn tồn tơng tự nh hàm freqz, chỉ khác là kết qu tr về là đáp ng pha
thay vì đáp ng tần số
Ví dụ 9-5 Xác định và vẽ đáp ng biên độ và đáp ng pha c a.bộ lọc FIR bậc 25
h = fir1(25,0.4);
[H,f] = freqz(h,1,512,2); subplot(3,1,1);
Trang 15title('Dap ung pha (gian doan tai 360 do)'); subplot(3,1,3);
plot(f,unwrap(angle(H))*180/pi); title('Dap ung pha (lien tuc)');
00.10.20.30.40.50.60.70.80.91
00.51
Dap ung bien do
00.10.20.30.40.50.60.70.80.91-200-1000100200
Dap ung pha (gian doan tai 360 do)
00.10.20.30.40.50.60.70.80.91
-1500-1000-5000
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: ωωθωτddg)()( =− (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)
Trang 16phasedelay (với cú pháp hồn tồn t ơng tự freqz)
Ví dụ 9-6 Xác định và vẽ độ trễ nhĩm và độ trễ pha c a bộ lọc Butterworth bậc 10, tần số
cắt 200Hz, với tần số lấy mẫu là 2000Hz
fs = 2000; n = 128;
[b,a] = butter(10,200/1000); [gd,f] = grpdelay(b,a,n,fs); [pd,f] = phasedelay(b,a,n,fs);
plot(f,gd,'b-',f,pd,'r '); grid; hold on; legend('Do tre nhom','Do tre pha');
010020030040050060070080090010000510152025Do tre nhomDo tre phaHì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
Trang 17>> [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) Mơ hình lattice
Mơ hình ma trận chập
Mơ hình hàm truyền đ t
Hệ thống đ ợc mơ t thơng qua hàm truyền đ t H(z) trong miền z c a nĩ: )()1()2()1()1()2()1()().()( 11zXzmazaaznbzbbzXzHzYmn−−−−+++++ + + +==……
Các hệ số b(i) và a(i) là các hệ số c a bộ lọc, bậc c a bộ lọc là max(m,n) Trong MATLAB, hàm truyền đ t đ ợc biểu diễn bằng hai vector a và b l u các hệ số c a bộ lọc
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(()()()(mpzpzpznqzqzqzkzpzqzH−−−− − −== (9.12)
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))
Trang 18sau: ⎩⎨⎧+=+=+)()()()()()1(nDynCxnynBunAxnx (9.13) trong đĩ:
u là tín hiệu vào, x là vector tr ng thái, y là tín hiệu ngõ ra
A là một ma trận kích th ớc m x m với m là bậc c a bộ lọc, B và C là các vector cột và D là một vơ h ớng
Trong tr ng hợp hệ thống đa kênh thì ngõ vào u, ngõ ra y tr thành các vector, cịn B, C và D tr thành các ma trận
Xuất phát từ biểu th c Y(z) =H(z)U(z), ta suy ra quan hệ giữa hàm truyền đ t H(z) c a bộ lọc với các ma trận B, C và D:
H(z) = C(zI – A)−1B + D (9.14)
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 ):
)(111 (1) (2) ( 1))(1)( )1(1)1()()()( kkzkmnzmnznpnrzprzazbzH − − + + − + + − + − −−++−== (9.15)
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 srlần (nghĩa là r là cực bội src a H(z)) thì ng với các cực p(j) = p(j+1) = = p(j+sr-1) này, trong khai triển hữu tỷ c a H(z) sẽ cĩ các số h ng sau:
rsrzjpsjrzjpjrzjpjr))(1()1( ))(1()1()(1)(1211−−− −−+++− ++− (9.16)
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à ng ợc l i
>> [r,p,k] = residuez(b,a) >> [b,a] = residuez(r,p,k)
b, a là các vector hệ số c a bộ lọc cịn (r, p, k) biểu diễn mơ hình thặng d c a bộ lọc Khi xác định mơ hình thặng d từ các vector a và b, MATLAB sẽ xem nh hai cực c a H(z) là trùng nhau nếu chúng sai khác nhau khơng quá 0,1% biên độ c a c hai, và khi đĩ MATLAB sẽ sử dụng (9.16) để xác định các giá trị thặng d
Mơ hình các khâu bậc 2 (SOS – Second Order Sections)
Trang 19MATLAB 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: ⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡=LLLLLLbbaaabaaabbbaaabbbsos210210221202221202211101211101 (9.18)
Với một hàm truyền H(z) cho tr ớc, cĩ nhiều cách để triển khai thành mơ hình SOS Thơng qua việc chọn lựa các cặp cực để ghép với nhau, sắp th thự các khâu bậc hai và thay đổi các hệ số nhân, ta cĩ thể gi m hệ số khuếch đ i nhiễu l ợng tử và tránh hiện t ợng tràn số khi thực hiện các bộ lọc fixed-point
Mơ hình lattice
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 tồn điểm cực hoặc tồ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ố
ph n x k(i) cho tr ớc
Với bộ lọc IIR tổng quát (cĩ c cực lẫn zero) cĩ các hệ số bộ lọc ch a trong các vector a và b, ngồi các hệ số k(i) ng với vector a cịn cĩ các hệ số v(i), i = 1, 2, , N + 1, gọi là các hệ số bậc thang Cấu trúc lattice c a bộ lọc xây dựng dựa trên các hệ số k(i) và v(i) đ ợc mơ t
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:
>> k = tf2latc(num) hoặc k = tf2latc(num,’max’) hoặc k = tf2latc(num,’min’)
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 tồ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 tồn cực)
>> [num,den] = latc2tf(k,'allpass') (K: cấu trúc lattice c a bộ lọc IIR tồ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
Trang 21>> y1 = C*x;
>> y2 = conv(b,x);
9.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 nhất: ⎩⎨⎧+=+=DuCxyBuAxx (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):
Y(s) = H(s).U(s) (9.20) Giữa hàm truyền đ t H(s) với các ma trận A, B, C, D cĩ mối liên hệ:
H(s) = C(sI-A)−1 B + D (9.21) Với hệ thống một ngõ vào, một ngõ ra, hàm H(s) cĩ d ng:
)1()2()1()1()2()1()( 11++++++++= −−masasanbsbsbsHmmnn…… (9.22)
MATLAB biểu diễn mơ hình hàm truyền đ t Laplace bằng hai vector a và b l u các hệ số a(i) và b(i)
Hàm truyền đ t Laplace cũng cĩ thể đ ợc biểu diễn d ới d ng nhân tử: H(s) = ))()) (2())(1(())()) (2())(1(()()(mpspspsnzszszskspsz−−−− − −= (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
Trang 22Hàm
truyền đ t Khơng gian tr ng thái
Độ lợi –
cực - Phân thhữu tỷ ức Blattice ộ lọc SOS
Ma trận chập Hàm truyền
đ t tf2ss tf2zp roots residuez tf2latc khơng cĩ convmtx
Khơng gian
tr ng thái ss2tf ss2zp khơng cĩ khơng cĩ ss2sos khơng cĩ
Độ lợi – cực - zero
zp2tf
poly zp2ss khơng cĩ khơng cĩ zp2sos khơng cĩ
Phân thức
hữu tỷ residuez khơng cĩ khơng cĩ khơng cĩ khơng cĩ khơng cĩ Bộ lọc lattice latc2tf khơng cĩ khơng cĩ khơng cĩ khơng cĩ khơng cĩ
SOS sos2tf sos2ss sos2zp khơng cĩ khơng cĩ khơng cĩ
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:
⎪⎪⎩⎪⎪⎨⎧+=++=+∑∑−=−−=1010)1(1)1()1()1(NkknNNnknNWkXNnxWnxkX (9.24) trong đĩ j(2/N)NeW = − π Cú pháp c a các hàm fft và ifft nh sau: >> fft(x) >> fft(x,N)
x là chuỗi tín hiệu vào cịn N là số điểm FFT Nếu x cĩ ít hơn N điểm, hàm fft sẽ tự động chèn thêm zero vào, nếu x cĩ nhiều hơn N điểm, hàm sẽ tự động cắt bỏ các điểm thừa
>> ifft(X) >> ifft(X,N)
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) =
Trang 23m = abs(y); p = unwrap(angle(y)); % Biên độ và pha f = (0:length(y)-1)*99/length(y); % Vector tần số subplot(1,2,1);
plot(f,m); title('Bien do'); set(gca,'XTick',[15 40 60 85]);
subplot(1,2,2); plot(f,p*180/pi); title('Pha'); set(gca,'XTick',[15 40 60 85]);
xr = real(ifft(y)); % Biến đổi FFT ng ợc figure;
plot(t,x,'b-',t,xr,'r ');
legend('Tin hieu goc','Tin hieu khoi phuc');
Kết qu nh sau:
Trang 2400.10.20.30.40.50.60.70.80.91-2-1.5-1-0.500.51Hình 9.15 Biến đổi DFT ng ợc
Ngồi hai hàm cơ b n nêu trên, trong Signal Processing Toolbox cịn cĩ một số hàm khác để tính DFT và IDFT:
Hàm fft2 và ifft2 tính biến đổi DFT và IDFT 2 chiều c a ma trận x
>> fft2(x)
>> fft2(x,M,N); M,N: số hàng và cột c a DFT >> ifft2(X)
>> ifft2(X,M,N)
Hàm goertzel tính biến đổi DFT theo gi i thuật Goertzel
>> X = goertzel(x,indvec)
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
>> X = fftshift(x)
# Bài tập 9-1
T o và vẽ các tín hiệu sau trong MATLAB:
Trang 25# Bài tập 9-2
Phép lấy tích chập cĩ một số tính chất cơ b n nh sau: a Tính giao hốn: x1(n)∗x2(n)=x2(n)∗x1(n)
b Tính kết hợp: )][x1(n)∗x2(n)]∗x3(n)=x1(n)∗[x2(n)∗x3(n
c Tính phân phối: )][x1(n)∗[x2(n)+ x3(n)]=x1(n)∗x2(n)+x1(n)∗x3(n
d Phần tử đơn vị: )x(n)∗δ(n−n0)=x(n−n0
Sử dụng hàm conv c a MATLAB với các chuỗi )x1(n),x2(n),x3(n cho d ới đây để kiểm ch ng l i các tính chất trên: )]20()10([)(1 n =nun+ −un−x)30()()[1,0cos()(2 n = nun −un−x π)]10()5([2,1)(3 n = un+ −un−xn# Bài tập 9-3
Một bộ sai phân số đơn gi n đ ợc định nghĩa b i ph ơng trình: y(n) = x(n) – x(n – 1)
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 a )]x(n)=5[u(n)−u(n−20 : xung chữ nhật
b x(n) = n[u(n) – u(n – 10)] + (20 – n)[u(n – 10) – u(n – 20)]: xung tam giác c x(n) = [ ( ) ( 100)]25sin ⎟ − −⎠⎞⎜⎝⎛πnunun : xung sine # Bài tập 9-4 Làm l i bài tập 9-3 nh ng dùng hàm filtfilt # Bài tập 9-5
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)
a Xét tính ổn định c a hệ thống
b Xác định và vẽ đáp ng xung c a hệ thống trong kho ng 0 ≤ n ≤ 100 Xét tính ổn định dựa vào đáp ng xung này
# Bài tập 9-6
Với mỗi hệ thống tuyến tính bất biến đ ợc định nghĩa b i các đáp ng xung d ới đây, hãy xác định đáp ng tần số H( jω
e ), đáp ng biên độ | H( jω
Trang 26iii.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
độ và pha t i các tần số ω = π/3 và ω = π
b Tính độ trễ nhĩm và độ trễ pha c a bộ lọc theo tần số Vẽ đồ thị
c Kh i t o 200 mẫu tín hiệu x(n) = sin(πn/3) + 5cos(πn) So sánh phần xác lập c a ngõ ra với ngõ vào x(n) Bộ lọc cĩ nh h ng gì đến biên độ và pha c a tín hiệu vào?
# Bài tập 9-9
Cho các hệ thống tuyến tính bất biến đ ợc định nghĩa thơng qua đáp ng xung sau đây: a h(n) = 2 n5,0 u(n) b ( )41)(31)(nnununhnn⎟⎠⎞⎜⎝⎛−+⎟⎠⎞⎜⎝⎛=c h(n) = 3.0,9ncos(nπ /4+π /3)u(n+1)d h(n) = n[u(n) – u(n – 10)] e h(n) = [2 – sin(πn)]u(n)
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
Trang 27d 2)3()(−=zzH , hệ thống ph n nhân qu e H(z) = ( 1 2)21+ z− +z− , hệ thống ổn định
Hãy xác định: (i) đáp ng xung (vẽ), (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-11
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à xN thì phép tích chh ậ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 trh ận này gọi là ma trận Toeflitz
Xét chuỗi x(n) = {1, 2, 3, 4} và h(n) = {3, 2, 1}
a Biểu diễn x d ới d ng vector cột 4 x 1, y d ới d ng vector cột 6 x 1 Hãy xác định ma trận H
b Viết một hàm MATLAB để thực hiện phép tích chập bằng ph ơng pháp ma trận Toeplitz nĩi trên:
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ẽ phần thực và phần o c a phổ DFT c a xa(n)
i N = 40 ii N = 50 iii N = 64 iv N = 70
# Bài tập 9-13
Cho tín hiệu x(n) = cos(πn/99), n = 0, 1, …, N – 1 Chọn N = v
4 và tính biến đổi FFT N điểm c a x(n) Xác định th i gian thực thi với v = 5, 6, …, 10 Kiểm ch ng rằng, th i gian thực thi tỷ lệ với Nlog4N
# Bài tập 9-14
Trang 28cos T o tín hiệu cos
diric T o hàm Dirichlet
gauspuls T o xung Gaussian tần số RF
pulstran T o một chuỗi xung cùng d ng với xung gốc
sawtooth T o sĩng răng c a hoặc sĩng tam giác
sin T o tín hiệu sin
sinc T o tín hiệu sinc
square T o tín hiệu sĩng vuơng
Các hàm vẽ tín hiệu
plot Vẽ d ng sĩng tín hiệu
Các hàm làm việc với các file dữ liệu
fopen M một file dữ liệu
fread Đọc một file dữ liệu
fscanf Quét một file dữ liệu
load T i dữ liệu từ một file mat vào khơng gian làm việc c a MATLAB
Các hàm phân tích và thiết kế bộ lọc
conv Hàm thực hiện tích chập một chiều
conv2 Hàm thực hiện tích chập hai chiều
fftfilt Thực hiện bộ lọc trong miền tần số
filter Hàm tính đáp ng ra c a bộ lọc
filtfilt Thực hiện bộ lọc cĩ khử méo pha
lactfilt Thực hiện bộ lọc theo cấu trúc lattice
upfirdn Thực hiện bộ lọc đ ợc lấy mẫu l i
Các hàm tính đáp ứng tần số abs Hàm tính biên độ angle Hàm xác định gĩc pha freqs Đáp ng tần số c a hệ thống liên tục freqz Đáp ng tần số c a hệ thống r i r c grpdelay Tính độ trễ nhĩm c a bộ lọc phasedelay Tính độ trễ pha c a bộ lọc phasez Đáp ng pha c a một hệ thống r i r c
Trang 29poly Hàm tính các hệ số c a đa th c từ các nghiệm c a nĩ
residuez Chuyển đổi qua l i giữa các mơ hình thặng d và mơ hình hàm truyền đ t
roots Tính các nghiệm c a một đa th c
sos2ss Chuyển từ mơ hình các khâu bậc 2 sang mơ hình khơng gian tr ng thái
sos2tf Chuyển từ mơ hình các khâu bậc 2 sang mơ hình hàm truyền đ t
sos2zp Chuyển từ mơ hình các khâu bậc 2 sang mơ hình cực - zero
ss2sos Chuyển từ mơ hình khơng gian tr ng thái sang mơ hình các khâu bậc 2
ss2tf Chuyển từ mơ hình khơng gian tr ng thái sang mơ hình hàm truyền đ t
ss2zp Chuyển từ mơ hình khơng gian tr ng thái sang mơ hình cực - zero
tf2latc Chuyển từ mơ hình hàm truyền đ t sang mơ hình lattice
tf2ss Chuyển từ mơ hình hàm truyền đ t sang mơ hình khơng gian tr ng thái
tf2zp Chuyển từ mơ hình hàm truyền đ t sang mơ hình cực - zero
zp2sos Chuyển từ mơ hình cực - zero sang mơ hình các khâu bậc 2
zp2ss Chuyển từ mơ hình cực - zero sang mơ hình khơng gian tr ng thái
zp2tf Chuyển từ mơ hình cực - zero sang mơ hình hàm truyền đ t
Các hàm biến đổi Fourier
fft Thực hiện biến đổi FFT 1 chiều
fft2 Thực hiện biến đổi FFT 2 chiều
fftshift Thực hiện biến đổi FFT 1 chiều cĩ sắp l i các hệ số sao cho các zero nằm kho ng giữa
goertzel Thực hiện biến đổi DFT theo gi i thuật Goertzel
ifft Thực hiện biến đổi ng ợc FFT 1 chiều
ifft2 Thực hiện biến đổi ng ợc FFT 2 chiều
Trang 30Thiế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± )Hδ1 0 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ố:
δ2 ωp ωs 1-δ1 1+δ1f|H(f)|0Hình 10.1 Đáp ng biên độ c a bộ lọc số
Trong MATLAB, chỉ tiêu độ gợn sĩng d i chắn đ ợc thay bằng một chỉ tiêu t ơng tự, đĩ là suy hao d i chắn
Với các chỉ tiêu đáp ng tần số đã chọn, ph ơng pháp thiết kế cịn phụ thuộc vào chất l ợng mong muốn c a bộ lọc Nếu chỉ cần chất l ợng thấp, ta cĩ thể dùng các thiết kế đơn gi n; nếu địi hỏi chất l ợng cao thì ph i dùng các ph ơng pháp ph c t p hơn
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ế bộ lọc FIR
δ1: gợn sĩng d i thơng δ2: gợn sĩng d i chắn
Trang 31c 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
Phương pháp thiết kế Mơ t Các hàm MATLAB tương ứng
Dựa vào các bộ lọc analog
Sử dụng các cực và zero c a các bộ lọc thơng thấp cổ điển trong miền Laplace (liên tục), chuyển thành bộ lọc số bằng các phép biến đổi tần số và r i r c hố bộ lọc
Các hàm thiết kế bộ lọc hồn chỉnh:
besself, butter, cheby1, cheby2, ellip Các hàm ớc l ợng bậc c a bộ lọc:
buttord, cheb1ord, cheb2ord, ellipord Các hàm t o các bộ lọc thơng thấp t ơng tự:
besselap, buttap, cheb1ap, cheb2ap, ellipap
Các hàm thực hiện các phép biến đổi tần số: lp2bp, lp2bs, lp2hp, lp2lp Các hàm r i r c hố bộ lọc:
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 độ yulewalk Thiết kế Butterworth tổng quát Thiết kế các bộ lọc thơng thấp Butterworth cĩ số
zero nhiều hơn số cực maxflat
Mơ hình thơng số Tìm một bộ lọc số xấp xỉ một đáp ng xấp xỉ một đáp ng th i gian hoặc đáp ng tần số đã định trớc
Các hàm t o mơ hình trong miền th i gian: lpc, prony, stmcb
Trang 32b ớ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 Kiểu bộ lọc Cú pháp hàm MATLAB tương ứng
Bessel [z,p,k] = besselap(n) Butterworth [z,p,k] = buttap(n) Chebychev lo i I [z,p,k] = cheb1ap(n,Rp) Chebychev lo i II [z,p,k] = cheb2ap(n,Rs) Elliptic [z,p,k] = ellipap(n,Rp,Rs) Bộ lọc Butterworth: Là bộ lọc tồn điểm cực, cĩ đáp ng tần số: H 2 2N11)(Ω+=Ω (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Ω)| = /20
10−Rp t i Ω = 1 với Rp là độ gợn sĩng d i thơng
Trang 331)1(1212 −−=δε (10.3) TN(x) là đa th c Chebychev bậc N, xác định bằng các cơng th c truy hồi: ⎩⎨⎧=−===−+ ( ) 2 ( ) ( ) 1,2,…)(,1)(1110NxTxxTxTxxTxTNNN 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Ω)| = δ2=10−Rs/20t i Ω = 1 với Rs là độ gợn sĩng d i chắn H(Ω)2= 1 [1/ ( )]122 Ω+ε TN (10.5)
Bộ lọc Chebychev địi hỏi ít điểm cực hơn so với bộ lọc Butterworth cĩ cùng thơng số yêu cầu
Bộ lọc elliptic:
Là bộ lọc gợn sĩng c d i thơng và d i chắn, đáp ng tần số cĩ c cực lẫn zero và đ ợc mơ t b i ph ơng trình: H(Ω)2= )(112 Ω+ε UN (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=10−Rp/20t i Ω = 1 với Rp là độ gợn sĩng d i thơng
Bộ lọc Bessel:
Là bộ lọc tồn điểm cực với hàm hệ thống: H(s) = )(1sBN (10.8)
Trang 34Bộ 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 tồn bộ d i thơng Do đĩ, bộ lọc Bessel cĩ đáp ng pha tuyến tính trên tồ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Ω)| <
21
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 =
0.5, gợn sĩng dải chắn Rs = 20 Vẽ đáp ng biên độ c a bộ lọc
[z,p,k] = ellipap(5,0.5,20); w = logspace(-1,1,1000);
h = freqs(k*poly(z),poly(p),w); semilogx(w,abs(h)), grid
Sau khi thực thi ch ơng trình ta cĩ một đồ thị t ơng tự hình 10.2d
Biến đổi tần số
B ớc th hai trong quá trình thiết kế bộ lọc IIR cổ điển là dùng các phép biến đổi tần số để chuyển từ các nguyên mẫu bộ lọc thơng thấp analog cĩ tần số cắt bằng 1 thành các bộ lọc analog thơng thấp, thơng cao, thơng d i, hoặc chắn d i cĩ các tần số cắt nh ta mong muốn Sau đây là danh sách các hàm MATLAB để thực hiện các phép biến đổi tần số nĩi trên cùng 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ố
Lo i biến đổi Quy tắc biến đổi Hàm thực hiện biến đổi
Thơng thấp sang thơng thấp 0ωss′= [numt,dent] = lp2lp(num,den,Wo) [At,Bt,Ct,Dt] = lp2lp(A,B,C,D,Wo) Thơng thấp sang thơng
cao ss0ω=′ [numt,dent] = lp2hp(num,den,Wo) [At,Bt,Ct,Dt] = lp2hp(A,B,C,D,Wo)
Thơng thấp sang thơng d i ()
( 0)200/1/ωωωssBWs′= + [numt,dent] = lp2bp(num,den,Wo,Bw) [At,Bt,Ct,Dt] = lp2bp(A,B,C,D,Wo,Bw) Thơng thấp sang chắn d i ()( / ) 1/2000 +=′ωωω ssBW
s [numt,dent] = lp2bs(num,den,Wo,Bw) [At,Bt,Ct,Dt] = lp2bs(A,B,C,D,Wo,Bw)
Trang 3521
0 ωω
ω = (10.11) trong đĩ ω1 và ω2 là các tần số cắt c a bộ lọc
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
[z,p,k] = cheb1ap(5,3); % Bộ lọc Chebychev lo i I bậc 5, Rs = 3dB [A,B,C,D] = zp2ss(z,p,k); % Chuyển sang d ng khơng gian tr ng thái
u1 = 0.1*2*pi; u2 = 0.5*2*pi; % Các tần số cắt (đơn vị rad/s)
Bw = u2-u1; Wo = sqrt(u1*u2);
[At,Bt,Ct,Dt] = lp2bp(A,B,C,D,Wo,Bw);
[b,a] = ss2tf(At,Bt,Ct,Dt); % Chuyển sang d ng hàm truyền đ t
w = linspace(0.01,1,500)*2*pi; % T o vector tần số h = freqs(b,a,w); % Tính đáp ng tần số
Trang 36biế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 hố 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:
11|)()(+−==zzkssHzH (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ĩ:
⎟⎠⎞⎜⎝⎛ Ω= −k1tan2ω (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 = ( ps)pfff/tan2ππ (10.14)
Nếu cĩ sự hiện diện c a thơng số Fp, phép biến đổi song tuyến tính sẽ biến đổi tần số
p
f
π
2=
Ω thành cùng tần số đĩ trong miền z, nh ng đ ợc chuẩn hố theo tần số lấy mẫu Fs:
spffπω= 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
Trang 37[bz,az] = ss2tf(Ad,Bd,Cd,Dd); % chuyển về mơ hình hàm truyền đ t Đáp ng tần số c a bộ lọc mới nh sau: 00.10.20.30.40.50.60.70.80.9-300-240-180-120-600
Normalized Frequency (×π rad/sample)
Magni
tude (
d
B
)
Magnitude (dB) and Phase Responses
-900-700-500-300-100100Phase (degrees)Hình 10.4
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
[z,p,k] = cheb1ap(5,3); % Bộ lọc Chebychev lo i I bậc 5, Rs = 3dB
[A,B,C,D] = zp2ss(z,p,k); % Chuyển sang d ng khơng gian tr ng thái fs = 2; % Tần số lấy mẫu (hertz)
u1 = 2*fs*tan(0.1*(2*pi/fs)/2); % Tần số cắt thấp (rad/s)
u2 = 2*fs*tan(0.5*(2*pi/fs)/2); % Tần số cắt cao (rad/s)
Bw = u2 - u1; % Băng thơng
Wo = sqrt(u1*u2); % Tần số trung tâm [At,Bt,Ct,Dt] = lp2bp(A,B,C,D,Wo,Bw);
[Ad,Bd,Cd,Dd] = bilinear(At,Bt,Ct,Dt,2,0.1);
[bz,az] = ss2tf(Ad,Bd,Cd,Dd); % chuyển về mơ hình hàm truyền đ t [h,f] = freqz(bz,az,256,2); % Tính đáp ng tần số
Trang 3800.10.20.30.40.50.60.70.80.9110-1410-1210-1010-810-610-410-2100Frequency (Hz)Dap ung bien do
Hình 10.5 Các hàm thiết kế bộ lọc IIR hồ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ế hồ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 hố 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
Bộ lọc Butterworth: dùng hàm butter:
>> [b,a] = butter(n,Wn,form) >> [z,p,k] = butter(n,Wn,form) >> [A,B,C,D] = butter(n,Wn,form)
trong đĩ:
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 hố 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ế
Trang 39 Bộ lọc Chebychev loại I: dùng hàm cheby1:
>> [b,a] = cheby1(n,Rp,Wn,form) >> [z,p,k] = cheby2(n,Rp,Wn,form) >> [A,B,C,D] = cheby2(n,Rp,Wn,form)
Các thơng số nhập t ơng tự nh hàm butter, thêm vào thơng số độ gợn sĩng d i thơng Rp (tính bằng dB) Để ớc l ợng bậc bộ lọc, dùng hàm cheb1ord
Bộ lọc Chebychev loại II: dùng hàm cheby2:
>> [b,a] = cheby2(n,Rs,Wn,form) >> [z,p,k] = cheby2(n,Rs,Wn,form) >> [A,B,C,D] = cheby2(n,Rs,Wn,form)
trong đĩ Rs là độ gợn sĩng d i chắn (tính bằng dB) Hàm cheb2ord cho phép ớc l ợng bậc c a bộ lọc Bộ lọc elliptic: dùng hàm ellip: >> [b,a] = ellip(n,Rp,Rs,Wn,form) >> [z,p,k] = ellip(n,Rp,Rs,Wn,form) >> [A,B,C,D] = ellip(n,Rp,Rs,Wn,form) Hàm ellipord cho phép ớc l ợng bậc c a bộ lọc
Bộ lọc Bessel: dùng hàm besself (chỉ thiết kế bộ lọc t ơng tự):
>> [b,a] = besself(n,Wn,form) >> [z,p,k] = besself(n,Wn,form) >> [A,B,C,D] = besself(n,Wn,form)
Khơng cĩ hàm ớc l ợng bậc c a bộ lọc
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
>> [n,Wn] = buttord([1000 2000]/5000,[500 2500]/5000,1,60);% ơc l ợng bậc bộ lọc % và các tần số cắt n = 12 Wn = 0.1951 0.4080
>> [b,a] = butter(n,Wn); % Thiết kế bộ lọc
10.2.2.THIẾT KẾ TRỰC TIẾP CÁC BỘ LỌC IIR TRONG MIỀN SỐ
Trang 40biế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 Yule-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
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ế
và đáp ng tần số mong muốn m = [0 0 1 1 0 0 1 1 0 0]; f = [0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 1]; [b,a] = yulewalk(10,f,m); [h,w] = freqz(b,a,128) plot(f,m,w/pi,abs(h)); grid 00.10.20.30.40.50.60.70.80.9100.20.40.60.811.21.4
Dap ung thucDap 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