Xử Lý Tín Hiệu Số & Hệ Thống
Nguyễn Duy Bình-Kỹ sư chất lượng cao K53
1
Project 1 COMPUTING THE DTFT: FINITE-LENGTH SIGNALS
Trong project này chúng ta sẽ tập trung xử lý tín hiệu có độ dài hữu hạn. Điều này sẽ sử dụng
hàm DTFT cho ở dưới đây. Project làm việc với những tín hiệu dạng xung và phổ tần số DTFT của
chúng vì đây là những ví dụ dễ nhất cho tính toán phổ tần số của tín hiệu.
Chú ý:
Chúng ta cần 2 hàm để tính DTFT. Hàm MATLAB freqz sẽ dùng để xác định trong trường hợp tín
hiệu infinite-length, nhưng một hàm mới sẽ cần để tính DTFT của tín hiệu finite-length. Hàm được
gọi là DTFT(h,N)
function [H,W]=DTFT(h,N)
% DTFT calculate DTFT at N equally spaced frequencies
% usage: H=DTFT(h,N)
% h: finite-length input vector, whose length is L
% N: number of frequencies for evaluation over [-pi,pi]
% ==> constraint N>=L
% H: DTFT values (complex)
% W: (2nd output) vector of freqs where DTFT is computed
%
N=fix(N);
L=length(h);
h=h(:);
if(N<L)
error('DTFT: # data samles cannot exceed # freq samples')
end
W=(2*pi/N)*[0:(N-1)]';
mid=ceil(N/2)+1;
W(mid:N)=W(mid:N)-2*pi;
-1
2
-
-1
- -
-
- 0
- -
1
-
2
- -
1
2
1
-
2
1
2
2
2
1-
( ) [ ]*
1-
sin( )
( - )
sin( )
( - )
sin( )
q q q
q
q q q
q
q
q
q
w
w
q
q
q
q
w
+¥
= ¥ =
= = =
= =
=
=
å å
Vậy phổ tần số của tín hiệu đã cho là
-1
2
1
-
2
1
trong khoảng từ -π tới π.
x=ones(1,12);
[H,W]=DTFT(x,1024);
plot(W,abs(H));
grid on,xlabel('NORMALIZED FREQUENCY'),ylabel('abs(H(w))')
đồ thị biên độ
c. Tính hàm DTFT với số điểm lẻ L=15
x=ones(1,15);
Xử Lý Tín Hiệu Số & Hệ Thống
Nguyễn Duy Bình-Kỹ sư chất lượng cao K53
3
[H,W]=DTFT(x,1024);
plot(W,abs(H));
grid on,xlabel('NORMALIZED FREQUENCY'),ylabel('abs(H(w))') Qua hai đồ thị biên độ ta thấy các điểm không của hàm asinc(ω,L) là cách đều nhau và
biên độ tại đó bằng 0. Đỉnh của biên độ đạt được là 15
d. Xác định các điểm không của hàm asinc(ω,L)
Các điểm không thỏa mãn hệ sau :
1
sin( ) 0
2
1
sin( ) 0
2
L
w
L = fix(L);
len = length(w);
for i = 1:1:len
if(w(i)==0)
Xử Lý Tín Hiệu Số & Hệ Thống
Nguyễn Duy Bình-Kỹ sư chất lượng cao K53
4
W(i) = L; %#ok<AGROW>
else
W(i) = sin(1/2*L*w(i))./ sin(1/2*w(i)); %#ok<AGROW>
end
end Sử dụng hàm asinc(
w
,L) ta tính trực tiếp phổ tần số của tín hiệu r[n] ban đầu. Sau đó vẽ đồ thị
biên độ và so sánh đồ thị thu được với đồ thị thu được từ sử dụng hàm DTFT trên.
Tính giá trị DTFT theo công thức trực tiếp:
x=ones(1,15);
Cần thiết phải thay đổi hàm DTFT dể có thể chấp nhân một biến mới xác định thời điểm bắt đầu
của tín hiệu x[n]. Thông thường các tín hiệu bắt đầu được tính tại thời điểm n=0 bởi hàm DTFT
trong Project 1.
Một kĩ năng cần thiết nữa trong Project 2 là vẽ đồ thị DTFT để biểu diễn tính đối xứng. Thông
thương, các tần số góc được xác định trong khoảng từ 0 tới 2
p
. Tuy nhiên dể nghiên cứu
tính đối xứng của đồ thị DTFT chúng ta cần phải đưa chúng các tần số góc về khoảng từ
p p
- ®
.
Khi kiểm tra các đặc tính thực và ảo của biến đổi có thể phần tín hiệu là bằng không lại không
thực sự bằng 0. Điều đó có thể xảy ra do một số các giá trị vô cùng nhỏ trong quá trình làm
tròn. Nếu các giá trị đó nằm trong khoảng từ thì có thể bỏ qua và kết luận là do
làm tròn số gây ra. Tuy nhiên nếu cỡ thì chưa chắc đã là do làm tròn, trừ khi đã có một số
lượng lớn các phép tính đã được thực hiện.
Khi kiểm tra biến đổi là chẵn hay lẻ, nên sử dụng một chương trình để dịch chuyên biến đổi.
Nghĩa là ta cần phải có một hàm MATLAB mới để thực hiện tương tự với biểu diễn toán hạng của
dịch chuyển tần sô
( ) ( )
i i
Y e X e
w w
-
=
. Hàm số sẽ thực hiện biến đổi với cặp vector (H,W).
function [G, Wflipped ]= flipDTFT(H,W)
% FlipDTFT flip the DTFT G(w)=H(-w)
% usage:
% [ G,Wflipped] =flipDTFT(H,W)
cho rằng tín hiệu bắt đầu từ n=0 trong khi các tín hiệu zero-phase phải có tính đối xứng xung
quanh điểm n=0. Một cách để xử lý vấn đề này là ta thay đổi hàm DTFT bằng cách thêm vào 1
Xử Lý Tín Hiệu Số & Hệ Thống
Nguyễn Duy Bình-Kỹ sư chất lượng cao K53
6
biến mới xác định thời điểm bắt đầu của tín hiệu. Thời điểm ban đầu này sẽ làm thay đổi giá trị
hàm DTFT theo hệ thức
0
0
[ ] ( )
i n
DTFT i
x n n e X e
w
w
-
- ¬¾¾®
a. Xây dựng hàm DTFT_n0(x,n0,N) để thực hiện sự dịch chuyển thời gian của tín hiệu bằng
biến n0.
function [H,W]=DTFT_n0(h,n0,N) %#ok<INUSL>
%--
% usage [H,W]=DTFT_n0(h,n0,N)
% h finite-length input vector
% n0 xac dinh thoi diem bat dau tin hieu
% N number of freuencies for evaluation over [-pi,pi]
% H DTFT_n0 values
% W (2nd output) vector of frequencies for evaluation over
% [-pi,pi]
n=4 -1.0856 - 0.0000i
n=16 2.7111 + 0.0000i
n=5 0.9126 + 0.0000i
n=17 -1.8782 + 0.0000i
n=6 -0.4778 - 0.0000i
n=18 1.0000 - 0.0000i
n=7 -0.1831 - 0.0000i
n=19 -0.1831 - 0.0000i
n=8 1.0000 + 0.0000i
n=20 -0.4778 - 0.0000i
n=9 -1.8782 - 0.0000i
n=21 0.9126 - 0.0000i
n=10 2.7111 + 0.0000i
n=22 -1.0856 + 0.0000i
n=11 -3.3951 - 0.0000i
n=23 1.0000 - 0.0000i
n=12 3.8438 + 0.0000i
n=24 -0.6969 - 0.0000i
n=25 0.2492 + 0.0000i
Theo bảng số liệu ta thấy phổ tần số là hoàn toàn thực và giá trị phần ảo là bằng 0. Đồng thời
các giá trị thu được cũng đối xứng qua điểm n=0 nen là hàm chẵn.Điều đó phù hợp với lý thuyết.
c. Vẽ đồ thị của DTFT trên
Đồ thị phần thực
Xử Lý Tín Hiệu Số & Hệ Thống
Nguyễn Duy Bình-Kỹ sư chất lượng cao K53
7
å å
Từ chứng minh trên ta thấy phần ảo là bằng 0. Pha của
( )
i
R e
w
biến thiên từ 0 của thành phần
cố định 1 tới L . Mặt khác
Xử Lý Tín Hiệu Số & Hệ Thống
Nguyễn Duy Bình-Kỹ sư chất lượng cao K53
8
2*
k
N
p
w
=
1... 1k N= -
Do dó pha của
( )
i
R e
w
biến thiên từ 0 tới
Cũng cần phải chú ý là sự đối xứng này chỉ có thể quan sát khi số xung là lẻ, nếu số xung là
chẵn thì còn phải kể tới một sự trễ pha của nửa tín hiệu.
Xử Lý Tín Hiệu Số & Hệ Thống
Nguyễn Duy Bình-Kỹ sư chất lượng cao K53
9
Đồ thị phần thực của DTFT
Đồ thị biên độ của DTFT Xử Lý Tín Hiệu Số & Hệ Thống
Nguyễn Duy Bình-Kỹ sư chất lượng cao K53
10
2.3 Symmetries in th DTFT
Có nhiều các đặc tính đối xứng trong miền thời gian và tần số. Một nhóm các đặc tính dùng cho
các hàm thuần thực hoặc thuần ảo, những thuộc tính khác cho hàm chẵn hoặc hàm lẻ. Ví dụ,
DTFT của hàm chẵn là hàm chẵn. Mỗi ví dụ dưới đây sẽ tập trung vào một loại đối xứng. Đối xứng
trong miền tần số có thể được thể hiện bằng vẽ đồ thị phần thực và phần ảo (hoặc biên độ và
pha) va sử dụng thêm hàm flipDTFT để kiểm tra .
a. DTFT của một tín hiệu thực là một đối xứng liên hợp, , nghĩa là liên
hợp của DTFT giống như là dịch chuyển nó. Ví dụ với tín hiệu x[n]= với
. Vẽ đồ thị biên độ và pha của DTFT và chứng tỏ rằng nó giống liên hợp phức
đối xứng.
So sánh biên độ
a=0.9;
nn=[0:1:21];x=a.^nn.*cos(2*pi*nn/sqrt(31)); %#ok<NBRAK>
[H,W]=DTFT(x,1024);
[Y,Wflip]=flipDTFT(H,W);
subplot(211), plot(W,abs(H))
phần trên, định nghĩa hàm y[n] =jx[n].
So sánh biên độ
a=0.9;
nn=[0:1:21];x=j*a.^nn.*cos(2*pi*nn/sqrt(31)); %#ok<NBRAK>
[X,W]=DTFT(x,1024);
[Y,Wflip]=flipDTFT(X,W);
subplot(211), plot(W,abs(X))
xlabel('NORMALIZED FREQUENCY'),ylabel('Abs(H(w))'),grid on
subplot(212),plot(W,abs(Y))
xlabel('NORMALIZED FREQUENCY'),ylabel('Abs of flipDTFT (H(w))'),grid on
Xử Lý Tín Hiệu Số & Hệ Thống
Nguyễn Duy Bình-Kỹ sư chất lượng cao K53
12
So sánh phase
a=0.9;
nn=[0:1:21];x=j*a.^nn.*cos(2*pi*nn/sqrt(31)); %#ok<NBRAK>
[X,W]=DTFT(x,1024);
[Y,Wflip]=flipDTFT(X,W);
subplot(211), plot(W,angle(X))
xlabel('NORMALIZED FREQUENCY'),ylabel('Arg(H(w))'),grid on
subplot(212),plot(W,angle(Y))
xlabel('NORMALIZED FREQUENCY'),ylabel('Arg of flipDTFT (H(w))'),grid on
Xử Lý Tín Hiệu Số & Hệ Thống
Nguyễn Duy Bình-Kỹ sư chất lượng cao K53
13
Ta thấy biên độ của DTFT và của liên hợp phức phản đối xứng là bằng nhau. pha của