Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 30 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
30
Dung lượng
1,38 MB
Nội dung
PROJECT 2: FREQUENCY –DOMAIN VIEW OF SAMPLING EXERCISE 2.1: Signal Generation A.Khởi tạo tín hiệu a ,khởi tạo tín hiệu mơ sóng liên tục : Theo đề bài,vì fsim=80kHz nên lấy thời gian T 1/80 s ta có từ 900- 1000 mẫu với fo tùy ý.Để thuận lới cho việc tính tốn ta chọn fo=80Hz B ,lấy mẫu tín hiệu t=0:1/80000:1/80 x=cos(2*pi*80*t+pi/4); plot(t,x); Đồ thị Matlab: C.Vẽ đồ thị biến đổi Fourier : Hàm vẽ đồ thị : function dothi(xa,dt) % FMAGPLOT % fmagplot(xa,dt) % % xa: the "analog" signal % dt: the sampling interval in seconds for the simulated analog signal xa % L = length(xa); Nfft = 2.^ceil(log2(L)); % Choose the nearest Power of Xa = fft(xa,Nfft); range = 0:(Nfft/4); % show frequencies up to 1/4 sampling rate ff = range/Nfft/dt/1000; % frequencies in kHz % plot magnitude frequency plot(ff,abs(Xa(1+range))) title('Continuous-time Fourier transform (MAG)'); xlabel('FREQUENCY (kHz)'); grid code: t=0: 1/80000:1/80; x=cos(2*pi*80*t+pi/4); dothi(x, 1/80000); Đồ thị Matlab: EXERCISE 2.2: A/D Conversion A,Lấy mẫu tín hiệu với fs=8 kHz t=0:1/8000:1/80; x=cos(2*pi*80*t+pi/4); stem(t,x); Đồ thị Matlab: B.Biến đổi DTFT tín hiệu rời rạc : Khởi tạo hàm function: 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(:); %< for vectors ONLY !!! if( N < L ) error('DTFT: # data samples 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; % < - move [pi,2pi) to [-pi,0) W = fftshift(W); H = fftshift( fft( h, N ) ); %< - move negative freq components Đoạn code: t=0:1/8000:1/80; x=cos(2*pi*80*t+pi/4); [X,W] = dtft( x, 128 ); Đồ thị biến đổi: format compact, subplot(111) subplot(211), plot( W/2/pi, abs(X) ); grid, title('MAGNITUDE RESPONSE') xlabel('NORMALIZED FREQUENCY'), ylabel('| H(w) |') subplot(212), plot( W/2/pi, 180/pi*angle(X) ); grid xlabel('NORMALIZED FREQUENCY'), ylabel('DEGREES') title('PHASE RESPONSE') EXERCISE 2.3: Design a Reconstruction Filter: Theo fs/fsim=o.1 nên tần số cắt fcut=0.1 Suy hàm cheby2 tạo lọc [b,a]=cheby2(9,60,0.1); Đồ thị đáp ứng pha đáp ứng tần số : freqz(b,a); EXERCISE 2.4: D/A Conversion A.Do số điểm thêm vào xâu phải thỏa mãn tỉ só fsim/fs,mà theo đề fsim/fs=10.Do số điểm thêm vào xâu 10.ta đồ thị x^(t) Với tín hiệu Exercise 2.1 ta có : Khi thêm 10 điểm vào mẫu,ta đồ thị x^(t) t=0:1/80000:1/80; x=cos(2*pi*80*t+pi/4); y=[1;zeros(10,1)] * x; y=y(:); nn=0:11010; plot(nn,y); nn=0:1110; s = filter(b,a,y); [X,W] = dtft( y,1111); subplot(211), plot( W/2/pi, abs(X) ); grid, title('MAGNITUDE RESPONSE') xlabel('NORMALIZED FREQUENCY'), ylabel('| H(w) |') subplot(212), plot( W/2/pi, 180/pi*angle(X) ); grid xlabel('NORMALIZED FREQUENCY'), ylabel('DEGREES') title('PHASE RESPONSE') Với fsim=80 kHz ta có tín hiệu đầu sau biển đồi Fourier : format compact, subplot(111) [b,a]=cheby2(9,60,0.1); t=0:1/80000:1/80; x=cos(2*pi*80*t+pi/4); y=[1;zeros(10,1)] * x; y=y(:); nn=0:11010; s = filter(b,a,y); [X,W] = dtft( y,11011); subplot(211), plot( W/2/pi, abs(X) ); grid, title('MAGNITUDE RESPONSE') xlabel('NORMALIZED FREQUENCY'), ylabel('| H(w) |') subplot(212), plot( W/2/pi, 180/pi*angle(X) ); grid xlabel('NORMALIZED FREQUENCY'), ylabel('DEGREES') title('PHASE RESPONSE') EXERCISE 2.5: Test for Aliasing A.Tạo M-file : function test(fs,f) t=0:1/fs:1/f x=cos(2*pi*f*t+pi/4) dt=1/fs; L = length(x); Nfft = 2.^ceil(log2(L)); % Choose the nearest Power of Xa = fft(x,Nfft);range = 0:(Nfft/4); % show frequencies up to 1/4 sampling rate ff = range/Nfft/dt/1000; % frequencies in kHz % plot magnitude frequency subplot(211) plot(ff,abs(Xa(1+range))) title('Continuous-time Fourier transform (MAG)'); xlabel('FREQUENCY (kHz)'); subplot(212) plot(t,x) xlabel('INPUT'); B.Với tần số lấy mẫu fs= kHz tần số tín hiệu đầu vào fo= 2Khz: test (8000,2000); Với tần số lấy mẫu fs= 100 kHz tần số tín hiệu đầu vào fo= kHz test (100000,6000); Với tần số lấy mẫu fs= 100 kHz tần số tín hiệu đầu vào fo= kHz test (100000,7000); Với tần số lấy mẫu fs= 100 kHz tần số tín hiệu đầu vào fo= kHz test (100000,9000); Với tần số lấy mẫu fs= 100 kHz tần số tín hiệu đầu vào fo= 10 kHz test (100000,10000); Với tần số lấy mẫu fs= 100 kHz tần số tín hiệu đầu vào fo= 15 kHz test (100000,15000); C.Tạo M-file : function testc(fs,f) t=0:1/fs:1/f; x=cos(2*pi*f*t+pi/4); subplot(2,2,1); plot(t,x); xlabel('x(t)'); subplot(2,2,2); stem(t,x,'g'); xlabel('x[n]'); y=[1;zeros(10,1)] * x; y=y(:); nn=0:1110; subplot(2,2,3); plot(nn,y) ; xlabel('x*(t)'); [b,a]=cheby2(9,60,0.1); s = filter(b,a,y); subplot(2,2,4); plot(nn,s); xlabel('xr(t)'); testc(8000,80) TẠO D Tạo hàm function function testchirp(f1,muy,fs) t=0:1/fs:1/f1; x=cos(2*pi*(muy*t.^2/2+f1*t)+pi/4); subplot(2,2,1); plot(t,x) xlabel('x(t)'); subplot(2,2,2); stem(t,x,'g'); xlabel('x[n]'); y=[1;zeros(10,1)] * x; y=y(:); nn=0:11010; subplot(2,2,3); plot(nn,y); xlabel('x*(t)'); [b,a]=cheby2(9,60,0.1); s = filter(b,a,y); subplot(2,2,4); plot(nn,s); xlabel('xr(t)'); testchirp(4000,600000,4000000)