Professional Documents
Culture Documents
-------------------------------------------------------------------------------------------------------------
Bài thực tập giúp các em sinh viên tìm hiểu các vẽ một số tín hiệu số cơ bản như tín
hiệu xung lực đơn vị, tín hiệu bậc đơn vị…, cách tính đáp ứng xung và tích chập
trong miền thời gian.
I. Tín hiệu
1/. Định nghĩa:
Tín hiệu là sự biến thiên của biên độ theo thời gian.
0 t
2/. Kí hiệu:
Tín hiệu tương tự: x(t)
Tín hiệu rời rạc : x(n)
3/. Một vài tín hiệu số cơ bản:
Các hàm của một số tín hiệu cơ bản :
a. Tín hiệu xung lực đơn vị:
>>n = -10 :10;
>>y = [zeros(1,10) 1 zeros(1,10)];
>>stem(n,y)
b. Tín hiệu bậc đơn vị:
>>n = -10 :10;
>>y = [zeros(1,10) ones(1,11)];
c. Tạo xung tuyến tính:
>>n = (0:0.001:1)';
>>y = n;
1
Phần thực hành môn Xử lý tín hiệu nhập môn- GVHD: Hứa Thị Hoàng Yến
-------------------------------------------------------------------------------------------------------------
2
Phần thực hành môn Xử lý tín hiệu nhập môn- GVHD: Hứa Thị Hoàng Yến
-------------------------------------------------------------------------------------------------------------
2. Biến đổi chương trình trên để tạo ra một dãy xung đơn vị bị trễ 11 mẫu. Chạy
chương trình đã được biến đổi và vẽ mẫu đó.
3. Tạo dãy nhảy bậc đơn vị có dạng sau:
4. Biến đổi chương trình trên để tạo dãy nhảy bậc đơn vị u[n] sớm 7 mẫu. Chạy
chương trình vừa biến đổi và hiển thị dãy đó.
5. Sự khác nhau giữa toán tử số học ^ và .^, cho ví dụ.
6. Lập trình Matlab để tạo chương trình vẽ các tín hiệu số cơ bản.
3
Phần thực hành môn Xử lý tín hiệu nhập môn- GVHD: Hứa Thị Hoàng Yến
-------------------------------------------------------------------------------------------------------------
x(n) y(n)
h(n)
x(n) = 1 khi n =1
0 khi n 1
4
Phần thực hành môn Xử lý tín hiệu nhập môn- GVHD: Hứa Thị Hoàng Yến
-------------------------------------------------------------------------------------------------------------
5
Phần thực hành môn Xử lý tín hiệu nhập môn- GVHD: Hứa Thị Hoàng Yến
-------------------------------------------------------------------------------------------------------------
Khi tăng k và kiểm tra các giá trị của |h(k)| tại mỗi bước lặp. Nếu giá trị của
|h(k)| nhỏ hơn 10-6 thì có thể coi tổng H(k) hội tụ và rất gần với H().
Ví dụ: Kiểm tra tính ổn định của hệ thống LTI nhân quả có phương trình sai phân:
y(n) = x(n) – 0,8x(n-1) – 1,5y(n-1) – 0,9y(n-2)
Giải:
>> num = [1 -0.8];
>> den = [1 1.5 0.9];
>> N = 100;
>> h = impz(num,den,N+1);
>> parsum = 0;
>> for k = 1:N+1;
>> parsum = parsum +abs(h(k));
6
Phần thực hành môn Xử lý tín hiệu nhập môn- GVHD: Hứa Thị Hoàng Yến
-------------------------------------------------------------------------------------------------------------
7
Phần thực hành môn Xử lý tín hiệu nhập môn- GVHD: Hứa Thị Hoàng Yến
-------------------------------------------------------------------------------------------------------------
Nếu đáp ứng xung h(k) của lọc số là hữu hạn thời gian, và ngõ vào x(k) cũng hữu
hạn thời gian, thì ta có thể thực hiện tích chập bằng hàm conv. Chứa x(k) trong
vectơ x, h(k) trong vectơ h, và lấy tích chập hai vectơ.
Ví dụ:
x = randn(5,1); % A random vector of length 5
h = [1 1 1 1]/4; % Length 4 averaging filter
y = conv(h,x);
4.3/. Bài tập:
1. Tính tích chập của hai tín hiệu:
x1 = {2, 3, 4}, và x2 = {3, 4, 5, 6}
2. Tín hiệu vào và đáp ứng xung lần lượt là:
x(n) = {0, 1, 2, 3, 4, 0}
h(n) = {0, 2, 0, 2, 0}
Tính tín hiệu ra.
8
Phần thực hành môn Xử lý tín hiệu nhập môn- GVHD: Hứa Thị Hoàng Yến
-------------------------------------------------------------------------------------------------------------
Bài thực tập này giúp sinh viên tìm hiểu một số phép phân tích trong miền tần số
như phép biến đổi Fourier rời rạc thời gian, phép biến đổi z, cách tính đáp ứng tần
số cũng như cách vẽ giản đồ cực không bằng các lệnh Matlab.
I. Biến đổi Fourier rời rạc thời gian (DTFT)
1/. Định nghĩa
Biểu thức tính biến đổi Fourier rời rạc thời gian của tín hiệu x(n):
X (e jw ) x ( n)e
n
jwn
Ở dạng đơn giản nhất, freqz cung cấp các vectơ hệ số lọc a và b, một số nguyên p
chỉ số điểm tính đáp ứng tần số. Hàm freqz trả đáp ứng tần số phức ở vectơ h và đáp
ứng tần số thực ở vectơ w theo rad/s.
9
Phần thực hành môn Xử lý tín hiệu nhập môn- GVHD: Hứa Thị Hoàng Yến
-------------------------------------------------------------------------------------------------------------
freqz có thể chấp nhận các thông số khác, chẳng hạn một tần số lấy mẫu hoặc một
vectơ của một tần số bất kỳ.
Ví dụ: Tìm đáp ứng tần số 256 điểm của một lọc Chebyshev loại I bậc 12. Tần số
lấy mẫu fs là 1000Hz. Tần số cắt 200Hz.
[b,a] = cheby1(12,0.5,200/500);
[h,f] = freqz(b,a,256,1000);
Vì có cả tần số lấy mẫu, hàm freqz trả lại một vectơ f chứa 256 điểm tần số giữa 0
và fs/2.
Lưu ý: Tần số Nyquist bằng phân nửa tần số lấy mẫu. Tần số cắt cho tất cả các lọc
thiết kế được chuẩn hoá bằng tần số Nyquist. Chẳng hạn, đối với một hệ thống có
tần số lấy mẫu là 1000Hz, tần số cắt 300Hz là 300/500 = 0.6.
Nếu gọi hàm freqz mà không có các thông số ngõ ra, nó sẽ vẽ đường đồ thị cả biên
độ đối với tần số và pha đối với tần số.
Ví dụ: Một lọc thấp qua Butterworth bậc 9 với tần số cắt ở 400Hz, với tần số lấy
mẫu là 2000Hz là:
[b,a] = butter(9,400/1000);
Để tính đáp ứng tần số phức 256 điểm, và vẽ đồ thị biên độ và pha theo tần số:
freqz(b,a,256,2000)
Hoặc để hiển thị đáp ứng biên độ và pha trong fvtool:
fvtool(b,a)
Chọn Magnitude and Phase Response từ menu Analysis hoặc nhấn chọn biểu tượng
của Magnitude and Phase Response trên thanh công cụ.
10
Phần thực hành môn Xử lý tín hiệu nhập môn- GVHD: Hứa Thị Hoàng Yến
-------------------------------------------------------------------------------------------------------------
Đối với một vectơ hoặc một điểm tần số bất kỳ, ví dụ:
w = linspace(0,pi);
h = freqz(b,a,w);
Đó là phép ánh xạ một dãy thời gian rời rạc thành một hàm biến số phức X(z). Nếu
biến đổi z tồn tại có nghĩa là hàm số phức X(z) có giá trị hữu hạn xác định. Tập hợp
tất cả các giá trị của biến số z tạo thành miền hội tụ ROC (Region of Convergence).
Ví dụ 1:
Cho X1(z) = 2 + 3z-1 + 4z-2 và X2(z) = 3 + 4z-1 + 5z-2 + 6z-3
Tính X3(z) = X1(z).X2(z)
Giải: Sử dụng hàm conv trong Matlab
>> x1 = [2 3 4]; x2 = [3 4 5 6];
>> x3 = conv(x1,x2)
x3 =
11
Phần thực hành môn Xử lý tín hiệu nhập môn- GVHD: Hứa Thị Hoàng Yến
-------------------------------------------------------------------------------------------------------------
6 17 34 43 38 24
Để tính biến đổi z, trong Matlab ta sử dụng hàm:
ztrans(f )
Ví dụ: Tính biến đổi z của hàm f(n)=n4
Giải: >>syms n; % khai báo biến
>>f=n^4;
>>ztrans(f)
Trong đó C là vòng tròn kín bao quanh gốc tọa độ nằm trong miền hội tụ ROC
của X(z).
2.2/. Tính toán bằng Matlab:
Để tính biến đổi z ngược bằng phương pháp phân tích thành phân thức đơn giản,
ta sử dụng hàm residuez có sẵn trong Matlab để tính.
Cú pháp:
[R,p,C] = residuez(b,a)
với b, a là hai vectơ chứa các hệ số của hai đa thức B(z) và A(z).
12
Phần thực hành môn Xử lý tín hiệu nhập môn- GVHD: Hứa Thị Hoàng Yến
-------------------------------------------------------------------------------------------------------------
Vectơ R chứa các giá trị thặng dư, vectơ p chứa giá trị của các cực và vectơ C chứa
các số hạng trực tiếp.
Để dùng hàm residuez, X(z) phải viết dưới dạng hàm hữu tỷ, trong đó tử số và
mẫu số là những đa thức xếp theo luỹ thừa tăng dần của z-1
b0 b1 z 1 ... bM z M B( z )
X ( z)
a0 a1 z 1 ... a N z N A( z )
N M N
Rk
1
ck z k , với M N
k 1 1 pk z k 01
Ví dụ:
Tìm biến đổi z ngược của hàm sau đây bằng Matlab:
1
X ( z) , z 0,9
(1 0,9 z ) (1 0,9 z 1 )
1 2
Giải:
>> b = 1; a = poly([0.9, 0.9, -0.9]);
>> [R,p,C] = residuez (b,a)
R=
0.2500
0.2500 + 0.0000i
0.5000 - 0.0000i
p=
-0.9000
0.9000 + 0.0000i
0.9000 - 0.0000i
C= []
X(z) đã được khai triển thành các phân thức đơn giản:
0,25 0,5 0,25
X ( z) 1
1 2
, z 0,9
1 0,9 z (1 0,9 z ) 1 0,9 z 1
13
Phần thực hành môn Xử lý tín hiệu nhập môn- GVHD: Hứa Thị Hoàng Yến
-------------------------------------------------------------------------------------------------------------
M: bậc tử số
N: bậc mẫu số
z1, z2 …: nghiệm của đa thức tử số, gọi là các không của hệ thống
p1, p2 …: nghiệm của đa thức mẫu số, gọi là các cực của hệ thống
Hình vẽ trong mặt phẳng z vị trí các không và các cực gọi là giản đồ cực –
không hoặc phân bố cực – không.
3.2/. Vẽ giản đồ cực – không bằng Matlab:
Hàm zplane vẽ đồ thị các cực và không của một hệ thống tuyến tính.
Hàm này có hai cách gọi:
- Đối với một hệ thống có dạng hàm số chuyển:
Cú pháp : zplane(num,den)
với num, den là các hệ số của đa thức ở tử số và mẫu số theo số mũ tăng dần của z-1.
- Đối với một hệ thống có dạng cực – không:
Cú pháp : zplane(zeros,poles)
với zeros, poles là các vectơ cột xác định các điểm không và điểm cực của hệ thống.
Ví dụ: Một lọc đơn giản với một không ở -1/2 và một đôi cực phức ở 0.9e j 2 (0.3) và
0.9e j 2 (0.3) là:
14
Phần thực hành môn Xử lý tín hiệu nhập môn- GVHD: Hứa Thị Hoàng Yến
-------------------------------------------------------------------------------------------------------------
zer = -0.5;
pol = 0.9*exp(j*2*pi*[-0.3 0.3]');
Để xem đồ thị cực – không của lọc:
zplane(zer,pol)
Hoặc có thể sử dụng fvtool. Đầu tiên, biến đổi các cực và không để có dạng hàm
chuyển, sau đó gọi lệnh fvtool:
[b,a] = zp2tf(zer,pol,1);
fvtool(b,a)
Chọn Pole/Zero Plot từ menu Analysis hoặc nhấn chọn biểu tượng Pole/Zero Plot từ
thanh công cụ.
Trong Matlab, việc xác định các điểm cực và điểm không của một hệ thống có hàm
truyền hữu tỷ được thực hiện nhờ lệnh tf2zp với cú pháp như sau:
Cú pháp:
[z,p,k] = tf2zp(num,den)
Trong đó, num, den là các hệ số của đa thức hữu tỷ ở tử số và mẫu số theo thứ tự
tăng dần của z-1, k là hệ số khuếch đại, z,p là các vectơ chứa điểm cực và điểm
không được cho dưới dạng vectơ cột.
Ví dụ:
>>b = [1 3];
15
Phần thực hành môn Xử lý tín hiệu nhập môn- GVHD: Hứa Thị Hoàng Yến
-------------------------------------------------------------------------------------------------------------
16
Phần thực hành môn Xử lý tín hiệu nhập môn- GVHD: Hứa Thị Hoàng Yến
-------------------------------------------------------------------------------------------------------------
Bài thực hành giúp sinh viên tìm hiểu các câu lệnh Matlab nhằm thiết kế mạch lọc số FIR.
1. Định nghĩa
Thiết kế mạch lọc nghĩa là tính đáp ứng tần số của lọc sao cho thỏa yêu cầu đặt ra.
Từ phương trình lọc phi đệ quy:
N N
y ( n) b x ( n k ) h( k ) x ( n k )
k N
k
k N
Ta tìm các hệ số bk của lọc, cũng chính là đáp ứng xung h(k), từ đó tính được đáp
ứng tần số của lọc cần thiết kế.
N
H () h ( k )e
k N
jk
N
20 log10 p s 13
14,6( s p ) / 2
Chương trình tính bậc của mạch lọc thông thấp FIR pha tuyến tính sử dụng
công thức gần đúng của Kaiser:
>> % Chương trình
>> dp = input (‘ Do map mo cua dai thong = ‘);
>> ds = input (‘ Do suy giam cua dai chan = ‘);
>> Fp = input (‘ Tan so cat cua dai thong = ‘);
>> Fs = input (‘ Tan so cat cua dai chan = ‘);
>> FT = input (‘ Tan so lay mau = ‘);
>> num = -20*log10(sqrt(dp*ds))-13;
>> den = 14.6*(Fs-Fp)/FT;
>> N = ceil(num/den);
>> fprintf(‘Bac cua mach loc la %d \n’,N)
17
Phần thực hành môn Xử lý tín hiệu nhập môn- GVHD: Hứa Thị Hoàng Yến
-------------------------------------------------------------------------------------------------------------
Ví dụ: Tính bậc của mạch lọc thông thấp FIR với các thông số sau: độ mấp
mô của dải thông là 0,1 dB, độ suy giảm của dải chặn là 35dB, tần số cắt dải thông
là 1,8KHz, tần số cắt dải chặn là 2KHz, và tốc độ lấy mẫu là 12KHz.
Trong hộp công cụ của Matlab còn có hàm firpmord dùng để xác định bậc
của mạch lọc số FIR dựa theo công thức của Hermann.
Cú pháp: [n,fo,ao,w] = firpmord(f,a,dev)
[n,fo,ao,w] = firpmord(f,a,dev,fs)
Ghi chú: sử dụng hàm firpmord hoặc hàm remezord
c = firpmord(f,a,dev,fs,'cell')
Với f là vectơ của các mép dải tần (nằm giữa 0 và fs/2, với fs là tần số lấy
mẫu), a là vectơ các giá trị biên độ mong muốn trong mỗi vùng tần số, dev là vectơ
qui định sai số được phép giữa đáp ứng biên độ của mạch lọc đã được thiết kế và
mạch lọc mong muốn. Chiều dài của f khoảng bằng hai lần chiều dài của a trừ đi
hai, trong khi chiều dài của dev bằng chiều dài của a. Hàm số này cho giá trị bậc N
của mạch lọc, tần số chuẩn hoá của các mép dải fo, vectơ các giá trị biên độ của dải
tần ao, và vectơ trọng số w thoả mãn các qui định của mạch lọc. Các dữ liệu lối ra
này có thể sử dụng để thiết kế mạch lọc bằng cách sử dụng hàm firpm. Hàm firpm
với kết quả ra bậc n, vectơ tần số fo, vectơ đáp ứng biên độ ao và trọng số w để thiết
kế lọc b xấp xỉ lọc được cho với các thông số f, a và dev.
Cú pháp: b = firpm(n,fo,ao,w)
Sử dụng cú pháp:
[n,fo,ao,w] = firpmord(f,a,dev,fs) với tần số lấy mẫu fs cho.
Tần số lấy mẫu fs mặc định là 2 Hz (tức tần số Nyquist là 1 Hz).
Hàm c = firpmord(f,a,dev,fs,'cell') tạo một mảng với các phần tử của mảng là
các thông số tới hàm firpm.
Ví dụ 1:
Thiết kế một mạch lọc thấp qua có số bậc nhỏ nhất với tần số cắt dải thông là
500Hz, tần số cắt dải chặn là 600Hz, với tốc độ lấy mẫu là 2000Hz, độ suy giảm ở
dải chặn là 40dB, và độ mấp mô của dải thông ít hơn 3dB.
18
Phần thực hành môn Xử lý tín hiệu nhập môn- GVHD: Hứa Thị Hoàng Yến
-------------------------------------------------------------------------------------------------------------
Giải:
rp = 3;
rs = 40;
fs = 2000;
f = [500 600];
a = [1 0];
dev = [(10^(rp/20)-1)/(10^(rp/20)+1) 10^(-rs/20)];
[n,fo,ao,w] = firpmord(f,a,dev,fs);
b = firpm(n,fo,ao,w);
freqz(b,1,1024,fs);
title(‘thiet ke loc thap qua FIR’);
Ví dụ 2:
Thiết kế một lọc thấp qua với tần số cắt dải thông là 1500Hz, tần số cắt dải
chặn là 2000Hz, với tốc độ lấy mẫu là 8000Hz, và biên độ dải chặn cực đại là 0,1,
và sai số dải thông cực đại là 0,01.
Hướng dẫn:
[n,fo,ao,w] = firpmord([1500 2000],[1 0],[0.01 0.1],8000 );
b = firpm(n,fo,ao,w);
freqz(b,1,1024,fs);
19
Phần thực hành môn Xử lý tín hiệu nhập môn- GVHD: Hứa Thị Hoàng Yến
-------------------------------------------------------------------------------------------------------------
Bài tập:
Thiết kế mạch lọc FIR thông thấp có pha tuyến tính có tần số cắt dải thông là
800Hz, tần số cắt dải chặn là 1000Hz, độ mấp mô của dải thông là 0,5dB và độ suy
giảm của dải chặn là 40dB. Tần số lấy mẫu là 4000Hz.
b = b.*hamming(51)';
fvtool(b,1)
21
Phần thực hành môn Xử lý tín hiệu nhập môn- GVHD: Hứa Thị Hoàng Yến
-------------------------------------------------------------------------------------------------------------
Bài thực hành giúp sinh viên tìm hiểu các câu lệnh Matlab nhằm thiết kế mạch lọc số IIR.
1. Thiết kế mạch lọc số IIR bằng phương pháp bất biến xung
Đây chính là phương pháp lấy mẫu đáp ứng xung của mạch lọc tương tự để thu
được đáp ứng xung của mạch lọc số, nghĩa là:
h[n] ha (t ) |t nT ha (nT )
Với h[n] là đáp ứng xung của mạch lọc số còn ha(t) là đáp ứng xung của mạch
lọc tương tự. Thông số T được chọn sao cho để dạng của ha(t) được chấp nhận bởi
các mẫu của h[n]. Vì đó là phép lấy mẫu nên các tần số tương tự và rời rạc liên hệ
với nhau bằng hệ thức:
= T
hay ej = ejT
Đáp ứng biên độ của một mạch lọc thông thấp tương tự có thể được biểu thị
như sau:
|Ha(j)|
dB
p S
0
Rp
-AS
Trong đó, Rp là thông số mấp mô của dải thông, p là tần số của dải thông đo
bằng rad/s, A là độ suy giảm của dải chặn và s là tần số cắt của dải chặn.
Để thiết kế mạch lọc số , trước tiên phải thiết kế mạch lọc tương tự tương
đương rồi sau đó ánh xạ nó thành mạch lọc số mong muốn:
Bước 1: Chọn khoảng lấy mẫu T và xác định các thông số cho mạch lọc tương
tự
p s
p , s
T T
22
Phần thực hành môn Xử lý tín hiệu nhập môn- GVHD: Hứa Thị Hoàng Yến
-------------------------------------------------------------------------------------------------------------
Bước 2: Thiết kế mạch lọc tương tự với các thông số Rp, p, As, s.
Bước 3: Sử dụng khai triển phân thức riêng phần Ha(s) thành dạng:
N
Ck
H a ( s)
k 1 s sk
Bước 4: Biến đổi các điểm cực sk của mạch lọc tương tự thành các điểm cực
của mạch lọc số pk=eSkT để thu được mạch lọc số.
N
Ck
H ( z) 1 sk T
k 1 1 z e
Nếu Ha(s) được cho dưới dạng phân thức, thì hàm residue thu được các điểm
cực và điểm không để khai triển Ha(s) thành phân thức riêng phần. Sau đó, mỗi
điểm cực của mạch lọc tương tự được ánh xạ thành điểm cực của mạch lọc số. Cuối
cùng, sử dụng hàm residuez để chuyển H(z) thành dạng phân thức.
Ví dụ: Biến đổi mạch lọc tương tự
s 1
H a (s)
s 5s 6
2
thành mạch lọc số H(z) dùng phương pháp bất biến xung với T=0,1.
Giải:
%Hàm biến đổi bất biến xung từ mạch lọc tương tự sang số:
function[b,a] = imp_invar(c,d,T)
[R,p,C] = residue(c,d);
P = exp(p*T);
[b,a] = residuez(R,P,C);
b = real(b’); a = real(a’);
%Chương trình Matlab biến đổi mạch lọc tương tự thành mạch lọc số dùng
phương pháp bất biến xung
c = [1,1]; d = [1,5,6]; T = 0.1;
[b,a] = imp_invar(c,d,T);
[H,w] = freqz(b,a,100);
magH = abs(H);
phaH = angle(H);
plot(w/pi,magH); % hoặc dùng hàm subplot nếu muốn vẽ nhiều đồ thị trên 1
figure
23
Phần thực hành môn Xử lý tín hiệu nhập môn- GVHD: Hứa Thị Hoàng Yến
-------------------------------------------------------------------------------------------------------------
24
Phần thực hành môn Xử lý tín hiệu nhập môn- GVHD: Hứa Thị Hoàng Yến
-------------------------------------------------------------------------------------------------------------
mẫu F lấy bằng 2 lần tần số Nyquist, tần số của dải thông fp và của dải chặn fs tính
bằng Hz, thì khi đó, Wp = 2fp/F và Ws = 2fs/F. Hai thông số Rp và Rs tính theo dB.
Đối với mạch lọc Butterworth thì Wn là tần số cắt -3dB, đối với mạch lọc
Chebyshev loại 1 và elliptic thì Wn là tần số ở mép của dải thông, trong khi đối với
mạch lọc Chebyshev loại 2 thì Wn là tần số ở mép của dải chặn.
Ví dụ 1:
Xác định bậc thấp nhất của mạch lọc thông thấp hoạt động ở tần số lấy mẫu
1000Hz với các thông số: độ mấp mô của dải thông nhỏ hơn 3dB, các mép của dải
thông từ 0 tới 40 Hz, độ suy giảm của dải chặn là 60 dB và các mép của dải chặn từ
150 Hz tới tần số Nyquist 500Hz.
Giải:
%Chuẩn hoá các mép của dải thông và dải chặn
Wp = 40/500; Ws = 150/500;
% Xác định bậc của mạch lọc
[n,Wn] = buttord(Wp,Ws,3,60)
n=
5
Wn =
0.0810
Ví dụ 2:
Xác định bậc thấp nhất của mạch lọc ellip hoạt động tại tần số lấy mẫu
1600Hz, với các thông số: các mép của dải thông tại 200Hz và 280Hz, các mép của
dải chặn tại 160Hz và 300Hz, độ mấp mô của dải thông là 0,1dB và độ suy giảm
của dải chặn là 70dB.
Giải:
%Chuẩn hoá các mép của dải thông và dải chặn
Wp=[200 280]/800;
Ws=[160 300]/800;
% Xác định bậc của mạch lọc
[n,Wn]=ellipord(Wp,Ws,0.1,70)
n=
25
Phần thực hành môn Xử lý tín hiệu nhập môn- GVHD: Hứa Thị Hoàng Yến
-------------------------------------------------------------------------------------------------------------
8
Wn = 0.3500
Bước 2: Thiết kế mạch lọc
Các hàm trong Matlab dùng để thiết kế mạch lọc
[b,a] = butter(N,Wn)
[b,a] = cheby1(N,Rp,Wn)
[b,a] = cheby2(N,Rs,Wn)
[b,a] = ellip(N,Rp,Rs,Wn)
Các hàm này cho các vectơ b và a là các vectơ có độ dài N+1 hệ số của tử số
và mẫu số của hàm truyền theo thứ tự tăng dần của số mũ z-1. Dạng của hàm truyền
thu được là
N
N ( z) b m z m
H ( z) m 0
N
1 ak z k
D( z )
k 1
Sau khi đã xác định được các hệ số của mạch lọc thì ta có thể xác định đáp
ứng tần số của mạch lọc bằng hàm freqz(b,a,w) trong đó, w là tập hợp các tần số
góc.
Muốn xác định các điểm cực và điểm không của hàm truyền của mạch lọc
mong muốn, ta sử dụng hàm:
[z,p,k] = butter(N,Wn)
[z,p,k] = cheby1(N,Rp,Wn)
[z,p,k] = cheby2(N,Rs,Wn)
[z,p,k] = ellip(N,Rp,Rs,Wn)
Ví dụ:
Thiết kế mạch lọc elliptic và mạch lọc Butterworth thông thấp với các thông
số:
Tần số mép của dải thông fp = 800Hz, mép của dải chặn fs = 1 KHz, độ mấp mô
của dải thông là 0,5 dB, và độ suy giảm của dải chặn là 40 dB, với tần số lấy mẫu là
F = 4KHz.
Giải:
% Thiết kế mạch lọc elliptic
26
Phần thực hành môn Xử lý tín hiệu nhập môn- GVHD: Hứa Thị Hoàng Yến
-------------------------------------------------------------------------------------------------------------
>>Wp=800/2000; Ws=1000/2000;
>>[n,Wn]=ellipord(Wp,Ws,0.5,40)
n=
5
Wn =
0.4000
>>[b,a]=ellip(n,0.5,40,Wn);
>>[h,omega]=freqz(b,a,256);
>>subplot(1,2,1);
>>plot(omega/pi,20*log10(abs(h)));grid;
>>xlabel('\omega/\pi');ylabel('Bien do, dB');
>>title('Mach loc elliptic')
27
Phần thực hành môn Xử lý tín hiệu nhập môn- GVHD: Hứa Thị Hoàng Yến
-------------------------------------------------------------------------------------------------------------
>>[b,a]=butter(n,Wn);
>>[h,omega]=freqz(b,a,256);
>>subplot(1,2,1);
>>plot(omega/pi,20*log10(abs(h)));grid;
>>xlabel('\omega/\pi');ylabel('Bien do, dB');
>>title('Mach loc Butterworth')
28
Phần thực hành môn Xử lý tín hiệu nhập môn- GVHD: Hứa Thị Hoàng Yến
-------------------------------------------------------------------------------------------------------------
Bài thực hành giúp sinh viên thiết kế các mạch lọc số dựa trên hộp công cụ sẵn có
trong Matlab.
SPTOOL/FDATOOL là chương trình dùng để thiết kế các lọc số dạng tương tác.
Người dùng đưa vào các thông số yêu cầu như dạng lọc, bậc của lọc, đáp ứng tần
số… chương trình sẽ tính toán hệ số lọc tương ứng.
Để thực thi một chương trình, ta thực hiện các bước sau:
Khởi động Matlab.
Gõ >> sptool ở dòng lệnh (tương tự, gõ >> fdatool ).
Cửa sổ Start up xuất hiện
Chọn New Design, một lọc được tạo và cửa sổ Filter Design xuất hiện. Ta
giả sử lọc này được gọi là filt1.
Xây dựng lọc mong muốn bằng cách thay đổi các thông số thích hợp.
Trở lại cửa sổ Start up, để xem những đáp ứng khác nhau của lọc thiết kế, ta
nhấn chuột vào View, cửa sổ Filter Viewer mở ra, cho phép ta xem những đồ
thị khác nhau (đáp ứng tần số, đáp ứng xung …)
Để rút trích các hệ số, trở lại cửa sổ Start up, chọn File -> Export. Ở cửa sổ
mới, chọn filt1 và chọn nút Export to Workspace, Matlab sẽ lưu một biến
cấu trúc gọi là filt1 vào trong cửa sổ làm việc hiện hành.
Để xem tử số của lọc thiết kế, ở dòng lệnh, ta gõ >> filt1.tf.num
Để xem mẫu số của lọc thiết kế, ở dòng lệnh, ta gõ >> filt1.tf.den
Tương tự như vậy với lệnh FDATOOL.
Bài tập 1: Thiết kế một lọc số FIR thấp qua với các thông số:
Tần số cắt dải thông fp = 2 kHz
Tần số cắt dải chặn fs = 3 kHz
Độ dợn dải thông Rp = 0.25 dB
Độ dợn dải chặn Rs = 50 dB
Tần số lấy mẫu fs = 20 kHz
Hướng dẫn :
Gõ >> sptool ở dòng lệnh
29
Phần thực hành môn Xử lý tín hiệu nhập môn- GVHD: Hứa Thị Hoàng Yến
-------------------------------------------------------------------------------------------------------------
Điền các thông số theo yêu cầu, hoàn tất lọc được thiết kế bằng cách nhấn Apply.
30
Phần thực hành môn Xử lý tín hiệu nhập môn- GVHD: Hứa Thị Hoàng Yến
-------------------------------------------------------------------------------------------------------------
Để rút trích hoặc điều chỉnh các hệ số lọc của lọc thiết kế, trở lại cửa sổ SPTool
Startup, chọn File -> Export. Đánh dấu lọc thiết kế được (filt1) và chọn nút Export
to Workspace để xuất ra các thông số lọc.
Các thông số của lọc được chứa dưới tên biến filt1, ta có thể xem các hệ số bằng
cách gõ >> filt1 ở dòng lệnh.
31
Phần thực hành môn Xử lý tín hiệu nhập môn- GVHD: Hứa Thị Hoàng Yến
-------------------------------------------------------------------------------------------------------------
Bài tập 2: Thiết kế một lọc số thấp qua IIR với các yêu cầu sau:
Bậc của lọc là 8
Dạng lọc Elliptic IIR
Tần số cắt dải thông fp = 300 Hz
Độ dợn dải thông Rp = 0.5 dB
Độ dợn dải chặn Rs = 50 dB
Tần số lấy mẫu fs = 40 kHz
Hướng dẫn:
32
Phần thực hành môn Xử lý tín hiệu nhập môn- GVHD: Hứa Thị Hoàng Yến
-------------------------------------------------------------------------------------------------------------
Để vẽ đáp ứng xung, đối với lọc IIR cần có cả tử số và mẫu số để tính tần số và đáp
ứng xung của lọc.
33
Phần thực hành môn Xử lý tín hiệu nhập môn- GVHD: Hứa Thị Hoàng Yến
-------------------------------------------------------------------------------------------------------------
Bài tập:
3. Thiết kế lọc số thông qua FIR với
Băng thông 8-12 kHz
Độ dợn dải thông Rp = 0.001
Độ dợn dải chặn Rs = 0.001
Độ rộng chuyển đổi 3 kHz
Tần số lấy mẫu fs = 44.1 kHz
4. Thiết kế lọc số thông qua IIR với
Băng thông 8-10 kHz
Bậc của lọc 4
Dạng lọc Butterworth
Tần số lấy mẫu fs = 44.1 kHz
34