Giáo trình thực tập chuyên đề phân tích và xử lý tín hiệu số (DSP) - Pdf 28

Trường Đại Học Khoa Học Tự Nhiên Giáo Trình Thực Tập Chuyên Đề 4
Khoa Vật Lý- Vật Lý Kỹ Thuật, Bộ Môn Vật Lý Điện Tử Phân Tích Và Xử Lý Tín Hiệu Số (DSP)
BÀI 1: CÁC TÍN HIỆU CƠ BẢN
1.1 Định nghĩa: Tín hiệu là sự biến thiên biên độ theo thời gian.
1.2 Phân loại tín hiệu:
Xét về dạng sóng và sự liên tục, người ta phân tín hiệu ra thành 2 loai cơ bản là tín hiệu
tương tự (analog) hay liên tục thời gian và tín hiệu số (digital) hay rời rạc thời gian
Tín hiệu biến thiên liên tục về biên độ là tín hiệu tương tự, thường đươc ký hiệu là x(t).
Tín hiệu thời gian rời rạc được biểu diễn như một dãy số nguyên từ -∞ đến ∞, ký hiệu là
x[n].
1.3 Một số tín hiệu tương tự cơ bản:
1.3.1 Tạo sóng vuông
f=10000;
t=0:1/f:1.5;
x=square(2*pi*50*t,50);
plot(t,x);
axis([0 0.1 -2 2]);
1.3.2 Tạo sóng sin
f=10000;
t=0:1/f:1.5;
x=sin(2*pi*50*t);
plot(t,x);
axis([0 0.1 -2 2]);
1.3.3 Tạo sóng răng cưa
f=10000;
t=0:1/f:1.5;
x=sawtooth(2*pi*50*t);
plot(t,x);
axis([0 0.1 -2 2]);
Trang 1
Trường Đại Học Khoa Học Tự Nhiên Giáo Trình Thực Tập Chuyên Đề 4

stem(n,unit);
axis([0 10 0 1.2])
Để biểu diễn tín hiệu bậc đơn vị có dạng tổng quát
Với
1 0 2
n n n≤ ≤
, ta dùng hàm Matlab có cú pháp sau:
function [x,n] = stepseq(n0,n1,n2)
n=[n1:n2];
x=[(n-n0)>=0];
1.4.3 Tạo tín hiệu dốc đơn vị
n=0:1:10;
y=n;
stem(n,y);
1.4.4 Tạo tín hiệu mũ thực
n=0:1:20;
y=0.9.^n;
stem(n,y);
Trang 3
Trường Đại Học Khoa Học Tự Nhiên Giáo Trình Thực Tập Chuyên Đề 4
Khoa Vật Lý- Vật Lý Kỹ Thuật, Bộ Môn Vật Lý Điện Tử Phân Tích Và Xử Lý Tín Hiệu Số (DSP)
1.4.5 Tạo tín hiệu mũ phức:
n=0:1:10;
y=exp((2+3j)*n;
stem(n,y);
1.5 Các phép toán trên chuỗi tín hiệu rời rạc
1.5.1 Phép cộng hai tín hiệu
Phép cộng hai tín hiệu trong Matlab được thực hiện bởi toán tử “+”. Tuy nhiên, chiều dài của hai
tín hiệu phải bằng nhau. Nếu dài dài của hai tín hiệu khác nhau, hay gốc toạ độ của 2 chuỗi tín hiệu khác
nhau thì ta không thể sử dụng trực tiếp toán tử “+”. Do đó , ta cần phải biến đổi x

hiệu x(n) mà chỉ có vecto n được dịch chuyển đi
n0 mẫu
Phép dịch được thực hiện bởi hàm
Matlab sau:
function[y n]=sigshift(x,m,n0)
n=m+n0;
y=x;
Tín hiệu x(n) được gấp qua gốc n=0 để tạo
thành tín hiệu y(n)=x(-n).
Phép gấp được thực hiện bởi hàm Matlab
sau:
function[y n]=sigfold(x,n)
y=fliplr(x);
n=-fliplr(n);
1.6 Bài tập
1>Vẽ tín hiệu lũy thừa thực có biểu thức x(n)=0.2(1.2)
n
.Vẽ lại tín hiệu trên sau khi đã trì hõan
N=10 mẫu.
2> Vẽ tín hiệu sin thực rời rạc thờ i gian x(n)=1.5 sin(0.2πn).Tín hiệu tuần hoàn với chu kỳ, tần số
bao nhiêu?
Trang 5
Trường Đại Học Khoa Học Tự Nhiên Giáo Trình Thực Tập Chuyên Đề 4
Khoa Vật Lý- Vật Lý Kỹ Thuật, Bộ Môn Vật Lý Điện Tử Phân Tích Và Xử Lý Tín Hiệu Số (DSP)
Biến đổi chương trình trên để vẽ và hiển thị dãy có chiều dài N=50 mẫu, tần số 0.08, biên độ 2.5 và độ
dịch pha 90
o
.
3>Vẽ tín hiệu sin phức x[n]=e
(-0.1+j0.3)n

Lọc FIR: Nếu đáp ứng xung của hệ thống LTI là hữu hạn thời gian thì hệ thống được gọi là lọc FIR
Lọc IIR: Nếu đáp ứng xung của hệ thống LTI là vô hạn thời gian thì hệ thống được gọi là lọc IIR
2.2 Đáp ứng xung và phương trình sai phân
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 thời
gian rời rạc LTI.
Với num: là các hệ số tín hiệu vào, den: hệ số các tín hiệu ra,N: số đáp ứng xung.
Để mô phỏng các hệ thống rời rạc thời gian LTI nhân quả có phương trình sai phân
0 0
[ ] [ ]
N M
k m
k m
a y n k b x n m
= =
− = −
∑ ∑
Trong Matlab ta có thể sử dụng lệnh y=filter(num,den,x) hay y=filter(num,den,x,ic)
Với ic=[y[-1] y[-2] …y[-N]] là vecto điều kiện ban đầu
Ví dụ: Tính và vẽ 50 đáp ứng xung của hệ thống có phương trình sai phân sau:
y[n]-0.4y[n-1]+0.75y[n-2]=2.2403x[n]+2.4908x[n-1]+2.2403x[n-2]
Chương trình:
clf;
N=50;
num=[2.2403 2.4908 2.2403];
den=[1 -0.4 0.75];
h=impz(num,den,N);
stem(h);
Trang 7
Trường Đại Học Khoa Học Tự Nhiên Giáo Trình Thực Tập Chuyên Đề 4
Khoa Vật Lý- Vật Lý Kỹ Thuật, Bộ Môn Vật Lý Điện Tử Phân Tích Và Xử Lý Tín Hiệu Số (DSP)

[n]= cos(0.2πn), x
2
[n]=cos(0.8πn), a=2, b=-3.
Chương trình:
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];
den=[1 -0.4];
y1=filter(num,den,x1);
y2=filter(num,den,x2);
y=filter(num,den,x);
yt=a*y1+b*y2;
d=y-yt;
subplot(3,1,1);
stem(n,y);
subplot(3,1,2);
stem(n,yt);
subplot(3,1,3);
stem(n,d);
Trang 8
Trường Đại Học Khoa Học Tự Nhiên Giáo Trình Thực Tập Chuyên Đề 4
Khoa Vật Lý- Vật Lý Kỹ Thuật, Bộ Môn Vật Lý Điện Tử Phân Tích Và Xử Lý Tín Hiệu Số (DSP)
2.3.2. Tính chất bất biến thời gian
Nếu y’[n-k]=y[n-k]: hệ thống bất biến thời gian
Nếu y’[n-k]≠y[n-k]: hệ thống bất biến thời gian
Hệ thống bất biến thời gian là hệ thống hễ có tác động x(n) dịch k mẫu thì phản ứng y(n) cũng chỉ dịch
cùng chiều k mẫu mà không bị biến đổi dạng.

thì có thể coi tổng S(k) hội tụ
Ví dụ: Kiểm tra tính ổn định của hệ thống LTI có phương rình sai phân:
y[n]=x[n]-0.8x[n-1]-1.5y[n-1]-0.9y[n-2]
Chương trình:
clf;
num=[1 -0.8];
den=[1 1.5 0.9];
N=200;
h=impz(num,den,N+1);
sum=0;
for k=1:N+1;
sum=sum+abs(h(k));
if abs(h(k))<10^(-6),break,end
end
n=0:N;
stem(n,h);
disp('Value=');
disp(abs(h(k)));
Value= 1.6761e-005
2 .4 Nhân chập
Quan hệ vào/ra của hệ thống LTI được xác định bởi tổng nhân chập:

[ ] [ ] [ ] [ ] [ ]
k k
y n h k x n k x k h n k
∞ ∞
=−∞ =−∞
= − = −
∑ ∑
Và được ký hiệu bằng y(n)=x(n)*h(n)

1. Tính và vẽ 45 mẫu đầu tiên đáp ứng xung của hệ thống LTI nhân quả sau:
y[n]+0.71y[n-1]-0.46y[n-2]-0.62y[n-3]=0.9x[n]-0.45x[n-1]-0.35x[n-2]+0.002x[n-3]
Viết chương trình Matlab tìm đáp ứng của hệ thống đối với xung bậc đơn vị của hệ thống đã cho.
Gợi ý: dùng hàm filter
2. Tính và vẽ đáp ứng xung đơn vị của hệ thống có phương trình sai phân
y[n]=x[n]-4y[n-1]+3x[n-2]+1.7y[n-1]-y[n-2]
Hệ thống này có ổn định không?
3. Thực hiện nhân chập 2 tín hiệu sau
x[n]= [0 1 2 3 4 0], h[n]=[0,2,0,2,0]
BÀI 3: LẤY MẪU VÀ KHÔI PHỤC TÍN HIỆU
3.1. Lấy mẫu tín hiệu
3.1.1 Định lý lấy mẫu
Sự lấy mẫu tín hiệu: là đổi một tín hiệu liên tục thời gian thành tín hiệu rời rạc thờ i gian, còn
được gọi là tín hiệu số .Vấn đề lấy mẫu phải như thế nào để từ các mẫu người ta có thể phúc hồi lại
tín hiệu tương tự ban đầu khi cần
Để các mẫu biểu diễn đúng tín hiệu tương tự, tức từ các mẫu ta có thể phục hồi tín hiệu tương tự ban
đầu, tốc độ lấy mẫu phải lớn hơn hay ít nhất là bằng hai lần tần số cao nhất của tín hiệu tương tự
Để giữ cho tần số lấy mẫu f
S
không lớn lắm thì f
M
phải được giới hạn bằng một lọc thông thấp thật hiệu
quả (cắt bỏ tất cả tần số lớn hơn f
M
của tín hiệu tương tự)

3.1.2 Lấy mẫu tín hiệu hình sin
Vì Matlab không thể phát ra tín hiệu thời gian liên tục đúng nghĩa của nó được, nên ta sẽ phát ra dãy
{xa[nT]} từ x
a

Ta phân tích
được
Để xác định được phổ biên độ, đầu tiên ta cần phải xấp xỉ tín hiệu tương tự thành tín hiệu có chu kỳ xác
định. Sử dụng xấp xỉ e
-5
≈0, ta lấy giới hạn của t trong khoảng [-0.005,0.005] (hay từ [-5,5] ms). Tương
tự để X
a
(jΩ) ≈0 thì ta tìm được tần số tối đa là 2π(2000).
Tín hiệu được vẽ theo chương trình sau:
Dt = 0.00005;
t = -0.005:Dt:0.005;
xa = exp(-1000*abs(t));
Wmax = 2*pi*2000;
K = 500; k = 0:1:K;
W = k*Wmax/K;
Xa = xa * exp(-j*t'*W) * Dt;
Xa = real(Xa);
W = [-fliplr(W), W(2:501)];
Xa = [fliplr(Xa), Xa(2:501)];
subplot(1,1,1)
subplot(2,1,1);plot(t*1000,xa);
xlabel('t in msec.'); ylabel('xa(t)')
title('Analog Signal')
subplot(2,1,2);plot(W/(2*pi*1000),Xa*1000);
xlabel('Frequency in KHz'); ylabel('Xa(jW)*1000')
title('Continuous-time Fourier Transform')
3.2. Hiện tượng biệt danh (chồng phổ)
Khi tín hiệu được lấy mẫu dưới mức, tức lấy mẫu ở tần số chậm hơn tốc độ Nyquist, thì khi
tái lập tín hiệu bằng cách lọc thì thành phần tần số cao của phổ lặp sẽ lẫn vào thành phần tần số cao của

K = 500; k = 0:1:K;
w = pi*k/K;
X = x * exp(-j*n'*w);
X = real(X);
w = [-fliplr(w), w(2:K+1)];
X = [fliplr(X), X(2:K+1)];
subplot(1,1,1)
subplot(2,1,1);plot(t*1000,xa);
xlabel('t in msec.'); ylabel('xa(t)')
title('Discrete Signal'); hold on
stem(n*Ts*1000,x); hold off
subplot(2,1,2);plot(w/pi,X);
xlabel('Frequency in pi units'); ylabel('X(w)')
title('Discrete-time Fourier Transform')
b) Fs=1000Hz, tín hiệu rời rạc thu được là x
2
(n)
Fs < 2F
M
nên tín hiệu được lấy mẫu dưới mức và xảy ra hiện tượng chồng phổ trong miền tần số
Chương trình
Dt = 0.00005;
t = -0.005:Dt:0.005;
xa = exp(-1000*abs(t));
Ts = 0.001; n = -25:1:25;
x = exp(-1000*abs(n*Ts));
K = 500; k = 0:1:K;
w = pi*k/K;
X = x * exp(-j*n'*w);
X = real(X);

Ts = 0.0002; % x
1
(n)
Fs = 1/Ts; n = -25:1:25; nTs = n*Ts;
x = exp(-1000*abs(nTs));
Dt = 0.00005;
t = -0.005:Dt:0.005;
xa = x * sinc(Fs*(ones(length(nTs),1)*t-nTs'*ones(1,length(t))));
error = max(abs(xa - exp(-1000*abs(t))))
plot(t*1000,xa);
xlabel('t in msec.'); ylabel('xa(t)')
title('Reconstructed Signal from x1(n) using sinc function'); hold on
stem(n*Ts*1000,x); hold off
error =
0.0363
error =
0.1852
3.4 Bài tập
Cho tín hiệu tương tự x
a
(t)=sin(20π t),0 ≤ t ≤ 1. Tín hiệu được lấy mẫu tại Ts=0.01s, 0.05s và 0.1s để có
tín hiệu rời rạc x(n).
a) Với mỗi Ts, vẽ x(n) tương ứng.
b) Khôi phục tín hiệu y
a
(t) từ các tín hiệu x(n) trên dùng hàm sinc (cho Δt=0.001) và nhận xét cho mỗi
trường hợp
BÀI 4 : PHÂN TÍCH TÍN HIỆU VÀ HỆ THỐNG
LTI TRONG MIỀN TẦN SỐ-BIẾN ĐỔI Z
4.1 Biến đổi Fourier rời rạc thời gian DTFT


− Ω
=−∞
Ω =

1
( ) ( )
2
jn
x n X e d
Π

−Π
= Ω Ω
Π

( )
n
x n

=−∞
< ∞

Ví dụ 2: xác định và vẽ DTFT cho tín hiệu sau: x(n)=[1 2 3 4 5] với 501 điểm trong khoảng [0,∏ ]
Chương trình
n = -1:3; x = 1:5;
k = 0:500; w = (pi/500)*k;
X = x * (exp(-j*pi/500)) .^ (n'*k);
magX = abs(X); angX = angle(X);
realX = real(X); imagX = imag(X);

plot(w/pi,angle(h)); title('Phase response');
4.3 Biến đổi z
4.3.1 Định nghĩa
Biến đổi z của tín hiệu rời rạc x(n) được định nghĩa là
Trong đó, z là biến số phức.
Định nghĩa trên còn được gọi là biến đổi z hai bên. Ta sẽ có biến đổi z một bên khi thay giới hạn từ 0
đến ∞.
Vùng hội tụ (ROC): là vùng chứa giá trị z sao cho |X(z)| hữu hạn.
4.3.2 Biến đổi z ngược
Biến đổi z ngược được định nghĩa như sau
Trong đó C là vòng tròn kín bao quanh gốc toạ độ nằm trong vùng hội tụ của X(z).
Phép biến đổi z cho phép chúng ta phục hồi lại dãy tín hiệu rời rạc x(n) khi biết biến đổi z của nó. Phép
biến đổi z ngược thường được sử dụng để tìm đáp ứng xung của lọc số.
Để tính biến đổi z ngược bằng phương pháp thặng dư, ta sử dụng hàm residuez để khai triển X(z) thành
các phân thức riêng sau đó dùng bảng biến đổi z để biến đổi z ngược cho mỗi phân thức riêng.
Khi dùng hàm residuez, X(z) phải được viết dưới dạng hữu tỷ trong đó tử số và mẫu số là những đa
thức viết theo luỹ thừa tăng dần của z
-1
.
Cú pháp hàm trong Matlab như sau: [R,p,C]=residuez (b,a)
Với b,a là hai vecto chứa hệ số của hai đa thức B(z) và A(z).
Vecto R chứa giá trị thặng dư, vecto p chưa các giá trị cực và vecto C chứa các số hạng trực tiếp.
Ví dụ: Thực hiện khai triển từng phần cho biểu thức sau
2
( )
3 4 1
z
X z
z z
=

1
0.5 0.5
( )
1
1
1
3
X z
z
z


= −


Để viết ngược lại biểu thức X(z) ta cũng có thể dùng hàm residuez với cú pháp [b,a]=residuez(R,p,C)
4.4 Giản đồ cực không
Biến đổi z X(z) của tín hiệu hay H(z) của hệ thống là một hàm hữu tỷ của hai đa thức được viết
dưới dạng như sau
Trong đó G là thừa số độ lợi
z
1
,z
2
, ,z
N
là các không của X(z), N là bậc của đa thức tử số
p
1
,p

Chương trình
num=[1 2 3];
den=[2 4 4];
[z,p,k]=tf2zp(num,den)
zplane(num,den)
% hay zplane(z,p)
z =
-1.0000 + 1.4142i
-1.0000 - 1.4142i
p =
-1.0000 + 1.0000i
-1.0000 - 1.0000i
k =
0.5000

Trích đoạn Nhân chập vòng Giới thiệu về lọc tương tự và lọc số 1 Tổng quan và phân lọa Các phương trình thiết kế cho hàm cửa sổ và cửa sổ Kaiser
Nhờ tải bản gốc

Tài liệu, ebook tham khảo khác

Music ♫

Copyright: Tài liệu đại học © DMCA.com Protection Status