Xử Lý Tín Hiệu Số & Hệ Thống
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; W=fftshift(W); H=fftshift(fft(h,N)); Chúng ta không cần phải đưa vào biến độ dài L, vì nó sẽ được xác định bằng tính độ dài vector h. Ngoài ra, khi tín DTFT là hàm tuần hoàn vùng từ là vùng tần số âm, nên phải sử dụng hàm fftshift để sắp xếp lại miền tần số theo thứ tự. Sử dụng DTFT tính vector H, vẽ đồ thị trên miền [- ] với chú ý là H(1) là tần số lấy mẫu ứng với 1.1 DTFT một xung Cho tín hiệu độ rời rạc độ dài hữu hạn sau 1 with 0 n L [ ] 0 elsewhere r n £ £ ì = í î a. Tìm phổ tần số của tín hiệu trên: Xử Lý Tín Hiệu Số & Hệ Thống Nguyễn Duy Bình-Kỹ sư chất lượng cao K53 2 2 2 2 -1 2 2 2 2 -1 2 - -1 - - - - 0 - - 1 - 2 - - 1 2 1 - 2 1 2 2 2 1- ( ) [ ]* 1- sin( ) ( - ) sin( ) ( - ) sin( ) ( ) sin( ) sin( ) sin ( , ) sin( ) L L L L L iL L i in in i n i i i i i i i i i i L e R e r n e e e L e e e e e e e L R e e a c L q q q 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 2 sin( ) ( ) sin( ) L i i L R e e w w w w = Trong công thức trên ta có hàm số hay được dùng trong biến đổi DTFT gọi là hàm aliased sinc : 2 2 sin( ) sin ( , ) sin( ) L a c L w w w = b. Dùng hàm DTFT tính DTFT của tín hiệu xung 12 điểm. Sau đó vẽ đồ thị theo tần số góc ω 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 w ì = ï ï í ï ¹ ï î Suy ra 2k L p w = do đó các điểm 0 là cách đều nhau và giá trị của nó được cho bởi công thức trên. 2.2 M-file for asinc , Xây dựng M-file cho hàm asinc Xây dựng hàm asinc( w ,L) để tính giá trị hàm trực tiếp theo công thức giải tích. Hàm gồm có 2 biến đầu vào là : độ dài L và vector tần số . Tại điểm ta sẽ cho giá trị hàm số bằng L. Hàm tính asinc( w ,L) function W = asinc(w,L) 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); [H,W]=DTFT(x,1024);%lấy vector tần số lấy mẫu. H2=asinc(W,15).*exp(-j*W'*(15-1)/2); plot(W,abs(H)); grid on,xlabel('NORMALIZED FREQUENCY'),ylabel('abs(H(w))') Qua hai đồ thị biên độ tính theo hai cách trực tiếp và qua hàm DTFT ta thấy kết quả thu được từ 2 phương pháp là đồng nhất. Project 2 DTFT SYMMETRIE, DTFT ĐỐI XỨNG Xử Lý Tín Hiệu Số & Hệ Thống Nguyễn Duy Bình-Kỹ sư chất lượng cao K53 5 Các tín hiệu finite-length thường được sử dụng có tính chất đối xứng để dễ tính DTFT hơn. Ví dụ các xung hình chữ nhật là chẵn xung quanh điểm n=0 thì tính toán DTFT của nó sẽ là hàm thực ,chẵn theo đối số . Trong project 2, sáu loại đối xứng chính sẽ được xem xét và minh họa bởi các ví dụ khác nhau. Chú ý : 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) % H=DTFT values complex % W=frequency samples % G= DTFT values % Wflipped= flipped frequency domain lies within [-pi,pi) % N=length(H); Wflipped=-W(N:-1:1); G=H(N:-1:1); %----- % now get everything back into the [-pi,pi) interval % assume that W was monotonically increasing % so Wflipped is also increasing % jkl=find(Wflipped(:)'<-pi); if(~isempty(jkl)) kk=[(length(jkl)+1):N jkl]; Wflipped(jkl)=Wflipped(jkl)+2*pi; Wflipped=Wflipped(kk); G=G(kk); end jkl=find(Wflipped(:)'>=(pi-100*eps)); if(~isempty(jkl)) kk=[jkl 1:(jkl(1)-1)]; Wflipped(jkl)=Wflipped(jkl)-2*pi; Wflipped=Wflipped(kk); G=G(kk); end 2.1 Zero—Phase Signals, Tín hiệu pha 0 Xử lý các tín hiệu zero-phase là một điều khó khăn trong MATLAB vì hàm DTFT trong Project 1 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 Hiu S & H Thng Nguyn Duy Bỡnh-K s cht lng cao K53 6 bin mi xỏc nh thi im bt u ca tớn hiu. Thi im ban u ny s lm thay i giỏ tr hm DTFT theo h thc 0 0 [ ] ( ) i n DTFT i x n n e X e w w - - ơắắđ a. Xõy dng hm DTFT_n0(x,n0,N) thc hin s dch chuyn thi gian ca tớn hiu bng bin 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=fix(N); [X,W]=DTFT(h,N); H=exp(i*n0*W).*X; %#ok<NASGU> b. Kim tra DTFT_n0 bng cỏch tớnh DTFT ca mt xung 21 im bt u ti n=-10. Kt qu s l mt hm thc chn Ta s dng tớn hiu 1 with -1 n 1 [ ] 0 elsewhere r n Ê Ê ỡ = ớ ợ x=ones(1,21); [H,W]=DTFT_n0(x,10,25); H Kt qu tớnh vi r[n] ,n0=10,N=25 nh sau : n=1 0.2492 + 0.0000i n=13 21.0000 n=2 -0.6969 - 0.0000i n=14 3.8438 - 0.0000i n=3 1.0000 + 0.0000i n=15 -3.3951 + 0.0000i 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 bng s liu ta thy ph tn s l hon ton thc v giỏ tr phn o l bng 0. ng thi cỏc giỏ tr thu c cng i xng qua im n=0 nen l hm chn.iu ú phự hp vi lý thuyt. c. V th ca DTFT trờn th phn thc X Lý Tớn Hiu S & H Thng Nguyn Duy Bỡnh-K s cht lng cao K53 7 th biờn Vy t th ta li thy rng DTFT ca tớn hiu r[n] l chn v i xng, phự hp vi lý thuyt. Giỏ tr phn o c khụng hon ton bng khụng nhng ú l do sai s lm trũn trong quỏ trỡnh tớnh toỏn. Chỳng ta hon ton cú th b qua nú m khụng nh hng ti kt qu thu c d. Chng minh phn o l bng 0 v pha bin thien t 0 ti p 1 1 ( ) [ ]* 1 ( ) 1 2 cos( ) L i in in L L L in in R e r n e e e e n w w w w w w +Ơ - - -Ơ - - = = = + + = + ồ ồ ồ ồ T chng minh trờn ta thy phn o l bng 0. Pha ca ( ) i R e w bin thiờn t 0 ca thnh phn c nh 1 ti L . Mt 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. 2 .2 Triangular Pulse Cho một tín hiệu đối xứng khác dạng tam giác như sau L - n with 0 n< [ ] L+n w -L<n<0 0 es L n ith lewhere £ ì ï D = í ï î Độ dài của tín hiệu là 2L-1 và có thể xác định bằng tích chập của 2 xung hình chữ nhật có L điểm. Kết quả của DTFT là một hàm asinc được làm vuông, pha bằng 0 vì đây là một tín hiệu đối xứng. a. Vẽ đồ thị 21 điểm xung trong khoảng 20 20n- £ £ . Sau đó tính DTFT của nó bằng hàm DTFT_n0 và vẽ đồ thị kết quả trong khoảng p w p - £ < Đồ thị: Đồ thị phần ảo 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 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)) 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 So sánh pha a=0.9; nn=[0:1:21];x=a.^nn.*cos(2*pi*nn/sqrt(31)); %#ok<NBRAK> [...]... 11 X Lý Tớn Hiu S & H Thng So sỏnh phase a=0.9; nn=[0:1:21];x=j*a.^nn.*cos(2*pi*nn/sqrt(31)); %#ok [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 Nguyn Duy Bỡnh-K s cht lng cao K53 12 X Lý Tớn Hiu S & H Thng... X Lý Tớn Hiu S & H Thng th phn o nn=[-29:1:29]; x=exp(i*2*pi*nn.^2/25); [H,W]=DTFT_n0(x,30,1024); plot(W,imag(H)) xlabel('NORMALIZED FREQUENCY'),ylabel('Im(H(w))'),grid on T th ta thy phn thc v o ca DTFT u i xng qua trc tung do ú õy l hm chn phự hp vi cỏc tớnh toỏn lý thuyt d Vi tớn hiu l trong khong , thỡ DTFT ca nú s l hm l theo th phn thc x=[-19:1:19]; Nguyn Duy Bỡnh-K s cht lng cao K53 14 X Lý. .. lng cao K53 16 X Lý Tớn Hiu S & H Thng th pha S dng hm flipDTFT kim tra nn=[-20:1:20]; x=j*nn.*cos(nn); [H,W]=DTFT_n0(x,20,1024); [H,G]=flipDTFT(X,W); plot(G,real(H)),grid on xlabel('NORMALIZED FREQUENCY'),ylabel('Real of (H(w))'),grid on plot(G,imag(H)),grid on xlabel('NORMALIZED FREQUENCY'),ylabel('Im of (H(w))'),grid on th biờn Nguyn Duy Bỡnh-K s cht lng cao K53 17 X Lý Tớn Hiu S & H Thng th pha... 30 X Lý Tớn Hiu S & H Thng õy r[n] l xung hỡnh ch nht cú di l L=32 Xung hỡnh ch nht ny cú th to nh hm ones hoc boxcar V DTFT v chỳ ý rng nh b dch chuyn ti th biờn th biờn teta=2*pi/sqrt(31); x=ones(1,32); y=[0:1:31]; z=exp(i*teta*y).*x; [H,W]=DTFT(z,1024); plot(W,abs(H)),grid on; xlabel('NORMALIZED FREQUENCY'),ylabel('Abs(H(w))'),grid on Nguyn Duy Bỡnh-K s cht lng cao K53 31 X Lý Tớn Hiu S & H... s cht lng cao K53 32 X Lý Tớn Hiu S & H Thng th biờn DTFT ca tớn hiu w[n] nn=[0:1:31]; x=1/2-1/2*cos(2*pi/32*nn); [H,W]=DTFT(x,1024); plot(W,abs(H)); xlabel('NORMALIZED FREQUENCY'),ylabel('Abs(H(w))'),grid on th DTFT ca tớn hiu x[n]=w[n] nn=[0:1:31]; x=(1/2-1/2*cos(2*pi/32*nn)).*sin(2*pi/sqrt(31)*nn); [H,W]=DTFT(x,1024); Nguyn Duy Bỡnh-K s cht lng cao K53 33 X Lý Tớn Hiu S & H Thng plot(W,abs(H));... , v pha ca : , 34 X Lý Tớn Hiu S & H Thng Khi ú R(eiw ) = R R 2p R 2p R 2p éy + é(y - ) + é(y + ) = (1 + cos( ))éy 2 4 L 4 L 2 L Cho ta thy R(eiw ) cựng pha vi DTFT ca tớn hiu w[n] xem hỡnh trang 6 d Khi chỳng ta cho tớn hiu S thay i du tr thnh du cng õy l quan trng V th trong min thi gian theo n vi õy L=32 th biờn DTFT Nguyn Duy Bỡnh-K s cht lng cao K53 35 X Lý Tớn Hiu S & H Thng 4.3 Convergence... x=[-19:1:19]; Nguyn Duy Bỡnh-K s cht lng cao K53 14 X Lý Tớn Hiu S & H Thng [H,W]=DTFT_n0(x,19,1024); plot(W,real(H)) xlabel('NORMALIZED FREQUENCY'),ylabel('Real(H(w))'),grid on th phn o x=[-19:1:19]; [H,W]=DTFT_n0(x,19,1024); plot(W,imag(H)) xlabel('NORMALIZED FREQUENCY'),ylabel('Im(H(w))'),grid on Nguyn Duy Bỡnh-K s cht lng cao K53 15 X Lý Tớn Hiu S & H Thng T th ta thy phn thc ca DTFT cú th coi l bng 0 cũn... Nguyn Duy Bỡnh-K s cht lng cao K53 20 X Lý Tớn Hiu S & H Thng - Kt qu thu c hon ton ging vi kt qu s dng freqz 3.2 S m phc a = z0 = re jq thỡ s bin i vn khụng i iu ny rt cú ý ngha trong vic xỏc nh tỏc ng ca biờn r v pha q ca s phc lờn Nu cho h s a trong cụng thc (3.1) bi s phc DTFT j 3p z0 = 0.95e 11 , x[n] = z 0 nu[n] vi 0 Ê n Ê 30 Ta v song song 2 th phn thc & phn o ca x[n] theo n trờn 2 panel: N... 21 X Lý Tớn Hiu S & H Thng 3.2.b Tip tc vi tớn hiu x[n] = z 0 nu[n] , z0 = 0.95e j 3p 11 , ta tớnh DTFT v v th biờn tớn w z = 0.95 * exp(sqrt(-1) * 3 * pi /11); a = [1,-z]; b = [1]; N = 512; [HH,WW] = freqz(b,a,N,'whole'); hiu ra theo tn s plot(WW,abs(HH)); grid, title('MAGNITUDE RESPONSE BY FREQZ'),xlabel('NORMALIZED FREQUENCY'), ylabel('|H(e^-jw)|') Nguyn Duy Bỡnh-K s cht lng cao K53 22 X Lý Tớn... N = 512; [HH,WW] = freqz(b,a,N,'whole'); plot(WW,abs(HH)); grid, title('MAGNITUDE RESPONSE BY FREQZ'),xlabel('NORMALIZED FREQUENCY'), ylabel('|H(e^-jw)|') Nguyn Duy Bỡnh-K s cht lng cao K53 23 X Lý Tớn Hiu S & H Thng %peak location of magnitude MaxMagnitue = max(abs(HH)) PeakLocation = WW(find(abs(HH) == MaxMagnitue)) MaxMagnitue = 19.9091 and PeakLocation = 1.8890 3.2.d Thay i biờn ca s phc r = 0.975,