You are on page 1of 6

TẠO CÁC TÍN HIỆU CƠ BẢN TRONG MATLAB

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 1.3.2 Tạo sóng sin
f=10000; f=10000;
t=0:1/f:1.5; t=0:1/f:1.5;
x=square(2*pi*50*t,50); x=sin(2*pi*50*t);
plot(t,x); plot(t,x);
axis([0 0.1 -2 2]); 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]);

Trang
1
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

n �n �n
Với 1 0 2, 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];

Trang
2
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

n �n �n
Với 1 0 2 , 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);

Trang
3
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 x 1(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;

Trang
4
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.

Trang
5
3>Vẽ tín hiệu sin phức x[n]=e(-0.1+j0.3)n với -10 �n �10 . 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
a) x1(n)=2x(n-5)-3x(n+4)
b) 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)

Trang
6

You might also like