Tải bản đầy đủ (.pdf) (30 trang)

tìm hiểu công cụ xử lý tín hiệu số trong matlab

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (722.43 KB, 30 trang )

B CỌNG THNG
TRNG ĐI HC ĐIN LC
KHOA ĐIN T VIN THÔNG



BỄO CỄO Đ TÀI
TÌM HIU V CÔNG C X LÝ TÍN HIU S
TRONG MATLAB
(SIGNAL PROCESSING TOOLBOX)


Giảng viên : Đ Văn Tun
Nhóm 10 lớp: Đ6 ĐTVT2
Khoá : 2011-2016
1. Hoàng Khc Chung
2. Nguyn Th Đc
3. Nguyn Văn HoƠn
4. Nguyn Chí Thành
5. Nguyn Trng Nghĩa
6. HoƠng Văn Khá
7. Nguyn Hu Tú

Hà Ni, tháng 5 năm 2014


LI M ĐU
Xử lý tín hiệu số (digital signal processing –DSP) là một công nghệ tiên tiến đã và đang
làm thay đổi có tính cách mạng trong rất nhiều lĩnh vực. Mỗi lĩnh vực đều phát triển phương
pháp xử lý cho riêng mình, đáp ng nhu cầu do nghành đó đặt ra. Chẳng hạn trong âm học
ngưi ta nghiên cu xử lý số làm giảm tiếng ồn tạp âm ca môi trưng, trong Y học thì phân


tích các tín hiệu siêu âm, điên tâm đồ,… Tuy nhiên thành tựu quan trọng nhất ca xử lý tín
hiệu số là trong điều khiển và trong viễn thông.
Công nghệ xử lý số đã tạo được những modem tốc độ cao giúp truy nhập thu phát
truyền dữ liệu với chất lượng cao. Các modem với các công nghệ nhận dạng tín hiệu tổng hợp
tiếng nói, nén ảnh, xử lý ảnh, khử nhiễu,… càng ngày càng thông minh hơn. Nh công nghệ
phân tích và tổng hợp tín hiệu tinh vi ngưi ta đã làm ra được các robot, có thể giao tiếp, tác
động tới con ngưi.
Một trong những công cụ phần mềm giúp thực hiện công việc xử lý tín hiệu số là
Matlab. Matlab giúp chúng ta xử lý khối công việc nhanh hơn tiếp kiệm thi gian và chi phí.





MC LC
Phần 1: Hệ thống tuyến tính bất biến LTI 1
1.1. Hệ thống thi gian ri rạc 1
1.2. Hệ thống tuyến tính 1
1.3. Hệ thống bất biến theo thi gian 1
1.4. Hệ thống tuyến tính bất biến theo thi gian (LTI) 1
1.4.1. Định nghĩa: 1
1.4.2. Ghép nỗi tiếp hệ thống LTI: 2
1.4.3. Mô phỏng hệ thống LTI trong Matlab: 2
1.5. Mô phỏng hệ thống tuyến tính và phi tuyến 2
1.6. Mô phỏng hệ thống bất biến với thi gian 4
1.6. Xác định đáp ng xung đơn vị ca hệ thống LTI 5
1.7. Ghép nối tiếp các hệ thống LTI 5
Phần 2: Biến đổi Fourier DFT 7
2.1. Tính DFT X[k] ca dãy tín hiệu ri rạc x[n]. 7
2.1.1. Định nghĩa: 7

2.1.2. Tính DFT X[k] 7
2.2. Phân tích phổ dùng DFT 9
Phần 3: Xử lý số tín hiệu thi gian liên tục 12
3.1. Lấy mẫu tín hiệu 12
3.2. Chuyển đổi A/D 13
3.3 Chuyển đổi D/A 14
Phần 4: Các kỹ thuật thiết kế mạch lọc số 16
4.1. Thiết kế mạch lọc số IIR 16
4.1.1. Thiết kế mạch lóc số bằng sự bất biến xung 16
4.1.2. Thiết kế mạch lọc thông thấp elliptic và Butterworth 17
4.1.3. Thiết kế mạch lọc thông dải Butterworth 18
4.1.4. Mô phỏng quá trình lọc số dùng mạch lọc IIR 19
4.2. Thiết kế mạch lọc số FIR 19
4.2.1. Quá trình thiết kế một mạch lọc FIR. 20
4.2.2. Thiết kế mạch lọc dùng hàm cửa sổ. 22
Tài liệu tham khảo 24




DANH MC CÁC BNG, S Đ, HÌNH
Hình 1.1. Ký hiệu một hệ thống ri rạc 1
Hình 1.2. Mô hình hóa hệ thống LTI 2
Hình 1.3. Mô hình hóa hai hệ thống LTI ghép nối tiếp. 2
Hình 1.4. Nghiên cu tính tuyến tính ca hệ thống có phương trình (2.1). 3
Hình 1.5. Nghiên cu tính bất biến với thi gian ca hệ thống có phương trình (1.2). 4
Hình 1.6. Đáp ng xung đơn vị ca hệ thống có phương trình (1.3) 5
Hình 1.7. Tín hiệu ca hệ thống ghép nối tiếp 7
Hình 2.1. a) Thi gian ca dãy x[n]; b) Biểu diễn thi gian biên độ và pha DFT dãy x[n]. 10
Hình 2.2. Phân tích phổ dùng DFT 11

Hình 2.3 Tín hiệu nhiễm tạp âm a) và mật độ phổ công suất ca nó b). 12
Hình 3.1. Lấy mẫu một tín hiệu hình sin. 14
Hình 3.2. a) Tín hiệu tương tự lối vào; b) tín hiệu lối ra ca bộ lượng tử hóa. 16
Hình 3.3. Tín hiệu tương tự lối ra. 17
Hình 4.1. Đáp ng tần số ca mạch lọc IIR thông dải Butterworth. 21
Hình 4.2. Tín hiệu lối vào và tín hiệu lối ra ca mạch lọc số IIR 22
Hình 4.3. Cấu trúc ca bộ lọc FIR truyền thông 22
Hình 4.4. Hình ảnh đáp biên độ ca mach lọc FIR thông thấp và thông dải 24
Hình 4.5. Các đặc trưng ca mạch lọc thông thấp thiết kế dùng cửa sổ Hamming 25

KÝ HIU CÁC CM T VIT TT
DSP: Digital Signal Proccessing
DFT: Discrete Fourier Transform
LTI: Linear Time-Invariant System


Nhóm 10 1

Phn 1: H thng tuyn tính bt bin LTI
1.1. H thng thi gian ri rc
Hệ thống thi gian ri rạc là một thiết bị hay là một toán thuật mà nó tác động lên một
tín hiệu vào (dãy vào) để cung cấp một tín hiệu ra (dãy ra) theo một qui luật hay một th tục
tính toán nào đó. Định nghĩa theo toán học, đó là một phép biến đổi hay một toán tử mà nó
biến một dãy vào x(n) thành dãy ra y(n).
Ký hiệu:
   
 
y n T x n

Tín hiệu vào được gọi là tác động hay kích thích, tín hiệu ra được gọi là đáp ng. Biểu

thc biểu diễn mối quan hệ giữa kích thích và dáp ng được gọi là quan hệ vào ra ca hệ
thống.
Quan hệ vào ra ca một hệ thống ri rạc còn được biểu diễn như hình 1.1.
( ) ( )
T
x n y n

Hình 1.1. Ký hiệu một hệ thống ri rạc
1.2. H thng tuyn tính
Gọi y
1
(n) và y
2
(n) lần lượt là đáp ng ca hệ thống tương ng với các tác động x
1
(n) và
x
2
(n), hệ thống là tuyến tính nếu và chỉ nếu:
   
 
 
 
 
 
   
1 2 1 2 1 2
. . . . . .T a x n b x n aT x n bT x n a y n b y n    

với a, b là 2 hằng số bất kỳ và với mọi n.

1.3. H thng bt bin theo thi gian
Một hệ thống là bất biến theo thi gian nếu và chỉ nếu tín hiệu vào bị dịch n
d
mẫu thì đáp
ng cũng dịch n
d
mẫu, ta có:
Nếu
   
 
y n T x n

   
1 d
x n x n n

thì
   
 
 
 
 
11

dd
y n T x n T x n n y n n    

1.4. H thng tuyn tính bt bin theo thi gian (LTI)
1.4.1. Định nghĩa:
Hệ thống tuyến tính bất biến theo thi gian là hệ thống thỏa mãn đồng thi hai tính chất

tuyến tính và bất biến.

Nhóm 10 2

Quan hệ vào/ra ca hệ thống LTI được xác định bi tổng chập sau:
( ) ( ) ( )
k
y n x k h n k





và được ký hiệu bằng:
     
*y n x n h n

Từ đó phương trình 1.30 ta thấy một hệ thống LTI hoàn toàn có thể được đặc tả bi đáp
ng xung h[n] ca nó và được mô hình hóa như hình 1.1
x[n] y[n]

Hình 1.2. Mô hình hóa hệ thống LTI
1.4.2. Ghép nỗi tiếp hệ thống LTI:
Hai hệ thống LTI có đáp ng xung lần lượt là h1[n] và h2[n] ghép nối tiếp với nhau như
trên hình 1.3 thì hệ thống tổng thể có đáp ng xung :
     
1 * 2h n h n h n

x[n] y[n] x[n] y[n]


Hình 1.3. Mô hình hóa hai hệ thống LTI ghép nối tiếp.
1.4.3. Mô phỏng hệ thống LTI trong Matlab:
Để mô phỏng các hệ thống thi gian ri rạc LTI, có thể dùng hàm filter. Lệnh này có
nhiều phiên bản, chẳng hạn khi viết:
 
,,y filter num den x

Trong đó: x là vecto tín hiệu lối vào
   
0 1 0 1
;
NN
num b b b den a a a   
là các vecto hệ số ca hệ thống
y là vecto lối ra
Tín hiệu lối ra y[n] cũng có thể được tính nếu ta dùng lệnh

 
, , , y filter num den x ic

Trong đó:
     
1 2 ]]ic y y y N    
là vecto ca các điều kiện ban đầu
1.5. Mô phng h thng tuyn tính và phi tuyn
Ta nghiên cu tính tuyến tính ca hệ thống sau:
           
0.4 1 0.75 2 2,2403 2,4908 1 2,2403 2y n y n y n x n x n x n       
(1.1)
h[n]

h
1
[n]
h
2
[n]
h[n]
Nhóm 10 3

với 3 tín hiệu vào là
         
1 ; 2 1 2x n x n và x n ax n bx n
và tín hiệu vào ban đầu là 0
Chương trình sau dùng để mô phỏng hệ thống trên:
%P1_1: Nghien cuu tinh chat tuyen tinh
va phi tuyen
%phat tin hieu vao
clf
n=0:40; a=2; b=-3;
x1=cos(2*pi*0.1*n);
x2=cos(2*pi*0.4*n);
x=a*x1+b*x2;
num=[2.2403 2.4908 2.2403];
dem=[1 -0.4 0.75];
ic=[0,0]; %điều kiện ban đầu là 0
y1=filter(num,dem,x1,ic); %tính y1(n)
y2=filter(num,dem,x2,ic); %tính y2(c)
y=filter(num,dem,x,ic); %tính y[n]
yt=a*y1+b*y2;
%vẽ tín hiệu ra

subplot(3,1,1);
stem(n,y);grid;
xlabel('chi so n'); ylabel(' bien do');
title('loi ra cua y[n]=T{ a*x1[n]+b*x2[n] }')
subplot(3,1,2);
stem(n,yt);grid;
xlabel('chi so n'); ylabel('bien do');
title(' loi ra cua y[n]=a*y1[n]+b*y2[n]');
%sai số
subplot(3,1,3);
ys=yt-y;
stem(n,ys); grid;
xlabel('chi so n'); ylabel('bien do');
title('sai so');


Hình 1.4. Nghiên cu tính tuyến tính ca hệ thống có phương trình (2.1).
Từ kết quả mô phỏng trên ta thấy sai số giữa yt và y là ys=yt-y rất nhỏ nên ta có xem hệ
thông trên là một hệ thống tuyến tính

Nhóm 10 4

1.6. Mô phng h thng bt bin vi thi gian
Bây gi ta nghiên cu tính bất biến với thi gian thông qua mô phỏng hệ thống có phương
trình sau:

         
2.2403 2.4908 1 2.2403 2 0.4 1y n x n x n x n y n      
(1.2)
Mục đích ca chương trình là tìm tín hiệu lối ra y[n] đối với 2 tín hiệu lối vào x[n] x[n-n

0
]
%P1_2 Nghiên cu tính bất biến với thi gian
clf
n=0:40;
n0=10;
a=0.3;b=-2;
%tín hiệu vào
xn=a*cos(2*pi*0.1*n)+b*cos(2*pi*0.4*n);
%tín hiệu trễ
xn0=[zeros(1,n0) xn];
num=[2.2403 2.4908 2.2403];
den=[1 -0.4 0.75];
ic=[0 0];
yn=filter(num,den,xn,ic);
yn0=filter(num,den,xn0,ic);
subplot(2,1,1); stem(n,yn);
xlabel('chi so thoi gian n');
ylabel('bien do');
title('tin hieu ra y[n]');
subplot(2,1,2);stem(n,yn0(1:41));
xlabel('chi so thoi gian n');
ylabel('bien do');
title('tin hieu ra do vao tre x[n-10]');

Hình 1.5. Nghiên cu tính bất biến với thi gian ca hệ thống có phương trình (1.2).
Theo kết quả mô phỏng trên ta thấy tín hiệu sau khi trễ không bị thay đổi theo thi gian từ
đó ta có thể kết luận hệ thống trên là hệ thống bất biến với thi gian.

Nhóm 10 5


1.6. Xác đnh đáp ng xung đn v của h thng LTI
Trong Matlab, ngưi ta sử dụng lệnh
 
,,h impz num den N
để tính đáp ng xung ca hệ
thống LTI. Chương trình sau cho phép tính và vẽ đáp ng xung ca hệ thống có phương trình:
 
   
     
0.4 1 0.75 2 2.2403 2.4908 1 2.2403 2 y n y n y n x n x n x n       
(1.3)
%P1_3 Tính đáp ng xung đơn vị
clf
N=40;
num=[2.2403 2.4908 2.2403];
den=[1 -0.4 0.75];
h=impz(num,den,N);
stem(h);
xlabel('chi so thoi gian n');
ylabel('bien do');
title('dap ung xung'

Hình 1.6. Đáp ng xung đơn vị ca hệ thống có phương trình (1.3)
1.7. Ghép ni tip các h thng LTI
Trong thực tế ngưi ta thưng ghép nối tiếp các hệ thống LTI nhân quả bậc thấp (thưng là
bậc 2) với nhau để được các hệ thống bậc cao. Chẳng hạn ngưi ta ghép 2 hệ thống bậc 2 có
phương trình sai phân:
           
1 0.9 1 1 0,8 1 2 0.3 0.3 1 0.4 2y n y n y n x n x n x n        

(1.4)

           
2 0.7 2 1 0.85 2 2 0.2 1 0.5 1 1 0.3 1 2y n y n y n y n y n y n        
(1.5)
để thu được hệ thống bậc 4 có phương trình:
         
1.6 1 2.28 2 1.325 3 0.68 4y n y n y n y n y n        


         
0.06 0.19 1 0.27 2 0.26 3 0.12 4x n x n x n x n x n        
(1.6)
Nhóm 10 6

Chương trình sau mô phỏng hệ thống bậc 4 vơí phương trình (1.6) và hệ thống nối tiếp 2
hệ thống bậc 2 (1.4) (1.5). Trong chương trình này tín hiệu x[n] là tín hiệu lối vào ca hệ thống
bậc 4 (1.6) có tín hiệu ra là y[n].Sau đó áp dụng tín hiệu lối vào x[n] này cho hệ thống bậc 2 với
phương trình (1.4) để tín hiệu ra y1[n] tiếp đên dùng y1[n] làm tín hiệu lối vào cho hệ thống bậc
2 có phương trình (1.5) để tìm lối ra y2[n] để xác định sai số thực hiện.tất cả tín hiệu được hiển
thị trên hình 1.7 .
%P1_4 ghép nối tiếp hai hệ thống LTI
clf;
x=[1 zeros(1,40)]; %tín hiệu lối vào x[n]
n=0:40;
%các hệ số ca phương trình bậc 4
den=[1 1.6 2.28 1.325 0.68];
num=[0.06 -0.19 0.27 -0.26 0.12];
%Tính tín hiệu lối ra ca hệ thống bậc 4
y=filter(num,den,x);

%Các hệ số ca phương trình bậc 2
num1=[0.3 -0.2 0.4]; den1 = [1 0.9 0.8];
num2=[0.2 -0.5 0.3]; den2 = [1 0.7 0.85];
yl=filter(num1,den1,x); %tính y1[n]
y2=filter(num2,den2,yl); % tính y2[n]
d=y-y2 ; %tính sai số
%Vẽ các tín hiệu ra
subplot(3,1,1);
stem(n,y); grid;
ylabel('Bien do');xlabel('chi so thoi gian n');
title('tin hieu ra cua phuong trinh bac 4');
subplot(3,1,2);
stem(n,y2); grid;
ylabel('Bien do');xlabel('chi so thoi gian n');
title('loi ra cua he thong noi tiep');
subplot(3,1,3);
stem(n,d);grid;
ylabel('bien do');xlabel('chi so thoi gian n');
title('sai so tin hieu loi ra (bac 4 - bac 2)');

Hình 1.7. Tín hiệu ca hệ thống ghép nối tiếp
Từ kết quả mô phỏng trên ta thấy sai số tín hiệu lối ra rất nhỏ cho nên hệ thống có phương
trình bậc 4 tương đương với hai hệ thống có phương trình bậc 2 ghép nối tiếp với nhau.
Nhóm 10 7

Phn 2: Bin đổi Fourier DFT
2.1. Tính DFT X[k] của dãy tín hiu ri rc x[n].
2.1.1. Định nghĩa:
DFT là biến đổi Fourier ri rạc ca dãy hữu hạn x[n] với
01nN  

được xác định bằng
biểu thc sau:

2
1
0
[ ] [ ]e
j kn
N
N
n
X k x n






(2.1)
Với
0,1, , 1kN

Công thc (2.1) được gọi là công thc phân tích tín hiệu, trong khi

2
1
0
1
[ ] [ ]
2

j kn
N
N
k
x n X k e





(2.2)
Với
0,1, , 1nN

được gọi là công thc tổng hợp tín hiệu. Đó là biến đổi Fourier nghịch đảo (IDFT). Hai công thc
(2.1) và (2.2) tạo thành cặp biến đổi Fourier ri rạc.
Công thc (2.1) còn được biểu diễn dưới dạng:

2/
[ ] ( ) , 0,1 , 1
i
kN
X k X e k N



  
(2.3)
2.1.2. Tính DFT X[k].
Trong Matlab, thì X[k] được tính nh hàm fft. Hmaf này có hai dạng. Đó là fft(x) cho DFT

X[k] ca dãy x[n]; cả hai dãy có cùng chiều dài như nhau. Trong khi lệnh fft(x,M) tính DFT M
điểm ca dãy x[n] có chiều dài N với M ≥ N. Nếu M > N thì dãy x[n] phải được điền thêm M-N
số 0 trước khi tính DFT.
Ta xét ví dụ sau: Tính DFT ca dãy sau:






    


Chương trình sau minh họa tính DFT ca x[n]:
%P2_1 Tính DFT
N=input('chieu dai N cua day =');
M=input('chieu dai M cua X[k]=');
%phát ra dãy x[n]
x=[ones(1,N)];
%tinh DFT M diem
X=fft(x,M);
Nhóm 10 8

%vẽ dãy x[n] va X[k]
t=0:1:N-1;
stem(t,x)
title('day x[n]')
xlabel('chi so thoi gian n'); ylabel('bien do');
pause
subplot(2,1,1)

k=0:1:M-1;
stem(k,abs(X))
title('Bien do cua DFT |X[k]|')
xlabel('chi so tan so k'); ylabel('bien do');
subplot(2,1,2)
stem(k,angle(X))
title('Pha cua DFT X[k]')
xlabel('chi so tan so k'); ylabel('pha cua X[k]');
Với N=8, M=16 ta có đồ thị mô tả kết quả ca chương trình trên cho trên hình 2.1.

a)
Nhóm 10 9


b)
Hình 2.1. a) Thi gian ca dãy x[n]; b) Biểu diễn thi gian biên độ và pha DFT dãy x[n].
2.2. Phân tích phổ dùng DFT
ng dụng quan trọng nhất ca DFT là tính thành phần phổ ca tín hiệu lối vào dù nó là
thi gian ri rạc hay liên tục. Chương trình Matlab tính phổ ca tín hiệu gồm hai thành phần
có tần số 0,22 (biên độ 0.5) và 0,34 (biên độ 1) được thực hiện  chương trình sau đây.
%P2_2 Phân tích phổ dùng DFT
clf;
N=input('chieu dai cua tin hieu N=');
M=input('so diem tinh DFT M=');
n=0:N-1;
x=0.5*sin(2*pi*n*0.22) + sin(2*pi*n*0.34);
Fx=fft(x,M);
k=0:M-1;
stem(k,abs(Fx));grid
xlabel('chi so tan so k'); ylabel('bien do');

title(['N=',num2str(N),',M=',num2str(M)]);
Kết quả phân tích phổ cho trên hình 2.2 với N=16, M=128
Nhóm 10 10


Hình 2.2. Phân tích phổ dùng DFT
Cũng có thể dùng DFT để tính mật độ phổ công suất ca tín hiệu nhiễm tạp âm như trong
chương trình sau:
%P2_3 Tính mật độ phổ công suất
Fs = 1000; % tấn số lấy mẫu
T = 1/Fs; % chu kỳ mẫu
L = 1000; % độ dài ca tín hiệu
t = (0:L-1)*T;
x = 0.7*sin(2*pi*50*t) + sin(2*pi*120*t); % tín hiệu chưa nhiễm tạp âm
y = x + 2*randn(size(t)); % tín hiệu bị nhiễm tạp âm
figure(1)
plot(Fs*t(1:50),y(1:50))
title('Tin hieu nhiem tap am')
xlabel('thoi gian (milliseconds)')
NFFT = 2^nextpow2(L);
Y = fft(y,NFFT)/L;
f = Fs/2*linspace(0,1,NFFT/2+1);
figure(2)
plot(f,2*abs(Y(1:NFFT/2+1)))
title('Mat do pho cong suat')
xlabel('Tan so (Hz)')
ylabel('|Y(f)|')
Nhóm 10 11



a)

b)
Hình 2.3 Tín hiệu nhiễm tạp âm a) và mật độ phổ công suất ca nó b).

Nhóm 10 12

Phn 3: X lý s tín hiu thi gian liên tc
Trong thế giới thực hàng ngày, các thông tin đều xuất phát từ các nguồn vật lý; chẳng hạn
như từ các dao động ca sóng biển, từ chuyển động ca cá, ca tầu biển từ sự hoạt động ca
máy móc v.v… Các nguồn gốc vật lý này đều được truyển đi dưới dạng các tín hiệu thi gian
liên tục. Vì vậy để thu nhận thông tin về các nguồn vật lý này, ta phải xử lý các tín hiệu đó.
Các thuật toán xử lý số DSP thưng được áp dụng để xử lý các tín hiệu thi gian liên tục này.
Với mục đích đó, tín hiệu thi gian liên tục x
a
(t) cần được chuyển đổi thành tín hiệu thi gian
ri rạc tương đương x[n], thuật toán DSP xử lý tín hiệu tương đương này sau đó chuyển đổi
tín hiệu thi gian ri rạc đã được xử lý thành tín hiệu thi gian liên tục tương đương y
a
(t).
3.1. Ly mu tín hiu
Khi lấy mẫu một tín hiệu ta cần chọn tần số lấy mẫu sao cho tần số lấy mẫu f
m
phải thỏa
mãn điều kiện Nyquist; tc là tần số lấy mẫu phải lớn hơn hoặc ít nhất phải bằng hai lần tần
số lớn nhất f
c
ca tín hiệu

2

mc
ff

nếu không thì hiện tượng chồng phổ sẽ xảy ra.
Ta thực hiện thực nghiệm việc lấy mẫu bằng việc lấy mẫu tín hiệu hình sin
%P3_1 Lấy mẫu tín hiệu hình sin
clf;
t=0:0.0005:1;
f=3; %tần số tín hiệu
xa=cos(2*pi*f*t);
subplot(2,1,1);
plot(t,xa);grid;
xlabel('thoi gian,s');
ylabel('bien do');
title('tin hieu thoi gian lien tc x(a)');
subplot(2,1,2);
fm=10; %tần số lấy mẫu
T=1/fm;
n=0:T:1;
length(n);
xs=cos(2*pi*f*n);
k=0:length(n)-1;
stem(k,xs);grid;
xlabel('so mau lay trong 1s');
ylabel('bien do');
title('tin hieu thoi gian roi rac x[n]');
Đồ thị cho trên hình 3.1
Nhóm 10 13



Hình 3.1. Lấy mẫu một tín hiệu hình sin.
3.2. Chuyn đổi A/D
Để chuyển đổi tín hiệu đã được lấy mẫu thành tín hiệu số cần chuyển đổi A/D. Trong các
ng dụng ca DSP, lối ra ca bộ chuyển đổi A/D thưng là mã nhị phân.
Bây gi ta khảo sát hoạt động ca bộ lượng tử hóa ca bộ chuyển đổi A/D sigma-delta
khi tín hiệu vào hình sin tần số 0,02Hz. Chương trình sau thực hiện thực nghiệm này.
%P3_2 Lượng tử hóa
clf;
%phát ra tín hiệu lối vào
N=input('chieu dai cua day loi vao N=');
A=input('bien do vua loi vao A=');
w0=2*pi*0.02;
n=1:N;
m=n-1;
x=A*cos(w0*m);
plot(m,x);
xlabel('chi so thoi gian');
ylabel('bien do');
title('tin hieu so loi vao');
pause
%phat loi ra luong tu
x=(x)/(A);
y=zeros(1,N+1);
a=zeros(1,N+1);
e=0.01;
for k=2:N+1
a(k)=x(k-1)-e;
if a(k)>=0; y(k)=1;
else y(k)=-1;
end e=y(k)-a(k);

end
yn=y(2:N+1);
stairs(m,yn) %ve loi ra luong tu
axis([0 N+1 -1.2 1.2]);
xlabel('thoi gian');
ylabel('bien do');
title('loi ra so cua bo luong tu sigma-delta');
Nhóm 10 14


a)


b)
Hình 3.2. a) Tín hiệu tương tự lối vào; b) tín hiệu lối ra ca bộ lượng tử hóa.
3.3 Chuyn đổi D/A
Sau khi đã lượng tử bằng bộ chuyển đổi A/D muốn khôi phục lại tín hiệu đấy tr lại tín
hiệu tương tự ta cần dùng đến bộ chuyển đổi D/A. Quá trình chuyển đổi D/A gồm hai bước:
bước đầu tiên là chuyển đổi dãy số lối vào thành dạng soáng thi gian liên tục dạng bậc thàn
Nhóm 10 15

nh một bộ chuyển đổi D/A với một duy trì bậc không  lối ra ca nó, tiếp đến bước th hai
là một bộ lọc thông thấp khôi phục tín hiệu analog ban đầu.
Ta khảo sát bộ chuyển đổi này thông qua việc khôi phục lại tín hiệu trong phần 3.2. Ta
thêm đoạn chương trình sau vào chương trình trong phần 3.2
% A/D sang D/A
pause
Y=fft(yn);
H=[1 1 0.5 zeros(1,N-5) 0.5 1]; % mạch lọc thông thấp
YF=Y.*H; %lọc

out=ifft(YF);
plot(m,out);
xlabel('thoi gian'); ylabel('dien do');
title('loi ra analog da duoc loc thong thap');
Khi đó tín hiệu được khôi phục trên hình 3.2

Hình 3.3. Tín hiệu tương tự lối ra.


Nhóm 10 16

Phn 4: Các kỹ thut thit k mch lc s
Thiết kế mạch lọc là xác định được hàm truyền H(z) ca mạch lọc đó là đáp ng tần số
)(
j
He

ca nó thỏa mãn các yêu cầu thiết kế. Sau khi thu được hàm truyền H(z) đến bước
th hai là thể hiện hàm truyền đó dưới dạng các cấu trúc thích hợp nhất. Đó là sự thực thi các
mạch lọc. Có hai loại mạch lọc chính là FIR và IIR.
4.1. Thit k mch lc s IIR
Thiết kế mạch lọc IIR là thiết kế kế mạch lọc thi gian – ri rạc bao gồm phép biến đổi
mạch lọc tương tự thành một mạch lọc số thỏa mãn các quy định đã được mô tả .
Một số thiết kế mạch lọc IIR
1. Thiết kế mạch lọc số bằng sự bất biến xung
2. Thiết kế mạch lọc thông thấp elliptic và Butterworth
3. Thiết kế mạch lọc thông dải butterworth
4. ….
4.1.1. Thiết kế mạch lóc số bằng sự bất biến xung
Đây 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à:

[ ] ( ) ( )
aa
t nT
h n h t h nT



Với h[n] là đáp ng xung ca mạch lọc số còn h
a
(t) là đáp ng xung ca mạch lọc tương
tự. Trong Matlab kỹ thuật bất biến xung được thực thi nh hàm imp_invr. Để hiểu rõ hơn ta
thực hiện thực nghiệm sau:
Biến đổi mạch lọc tương tự sau thành mạch lọc số H(z) dùng kỹ thuật bất biến xung với
T=0,1
2
1
()
56
a
s
Hs
ss




Chương trình thực hiện thực nghiệm trên
%P41_1 bất biến xung

c=[1,1];
d=[1,5,6];
T=0.1;
[b,a]=imp_invr(c,d,T);
x=impseq(0,-2,-30);
Khi đó ta có các hệ số ca hàm truyền ca mạch lọc số:
Nhóm 10 17

b= 1.0000 -0.8966 và a= 1.0000 -1.5595 0.6065
Do vậy hàm truyền có dạng sau:

1
12
1 0,8966
()
1 1,5595 0,6065
z
Hz
zz






4.1.2. Thiết kế mạch lọc thông thấp elliptic và Butterworth
Quá trình thiết kế mạch lọc có hai bước:
Bước 1: Xác định bậc ca mạch lọc N và thừa số chia thang tần số Wn. Ta thực hiện nh
lệnh
[N,Wn]=buttrord(Wp,Ws,Rp,Rs)

[N,Wn]=ellipord(Wp,Ws,Rp,Rs)
Trong đó: Wp=2fp/F và Ws=2fs/F là các tần số  méo dải thông và dải chặn. F là tần
số lấy mẫu còn fp và fs là tần số dải thông và dải chăn. Hai thông số khác là Rp và Rs lấy
theo dB.
Bước 2: Thiết kế mạch lọc. Ta sử dụng hàm sau:
[b,a]=butter(N,Wn)
[b,a]=ellip(N,Rp,Rs,Wn)
Khi đó hàm truyền thu được là:

0
1
()
1
N
m
m
m
N
k
k
k
bz
Hz
az










Ta xét thực nghiệm sau: : Thiết kế mạch lọc elliptic và butterworth thông thấp với các quy
định sau: Tần số mép ca thông dai fp=800Hz, mép ca dải chặn fs=1kHz, độ mấp mô ca
dai thông 0.5dB, độ suy giảm cực tiểu ca dải chặn 40dB và tần số lấy mẫu F=4kHz
Chương trình thực hiện cho thực nghiệm trên:
%thiết kế mạch lọc elliptic
[N,Wn]=ellipord(0.4,0.5,0.5,40);
[b,a]=ellip(N,0.5,40,Wn)
Kết quả:
b = 0.0528 0.0797 0.1295 0.1295 0.0797 0.0528
a = 1.0000 -1.8107 2.4947 -1.8801 0.9537 -0.2336
% thiết kế mạch lọc butterwoth
[N,Wn]=buttord(0.4,0.5,0.5,40);
[b,a]=butter(N,Wn)
Kết quả:
Nhóm 10 18

b= 0.0000 0.0000 0.0003 0.0019 0.0070 0.0195 0.0423 0.0725 0.0997
0.1107 0.0997 0.0725 0.0423 0.0195 0.0070 0.0019 0.0003 0.0000
0.0000
a= 1.0000 -2.8967 6.2773 -9.2059 10.9677 -10.3830 8.2442 -5.4399 3.0421
-1.4302 0.5678 -0.1882 0.0517 -0.0116 0.0021 -0.0003 0.0000 -0.0000
0.0000
4.1.3. Thiết kế mạch lọc thông dải Butterworth
Ta xét thực nghiệm mẫu sau: thiết kế mạch lọc thông dải lý tưng và Butterworth có dải
thông tử 200Hz đến 300Hz và tần số lấy mẫu 1000Hz. Chương trình sau mô tả thực nghiệm
trên.
%mạch lọc lý tưng

f=[0 0.4 0.4 0.6 0.6 1];
H=[0 0 1 1 0 0];
F=1000;
fn=f*F/2;
subplot(2,2,1);
plot(fn,H);
title('dap ung tan so mong muon');
%mạch lọc butterworth
N=8 ;

Bp=[.4 .6]
Rp=.1;
[Bb,Ab]=butter(N,Bp)
h=[abs(freqz(Bb,Ab,n))];
subplot(2,1,2);
plot(fn,H,f,h);
Title('dap ung thuc va dap ung mong
muon');
xlabel('Tan so,Hz'); ylabel('Bien do');

Hình 4.1. Đáp ng tần số ca mạch lọc IIR thông dải Butterworth.
Từ đó ta thấy thực tế không thể thiết kế được một mạch lọc lý tưng được.
Nhóm 10 19

4.1.4. Mô phỏng quá trình lọc số dùng mạch lọc IIR
 đây ta sẽ sử dụng mạch lọc IIR elliptic trong lọc tín hiệu lối vào mong muốn. Chương
trình sau mô tả sự lọc đó.

%P4_1_4 lọc số IIR dùng elliptic
clf;

% xac dinh tin hieu vao
k=0:50;
x1=1.5*cos(0.2*pi*k);
x2=2*cos(0.7*pi*k);
x=x1+x2;
% Chon ham truyen cua mach loc
[N,Wn]=ellipord(0.25,0.55,0.5,50);
[num,den]=ellip(N,0.5,50,Wn);
y=filter(num,den,x);
% Ve tin hieu vao va ra
subplot(2,1,1);
stem(k,x); grid; axis([0 50 -4 4]);
xlabel('Chi so thoi gian n');
ylabel('Bien do');
title('Tin hieu so loi vao');
subplot(2,1,2);
stem(k,y); grid; axis([0 50 -4 4]);
xlabel('Chi so thoi gian n');
ylabel('Bien do');
title('Tin hieu loi ra');

Hình 4.2. Tín hiệu lối vào và tín hiệu lối ra ca mạch lọc số IIR
4.2. Thit k mch lc s FIR
Bộ lọc FIR là bộ lọc có đáp ng xung chiều dài hữu hạn, tc là đáp ng xung chỉ khác
không trong một khoảng có chiều dai hữu hạn N (từ 0 đến N-1). Bộ lọc FIR với bậc cảu bộ
lọc là N được biểu diễn như hình sau:

Nhóm 10 20



x[n] ……

h
0
h
1
h
2
h
N-2
h
N-1

……… y
n
Hình 4.3. Cấu trúc ca bộ lọc FIR truyền thông
Trong đó: x[n] là tín hiệu lối vào ca mạch
y[n] là tín hiệu lối ra ca mạch
h[n] là đáp ng xung ca mạch
Lối ra y[n] và lối vào x[n] liên hệ với nhau bi công thc
1
0
[ ] [ ] [ ]
N
k
y n h k x n k






4.2.1. Quá trình thiết kế một mạch lọc FIR.
Gồm hai bước:
Bước 1: Tìm bậc N ca mạch lọc FIR từ các quy định đã cho.
Để xác định bậc ca mạch lọc FIR mong muốn chúng ta sử dụng công thc gần đúng ca
Kaiser:

10
20log ( 13
14,6( ) / 2
ps
sp
N

  




Trong Matlab, ta dùng hàm remezord để tìm bậc ca hàm truyền
[N,fpts,mag,wt]=remozord(fedge,mval,dev)
[N,fpts,mag,wt]=remozord(fedge,mval,dev,FT)
Bước 2: Xác định hàm truyền ca mạch lọc
Ta sử dụng hàm remez(N,fpts,mag,wt) để thiết kế mạch lọc
Để hiểu rõ hơn ta xét thực nghiệm sau: Thiết kế mạch lọc dải thông và dải chăn có tần số
 mép dải thông fb=800Hz tần số mép dải chặn fs=1000Hz độ mấp mô ca dai thông là
0,5dB (δp=0,0559) và độ suy giảm dải chặn là 40dB (δs=0,01) tần số lấy mẫu F=4000Hz.
Chương trình sau mô tả cho thực nghiệm.

delay

x
+
delay
x
+
delay
x
x
x
+
+

×