You are on page 1of 27

BỘ GIAO THÔNG VẬN TẢI

HỌC VIỆN HÀNG KHÔNG VIỆT NAM


KHOA ĐIỆN – ĐIỆN TỬ

TIỂU LUẬN CUỐI KỲ


XỬ LÝ SỐ TÍN HIỆU
Mã lớp học phần: 011100014401

GIÁO VIÊN HƯỚNG DẪN : TS. VÕ NGUYÊN SƠN


Sinh viên thực hiện: LÊ HỒNG HẠNH – 2053020044
MỞ ĐẦU

Bài tiểu luận này tập trung vào nghiên cứu và giải quyết các bài toán
trong lĩnh vực Xử lý số tín hiệu. Bằng cách sử dụng các công cụ và phần
mềm hỗ trợ trong Matlab, chúng tôi đều hướng tới hiểu rõ bản chất của một
số thuật toán và kỹ thuật được sử dụng. Nhờ vào Matlab, tôi dễ dàng thực
hiện các phân tích và mô phỏng tín hiệu số, từ đó giúp xác định cách hoạt
động của các thuật toán và phương pháp xử lý số. Tôi xin gửi lời cảm ơn
chân thành đến giảng viên thầy Võ Nguyên Sơn đã tạo điều kiện tốt nhất, hỗ
trợ và cung cấp kiến thức nền tảng cần thiết cho tôi trong quá trình nghiên
cứu. Trong quá trình nghiên cứu, tôi đã cố gắng tránh sai sót và hoàn thiện
kết quả, nhưng không thể tránh khỏi những khuyết điểm và sự thiếu sót. Tôi
mong nhận được sự góp ý và hỗ trợ từ giảng viên để bài tiểu luận có thể
được hoàn thiện và đạt được kết quả tốt nhất.
NHẬN XÉT CỦA GIÁO VIÊN
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
TpHCM, ngày ….. tháng …… năm ……
Giáo viên hướng dẫn
(Ký tên và ghi rõ họ tên)
MỤC LỤC
VẤN ĐỀ 1: Vẽ x(n) và YAMSC (n) với 10s lấy mẫu.................................................2
VẤN ĐỀ 2: Vẽ X(w) và YAMSC (w) dưới miền tần số.............................................4
VẤN ĐỀ 3: Quy luật của fc là gì ?, điều gì sẽ xảy ra nếu thay đổi fc ?..............6
VẤN ĐỀ 4: Điều gì sẽ xảy ra nếu chúng ta thay đổi N (tăng hoặc giảm) ?........9
VẤN ĐỀ 5: Điều gì sẽ xảy ra nếu Yamsc(t) = [1 + x(t)] cos(2πfct) ?.................12
VẤN ĐỀ 6: Tại bộ nhận phục hồi, x(t) được phục hồi từ yAMSC(t) theo công
thức yr(t) = YAMSC (t) cos(2πfct), phân tích yr(t) sau đó thiết kế một bộ lọc thông
thấp x(t) từ yr(t)?....................................................................................................15
VẤN ĐỀ 7: Điều gì sẽ xảy ra nếu T = 2 ?............................................................18
TÀI LIỆU THAM KHẢO.....................................................................................21

PHỤ LỤC HÌNH ẢNH


Hình 1: Tín hiệu mẫu.................................................................................................2
Hình 2........................................................................................................................3
Hình 3.Kết quả đồ thị trong 10 giây sau khi được lấy mẫu.......................................4
Hình 4. Kết quả mô phỏng vấn đề 2..........................................................................6
Hình 5. Kết quả mô phỏng vấn đề 3..........................................................................9
Hình 6. Kết quả mô phỏng vấn đề 4 với N = 200...................................................12
Hình 7. N = 100.......................................................................................................12
Hình 8. N = 2000.....................................................................................................12
Hình 9. Kết quả mô phỏng vấn đề 5........................................................................15
Hình 10. Tín hiệu phổ trong vấn đề 6......................................................................18
Hình 11. Kết quả mô phỏng trong vấn đề 6............................................................19
Hình 12. Kết quả mô phỏng khi T = 1.....................................................................22
Hình 13. Kết quả mô phỏng khi T = 2.....................................................................22
SOLUTION
Phân tích đề bài:
1. Tín hiệu x(t) được lấy mẫu đều tại N=200 lần trong khoảng thời gian 10 giây
(T = 1 giây).
2. Tín hiệu x(t) được điều chế bằng phương pháp AMSC (Amplitude
Modulation with a Single Carrier) để thu được YAMSC(t) = x(t)cos(2f ct),
với fc=50Hz, và tỷ lệ mẫu Fs=400 mẫu/giây.

1
Phân tích tín hiệu x(t):
Xét 3 điểm A, B , C như hình dựa vào công thức y = ax+b có thể suy ra được

{1−t (t ≤ T )
X(t) = t−1(T <t)

Hình 1: Tín hiệu mẫu


VẤN ĐỀ 1: VẼ X(N) VÀ YAMSC (N) VỚI 10S LẤY MẪU
* Mô phỏng trên Matlab:
- Phần mã lập trình:
N = 200; %Số lượng lấy mẫu
Fc = 50; %Tần số sóng mang
Fs = 400; %Tần số lấy mãu
% Thời gian tối đa
Tmax = 10;
% Bước nhảy giữa các thời điểm lấy mẫu
T = Tmax / N;
% Tạo một mảng thời gian từ 0 đến 10 với bước nhảy T
t = 0:T:10;
% Khởi tạo mảng để lưu giá trị x(n)
x_n = zeros(1, length(t));
% Tính giá trị của x(n) tại mỗi thời điểm n
for i = 1:length(t)
if (t(i) <= 1)
x_n(i) = 1 - t(i);
elseif (t(i) > 1 && t(i) <= 2)
x_n(i) = t(i) - 1;
end
end
% Vẽ đồ thị x(n) bằng hàm plot

2
subplot(2,1,1)
plot(t, x_n);
xlabel('t (seconds)');
ylabel('x(n)');
title('Đồ thị x(n) trong 10 giây sau khi được lấy mẫu');
grid on;
yn = x_n.*cos(2*pi*Fc*t);
subplot(2,1,2)
plot(t, yn);
xlabel('t (seconds)');
ylabel('x(n)');
title('Đồ thị y(n) trong 10 giây sau khi được lấy mẫu');
grid on;

- Kết quả mô phỏng:

Hình 2.

3
Hình 3.Kết quả đồ thị trong 10 giây sau khi được lấy mẫu
Kết luận: Vì tín hiệu đã được lấy mẫu N=200 lần trong khoảng thời gian 10
giây, ta có thể tính bước nhảy giữa các thời điểm lấy mẫu (tương ứng với giá trị
của n) là T = 10/200 = 0.05 giây.

Vì tín hiệu tồn tại trong khoảng từ 0 tới 2 (T =1s) => tín hiệu trong khoảng từ 2
đến 10 sẽ bằng 0

4
VẤN ĐỀ 2: Vẽ X(w) và YAMSC (w) dưới miền tần số
* Ý tưởng:
- Sau khi giải quyết xong vấn đề 1 ta có x(n) và YAMSC (n)
- Sử dụng biến đổi fourier để được x(w) và YAMSC (w) trong miền tần số ;
* Mô phỏng trên Matlab:
- Phần mã lập trình:
N = 200; %Số lượng lấy mẫu
Fc = 50; %Tần số sóng mang
Fs = 400; %Tần số lấy mãu
% Thời gian tối đa
Tmax = 10;
% Bước nhảy giữa các thời điểm lấy mẫu
T = Tmax / N;
% Tạo một mảng thời gian từ 0 đến 10 với bước nhảy T
t = 0:T:10;
% Khởi tạo mảng để lưu giá trị x(n)
x_n = zeros(1, length(t));

% Tính giá trị của x(n) tại mỗi thời điểm n


for i = 1:length(t)
if (t(i) <= 1)
x_n(i) = 1 - t(i);
elseif (t(i) > 1 && t(i) <= 2)
x_n(i) = t(i) - 1;
end
end

yn = x_n.*cos(2*pi*Fc*t);

% Biến đổi Fourier rời rạc (DFT)


X_w = fft(x_n, N);
X_shifted = fftshift(X_w); % Xử lý tính đối xứng

Y_w = fft(yn, N);


Y_shifted = fftshift(Y_w); % Xử lý tính đối xứng

5
% Tính tần số tương ứng với các mẫu DFT
f2 = [-N/2: N/2-1]*Fs/N; % Trục tần số ;

% Vẽ phổ X(w)
subplot(2, 1, 1);
plot(f2, abs(X_shifted),'r');
xlabel('Frequency (Hz)');
ylabel('Biên độ');
title('Phổ X(w)');
% Vẽ phổ Y(w)
subplot(2, 1, 2);
plot(f2, abs(Y_shifted),'r');
xlabel('Frequency (Hz)');
ylabel('Biên độ');
title('Phổ Y(w)');
- Phần kết quả mô phỏng:

Hình 4. Kết quả mô phỏng vấn đề 2

6
VẤN ĐỀ 3: QUY LUẬT CỦA FC LÀ GÌ ?, ĐIỀU GÌ SẼ XẢY RA NẾU THAY
ĐỔI FC ?
Trong phương pháp AMSK, tín hiệu baseband (x_n) được nhân với một sóng
mang (cos(2 π fc*t)) có tần số fc để tạo ra tín hiệu modulatd mới (y_n). Sự thay đổi
biên độ của sóng mang phụ thuộc vào giá trị của tín hiệu baseband, và điều này
cho phép truyền thông tin theo cách dựa vào biên độ của sóng mang.
Tần số sóng mang (fc) quyết định tần số tín hiệu modulated cuối cùng và cũng là
một trong những tham số quan trọng trong hệ thống AMSK. Nếu thay đổi giá trị
của fc, tần số sóng mang sẽ thay đổi, và do đó, tần số tín hiệu modulated sẽ thay
đổi theo tần số sóng mang.
Để quan sát rõ ràng hơn về vấn đề này, tôi sẽ mở rộng tầm quan sát của phổ bằng
cách thay đổi số lượng lấy mẫu N.
* Kiểm chứng bằng matlab khi thay đổi fc:
- Phần mã lập trình:
N = 2000; %Số lượng lấy mẫu
Fc = 50; %Tần số sóng mang
Fc_giam = 25; %Tần số sóng mang giảm
Fc_tang = 100; %Tần số sóng mang tăng
Fs = 400; %Tần số lấy mãu
% Thời gian tối đa
Tmax = 10;
% Bước nhảy giữa các thời điểm lấy mẫu
T = Tmax / N;
% Tạo một mảng thời gian từ 0 đến 10 với bước nhảy T
t = 0:T:10;
% Khởi tạo mảng để lưu giá trị x(n)
x_n = zeros(1, length(t));
% Tính giá trị của x(n) tại mỗi thời điểm n
for i = 1:length(t)
if (t(i) >= 0 && t(i) <= 1)
x_n(i) = 1 - t(i);
elseif (t(i) > 1 && t(i) <= 2)
7
x_n(i) = t(i) - 1;
end
end
yn = x_n.*cos(2*pi*Fc*t);
yn_1 = x_n.*cos(2*pi*Fc_giam*t);
yn_2= x_n.*cos(2*pi*Fc_tang*t);

% Biến đổi Fourier rời rạc (DFT)

Y_w = fft(yn, N);


Y_shifted = fftshift(Y_w); % Xử lý tính đối xứng

Y_w1 = fft(yn_1, N);


Y_shifted1 = fftshift(Y_w1); % Xử lý tính đối xứng

Y_w2 = fft(yn_2, N);


Y_shifted2 = fftshift(Y_w2); % Xử lý tính đối xứng

% Tính tần số tương ứng với các mẫu DFT


f2 = [-N/2: N/2-1]*Fs/N; % Trục tần số ;

% Vẽ phổ Y(w)
subplot(3, 1, 1);
plot(f2, abs(Y_shifted),'r');
xlabel('Frequency (Hz)');
ylabel('Biên độ');
title('Phổ Y(w) khi fc = 50');
% Vẽ phổ Y(w) khi fc giảm
subplot(3, 1, 2);
plot(f2, abs(Y_shifted1),'r');
xlabel('Frequency (Hz)');
ylabel('Biên độ');
title('Phổ Y(w) khi fc = 25');
% Vẽ phổ Y(w) khi f tăng
subplot(3, 1, 3);
plot(f2, abs(Y_shifted2),'r');
xlabel('Frequency (Hz)');
ylabel('Biên độ');
title('Phổ Y(w) khi fc = 100');
8
- Phần cửa sổ kết quả mô phỏng:

Hình 5. Kết quả mô phỏng vấn đề 3


Kết luận: Khi thay đổi fc thì có thể thấy phổ bị dịch theo

9
VẤN ĐỀ 4: ĐIỀU GÌ SẼ XẢY RA NẾU CHÚNG TA THAY ĐỔI N (TĂNG
HOẶC GIẢM) ?
N là số lượng mẫu (samples) được sử dụng trong quá trình lấy mẫu và biến
đổi Fourier.
Khi tăng giá trị của N, số lượng mẫu sử dụng trong DFT sẽ tăng, do đó, độ
phân giải tần số sẽ tăng. Điều này có nghĩa là chúng ta có thể phân tích tín hiệu với
độ chi tiết cao hơn trong không gian tần số. Tuy nhiên, việc tăng N cũng đồng
nghĩa với việc tăng thời gian tính toán và tốn nhiều tài nguyên tính toán hơn.
Ngược lại, khi giảm giá trị của N, số lượng mẫu sử dụng trong DFT sẽ giảm,
dẫn đến độ phân giải tần số thấp hơn. Khi độ phân giải tần số thấp, chúng ta có thể
mất đi một số chi tiết nhỏ trong phổ, nhưng thời gian tính toán sẽ giảm đi và tài
nguyên tính toán cũng được tiết kiệm.
* Kiểm chứng bằng matlab khi thay đổi N:
- Phần mã lập trình:
%N = 200; %Số lượng lấy mẫu
N = 2000; %Số lượng lấy mẫu tăng
%N = 100; %Số lượng lấy mẫu giảm

Fc = 50; %Tần số sóng mang


Fc_giam = 25; %Tần số sóng mang giảm
Fc_tang = 100; %Tần số sóng mang tăng

Fs = 400; %Tần số lấy mãu


% Thời gian tối đa
Tmax = 10;
% Bước nhảy giữa các thời điểm lấy mẫu
T = Tmax / N;
% Tạo một mảng thời gian từ 0 đến 10 với bước nhảy T
t = 0:T:10;
% Khởi tạo mảng để lưu giá trị x(n)
x_n = zeros(1, length(t));
% Tính giá trị của x(n) tại mỗi thời điểm n
10
for i = 1:length(t)
if (t(i) >= 0 && t(i) <= 1)
x_n(i) = 1 - t(i);
elseif (t(i) > 1 && t(i) <= 2)
x_n(i) = t(i) - 1;
end
end

yn = x_n.*cos(2*pi*Fc*t);
yn_1 = x_n.*cos(2*pi*Fc_giam*t);
yn_2= x_n.*cos(2*pi*Fc_tang*t);

% Biến đổi Fourier rời rạc (DFT)

Y_w = fft(yn, N);


Y_shifted = fftshift(Y_w); % Xử lý tính đối xứng

Y_w1 = fft(yn_1, N);


Y_shifted1 = fftshift(Y_w1); % Xử lý tính đối xứng

Y_w2 = fft(yn_2, N);


Y_shifted2 = fftshift(Y_w2); % Xử lý tính đối xứng

% Tính tần số tương ứng với các mẫu DFT


f2 = [-N/2: N/2-1]*Fs/N; % Trục tần số ;

% Vẽ phổ Y(w)
subplot(3, 1, 1);
plot(f2, abs(Y_shifted),'r');
xlabel('Frequency (Hz)');
ylabel('Biên độ');
title('Phổ Y(w) khi fc = 50');
% Vẽ phổ Y(w) khi fc giảm
subplot(3, 1, 2);
plot(f2, abs(Y_shifted1),'r');
xlabel('Frequency (Hz)');
ylabel('Biên độ');
title('Phổ Y(w) khi fc = 25');
% Vẽ phổ Y(w) khi f tăng
11
subplot(3, 1, 3);
plot(f2, abs(Y_shifted2),'r');
xlabel('Frequency (Hz)');
ylabel('Biên độ');
title('Phổ Y(w) khi fc = 100');
- Kết quả mô phỏng:

Hình 6. Kết quả mô phỏng vấn đề 4 với N = 200

Hình 7. N = 100 Hình 8. N = 2000


Kết luận: Khi thay đổi N thì độ phân giải của phổ cũng thay đổi.

Khi thay đổi N thì tầm quan sát của phổ cũng sẽ thay đổi.
12
VẤN ĐỀ 5: ĐIỀU GÌ SẼ XẢY RA NẾU YAMSC(T) = [1 + X(T)] COS(2ΠFCT) ?
Để thuận lợi cho việc quan sát kết quả trong vấn đề 5, tôi sẽ thay đổi tầm
quan sát của phổ để có độ phân giải tần số tốt hơn và chi tiết phổ tín hiệu được
hiển thị rõ ràng hơn.
* Kiểm chứng bằng matlab khi thay N thành 100:
- Phần mã lập trình:
N = 2000; %Số lượng lấy mẫu
Fc = 50; %Tần số sóng mang
Fs = 400; %Tần số lấy mãu
% Thời gian tối đa
Tmax = 10;
% Bước nhảy giữa các thời điểm lấy mẫu
T = Tmax / N;
% Tạo một mảng thời gian từ 0 đến 10 với bước nhảy T
t = 0:T:10;

% Khởi tạo mảng để lưu giá trị x(n)


x_n = zeros(1, length(t));
% Tính giá trị của x(n) tại mỗi thời điểm n
for i = 1:length(t)
if (t(i) >= 0 && t(i) <= 1)
x_n(i) = 1 - t(i);
elseif (t(i) > 1 && t(i) <= 2)
x_n(i) = t(i) - 1;
end
end

yn = x_n.*cos(2*pi*Fc*t);
yn1 = (1+ x_n).*cos(2*pi*Fc*t);

% Biến đổi Fourier rời rạc (DFT)


Y_w = fft(yn, N);
Y_shifted = fftshift(Y_w); % Xử lý tính đối xứng

Y_w1 = fft(yn1, N);


13
Y_shifted1 = fftshift(Y_w1); % Xử lý tính đối xứng

% Tính tần số tương ứng với các mẫu DFT


f2 = [-N/2: N/2-1]*Fs/N; % Trục tần số ;

figure;
subplot(2,1,1)
plot(t, yn);
xlabel('t (seconds)');
ylabel('x(n)');
title('Đồ thị y(n) trong 10 giây sau khi được lấy mẫu');
grid on;

yn = x_n.*cos(2*pi*Fc*t);
subplot(2,1,2)
plot(t, yn1);
xlabel('t (seconds)');
ylabel('y(n)');
title('Đồ thị y(n) khi + 1 cho x(n) trong 10 giây sau khi
được lấy mẫu');
grid on;

figure;
% Vẽ phổ X(w)
subplot(2, 1, 1);
plot(f2, abs(Y_shifted),'r');
xlabel('Frequency (Hz)');
ylabel('Biên độ');
title('Phổ Y(w)');

% Vẽ phổ Y(w)
subplot(2, 1, 2);
plot(f2, abs(Y_shifted1),'r');
xlabel('Frequency (Hz)');
ylabel('Biên độ');
title('Phổ Y2(w)');

14
- Kết quả mô phỏng:

Hình 9. Kết quả mô phỏng vấn đề 5


Kết luận: Qua kết quả quan sát được sau khi sử dụng matlab để mô phỏng thì
có thể kết luận rằng khi +1 vào x(n) thì Y giữ nguyên dạng sóng chỉ thay đổi về
biên độ.

15
VẤN ĐỀ 6: TẠI BỘ NHẬN PHỤC HỒI, X(T) ĐƯỢC PHỤC HỒI TỪ
YAMSC(T) THEO CÔNG THỨC YR(T) = YAMSC (T) COS(2ΠFCT), PHÂN TÍCH
YR(T) SAU ĐÓ THIẾT KẾ MỘT BỘ LỌC THÔNG THẤP X(T) TỪ YR(T)?
* Mô phỏng trên Matlab:
- Phần mã lập trình:
N = 2000; %Số lượng lấy mẫu
Fc = 50; %Tần số sóng mang
Fs = 400; %Tần số lấy mãu
% Thời gian tối đa
Tmax = 10;
% Bước nhảy giữa các thời điểm lấy mẫu
T = Tmax / N;
% Tạo một mảng thời gian từ 0 đến 10 với bước nhảy T
t = 0:T:10;
% Khởi tạo mảng để lưu giá trị x(n)
x_n = zeros(1, length(t));
% Tính giá trị của x(n) tại mỗi thời điểm n
for i = 1:length(t)
if (t(i) >= 0 && t(i) <= 1)
x_n(i) = 1 - t(i);
elseif (t(i) > 1 && t(i) <= 2)
x_n(i) = t(i) - 1;
end
end
yn = x_n.*cos(2*pi*Fc*t);
yr = yn.*cos(2*pi*Fc*t);

% Biến đổi Fourier rời rạc (DFT)


X_w = fft(x_n, N);
X_shifted = fftshift(X_w); % Xử lý tính đối xứng

Y_w = fft(yn, N);


Y_shifted = fftshift(Y_w); % Xử lý tính đối xứng

Y_rw = fft(yr, N);


16
Y_shifted1 = fftshift(Y_rw); % Xử lý tính đối xứng

% Tính tần số tương ứng với các mẫu DFT


f2 = (0: N-1)*Fs/N; % Trục tần số ;

figure;
% Vẽ phổ X(w)
subplot(2, 1, 1);
plot(f2, abs(X_w),'r', f2, abs(Y_w),'b');
xlabel('Frequency (Hz)');
ylabel('Biên độ');
legend('X_w','Y_w');
title('Phổ');

subplot(2,1,2)
plot(f2, abs(X_w),'r', f2, abs(Y_rw),'b');
xlabel('t (seconds)');
ylabel('Biên độ');
legend('X_w','Y_rw');
grid on;

% Thiết kế bộ lọc thông thấp


cutoff_frequency = 50; % Tần số cắt, cùng với tần số sóng
mang Fc
% Normalize the cutoff frequency to the Nyquist frequency
(Fs/2)
normalized_cutoff = cutoff_frequency / (Fs/2);
% Thiết kế bộ lọc thông thấp FIR
filter_order = 1; % Bậc của bộ lọc thông thấp (điều chỉnh
nếu cần thiết)
b = fir1(filter_order, normalized_cutoff, 'low');
% Áp dụng bộ lọc thông thấp vào tín hiệu y(t) (`yr`) để lấy
lại x(t)
x_recovered = filter(b, 1, yr);
figure;
% Vẽ đồ thị x(n) bằng hàm plot
subplot(2,1,1)
plot(t, x_n);
xlabel('t (seconds)');
17
ylabel('x(n)');
title('Đồ thị x(n)');
grid on;
% Vẽ đồ thị tín hiệu đã lấy lại x(t)
subplot(2,1,2)
plot(t, x_recovered);
xlabel('Time (seconds)');
ylabel('x(t)');
title('Recovered Signal x(t) using Low-Pass Filter');
grid on;
- Phần cửa sổ kết quả yr:

Hình 10. Tín hiệu phổ trong vấn đề 6

18
Hình 11. Kết quả mô phỏng trong vấn đề 6
Kết luận: tín hiệu đầu ra bị trễ tuy nhiên tín hiệu được phục hồi gần đúng với
tín hiệu mẫu đầu vào và có biên độ giảm một nửa.

19
VẤN ĐỀ 7: ĐIỀU GÌ SẼ XẢY RA NẾU T = 2 ?
* Mô phỏng trên Matlab:
- Phần mã lập trình:
N = 200; %Số lượng lấy mẫu
Fc = 50; %Tần số sóng mang
Fs = 400; %Tần số lấy mãu
% Thời gian tối đa
Tmax = 10;
% Bước nhảy giữa các thời điểm lấy mẫu
%T = 1;
T = 2;
% Tạo một mảng thời gian từ 0 đến 10 với bước nhảy T
t = 0: Tmax/N:10;

% Khởi tạo mảng để lưu giá trị x(n)


x_n = zeros(1, length(t));

% Tính giá trị của x(n) tại mỗi thời điểm n


for i = 1:length(t)
if (t(i) >= 0 && t(i) <= T)
x_n(i) = T - t(i);
elseif (t(i) > T && t(i) <= 2*T)
x_n(i) = t(i) - T;
end
end
% Vẽ đồ thị x(n) bằng hàm plot
subplot(2,1,1)
plot(t, x_n);
xlabel('t (seconds)');
ylabel('x(n)');
title('Đồ thị x(n) trong 10 giây sau khi được lấy mẫu');
grid on;

yn = x_n.*cos(2*pi*Fc*t);

subplot(2,1,2)
plot(t, yn);
20
xlabel('t (seconds)');
ylabel('y(n)');
title('Đồ thị y(n) trong 10 giây sau khi được lấy mẫu');
grid on;

% Biến đổi Fourier rời rạc (DFT)


X_w = fft(x_n, N);
X_shifted = fftshift(X_w); % Xử lý tính đối xứng

Y_w = fft(yn, N);


Y_shifted = fftshift(Y_w); % Xử lý tính đối xứng

% Tính tần số tương ứng với các mẫu DFT


f2 = [-N/2: N/2-1]*Fs/N; % Trục tần số ;

figure;
% Vẽ phổ X(w)
subplot(2, 1, 1);
plot(f2, abs(X_shifted),'r');
xlabel('Frequency (Hz)');
ylabel('Biên độ');
title('Phổ X(w)');

% Vẽ phổ Y(w)
subplot(2, 1, 2);
plot(f2, abs(Y_shifted),'r');
xlabel('Frequency (Hz)');
ylabel('Biên độ');
title('Phổ Y(w)');

- kết quả với T = 1:

21
Hình 12. Kết quả mô phỏng khi T = 1
- kết quả với T = 2:

Hình 13. Kết quả mô phỏng khi T = 2


Kết luận: Khi T = 2 ta thấy độ rộng xung trong miền thời gian thay đổi, còn
trong miền phổ xung trở nên nhọn hơn.

22
TÀI LIỆU THAM KHẢO
1. Giáo trình và tài liệu của TS Võ Nguyên Sơn
2. https://dadorran.wordpress.com/2014/02/20/plotting-frequency-spectrum-
using-matlab/#2

23

You might also like