Bài thực hành môn Tín hiệu và hệ thống - Bài 1: Tính toán và vẽ đồ thị với MATLAB

I. Mục đích

• Làm quen công cụ phần mềm MATLAB.

• Sử dụng MATLAB để thực hiện một số tính toán thông dụng với vector, ma trận và số phức

• Sử dụng MATLAB để biểu diễn và vẽ đồ thị của một số tín hiệu.

II. Yêu cầu đối với sinh viên

• Cài đặt phần mềm MATLAB, thực hiện trước bài 1.1 ở nhà.

• Đọc tài liệu hướng dẫn và trả lời được các câu hỏi của CBHD trước khi làm thực hành

• Hoàn thành nội dung bài thực hành (kể cả các bài về nhà) trước khi tham dự buổi tiếp theo

III. Nội dung

3.1 Làm quen với cửa sổ lệnh và soạn thảo chương trình m file trong MATLAB

Mục này do CBHD hướng dẫn cho SV (khoảng 10ph).

pdf9 trang | Chuyên mục: Xử Lý Tín Hiệu Số | Chia sẻ: yen2110 | Lượt xem: 727 | Lượt tải: 0download
Tóm tắt nội dung Bài thực hành môn Tín hiệu và hệ thống - Bài 1: Tính toán và vẽ đồ thị với MATLAB, để xem tài liệu hoàn chỉnh bạn click vào nút "TẢI VỀ" ở trên
 dữ liệu 
chúng ta không quan tâm lên màn hình. 
Sử dụng lệnh plot(x,y): Lệnh plot(x,y) của MATLAB cho phép vẽ đồ thị biểu diễn từng giá trị chứa 
trong vector y theo giá trị của phần tử thứ tự tương ứng trong vector x . Sau khi gõ tiếp lệnh 
plot(w,z) trong cửa sổ lệnh MATLAB, ta sẽ nhận được đồ thị biểu diễn hàm w theo z trong một cửa 
sổ riêng. Đồ thị này được gọi là đáp ứng biên độ tần số của mạch điện. Các em hãy vẽ lại đồ thị này 
vào Hình 1.2 dưới đây. 
Ta có thể tạo cho đồ thị trên, hay 
một đồ thị bất kỳ, trông đẹp mắt 
hơn bằng các lệnh sau: 
grid on: kẻ các đường lưới cho 
đồ thị. 
grid off: bỏ các đường lưới. 
box off: bỏ khung (đường nét liền 
bao quanh đồ thị) 
box on: vẽ lại khung đồ thị 
title(‘string’): Tạo một dòng ký 
tự string (nhãn) cho đồ thị. 
xlabel(‘string’) và 
ylabel(‘string’): đánh nhãn cho 
trục x và trục y. 
Sử dụng thang đo logarithm: Đáp ứng biên độ tần số thường được biểu diễn với trục x chia theo 
thang đo logarithm bằng cách sử dụng lệnh semilogx(x,y) (và bổ sung các tiêu đề) như sau: 
semilogx(w,z); grid; % Replaces the plot(w,z) command 
title('Magnitude of Impedance vs. Radian Frequency'); 
xlabel('w in rads/sec'); ylabel('|Z| in Ohms') 
) Các em hãy vẽ lại đồ thị sau khi thực hiện đoạn lệnh trên vào Hình 1.3 dưới đây. 
10
2
10
3
10
4
0
200
400
600
800
1000
1200
Magnitude of Impedance vs. Radian Frequency
w in rads/sec
|Z
| i
n 
O
hm
s
Hình 1.3. Đồ thị đáp ứng tần số cho Bài 1.2. 
Lưu ý: Để biểu diễn trục y theo thang đo logarithm, ta sử dụng lệnh semilogy(x,y), để biểu diễn 
thang đo logarithm cho cả hai trục ta sử dụng lệnh loglog(x,y). 
Hình 1.2. Đồ thị biểu diễn trở kháng Z theo tần số ω 
cho Bài 1.2. 
 1-4
Bài 1.3 (thực hiện có hướng dẫn tại PTN): Vẽ tín hiệu hình sin 
Ta sẽ thực hành vẽ đồ thị các sóng sin 3 pha. Lưu ý rằng, thực chất trên máy tính ta chỉ có thể vẽ 
các tín hiệu không liên tục (tức là chỉ vẽ được các điểm rời rạc). Tuy nhiên, những tín hiệu không 
liên tục có thể biểu diễn gần đúng bằng vẽ các điểm dữ liệu rời rạc gần nhau. 
Trước hết, ta cần tạo một vector lưu trữ dãy giá trị thời gian (cách đều nhau). Điều này có thể thực 
hiện bởi hàm linspace(giá trị đầu, giá trị cuối, số điểm dữ liệu): 
t=linspace(0, 2*pi, 60); % pi is a built−in function in MATLAB; 
Hàm này quy định số điểm dữ liệu nhưng không quy định khoảng cách giữa các điểm dữ liệu đó. Ta 
cũng có thể sử dụng lệnh t = first: increment: last để qui định khoảng cách giữa các điểm dữ liệu 
chứ không phải số điểm dữ liệu, ví dụ t = 0:0.02*pi:2*pi hoặc t = (0: 0.02: 2)*pi; 
Các sóng sin ba pha được tạo bởi các hàm MATLAB: 
y=sin(t); u=sin(t+2*pi/3); v=sin(t+4*pi/3); 
Ta sẽ vẽ 3 tín hiệu trên một đồ thị bằng lệnh: 
plot(t,y,t,u,t,v); % The x−axis must be specified for each function 
hoặc 
plot(t,[y;u;v]); % [y;u;v] is a three-row matrix 
Sau đó vẽ thêm lưới và bổ sung các chú thích như sau: 
grid on, box on, % turn grid and axes box on 
text(0.75, 0.65, 'sin(x)'); text(2.85, 0.65, 'sin(x+2*pi/3)'); text(4.95, 0.65, 'sin(x+4*pi/3)') 
) Sau khi thực hiện đoạn lệnh trên, ta sẽ nhận được đồ thị trong đó các tín hiệu được biểu diễn như 
liên tục. Các em hãy vẽ lại đồ thị đó (ghi đủ các thông ghi chú) vào Hình 1.4 dưới đây: 
0 1 2 3 4 5 6 7
-1
-0.8
-0.6
-0.4
-0.2
0
0.2
0.4
0.6
0.8
1
Hình 1.4. Các dạng sóng ba pha 
Nếu sửa lại lệnh plot(t,[y;u;v]) trên đây một chút như sau (thêm ký hiệu ’.’): 
plot(t,[y;u;v], ‘.’) 
ta sẽ thấy các tín hiệu được biểu diễn thành dãy giá trị rời rạc (mỗi tín hiệu gồm đúng 60 giá trị). 
) Hãy giải thích lý do các tín hiệu trên Hình 1.4 lại nhìn như các tín hiệu liên tục? 
........................................................................................................................................................... 
Trong các ví dụ trên, chúng ta đã không quy định kiểu đường, kiểu đánh dấu và kiểu màu cho các đồ 
thị. Tuy nhiên, MATLAB cho phép chúng ta lựa chọn rất nhiều kiểu đường, ký hiệu đồ thị và màu sắc 
khác nhau. Những kiểu này, hoặc sự kết hợp của chúng, được thực hiện bởi lệnh plot(x,y,s) trong đó 
s là chuỗi ký tự bao gồm những ký tự được cho trong ba cột của Bảng 1.2. MATLAB không có màu 
mặc định, nó bắt đầu từ màu xanh dương và quay vòng theo bảy màu đầu tiên được liệt kê trong Bảng 
1.2. Cũng như vậy, không có kiểu đánh dấu mặc định, sẽ không có kiểu đánh dấu nào được vẽ trừ phi 
 1-5
chúng ta chỉ định chúng. Kiểu đường mặc định là đường nét liền. Tuy nhiên, với những phiên bản 
MATLAB mới nhất, chúng ta có thể chọn màu sắc, độ rộng của đường và các lựa chọn khác trực tiếp 
trên Cửa sổ hình vẽ. 
Bảng1.2 Các kiểu đường, màu sắc, và kiểu đánh dấu trong MATLAB 
Ví dụ, plot(x,y,‘m*:’) vẽ một đường chấm chấm màu đỏ tươi, với các dấu sao tại các điểm dữ liệu, 
và plot(x,y,‘rs’) đánh dấu các hình vuông màu đỏ tại các điểm dữ liệu, nhưng không vẽ kiểu đường 
nào. Nếu chúng ta muốn nối các điểm dữ liệu bằng đường nét liền, chúng ta phải gõ plot(x,y,‘rs−’). 
Nếu cần thêm thông tin, chúng ta có thể gõ help plot trên Cửa sổ lệnh của MATLAB. 
Bài 1.4 (thực hiện có hướng dẫn tại PTN): Dịch tín hiệu (thời gian) 
Chương trình sau đây vẽ tín hiệu sin và đồ thị của nó khi thực hiện phép dịch tín hiệu (một khoảng 
thời gian). Các em 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 
một tên file (ví dụ t_shift.m), thực hiện chương trình này và vẽ lại đồ thị (cuối cùng) của nó trên 
Hình 1.5. Ngoài ra, 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). 
% Chuong trinh 1.3. Phep dich mot tin hieu 
% Dich cua tin hieu 3*cos(2*pi*t/4)u(t) 
clear; % xoa cac bien va ham trong bo nho 
clf; % 
tinc=0.01; % khoang cach cac diem tren truc thoi gian 
T=5; % 
for k=[-1 1 2] % cac gia tri thoi gian duoc dich: -1, 1 va 2 buoc 
 m=1; % chi so cua mang 
 x=(-5:tinc:5)*0;xs=x; 
 for t=-5:tinc:5 
 if (t >= 0) 
 x(m)=3*cos(2*pi*t/4); % 
 end 
 if ((t+k) >= 0) 
 xs(m)=3*cos(2*pi*(t+k)/4); % 
 end 
 m=m+1; 
 end 
 t=-T:tinc:T; % 
 plot(t,x,t,xs,':') 
 ylabel('x(t)') % 
 1-6
 xlabel('t') % 
 legend('x(t)',['x(t+(',num2str(k),'))']) 
 title('shift of x(t)=3cos(2\pit/4)u(t)') 
 disp('see the plot and press any key to continue') 
 pause % doi cho den khi an mot phim bat ky 
end 
-5 -4 -3 -2 -1 0 1 2 3 4 5
-3
-2
-1
0
1
2
3
x(
t)
t
shift of x(t)=3cos(2πt/4)u(t)
x(t)
x(t+(2))
Hình 1.5. Phép dịch tín hiệu cho Bài 1.4 
Bài 1.5 (thực hiện có hướng dẫn tại PTN) 
Viết đoạn Script MATLAB để vẽ đồ thị cho tín hiệu sau: 
2
4 3( ) 3 cos5 2 sin 2
1
t t ty f t e t e t
t
− −= = − + + 
trong khoảng thời gian 0 5t≤ ≤ giây. 
t=0: 0.01: 5; % Define t−axis in 0.01 increments 
y=3 .* exp(−4 .* t) .* cos(5 .* t)−2 .* exp(−3 .* t) .* sin(2 .* t) + t .^2 ./ (t+1); 
plot(t,y); grid; xlabel('t'); ylabel('y=f(t)'); title('Plot for Example 2.2') 
) Các em hãy vẽ lại đồ thị của bài tập này lên Hình 1.6. 
0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5
-1
0
1
2
3
4
5
t
y=
f(
t)
Plot for Example 2.2
Hình 1.6. Đồ thị cho Bài 1.5 
Bài 1.6 (về nhà tự làm): Sử dụng phép dịch tín hiệu 
Viết chương trình MATLAB để vẽ tín hiệu ( )( ) ( ) ( ) ( 1) ,x t r t u t u t= − − sử dụng phép dịch tín hiệu 
trong đó ( )u t là tín hiệu bước nhảy đơn vị (unit step) và ( )r t là tín hiệu dốc (unit ramp). 
 1-7
Bài 1.7 (về nhà tự làm) 
Hãy vẽ các hàm 
2 2 2 2 2 2sin , 2 cos , sin cos , sin / cosy x z x w x x v x x= = = ⋅ = 
trong khoảng 0 2x π≤ ≤ sử dụng 100 điểm dữ liệu. Sử dụng lệnh subplot để biểu diễn các hàm này 
trên các đồ thị con trong một hình vẽ. Sử dụng đoạn script MATLAB tạo bốn đồ thị con được cho 
dưới đây: 
x=linspace(0,2*pi,100); % Interval with 100 data points 
y=(sin(x).^ 2); z=(cos(x).^ 2); 
w=y.* z; 
v=y./ (z+eps); % add eps to avoid division by zero 
subplot(221); % upper left of four subplots 
plot(x,y); axis([0 2*pi 0 1]); 
title('y=(sinx)^2'); 
subplot(222); % upper right of four subplots 
plot(x,z); axis([0 2*pi 0 1]); 
title('z=(cosx)^2'); 
subplot(223); % lower left of four subplots 
plot(x,w); axis([0 2*pi 0 0.3]); 
title('w=(sinx)^2*(cosx)^2'); 
subplot(224); % lower right of four subplots 
plot(x,v); axis([0 2*pi 0 400]); 
title('v=(sinx)^2/(cosx)^2'); 
) Các em hãy tìm hiểu và giải thích từng dòng lệnh, sau đó vẽ lại bốn đồ thị đó trên Hình 1.7. 
0 2 4 6
0
0.5
1
y=(sinx)2
0 2 4 6
0
0.5
1
z=(cosx)2
0 2 4 6
0
0.1
0.2
w=(sinx)2*(cosx)2
0 2 4 6
0
100
200
300
400
v=(sinx)2/(cosx)2
Hình 1.7. Các đồ thị con cho Bài 1.7 
Bài 1.8 (về nhà tự làm): Tính toán và biểu diễn số phức 
Bài tập này minh họa khả năng của MATLAB với các số phức. 
real(z) và imag(z) hiển thị phần thực và phần ảo của số phức .z x iy= + 
abs(z) và angle(z) tính toán độ lớn và góc pha của số phức .z x iy r θ= + = ∠ 
polar(theta,r) vẽ đồ thị trong tọa độ cực, trong đó r là độ lớn và theta là góc pha tính theo 
radian. 
round(n) làm tròn một số thực n thành số nguyên gần nhất với nó. 
 1-8
Xét mạch điện ở Hình 1.1, với các giá trị điện trở, điện cảm và điện dung đã cho, trở kháng của 
mạch abZ là một hàm của tần sốω có biểu thức như sau: 
4 6
5
10 (10 )10
10 (0.1 10 )ab
jZ Z
j
ω
ω ω
−= = + + − 
Hãy viết một đoạn lệnh MATLAB để thực hiện những yêu cầu 
sau và vẽ lại các đồ thị trên Hình 1.9. 
a) Vẽ { }Re Z (phần thực của trở kháng Z ) theo tần số .ω 
b) Vẽ { }Im Z (phần ảo của trở kháng Z ) theo tần số .ω 
c) Vẽ trở kháng Z theo tần số ω trong hệ tọa độ cực. 
) Hãy viết đoạn lệnh vào ô chữ nhật dưới đây (dòng lệnh đầu 
tiên được viết sẵn): 
0 500 1000 1500 2000
0
500
1000
1500
radian frequency w
R
ea
l p
ar
t o
f Z
0 500 1000 1500 2000
-1000
-500
0
500
radian frequency w
Im
ag
in
ar
y 
pa
rt
 o
f Z
 1000
 2000
30
210
60
240
90
270
120
300
150
330
180 0
P
ol
ar
 P
lo
t o
f 
Z
Hình 1.9 Các đồ thị cho Bài 1.8 
Hình 1.8. Mạch điện cho Bài 1.8 
w=0: 1: 2000; % Define interval with one radian interval 

File đính kèm:

  • pdfbai_thuc_hanh_mon_tin_hieu_va_he_thong_bai_1_tinh_toan_va_ve.pdf