1.1 Định nghĩa: Tín hiệu là sự biến thiên biên độ theo thời gian.
1.2 Phân loại tín hiệu:
Xét về dạng sóng và sự liên tục, người ta phân tín hiệu ra thành 2 loai cơ bản là tín hiệu
tương tự (analog) hay liên tục thời gian và tín hiệu số (digital) hay rời rạc thời gian
Tín hiệu biến thiên liên tục về biên độ là tín hiệu tương tự, thường đươc ký hiệu là x(t).
Tín hiệu thời gian rời rạc được biểu diễn như một dãy số nguyên từ -∞ đến ∞, ký hiệu là
x[n].
58 trang |
Chia sẻ: nyanko | Lượt xem: 2173 | Lượt tải: 0
Bạn đang xem trước 20 trang tài liệu Bài giảng Bài 1: Các tín hiệu cơ bản, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
BÀI 1: CÁC TÍN HIỆU CƠ BẢN
1.1 Định nghĩa: Tín hiệu là sự biến thiên biên độ theo thời gian.
1.2 Phân loại tín hiệu:
Xét về dạng sóng và sự liên tục, người ta phân tín hiệu ra thành 2 loai cơ bản là tín hiệu
tương tự (analog) hay liên tục thời gian và tín hiệu số (digital) hay rời rạc thời gian
Tín hiệu biến thiên liên tục về biên độ là tín hiệu tương tự, thường đươc ký hiệu là x(t).
Tín hiệu thời gian rời rạc được biểu diễn như một dãy số nguyên từ -∞ đến ∞, ký hiệu là
x[n].
1.3 Một số tín hiệu tương tự cơ bản:
1.3.1 Tạo sóng vuông
f=10000;
t=0:1/f:1.5;
x=square(2*pi*50*t,50);
plot(t,x);
axis([0 0.1 -2 2]);
1.3.2 Tạo sóng sin
f=10000;
t=0:1/f:1.5;
x=sin(2*pi*50*t);
plot(t,x);
axis([0 0.1 -2 2]);
1.3.3 Tạo sóng răng cưa
f=10000;
t=0:1/f:1.5;
x=sawtooth(2*pi*50*t);
plot(t,x);
axis([0 0.1 -2 2]);
1.4 Một số tín hiệu rời rạc cơ bản
1.4.1 Tạo xung lực đơn vị
Dãy xung lực đơn vị có chiều dài N mẫu
n=0:1:10;
N=length(n);
delta=[1 zeros(1,N-1)]
stem(n,delta);
axis([0 10 0 1.2])
Dãy xung lực đơn vị có chiều dài N bị trễ M mẫu (M<N)
n=0:1:10;
N=length(n);
delta=[zeros(1,M) 1 zeros(1,N-1)];
stem(n,delta);
axis([0 10 0 1.2])
Để biểu diễn tín hiệu xung lực đơn vị có dạng tổng quát
Với , ta dùng hàm Matlab có cú pháp sau :
function [x,n] = imseq(n0,n1,n2)
n=[n1:n2];
x=[(n-n0)==0];
1.4.2 Tạo tín hiệu bậc đơn vị
n=0:1:10;
N=length(n);
unit=[ones(1,N)];
stem(n,unit);
axis([0 10 0 1.2])
Để biểu diễn tín hiệu bậc đơn vị có dạng tổng quát
Với , ta dùng hàm Matlab có cú pháp sau:
function [x,n] = stepseq(n0,n1,n2)
n=[n1:n2];
x=[(n-n0)>=0];
1.4.3 Tạo tín hiệu dốc đơn vị
n=0:1:10;
y=n;
stem(n,y);
1.4.4 Tạo tín hiệu mũ thực
n=0:1:20;
y=0.9.^n;
stem(n,y);
1.4.5 Tạo tín hiệu mũ phức:
n=0:1:10;
y=exp((2+3j)*n;
stem(n,y);
1.5 Các phép toán trên chuỗi tín hiệu rời rạc
1.5.1 Phép cộng hai tín hiệu
Phép cộng hai tín hiệu trong Matlab được thực hiện bởi toán tử “+”. Tuy nhiên, chiều dài của hai tín hiệu phải bằng nhau. Nếu dài dài của hai tín hiệu khác nhau, hay gốc toạ độ của 2 chuỗi tín hiệu khác nhau thì ta không thể sử dụng trực tiếp toán tử “+”. Do đó , ta cần phải biến đổi x1(n) và x2(n) sao cho có cùng vị trí n trước khi thực hiện phép cộng hai tín hiệu.
Phép cộng được thực hiện bởi hàm Matlab sau
function[y n]=sigadd(x1,n1,x2,n2)
n=min(min(n1),min(n2)):max(max(n1),max(n2));
y1=zeros(1,length(n));
y2=y1;
y1(find(n>=min(n1))&(n<=max(n1))==1))=x1;
y2(find(n>=min(n2))&(n<=max(n2))==1))=x2;
y=y1+y2;
1.5.2 Phép nhân hai tín hiệu
Phép nhân hai tín hiệu trong Matlab được thực hiện bởi toán tử “.*”. Tuy nhiên, giống như phép cộng, ta cần phải biến đổi 2 tín hiệu trược khi thực hiện phép nhân
Phép nhân được thực hiện bởi hàm Matlab sau
function[y n]=sigmult(x1,n1,x2,n2)
n=min(min(n1),min(n2)):max(max(n1),max(n2));
y1=zeros(1,length(n));
y2=y1;
y1(find(n>=min(n1))&(n<=max(n1))==1))=x1;
y2(find(n>=min(n2))&(n<=max(n2))==1))=x2;
y=y1.*y2;
1.5.3 Phép dịch và gấp tín hiệu
Tín hiệu x(n) được dịch chuyển đi n0 mẫu để tạo thành tín hiệu y(n)=x(n-n0). Đặt m=n-n0, ta có n=m+n0, tín hiệu y(n) được viết lại thành y(m+n0)=x(m). Đó đó thuật toán này không tác động vào tín hiệu x(n) mà chỉ có vecto n được dịch chuyển đi n0 mẫu
Phép dịch được thực hiện bởi hàm Matlab sau:
function[y n]=sigshift(x,m,n0)
n=m+n0;
y=x;
Tín hiệu x(n) được gấp qua gốc n=0 để tạo thành tín hiệu y(n)=x(-n).
Phép gấp được thực hiện bởi hàm Matlab sau:
function[y n]=sigfold(x,n)
y=fliplr(x);
n=-fliplr(n);
1.6 Bài tập
1>Vẽ tín hiệu lũy thừa thực có biểu thức x(n)=0.2(1.2)n .Vẽ lại tín hiệu trên sau khi đã trì hõan
N=10 mẫu.
2> Vẽ tín hiệu sin thực rời rạc thờ i gian x(n)=1.5 sin(0.2πn).Tín hiệu tuần hoàn với chu kỳ, tần số
bao nhiêu?
Biến đổi chương trình trên để vẽ và hiển thị dãy có chiều dài N=50 mẫu, tần số 0.08, biên độ 2.5 và độ dịch pha 90o.
3>Vẽ tín hiệu sin phức x[n]=e(-0.1+j0.3)n với . Vẽ các thành phần biên độ, pha, phần thực và phần ảo trong 4 đồ thị riêng
4> Cho tín hiệu x(n)=[1,2,3,4,5,6,7,6,5,4,3,2,1]. Vẽ các tín hiệu sau
x1(n)=2x(n-5)-3x(n+4)
x2(n)=x(3-n)+x(n)x(n-2)
5> Viết chương trình tạo một hàm Matlab thực hiện việc tách tín hiệu thành hai phần chẵn và lẻ với quy định sau: function [xe,xo,m]=evenodd(x,n)
Ứng dụng hàm vừa viết để vẽ thành phần chẵn và lẻ của tín hiệu x(n)=u(n)-u(n-10)
CHƯƠNG 2: PHÂN TÍCH TÍN HIỆU VÀ HỆ THỐNG
LTI TRONG MIỀN THỜI GIAN
2.1 Định nghĩa
Hệ thống rời rạc thời gian: còn được gọi là hệ thống xử lý tín hiệu số, biến đổi tín hiệu x[n] thành tín hiệu y[n] với những tính chất mong muốn.Thường ta giả sử hệ thống rời rạc thời gian là tuyến và bất biến thời gian (linear and invariant time-LTI) để thuận lợi trong việc phân tích và thiết kế. Hệ thống cũng thường được giả sử là nhân quả và thư giãn.
Phân tích hệ thống là tìm tín hiệu ra, còn gọi là đáp ứng,đối với tín hiệu vào khi hệ thống đã được biết.
Đáp ứng xung::đáp ứng xung là tín hiệu ra của hệ thống khi tín hiệu vào là xung lực đơn vị.
Lọc (filter) là thuật ngữ chung dùng để chỉ một hệ thống tuyến và bất biến thời gian được thiết kế cho việc lọc lựa tần số. do đó, một hệ thống LTI rời tạc thời gian còn được gọi là bộ lọc số. Có 2 loại lọc số chính
Lọc FIR: Nếu đáp ứng xung của hệ thống LTI là hữu hạn thời gian thì hệ thống được gọi là lọc FIR
Lọc IIR: Nếu đáp ứng xung của hệ thống LTI là vô hạn thời gian thì hệ thống được gọi là lọc IIR
2.2 Đáp ứng xung và phương trình sai phân
Trong Matlab người ta sử dụng lệnh h=impz(num,den,N) để tính đáp ứng xung của hệ thống thời
gian rời rạc LTI.
Với num: là các hệ số tín hiệu vào, den: hệ số các tín hiệu ra,N: số đáp ứng xung.
Để mô phỏng các hệ thống rời rạc thời gian LTI nhân quả có phương trình sai phân
Trong Matlab ta có thể sử dụng lệnh y=filter(num,den,x) hay y=filter(num,den,x,ic)
Với ic=[y[-1] y[-2] y[-N]] là vecto điều kiện ban đầu
Ví dụ: Tính và vẽ 50 đáp ứng xung của hệ thống có phương trình sai phân sau:
y[n]-0.4y[n-1]+0.75y[n-2]=2.2403x[n]+2.4908x[n-1]+2.2403x[n-2]
Chương trình:
clf;
N=50;
num=[2.2403 2.4908 2.2403];
den=[1 -0.4 0.75];
h=impz(num,den,N);
stem(h);
2.3 Một số tính chất của hệ thống
2.3.1. Tính chất tuyến tính và phi tuyến
Nếu a1x1[n]+a2x2[n] a1y1[n]+a2y2[n], a1 và a2 là hằng số
thì hệ thống là tuyến tính, nếu không hệ thống là phi tuyến
Hệ thống tuyến tính là hệ thống có quan hệ bậc nhất giữa phản ứng và tác động, đồng thời thoả mãn nguyên lý xếp chồng
Ví dụ : Khảo sát tính chất tuyến tính của hệ thống có phương trình sai phân sau:
y[n]=2.2403x[n] + 2.4908x[n-1] + 2.2403x[n-2] + 0.4y[n-1]
với x1[n]= cos(0.2πn), x2[n]=cos(0.8πn), a=2, b=-3.
Chương trình:
a=2;
b=-3;
x1=cos(2*pi*0.1*n);
x2=cos(2*pi*0.4*n);
x=a*x1+b*x2;
num=[2.2403 2.4908 2.2403];
den=[1 -0.4];
y1=filter(num,den,x1);
y2=filter(num,den,x2);
y=filter(num,den,x);
yt=a*y1+b*y2;
d=y-yt;
subplot(3,1,1);
stem(n,y);
subplot(3,1,2);
stem(n,yt);
subplot(3,1,3);
stem(n,d);
2.3.2. Tính chất bất biến thời gian
Nếu y’[n-k]=y[n-k]: hệ thống bất biến thời gian
Nếu y’[n-k]≠y[n-k]: hệ thống bất biến thời gian
Hệ thống bất biến thời gian là hệ thống hễ có tác động x(n) dịch k mẫu thì phản ứng y(n) cũng chỉ dịch cùng chiều k mẫu mà không bị biến đổi dạng.
Ví dụ : Khảo sát tính bất biến thời gian của hệ thống có phương trình sai phân sau
y[n]=2.2403x[n]+2.4908x[n-1]+2.2403x[n-2]+0.4y[n-1]
với tín hiệu vào x[n]=0.3cos(0.2πn)-2cos(0.8πn).
Chương trình
clf;
n=0:40;
n0=10;
a=0.3;
b=-2;
xn=a*cos(2*pi*0.1*n)+b*cos(2*pi*0.4*n);
xn0=[zeros(1,n0) xn];
num=[2.2403 2.4908 2.2403];
den=[1 -0.4];
yn=filter(num,den,xn);
yn0=filter(num,den,xn0);
dn=yn-yn0(1+n0:41+n0);
subplot(3,1,1);
stem(n,yn);
subplot(3,1,2);
stem(n,yn0(1:41));
subplot(3,1,3);
stem(n,dn);
2.3.3. Tính chất ổn định
Một hệ thống LTI ổn định theo nghĩa BIBO khi và chỉ khi đáp ứng xung đơn vị của nó có tổng tuyệt đối. Đối với hệ thống IIR thì điều kiện cần để hệ thống này ổn định là đáp ứng xung của hệ phải suy giảm tới 0 khi số lượng mẫu đủ lớn.
Để kiểm tra tính ổn định của hệ thống,đáp ứng xung đơn vị được đánh giá theo công thức
Khi k tăng và kiểm tra các giá trị của |h(k)| tại mỗi bước 1ặp.Nếu giá trị của |h(k)| nhỏ hơn 10-6 thì có thể coi tổng S(k) hội tụ
Ví dụ: Kiểm tra tính ổn định của hệ thống LTI có phương rình sai phân:
y[n]=x[n]-0.8x[n-1]-1.5y[n-1]-0.9y[n-2]
Chương trình:
clf;
num=[1 -0.8];
den=[1 1.5 0.9];
N=200;
h=impz(num,den,N+1);
sum=0;
for k=1:N+1;
sum=sum+abs(h(k));
if abs(h(k))<10^(-6),break,end
end
n=0:N;
stem(n,h);
disp('Value=');
disp(abs(h(k)));
Value= 1.6761e-005
2.4 Nhân chập
Quan hệ vào/ra của hệ thống LTI được xác định bởi tổng nhân chập:
∞
Và được ký hiệu bằng y(n)=x(n)*h(n)
Hàm nhân chập của Matlab là hàm conv với cú pháp y=conv(x1,x2). Tuy nhiên hàm conv này mặc định 2 tín hiệu được nhân chập có tín hiệu bắt đầu tại n=0
Đối vớ i việc xử lý tín hiệu hai chiều ta dùng hàm nhân chập y=covn2(x1,x2)
Ví dụ : Thực hiện nhân chập 2 tín hiệu sau.Tìm tín hiệu ra y(n)
h(n)=[0,1,2,1,-1,0] và x(n)= [0,1,2,3,1,0]
Chương trình
h=[3 11 7 0 -1 4 2];
x=[2 3 0 5 -2 1 ];
y=conv(h,x)
y = 6 31 47 36 47 21 13 8 22 1 0 2
Để tính nhân chập cho 2 tín hiệu có gốc n=0 tại 1 giá trị bất kỳ ta dùng hàm Matlab sau
function [y ny]=conv_m(x,nx,h,nh)
nyb=nx(1)+nh(1);
nye=nx(length(x))+nh(length(h));
ny=[nyb:nye];
y=conv(x,h)
Ví dụ: Tính nhân chập hai tín hiệu sau
h=[3 11 7 0 -1 4 2]; x=[2 3 0 5 -2 1 ];
Chương trình
x=[3 11 7 0 -1 4 2];
nx=[-3:3];
h=[2 3 0 5 -2 1 ];
nh=[-1:4];
[y ny]=conv_m(x,nx,h,nh)
y = 6 31 47 36 47 21 13 8 22 1 0 2
ny = -4 -3 -2 -1 0 1 2 3 4 5 6 7
Để giải nhân chập,hay là việc chia một đa thức cho một đa thức người ta sử dụng cú pháp trong Matlab [p r]=deconv(b,a). Lệnh này thực hiện việc tính toán chia đa thức b cho đa thức a được kết quả là đa thức p và phần dư là r
2.5 Bài tập
1. Tính và vẽ 45 mẫu đầu tiên đáp ứng xung của hệ thống LTI nhân quả sau:
y[n]+0.71y[n-1]-0.46y[n-2]-0.62y[n-3]=0.9x[n]-0.45x[n-1]-0.35x[n-2]+0.002x[n-3]
Viết chương trình Matlab tìm đáp ứng của hệ thống đối với xung bậc đơn vị của hệ thống đã cho.
Gợi ý: dùng hàm filter
2. Tính và vẽ đáp ứng xung đơn vị của hệ thống có phương trình sai phân
y[n]=x[n]-4y[n-1]+3x[n-2]+1.7y[n-1]-y[n-2]
Hệ thống này có ổn định không?
3. Thực hiện nhân chập 2 tín hiệu sau
x[n]= [0 1 2 3 4 0], h[n]=[0,2,0,2,0]
BÀI 3: LẤY MẪU VÀ KHÔI PHỤC TÍN HIỆU
3.1. Lấy mẫu tín hiệu
3.1.1 Định lý lấy mẫu
Sự lấy mẫu tín hiệu: là đổi một tín hiệu liên tục thời gian thành tín hiệu rời rạc thờ i gian, còn
được gọi là tín hiệu số .Vấn đề lấy mẫu phải như thế nào để từ các mẫu người ta có thể phúc hồi lại
tín hiệu tương tự ban đầu khi cần
Để các mẫu biểu diễn đúng tín hiệu tương tự, tức từ các mẫu ta có thể phục hồi tín hiệu tương tự ban đầu, tốc độ lấy mẫu phải lớn hơn hay ít nhất là bằng hai lần tần số cao nhất của tín hiệu tương tự
Để giữ cho tần số lấy mẫu fS không lớn lắm thì fM phải được giới hạn bằng một lọc thông thấp thật hiệu
quả (cắt bỏ tất cả tần số lớn hơn fM của tín hiệu tương tự)
3.1.2 Lấy mẫu tín hiệu hình sin
Vì Matlab không thể phát ra tín hiệu thời gian liên tục đúng nghĩa của nó được, nên ta sẽ phát ra dãy
{xa[nT]} từ xa(t) bằng cách lấy mẫu nó với tần số rất cao sao cho các mẫu lấy rất sát nhau giống như
tín hiệu thời gian liên tục.: xa(t)= sin(2πft)
Chương trình
clf;
t=0:0.0005:1;
f=13;
xa=sin(2*pi*f*t);
subplot(2,1,1);
plot(t,xa);
xlabel('Thoi gian');
ylabel('Tin hieu thoi gian lien tuc');
axis([0 1 -1.2 1.2]);
subplot(2,1,2);
T=0.03;
n=0:T:1;
k=0:length(n)-1;
xs=sin(2*pi*f*n);
stem(k,xs);
xlabel('Chi so thoi gian');
ylabel('Tin hieu thoi gian roi rac');
axis([0 length(n)-1 -1.2 1.2])
3.1.3 Tín hiệu không tuần hoàn và phổ biên độ trong miền tần số
Để biểu diễn tín hiệu tương tự trong miền tần số, ta có thể sử dụng biến đổi Fourier liên tục thời gian để phân tích và vẽ tín hiệu
Ví dụ: Cho tín hiệu tương tự xa(t)=e(-1000|t|). Xác định và vẽ tín hiệu trong miền tần số.
Giải: Từ công thức biến đổi Fourier liên tục thời gian
Ta phân tích được
Để xác định được phổ biên độ, đầu tiên ta cần phải xấp xỉ tín hiệu tương tự thành tín hiệu có chu kỳ xác định. Sử dụng xấp xỉ e-5≈0, ta lấy giới hạn của t trong khoảng [-0.005,0.005] (hay từ [-5,5] ms). Tương tự để Xa(jΩ) ≈0 thì ta tìm được tần số tối đa là 2π(2000).
Tín hiệu được vẽ theo chương trình sau:
Dt = 0.00005;
t = -0.005:Dt:0.005;
xa = exp(-1000*abs(t));
Wmax = 2*pi*2000;
K = 500; k = 0:1:K;
W = k*Wmax/K;
Xa = xa * exp(-j*t'*W) * Dt;
Xa = real(Xa);
W = [-fliplr(W), W(2:501)];
Xa = [fliplr(Xa), Xa(2:501)];
subplot(1,1,1)
subplot(2,1,1);plot(t*1000,xa);
xlabel('t in msec.'); ylabel('xa(t)')
title('Analog Signal')
subplot(2,1,2);plot(W/(2*pi*1000),Xa*1000);
xlabel('Frequency in KHz'); ylabel('Xa(jW)*1000')
title('Continuous-time Fourier Transform')
3.2. Hiện tượng biệt danh (chồng phổ)
Khi tín hiệu được lấy mẫu dưới mức, tức lấy mẫu ở tần số chậm hơn tốc độ Nyquist, thì khi
tái lập tín hiệu bằng cách lọc thì thành phần tần số cao của phổ lặp sẽ lẫn vào thành phần tần số cao của phổ trung tâm, và như vậy tín hiệu được tái lập sẽ không đúng.Về mặt thời gian, người ta gọi
hiện tượng này là biệt danh (tên giả).Còn về mặt tần số người ta gọi hiện tượng này là chồng phổ.
Để khắc phục hiện tượng này ta phải dùng tiền lọc chống biệt danh trước khi thực hiện việc lấy mẫu.
Ví dụ: Thực hiện lấy mẫu tín hiệu xa(t)=e(-1000|t|) tại các tần số khác nhau. Vẽ phổ biên độ của tín hiệu
Fs=5000Hz, tín hiệu rời rạc thu được là x1(n)
Do tần số tối đa của tín hiệu là fM=2000Hz nên Fs>2fM, không xảy ra hiện tượng biệt danh (chồng phổ).
Chương trình
Dt = 0.00005;
t = -0.005:Dt:0.005;
xa = exp(-1000*abs(t));
Ts = 0.0002; n = -25:1:25;
x = exp(-1000*abs(n*Ts));
K = 500; k = 0:1:K;
w = pi*k/K;
X = x * exp(-j*n'*w);
X = real(X);
w = [-fliplr(w), w(2:K+1)];
X = [fliplr(X), X(2:K+1)];
subplot(1,1,1)
subplot(2,1,1);plot(t*1000,xa);
xlabel('t in msec.'); ylabel('xa(t)')
title('Discrete Signal'); hold on
stem(n*Ts*1000,x); hold off
subplot(2,1,2);plot(w/pi,X);
xlabel('Frequency in pi units'); ylabel('X(w)')
title('Discrete-time Fourier Transform')
Fs=1000Hz, tín hiệu rời rạc thu được là x2(n)
Fs < 2FM nên tín hiệu được lấy mẫu dưới mức và xảy ra hiện tượng chồng phổ trong miền tần số
Chương trình
Dt = 0.00005;
t = -0.005:Dt:0.005;
xa = exp(-1000*abs(t));
Ts = 0.001; n = -25:1:25;
x = exp(-1000*abs(n*Ts));
K = 500; k = 0:1:K;
w = pi*k/K;
X = x * exp(-j*n'*w);
X = real(X);
w = [-fliplr(w), w(2:K+1)];
X = [fliplr(X), X(2:K+1)];
subplot(1,1,1)
subplot(2,1,1);plot(t*1000,xa);
xlabel('t in msec.'); ylabel('xa(t)')
title('Discrete Signal'); hold on
stem(n*Ts*1000,x); hold off
subplot(2,1,2);plot(w/pi,X);
xlabel('Frequency in pi units'); ylabel('X(w)')
title('Discrete-time Fourier Transform')
3.3 Khôi phục tín hiệu
Chuyển từ dạng tín hiệu rời rạc x(nT) sang dạng tín hiệu tương tự x(t). Quá trình khôi phục tín hiệu bao gồm 2 bước ;
Bước 1: các mẫu được chuyển đổi thành chuỗi các xung trọng số
Bước 2: Chuỗi xung được lọc thông qua một lọc thông thấp lý tưởng có băng thông giới hạn từ [-Fs/2 Fs/2 ]
Hai quá trình này được thực hiện bằng cách sử dụng công thức toán học sau
Với sinc(x)=sinπx/πx
Hình ảnh minh hoạ cho qúa trình khôi phục tín hiệu
Thực hiện các lệnh trong Matlab trong trường hợp tổng quát như sau:
n=n1:n2;t=t1:t2;Fs=1/Ts;nTs=n*Ts;
xa=x*sinc(Fs*(ones(length(n),1)*t-nTs'*ones(1,length(t))));
Ví dụ: Khôi phục tín hiệu x1(n) và x2(n) thành tín hiệu xa(t) từ ví dụ trên dùng hàm sinc(x)
Chương trình
Ts = 0.0002; % x1(n)
Fs = 1/Ts; n = -25:1:25; nTs = n*Ts;
x = exp(-1000*abs(nTs));
Dt = 0.00005;
t = -0.005:Dt:0.005;
xa = x * sinc(Fs*(ones(length(nTs),1)*t-nTs'*ones(1,length(t))));
error = max(abs(xa - exp(-1000*abs(t))))
plot(t*1000,xa);
xlabel('t in msec.'); ylabel('xa(t)')
title('Reconstructed Signal from x1(n) using sinc function'); hold on
stem(n*Ts*1000,x); hold off
error =
0.0363
error =
0.1852
3.4 Bài tập
Cho tín hiệu tương tự xa(t)=sin(20π t),0 ≤ t ≤ 1. Tín hiệu được lấy mẫu tại Ts=0.01s, 0.05s và 0.1s để có tín hiệu rời rạc x(n).
Với mỗi Ts, vẽ x(n) tương ứng.
Khôi phục tín hiệu ya(t) từ các tín hiệu x(n) trên dùng hàm sinc (cho Δt=0.001) và nhận xét cho mỗi trường hợp
BÀI 4 : PHÂN TÍCH TÍN HIỆU VÀ HỆ THỐNG
LTI TRONG MIỀN TẦN SỐ-BIẾN ĐỔI Z
4.1 Biến đổi Fourier rời rạc thời gian DTFT
Dùng cho các tín hiệu không tuần hoàn và x(n) hiện hữu ở mọi thời gian
Biến đổi DTFT thuận và nghịch
Biến đổi Fourier hiện hữu nếu chuỗi hội tụ, tức
Ví dụ 1: Xác định DTFT của tín hiệu x(n)=(0.5)nu(n). Vẽ tín hiệu X(ejω) với 501 điểm trong khoảng [0,∏ ] với 4 thành phần: phổ biên độ, phổ pha, phần thực và phần ảo.
Chương trình
w = [0:1:500]*pi/500;
X = exp(j*w) ./ (exp(j*w) - 0.5*ones(1,501));
magX = abs(X); angX = angle(X);
realX = real(X); imagX = imag(X);
subplot(2,2,1); plot(w/pi,magX); grid
xlabel('frequency in pi units'); title('Magnitude Part'); ylabel('Magnitude')
subplot(2,2,3); plot(w/pi,angX); grid
xlabel('frequency in pi units'); title('Angle Part'); ylabel('Radians')
subplot(2,2,2); plot(w/pi,realX); grid
xlabel('frequency in pi units'); title('Real Part'); ylabel('Real')
subplot(2,2,4); plot(w/pi,imagX); grid
xlabel('frequency in pi units'); title('Imaginary Part'); ylabel('Imaginary')
Nếu x(n) là một chuỗi xác định N giá trị trong khoảng [n1,n2] thì DTFT trong Matlab được viết như sau:
k=[0:M]; n=[n1:n2];
X=x*(exp(-j*pi/M)).^(n'*k);
Ví dụ 2: xác định và vẽ DTFT cho tín hiệu sau: x(n)=[1 2 3 4 5] với 501 điểm trong khoảng [0,∏ ]
Chương trình
n = -1:3; x = 1:5;
k = 0:500; w = (pi/500)*k;
X = x * (exp(-j*pi/500)) .^ (n'*k);
magX = abs(X); angX = angle(X);
realX = real(X); imagX = imag(X);
subplot(2,2,1); plot(w/pi,magX); grid
xlabel('frequency in pi units'); title('Magnitude Part'); ylabel('Magnitude')
subplot(2,2,3); plot(w/pi,angX); grid
xlabel('frequency in pi units'); title('Angle Part'); ylabel('Radians')
subplot(2,2,2); plot(w/pi,realX); grid
xlabel('frequency in pi units'); title('Real Part'); ylabel('Real')
subplot(2,2,4); plot(w/pi,imagX); grid
xlabel('frequency in pi units'); title('Imaginary Part'); ylabel('Imaginary')
Kết quả ví dụ 1
Kết quả ví dụ 2
4.2 Đáp ứng tần số của hệ thống LTI
Nếu hệ thống LTI có đáp ứng xung h[n], thì đáp ứng tần số của nó được xác định bằng DTFT h[n]
H(ejω) là một hàm phức của ω tuần hoàn với chu kỳ 2π nên có thể biểu diễn dưới dạng
Trong đó, |H(Ω)| được gọi là đáp ứng biên độ,Φ(Ω) gọi là đáp ứng pha.
Đáp ứng tần số của hệ thống có thể được viết từ phương trình sai phân tuyến tính hệ số hằng mô tả mô tả quan hệ vào/ra của hệ thống đó và được biểu diễn dưới dạng các hệ số của lọc
Đáp ứng tần số được tính bằng lệnh có cú pháp h=freqz(b,a,w).
Trong đó a,b là các hệ số của phương trình trên và w là khảong giá trị tần số tính đáp ứng.
Ví dụ: Tính đáp ứng tần số và đáp ứng pha của hệ thống LTI có biểu thức sau:
Chương trình
clf;
w=0:pi/511:pi;
num=[1 -1.9021 1];
den=[1 -1.8523 0.94833];
h=freqz(num,den,w);
figure(1);
subplot(2,1,1)
plot(w/pi,abs(h)); title('Magnitude response');
subplot(2,1,2);
plot(w/pi,angle(h)); title('Phase response');
4.3 Biến đổi z
4.3.1 Định nghĩa
Biến đổi z của tín hiệu rời rạc x(n) được định nghĩa là
Trong đó, z là biến số phức.
Định nghĩa trên còn được gọi là biến đổi z hai bên. Ta sẽ có biến đổi z một bên khi thay giới hạn từ 0 đến ∞.
Vùng hội tụ (ROC): là vùng chứa giá trị z sao cho |X(z)| hữu hạn.4.3.2 Biến đổi z ngược
Biến đổi z ngược được định nghĩa như sau
Trong đó C là vòng tròn kín bao quanh gốc toạ độ nằm trong vùng hội tụ của X(z).
Phép biến đổi z cho phép chúng ta phục hồi lại dãy tín hiệu rời rạc x(n) khi biết biến đổi z của nó. Phép biến đổi z ngược thường được sử dụn