You are on page 1of 8

Bài 1: TÍN HIỆU TRONG MIỀN THỜI GIAN

Nhóm:
Họ và tên:
MSSV:

Mục tiêu:

-Làm quen với xử lý tín hiệu với Python

-Tạo được các tín hiệu cơ bản

-Hiểu rõ các định lý lấy mẫu tín hiệu.

Tín hiệu rời rạc trong miền thời gian

Các tín hiệu tương tự thường là liên tục thời gian. Bằng cách lấy mẫu tín hiệu tương
tự, ta được tín hiệu đã lấy mẫu hay gọi là tín hiệu rời rạc thời gian hay tín hiệu số. Tín hiệu
có thể phân thành 2 loại là tín hiệu xác định và tín hiệu ngẫu nhiên. Tín hiệu xác định
thường được dùng cho mục đích kiểm test và được mô tả bằng các hàm toán học. Tín hiệu
ngẫu nhiên mang thông tin như tín hiệu tiếng nói, âm nhạc,… Một số tín hiệu xác định cơ
bản:

1.Xung lực đơn vị (còn được gọi là hàm delta Kronecker)

Tín hiệu có biên độ 1 ở gốc thời gian và bằng 0 ở mọi thời điểm khác

1
Hình 1: Xung lực đơn vị
2. Bậc đơn vị

Tín hiệu bậc đơn vị bằng 0 trong quá khứ và bằng 1 kể từ gốc thời gian về sau. Tín hiệu
này thường được dùng để mô tả các hệ thống nhân quả.

Bậc đơn vị delay n mẫu


Hình 2: Bậc đơn vị
3. Tín hiệu sin thực

Tín hiệu sin liên thời gian có biểu thức

Trong đó là biên độ, là tần số góc (radian/giây) còn là pha ban đầu
Tín hiệu rời rạc tương ứng có dạng

Trong đó T là chu kỳ lấy mẫu của tín hiệu


Tín hiệu số còn được viết dưới dạng

Trong đó:

là tần số số có đơn vị là radian/mẫu, và

được gọi là tần số số chuẩn hóa, đơn vị là chu kỳ/mẫu


Ví dụ: Tạo 32 mẫu tín hiệu sin với và
Ta có: . ,
Minh họa tín hiệu trong hình sau. Lưu ý: nghĩa là có 4 mẫu từ 0 đến (8 mẫu
cho mỗi chu kỳ tín hiệu)

Hình 3: Tín hiệu sin rời rạc


B. Lấy mẫu tín hiệu

1. Định lý lấy mẫu


Ngày nay, nhờ khả năng dễ lưu trữ và xử lý mà các hệ thống xử lý tín hiệu số ngày càng
phát triển rộng rãi. Thông qua các mạch ADC, các tín hiệu tương tự được chuyển thành tín
hiệu số và được đưa qua các mạch DSP để xử lý, cuối cùng được lưu trữ hoặc được chuyển lại
thành tín hiệu tương tự thông qua các mạch DAC.
1.1. Sampling Lowpass Signal
Để chống hiện tượng alias xuất hiện trong tín hiệu ra sau khi lấy mẫu, ta sử dụng mạch
lọc thấp qua để loại bỏ thành phần tần số cao, sau đó đưa tín hiệu qua mạch ADC để lấy
mẫu với tần số lấy mẫu fs tuân theo định lý Shannon – Nyquist:
Để tín hiệu sau khi lấy mẫu biểu diễn đúng tín hiệu tương tự gốc, tần số lấy mẫu
phải lớn hơn hoặc bằng hai lần thành phần tần số lớn nhất của tín hiệu tương tự: fs
≥ 2FM.
Nếu tần số lấy mẫu không thỏa định lý Shannon – Nyquist thì trong phổ tần của tín
hiệu sau khi lấy mẫu sẽ xuất hiện tần số giả f0 = F ± mfs.
1.2. Sampling Bandpass Signals
Trong thực tế ngoài cách lấy mẫu theo định lý Shannon – Nyquist, ta còn có thể sử
dụng kỹ thuật bandpass sampling để lấy mẫu dải tần số tín hiệu có tần số trung tâm nằm
ở tần số khác 0 Hz. Kỹ thuật này còn được biết đến với các tên khác như IF sampling,
harmonic sampling, sub-Nyquist sampling, và under-sampling.
Ví dụ ta sử dụng kỹ thuật bandpass sampling để lấy mẫu dải tín hiệu có băng thông là
5 MHz và tần số trung tâm fc = 20 MHz như hình 1.a, nếu tuân theo định lý Shannon –
Nyquist, tần số lấy mẫu phải là 45 MHz, tuy nhiên nếu ta lấy mẫu ở tần số 17,5 Mhz, thì
tín hiệu ra sẽ xuất hiện dải tần giả có tần số trung tâm là 2,5 MHz và băng thông 5 Mhz
như ở hình 1.b. Có thể thấy bandpass sampling không những lấy mẫu tín hiệu ở tần số
thấp hơn kỹ thuật lowpass sampling mà còn thực hiện quá trình chuyển tần số về dải base
band, do đó kỹ thuật này được ứng dụng nhiều trong các hệ thống truyền thông.

Hình 1: Bandpass signal sampling: (a) Phổ tần tín hiệu gốc; (b) Phố tần tín hiệu giả khi tần số
lấy mẫu là 17.5 MHz.
2. Tái tạo lại tín hiệu tương tự
Để tái tạo lại tín hiệu tương tự từ tín hiệu số, trước tiên ta đưa tín hiệu số qua mạch
DAC sau đó sử dụng mạch lọc thấp qua để tạo lại tín hiệu tương tự. Đáp ứng xung của
mạch lọc thấp qua:

Tín hiệu được tái tạo sẽ là tích chập của tín hiệu lấy mẫu với đáp ứng xung của mạch
lọc thấp qua:
C. Tạo tín hiệu sử dụng ngôn ngữ Python

Để thực hành xử lý tín hiệu số với Python, chúng ta sử dụng 3 thư viện chính:

-numpy: Giúp xử lý số học, lượng giác hoặc mảng…

-matplotlib: Hỗ trợ vẽ tín hiệu

-scipy: Thư viện hỗ trợ một số hàm xử lý tín hiệu số

Một số hàm được sử dụng trong bài thực hành:

Thư viện Tên hàm Chức năng


linspace(start, Trả về một mảng tuyến tính các số trong
stop, num=50, khoảng [start, stop] với số mẫu được tạo
endpoint=true) ra là num

Ví dụ:
a = np.linspace(2.0, 3.0,
num=5, endpoint= False)
b = np.linspace(2.0, 3.0,
num=5, endpoint=True)

sẽ cho kết quả:


a = [2. 2.2 2.4 2.6 2.8]
b = [2. 2.25 2.5 2.75 3. ]
numpy
arange([start, Tạo ra một mảng các số hạng trong nửa
]stop, [step, khoảng [start, stop) với bước là step
]dtype=none)
Ví dụ:
>>> np.arange(3) #Câu lệnh

array([0, 1, 2]) #Kết quả

>>> np.arange(3.0)

array([ 0., 1., 2.])

>>> np.arange(3,7)

array([3, 4, 5, 6])
>>> np.arange(3,7,2)

array([3, 5])

sin(x) Thực hiện hàm sin

Ví dụ:

y = np.sin(3*np.pi*t+np.pi/6)
pi Số 𝜋
ones(m,n) Tạo ra một mảng m hàng n cột các giá trị
1
zeros(m,n) Tạo ra một mảng m hàng n cột các giá trị
0
concatenate(m, n) Ghép 2 mảng lại với nhau
plot(x, y, fmt) Vẽ tín hiệu y theo x, với các thuộc tính
màu sắc, ký hiệu từ tham số fmt

Ví dụ:
plot(x, y, 'bo') # Vẽ x và y
đánh dấu bằng vòng tròn màu
xanh

plot(x, y, 'r+') # Vẽ x và y
đánh dấu bằng dấu + màu đỏ
matplotlib stem(n, y, fmt)
Vẽ tín hiệu y theo n theo dạng lấy mẫu
tín hiệu
step(m, y, fmt) Vẽ tín hiệu y theo n theo dạng bậc thang
title(title) Các hàm đặt tên cho biểu đồ, đặt tên cho
xlabel(xlabel) trục x và đặt tên cho trục y
ylabel(xlabel)

xlim(x1, x2) Giới hạn trục x từ x1 đến x2


ylim(y1, y2) Giới hạn trục y từ y1 đến y2

Scipy unit_impulse(n, m) Tạo ra một xung lực đơn vị n mẫu, delay


m mẫu
square(x) Tạo ra sóng vuông

Ví dụ:

square(2 * np.pi * 5 * t)
#Tạo sóng vuông tần số 5Hz,
với tần số lấy mẫu là 500Hz

Các hàm được nêu trong bảng trên được viết rút gọn. Để xem đầy đủ, sinh viên xem tại:

http://www.numpy.org/

https://www.scipy.org/

https://matplotlib.org/

Lập trình với Notebook:

Ngôn ngữ lập trình: Python 3

Công cụ hỗ trợ: sinh viên thực hiện các bài thực hành bằng một trong các công cụ sau:

Công cụ Hình thức sử dụng Yêu cầu

https://colab.research.google.com Web Online Tài khoản Google

Visual Studio Code với Jupyter Phần mềm Offline Cài Python và thư viện
Notebook

You might also like