MÔ PHỎNG CÁC TÍN HIỆU CƠ BẢN BẰNG MATLAB Nhóm: Tiểu nhóm: Thứ: 5, ngày 12 tháng 09 năm 2019 Cam đoan: Chúng tôi ký tên ở trên đây cam đoan rằng nội dung của bài báo cáo này bao gồm các
Trang 1BÀI PHÚC TRÌNH
BÀI 4 MÔ PHỎNG CÁC TÍN HIỆU
CƠ BẢN BẰNG MATLAB
Nhóm: Tiểu nhóm:
Thứ: 5, ngày 12 tháng 09 năm 2019
Cam đoan: Chúng tôi ký tên ở trên đây cam đoan rằng nội dung của bài báo cáo này (bao
gồm các đoạn code, đồ thị) là các kết quả do chính chúng tôi thực hiện, không phải là kết
quả sao chép từ bài báo cáo của tác giả khác Chúng tôi chấp nhận mọi hình thức kỷ luật do
Bộ môn/Giảng viên phụ trách học phần đưa ra nếu vi phạm điều nêu trên.
-Câu 1 Chương trình sau đây mô phỏng hàm bước nhảy đơn vị u(t)
**Yêu cầu
a Hãy gõ lại chương trình này trong file soạn thảo của Matlab và lưu lại với tên step.m
b Hãy ghi lời chú thích vào sau các dấu % của một số dòng lệnh (một số dòng đã được
làm mẫu).
c Vẽ lại đồ thị của bài tập này lên hình 4.1.
clear; % xóa tất cả các biến trong bộ nhớ Matlab
clf;
t=-10:0.001:10;
u=heaviside(t);
plot(t,u);
title('Ham buoc nhay don vi u(t)'); %tên tiêu đề của đồ thị
xlabel('Thoi gian lien tuc t'); %chú thích trục x
ylabel('Bien do'); %chú thích trục y
axis([-10 10 0 1.2]);
grid on; %hiễn thị lưới cho đồ thị
Trang 2Hình 4.1
Thoi gian lien tuc t 0
0.2
0.4
0.6
0.8
1
d Hãy sửa lại chương trình Matlab mô phỏng hàm bước nhảy đơn vị u(t) để thực hiện các
yêu cầu sau đây:
- Mô phỏng hàm bước nhảy đơn vị khi dịch chuyển về phía trái 3 đơn vị.
- Mô phỏng hàm bước nhảy đơn vị u(t – t0), u(t + t0) với t0 được nhập từ bàn phím
Hàm bước đơn vị u(t – t0)
clear; %xóa tất cả các biến trong bộ
nhớ Matlab
clf; %xóa đồ thị hiện tại
t0=input('nhap vao t');
t=-10:0.001:10; %tạo vector thời gian
u=heaviside(t-t0); %tạo ra hàm bước
nhảy đơn vị
plot(t,u);
title('Ham buoc nhay don vi u(t)');%
tên tiêu đề của đồ thị
Hàm bước đơn vị u(t + t0)
clear; % xóa tất cả các biến trong bộ nhớ Matlab
clf; %xóa đồ thị hiện tại t0=input('nhap vao t') t=-10:0.001:10; % tạo vector thời gian
u=heaviside(t+t0); % t?o ra hàm bước nhảy đơn vị?
plot(t,u);
title('Ham buoc nhay don vi u(t)');
-2-clear; %xóa tất cả các biến trong
bộ nhớ Matlab clf; %xóa đồ thị hiện tại t=-10:0.001:10; %tạo vector thời gian
u=heaviside(t+3); % tạo ra hàm bước nhảy đơn vị?
plot(t,u);
title('Ham buoc nhay don vi u(t)'); tiêu đề của đồ thị
Trang 3Hình 4.2
xlabel('Thoi gian lien tuc t'); %giải
thích trục x
ylabel('Bien do'); %giải thích trục y
axis([-10 10 0 1.2]);
grid on;
xlabel('Thoi gian lien tuc t'); %giải thích trục x
ylabel('Bien do'); %giải thích trục y axis([-10 10 0 1.2]);
grid on;
Câu 2 Cho đoạn lệnh sau đây:
**Yêu cầu
a Hãy gõ đoạn lệnh trên vào cửa sổ Command Window và ghi lại kết quả.
Kết quả: (t*(sign(t) + 1))/2
b Viết chương trình Matlab mô phỏng hàm dốc đơn vị r(t) với tỉ lệ thời gian như hình 4.2
và vẽ lại đồ thị của hàm này lên hình 4.2.
clear; %xóa tất cả các biến
trong bộ nhớ Matlab
clf; %xóa đồ thị hiện tại
t=-10:0.001:10; %tạo vector
thời gian
r=t.*heaviside(t);
plot(t,r);
title('Ham doc don vi r(t)');
xlabel('Thoi gian lien tuc t');
ylabel('Bien do');
Thoi gian lien tuc t 0
1 2 3 4 5 6 7 8 9
c Hãy sửa lại chương trình Matlab mô phỏng hàm dốc đơn vị r(t) để thực hiện các yêu cầu
sau đây:
- Thay đổi màu đồ thị thành màu đỏ và đường vẽ là đường chấm chấm
- Mô phỏng hàm dốc đơn vị r(t – t0), r(t + t0) với t0 được nhập từ bàn phím.
Hàm dốc đơn vị r(t – t0)
clear; %xóa tất cả các biến trong bộ
Hàm dốc đơn vị r(t + t0)
clear; %xóa tất cả các biến trong bộ
>> syms t
>> u=heaviside(t);
>> int(u,t)
clear; %xóa tất cả các biến trong bộ nhớ Matlab
clf; %xóa đồ thị hiện tại
t=-10:0.001:10; %tạo vector thời gian
r=t.*heaviside(t); %tạo ra hàm đơn vị?
plot(t,r,'r:');
title('Ham doc don vi r(t)'); %tên tiêu đề của đồ thị?
xlabel('Thoi gian lien tuc t'); %giải thích cho trục x
ylabel('Bien do'); %giải thích cho trục y
grid on;
Trang 4Hình 4.3
nhớ Matlab
clf; %xóa đồ thị hiện tại
t0=input('nhap vao t0');
t=-10:0.001:10; %tạo vector thời gian
r=(t-t0).*heaviside(t-t0); %tạo ra
hàm doc don vi?
plot(t,r);
title('Ham doc don vi r(t)'); %tên
tiêu de cua do thi?
xlabel('Thoi gian lien tuc t');
ylabel('Bien do');
grid on;
nhớ Matlab clf; %xóa đồ thị hiện tại t0=input('nhap vao t0') t=-10:0.001:10; %tạo vector thoi gian r=(t+t0).*heaviside(t+t0); %tao ra hàm doc don vi?
plot(t,r);
title('Ham doc don vi r(t)');
xlabel('Thoi gian lien tuc t');
ylabel('Bien do');
grid on;
Câu 3 Cho đoạn lệnh sau đây:
**Yêu cầu
a Hãy gõ đoạn lệnh trên vào cửa sổ Command Window và ghi lại kết quả.
Kết quả: dirac(t)
b Viết chương trình Matlab mô phỏng hàm phân bố Delta δ(t) với tỉ lệ thời gian như hình 4.3 và vẽ lại đồ thị của hàm này lên hình 4.3.
clear; %xóa tất cả các biến trong bộ nhớ
Matlab
clf; %xóa do thi hien thi
t=-10:1:10; %tao vector thoi gian
delta =dirac(t) %tao ra hàm phân bo dirac
plot(t,delta);
title('Ham doc don vi r(t)'); %tên tiêu de
cua do thi?
xlabel('Thoi gian lien tuc t');
ylabel('Bien do');
grid on;
Thoi gian lien tuc t
-1 -0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.6 0.8
c Hãy sửa lại chương trình Matlab mô phỏng hàm phân bố Delta δ(t)để thực hiện các yêu cầu sau đây:
- Độ rộng cho đường thẳng vẽ đồ thị là 2 point
- Mô phỏng hàm phân bố Delta δ(t- t0),δ(t t0) với t0 được nhập từ bàn phím
-4-clear;
clf;
t=-10:1:10; %tao ra vector thoi gian
delta =dirac(t) %tao ra ham phan bo dirac
plot(t,delta,'linewidth',2);
title('Ham doc don vi r(t)');
xlabel('Thoi gian lien tuc t');
ylabel('Bien do');
grid on;
>> syms t
>> u=heaviside(t);
>> diff(u,t)
Trang 5Hàm xung Delta δ(t- t0)
clear;
clf;
t0=input('nhap vao t0')
t=-10:1:10; %tạo vector thời gian
delta =dirac(t-t0); %tạo ra hàm phân
bo dirac
plot(t,delta,'linewidth',2);
title('Ham doc don vi r(t)'); %tên
tiêu đề của đồ thị?
xlabel('Thoi gian lien tuc t');
ylabel('Bien do');
Hàm xung Delta δ(t t0)
clear;
clf;
t0=input('nhap vao t0') t=-10:1:10;
delta =dirac(t+t0);
plot(t,delta,'linewidth',2);
title('Ham doc don vi r(t)'); %tên tiêu đề của đồ thị
xlabel('Thoi gian lien tuc t');
ylabel('Bien do');
Câu 4
a Viết chương trình Matlab mô phỏng tín hiệu xung vuông và xung tam giác cơ bản trên
cùng một đồ thị
b Vẽ lại đồ thị của các xung này với tỉ lệ thời gian như hình 4.4
Thoi gian lien tuc t
0
0.5
Thoi gian lien tuc t
0
0.5
clear;
clf;
t=-2:0.001:2; % tạo vector thoi gian
x=1*rectpuls(t,1)
y=1*tripuls(t,2)
subplot(2,1,1)
plot(t,x)
title('Xung vuong co ban');
xlabel('Thoi gian lien tuc t');
ylabel('Bien do');
subplot(2,1,2)
plot(t,y)
title('Xung tam giac co ban');
xlabel('Thoi gian lien tuc t');
ylabel('Bien do');
grid on;
Trang 6c Hãy sửa lại chương trình Matlab trên để mô phỏng tín hiệu xung vuông và xung tam giác
cơ bản cùng dịch chuyển về phía trái 1 đơn vị.
Câu 5.
a Viết chương trình Matlab mô phỏng hàm Gausse với tỉ lệ thời gian như hình 4.4 và
vẽ lại đồ thị của hàm này lên hình 4.5.
clear;
clf;
t=-5:0.001:5;
x=gaussmf(t,[0.5,0])
plot(t,x)
title('Ham Gausse');
xlabel('Thoi gian lien tuc t');
ylabel('Bien do');
grid on;
-5 -4 -3 -2 -1 0 1 2 3 4 5
Thoi gian lien tuc t
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9
1 Ham Gausse
b Hãy sửa lại chương trình Matlab mô phỏng hàm Gausse để thực hiện các yêu cầu sau
đây:
- Mô phỏng hàm Gausse khi dịch chuyển về phía phải 3 đơn vị và độ rộng xung giảm còn một nửa.
-6-Hình 4.5
clear;
clf;
t=-5:0.001:5;
x=gaussmf(t,[0.25,3]);
plot(t,x);
title('Ham Gausse');
xlabel('Thoi gian lien tuc t');
ylabel('Bien do');
grid on;
Hình 4.4
clear;
clf;
t=-2:0.001:2;
x=1*rectpuls(t+1,1)
y=1*tripuls(t+1,2)
subplot(2,1,1)
plot(t,x)
title('Xung vuong co ban');
xlabel('Thoi gian lien tuc t');
ylabel('Bien do');
subplot(2,1,2)
plot(t,y)
title('Xung tam giac co ban');
xlabel('Thoi gian lien tuc t');
ylabel('Bien do');
grid on;
Trang 7- Mô phỏng hàm Gausse dịch chuyển về phía phải 2 đơn vị và hàm Gausse dịch chuyển
về phía trái 3 đơn vị trên cùng một đồ thị.
Câu 6.
a Viết một chương trình Matlab để tạo ra tín hiệu điều hòa x(t) = Asin(0t + φ) và vẽ tín hiệu này bằng hàm plot Các thông số sau đây được nhập từ bàn phím: biên độ (A), tần số góc (ω0), pha ban đầu (φ) Với điều kiện 0 ≤ ω0 ≤ π và 0 ≤ φ ≤ 2π
Lưu ý: Nếu tần số góc và pha ban đầu nhập vào không thỏa mãn điều kiện thì chương trình
sẽ báo lỗi
clear;
clf;
t=-5:0.001:5;
A=input('Nhap vao bien do A=')
omega=input('Nhap vao omega=')
pha=input('Nhap vao pha ban dau =')
if((omega<0)| (omega>pi)), error('Tan so goc khong hop le');
end;
if ((pha<0)|(pha>2*pi)), error('Pha ban dau khong hop le');
end;
x=A*sin(omega*t+pha)
plot(t,x)
title('Tin hieu dieu hoa');
xlabel('Thoi gian lien tuc t');
ylabel('Bien do');
grid on;
b Hãy ghi lời chú thích vào sau các dấu % cho tất cả các dòng lệnh trong đoạn lệnh trên.
clear;
clf;
t=(-5:0.001:5);
x=gaussmf(t,[0.5,2])
y=gaussmf(t,[0.5,(-3)])
plot(t,[x y])
title('Ham Gausse');
xlabel('Thoi gian lien tuc t');
ylabel('Bien do');
grid on;
Trang 8clf;
t=-5:0.001:5;
A=input('Nhap vao bien do A=')
omega=input('Nhap vao omega=')
pha=input('Nhap vao pha ban dau =')
if((omega<0)| (omega>pi)), error('Tan so goc khong hop le');
end;
if ((pha<0)|(pha>2*pi)), error('Pha ban dau khong hop le');
end
x=A*sin(omega*t+pha)
plot(t,x)
title('Tin hieu dieu hoa');
xlabel('Thoi gian lien tuc t');
ylabel('Bien do');
grid on;
c Vẽ lại đồ thị của tín hiệu này lên hình 4.6 với A = 1, ω0 = π và φ = 0
Thoi gian lien tuc t
-1
-0.8
-0.6
-0.4
-0.2
0
0.2
0.4
0.6
0.8
Câu 7.
a Viết một chương trình Matlab dùng các hàm square và sawtooth để tạo ra các dãy xung
vuông, dãy xung răng cưa Các thông s ố sau đây có thể thay đổi bởi người lập trình: tần số (f), biên độ (A)
-8-Hình 4.6
Trang 9clf;
t=-0.05:0.0001:0.05;
f=input('Nhap tan so f=')
A=input('Nhap bien do A=')
x=A*square(2*pi*f*t)
y=A*sawtooth(2*pi*f*t)
subplot(2,1,1)
plot(t,x)
title('Xung Vuong');
xlabel('Thoi gian lien tuc t')
ylabel('Bien do')
subplot(2,1,2)
plot(t,y)
title('Xung rang cua');
xlabel('Thoi gian lien tuc t')
ylabel('Bien do')
grid on;
b Hãy ghi lời chú thích vào sau các dấu % cho tất cả các dòng lệnh trong đoạn lệnh trên.
c Vẽ lại đồ thị của các dãy xung này lên hình 4.7 với f = 50Hz và A = 1.
clear;
clf;
t=-0.05:0.0001:0.05;
f=input('Nhap tan so f=');
A=input('Nhap bien do A=');
x=A*square(2*pi*f*t); %Tao xung Vuong
y=A*sawtooth(2*pi*f*t); % Tao Xung Rang Cua
subplot(2,1,1);
plot(t,x);
title('Xung Vuong');
xlabel('Thoi gian lien tuc t');
ylabel('Bien do');
subplot(2,1,2);
plot(t,y);
title('Xung rang cua'); % ten tieu de cua tin hieu
xlabel('Thoi gian lien tuc t'); % giai thich cho truc x
ylabel('Bien do'); %giai thich cho truc y
grid on;
Trang 10-0.05 -0.04 -0.03 -0.02 -0.01 0 0.01 0.02 0.03 0.04 0.05
Thoi gian lien tuc t
-1
-0.5
0
0.5
-0.05 -0.04 -0.03 -0.02 -0.01 0 0.01 0.02 0.03 0.04 0.05
Thoi gian lien tuc t
-1
-0.5
0
0.5
Câu 8
a Viết chương trình Matlab mô phỏng tín hiệu có phương trình tổng hợp sau đây:
f(t)t(u(t) u(t 2))(6 2t)(u(t 2) u(t 3)) Với 1t5
b Vẽ lại đồ thị của phương trình tổng hợp này lên hình 4.8.
-10-Hình 4.7
clear; % xoa tat ca cac bien trong bo nho Matlab
clf;
t=-1:0.001:5;
ft=t.*(heaviside(t)-heaviside(t-2))+(6-2*t).*(heaviside(t-2)-heaviside(t-3)) plot(t,ft)
title('Tin hieu F(t)'); % ten tieu de cua tin hieu
xlabel('Thoi gian lien tuc t') %truc x
ylabel('Bien do') %truc y
grid on;
Trang 11-1 0 1 2 3 4 5
Thoi gian lien tuc t
0
0.2
0.4
0.6
0.8
1
1.2
1.4
1.6
1.8
Hình 4.8