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

PROJECT 2: FREQUENCY - DOMAIN VIEW OF SAMPLING

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 (1.44 MB, 30 trang )

PROJECT 2: FREQUENCY –DOMAIN VIEW OF SAMPLING
EXERCISE 2.1: Signal Generation
A.Khởi tạo một tín hiệu
a. ,khởi tạo tín hiệu mơ phỏng sóng liên tục :
Theo đề bài,vì fsim=80kHz nên nếu lấy thời gian T là 1/80 s ta sẽ có đượ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ị trên Matlab:


C.Vẽ đồ thị của 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 2

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ị trên 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ị trên Matlab:



B.Biến đổi DTFT của 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ị của 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 bài ra vì fs/fsim=o.1 nên tần số cắt fcut=0.1
Suy ra hàm cheby2 tạo ra 1 bộ lọc
[b,a]=cheby2(9,60,0.1);
Đồ thị đáp ứng pha và đáp ứng tần số :
freqz(b,a);



EXERCISE 2.4: D/A Conversion
A.Do số điểm 0 thêm vào mỗi xâu phải thỏa mãn tỉ só fsim/fs,mà theo đề ra
fsim/fs=10.Do đó số điểm 0 thêm vào mỗi xâu sẽ là 10.ta được đồ thị x^(t)


Với tín hiệu ở Exercise 2.1 ta có :
Khi thêm 10 điểm 0 vào mẫu,ta được đồ 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);


Tái tạo lại tín hiệu khi đưa qua bộ lọc cheby2 :
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);
[b,a]=cheby2(9,60,0.1);


t=0:1/80000:1/80
x=cos(2*pi*80*t+pi/4)
s = filter(b,a,y);
plot(nn,s)


Với tín hiệu ở Exercise 2.2
Them 10 điểm 0 vào mẫu :
t=0:1/8000:1/80;


x=cos(2*pi*80*t+pi/4);
y=[1;zeros(10,1)] * x;
y=y(:);
nn=0:1110;
plot(nn,y);

Tái tạo lại tín hiệu khi đi qua bộ lọc cheby2 :
t=0:1/8000:1/80;
x=cos(2*pi*80*t+pi/4);


y=[1;zeros(10,1)] * x;
y=y(:);
nn=0:1110;
plot(nn,y);
[b,a]=cheby2(9,60,0.1);
t=0:1/8000:1/80
x=cos(2*pi*80*t+pi/4)
s = filter(b,a,y);
plot(nn,s)


B.Với fsim=8 kHz ta có tín hiệu đầu ra sau khi biển đồi Fourier :
format compact, subplot(111)

[b,a]=cheby2(9,60,0.1);
t=0:1/8000:1/80;
x=cos(2*pi*80*t+pi/4);
y=[1;zeros(10,1)] * x;
y=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 ra sau khi 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 2

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= 8 kHz và 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 và tần số tín hiệu đầu vào fo= 6 kHz
test (100000,6000);


Với tần số lấy mẫu fs= 100 kHz và tần số tín hiệu đầu vào fo= 7 kHz
test (100000,7000);


Với tần số lấy mẫu fs= 100 kHz và tần số tín hiệu đầu vào fo= 9 kHz
test (100000,9000);


Với tần số lấy mẫu fs= 100 kHz và 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 và tần số tín hiệu đầu vào fo= 15 kHz

test (100000,15000);


×