CÁC bài THỰC HÀNH môn học tín HIỆU và hệ THỐNG bài 1

9 391 4
CÁC bài THỰC HÀNH môn học tín HIỆU và hệ THỐNG   bài 1

Đang tải... (xem toàn văn)

Thông tin tài liệu

TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI KHOA ĐIỆN CÁC BÀI THỰC HÀNH MÔN HỌC TÍN HIỆU VÀ HỆ THỐNG ( bài) Họ tên sinh viên: Mã lớp thí nghiệm: Mã số sinh viên: (Sinh viên phải nộp lại vào buổi bảo vệ tuần cuối để chấm điểm) HÀ NỘI - 2010 1-1 BÀI Tính toán 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 số tính toán thông dụng với vector, ma trận số phức Sử dụng MATLAB để biểu diễn vẽ đồ thị số tín hiệu II Yêu cầu sinh viên • • • Cài đặt phần mềm MATLAB, thực trước 1.1 nhà Đọc tài liệu hướng dẫn trả lời câu hỏi CBHD trước làm thực hành Hoàn thành nội dung thực hành (kể nhà) trước tham dự buổi III Nội dung 3.1 Làm quen với cửa sổ lệnh soạn thảo chương trình m file MATLAB Mục CBHD hướng dẫn cho SV (khoảng 10ph) 3.2 Tính toán với MATLAB Bài 1.1 (tự chuẩn bị làm nhà): Phép nhân, chia luỹ thừa với vector ma trận MATLAB công cụ phần mềm tính toán mạnh, đặc biệt thích hợp cho lĩnh vực khoa học kỹ thuật Một đặc điểm quan trọng tính toán MATLAB dựa sở phép toán với vector ma trận số phức MATLAB phân biệt hai cách thực phép nhân, chia lũy thừa Đó nhân, chia, lũy thừa kiểu ma trận, nhân, chia, lũy thừa kiểu phần tử Chúng định nghĩa sau: Phép nhân ma trận (nhân vector hàng với vector cột) Đặt A = [ a1 a2 a3 … an ] B = [b1 b2 b3 … bn ]′ hai vector Để ý A định nghĩa vector hàng B định nghĩa vector cột, thị dấu chuyển vị (’) Ở đây, phép nhân vector hàng A với vector cột B thực toán tử nhân ma trận (*) Do đó: A*B = a1b1 + a2b2 + a3b3 + + an bn = giá trị Ví dụ, A = [1 5] B = [-2 -3 7]’ phép nhân ma trận A*B cho kết 68, tức A*B = 1× (−2) + × + × (−3) + × + × = 68 Điều kiểm chứng đoạn lệnh MATLAB sau đây: A=[1 5]; B=[ −2 −3 7]'; A*B % Observe transpose operator (‘) in B ans = 68 Bây giờ, giả thiết A B vector hàng, thử thực phép nhân ma trận với câu lệnh MATLAB sau: A=[1 5]; B=[−2 −3 7]; A*B % No transpose operator (‘) here Khi lệnh thực hiện, MATLAB hiển thị dòng tin nhắn: ??? Error using ==> * Inner matrix dimensions must agree ) Các em giải thích dòng tin nhắn đó: Phép nhân phần tử (nhân vector hàng với vector hàng) Đặt C = [ c1 c2 c3 … cn ] D = [ d1 d d3 … d n ] hai vector hàng Ở phép nhân vector hàng C với vector hàng D thực toán tử nhân chấm (.*) Không có khoảng trống dấu chấm dấu nhân Do đó: 1-1 C.*D = [ c1d1 c2 d c3 d3 … cn d n ] Kết phép nhân chấm vector hàng khác, với số phần tử vector hàng C D Ví dụ, đặt C = [1 5] D = [-2 -3 7], phép nhân chấm hai vector cho kết sau: C.*D = [1× (−2) × × (−3) × × ] = [ −2 12 −9 32 35] Kiểm tra với MATLAB đoạn lệnh sau: C=[1 5]; % Vectors C and D must have D=[−2 −3 7]; % same number of elements C.*D % We observe that this is a dot multiplication ans = -2 12 -9 32 35 Tương tự vây, toán tử chia (/) lũy thừa (^) sử dụng cho phép chia lũy thừa kiểu ma trận, toán tử chia chấm (./) lũy thừa chấm (.^) sử dụng cho phép chia lũy thừa phần tử Chú ý rằng, dấu chấm (.) không cần thiết với toán tử cộng (+) ( − ) 3.3 Vẽ đồ thị với MATLAB Bài 1.2 (thực có hướng dẫn PTN): Vẽ đồ thị đặc tính tần số Xét mạch điện Hình 1.1, tần số góc ω (radian/s) điện áp cung cấp thay đổi từ 300 đến 3000 với bước tính 100 radian/s, biên độ điện áp giữ không đổi Ứng với tần số, thiết bị đo ghi lại độ lớn trở kháng Z = V A số liệu cho Bảng 1.1 Hãy vẽ độ lớn trở kháng, tức Z theo tần số góc ω Bảng 1.1 Hình 1.1 Nhập số liệu dạng vector: Thông thường muốn vẽ đồ thị tập hợp cặp số liệu xếp theo thứ tự Trong MATLAB, tất dãy số nhập vào dạng vector ma trận, cụ thể cho tập ta cần sử dụng hai biến w z sau (giữa phần tử vector phân biệt dấu cách): w=[300 400 500 600 700 800 900 1000 1100 1200 1300 1400 1500 1600 1700 1800 1900 2000 2100 2200 2300 2400 2500 2600 2700 2800 2900 3000]; % z=[39.339 52.789 71.104 97.665 140.437 222.182 436.056 1014.938 469.830 266.032 187.052 145.751 120.353 103.111 90.603 81.088 73.588 67.513 62.481 58.240 54.611 51.468 48.717 46.286 44.122 42.182 40.432 38.845]; 1-2 Lưu ý: Chúng ta gõ ω (omega) cửa sổ lệnh MATLAB, sử dụng chữ w để thay Nếu câu lệnh, hay vector hàng dài để vừa dòng, tiếp tục dòng cách gõ dấu ba chấm, sau ấn để bắt đầu dòng mới, tiếp tục nhập liệu Ngoài ra, sử dụng dấu chấm phẩy (;) để tránh việc hiển thị liệu không quan tâm lên hình Sử dụng lệnh plot(x,y): Lệnh plot(x,y) MATLAB cho phép vẽ đồ thị biểu diễn giá trị chứa vector y theo giá trị phần tử thứ tự tương ứng vector x Sau gõ tiếp lệnh plot(w,z) cửa sổ lệnh MATLAB, ta nhận đồ thị biểu diễn hàm w theo z cửa sổ riêng Đồ thị gọi đáp ứng biên độ tần số mạch điện Các em vẽ lại đồ thị vào Hình 1.2 Ta tạo cho đồ thị trên, hay đồ thị bất kỳ, trông đẹp mắt lệnh sau: grid on: kẻ đường lưới cho đồ thị grid off: bỏ đườ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 dòng ký tự string (nhãn) cho đồ thị xlabel(‘string’) ylabel(‘string’): đánh nhãn cho trục x trục y Hình 1.2 Đồ thị biểu diễn trở kháng Z theo tần số ω cho Bài 1.2 Sử dụng thang đo logarithm: Đáp ứng biên độ tần số thường biểu diễn với trục x chia theo thang đo logarithm cách sử dụng lệnh semilogx(x,y) (và bổ sung tiêu đề) 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 vẽ lại đồ thị sau thực đoạn lệnh vào Hình 1.3 Magnitude of Impedance vs Radian Frequency 1200 1000 |Z| in Ohms 800 600 400 200 10 10 w in rads/sec 10 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 hai trục ta sử dụng lệnh loglog(x,y) 1-3 Bài 1.3 (thực có hướng dẫn PTN): Vẽ tín hiệu hình sin Ta thực hành vẽ đồ thị sóng sin pha Lưu ý rằng, thực chất máy tính ta vẽ tín hiệu không liên tục (tức vẽ điểm rời rạc) Tuy nhiên, tín hiệu không liên tục biểu diễn gần vẽ điểm liệu rời rạc gần Trước hết, ta cần tạo vector lưu trữ dãy giá trị thời gian (cách nhau) Điều thực hàm linspace(giá trị đầu, giá trị cuối, số điểm liệu): t=linspace(0, 2*pi, 60); % pi is a built−in function in MATLAB; Hàm quy định số điểm liệu không quy định khoảng cách điểm liệu Ta sử dụng lệnh t = first: increment: last để qui định khoảng cách điểm liệu số điểm liệu, ví dụ t = 0:0.02*pi:2*pi t = (0: 0.02: 2)*pi; Các sóng sin ba pha tạo hàm MATLAB: y=sin(t); u=sin(t+2*pi/3); v=sin(t+4*pi/3); Ta vẽ tín hiệu đồ thị lệnh: plot(t,y,t,u,t,v); % The x−axis must be specified for each function plot(t,[y;u;v]); % [y;u;v] is a three-row matrix Sau vẽ thêm lưới bổ sung thích 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 thực đoạn lệnh trên, ta nhận đồ thị tín hiệu biểu diễn liên tục Các em vẽ lại đồ thị (ghi đủ thông ghi chú) vào Hình 1.4 đây: 0.8 0.6 0.4 0.2 -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]) chút sau (thêm ký hiệu ’.’): plot(t,[y;u;v], ‘.’) ta thấy tín hiệu biểu diễn thành dãy giá trị rời rạc (mỗi tín hiệu gồm 60 giá trị) ) Hãy giải thích lý tín hiệu Hình 1.4 lại nhìn tín hiệu liên tục? Trong ví dụ trên, không quy định kiểu đường, kiểu đánh dấu kiểu màu cho đồ thị Tuy nhiên, MATLAB cho phép lựa chọn nhiều kiểu đường, ký hiệu đồ thị màu sắc khác Những kiểu này, kết hợp chúng, thực lệnh plot(x,y,s) s chuỗi ký tự bao gồm ký tự cho ba cột Bảng 1.2 MATLAB màu mặc định, màu xanh dương quay vòng theo bảy màu liệt kê Bảng 1.2 Cũng vậy, kiểu đánh dấu mặc định, kiểu đánh dấu vẽ 1-4 định chúng Kiểu đường mặc định đường nét liền Tuy nhiên, với phiên MATLAB nhất, chọn màu sắc, độ rộng đường lựa chọn khác trực tiếp Cửa sổ hình vẽ Bảng1.2 Các kiểu đường, màu sắc, kiểu đánh dấu MATLAB Ví dụ, plot(x,y,‘m*:’) vẽ đường chấm chấm màu đỏ tươi, với dấu điểm liệu, plot(x,y,‘rs’) đánh dấu hình vuông màu đỏ điểm liệu, không vẽ kiểu đường Nếu muốn nối điểm liệu đường nét liền, phải gõ plot(x,y,‘rs−’) Nếu cần thêm thông tin, gõ help plot Cửa sổ lệnh MATLAB Bài 1.4 (thực có hướng dẫn PTN): Dịch tín hiệu (thời gian) Chương trình sau vẽ tín hiệu sin đồ thị thực phép dịch tín hiệu (một khoảng thời gian) Các em gõ lại chương trình file soạn thảo MATLAB lưu lại với tên file (ví dụ t_shift.m), thực chương trình vẽ lại đồ thị (cuối cùng) Hình 1.5 Ngoài ra, ghi lời thích vào sau dấu % số dòng lệnh (một số dòng 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 bo nho clf; % tinc=0.01; % khoang cach cac diem tren truc thoi gian T=5; % for k=[-1 2] % cac gia tri thoi gian duoc dich: -1, va 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-5 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 an mot phim bat ky end shift of x(t)=3cos(2πt/4)u(t) x(t) x(t+(2)) x(t) -1 -2 -3 -5 -4 -3 -2 -1 t Hình 1.5 Phép dịch tín hiệu cho Bài 1.4 Bài 1.5 (thực có hướng dẫn PTN) Viết đoạn Script MATLAB để vẽ đồ thị cho tín hiệu sau: y = f (t ) = 3e −4t cos 5t − 2e−3t sin 2t + khoảng thời gian ≤ t ≤ giây t2 t +1 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 vẽ lại đồ thị tập lên Hình 1.6 Plot for Example 2.2 y=f(t) -1 0.5 1.5 2.5 t 3.5 4.5 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 x(t ) = r (t ) ( u (t ) − u (t − 1) ) , sử dụng phép dịch tín hiệu u (t ) tín hiệu bước nhảy đơn vị (unit step) r (t ) tín hiệu dốc (unit ramp) 1-6 Bài 1.7 (về nhà tự làm) Hãy vẽ hàm y = sin x, z = cos x, w = sin x ⋅ cos x, v = sin x / cos x khoảng ≤ x ≤ 2π sử dụng 100 điểm liệu Sử dụng lệnh subplot để biểu diễn hàm đồ thị hình vẽ Sử dụng đoạn script MATLAB tạo bốn đồ thị cho đâ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 1]); title('y=(sinx)^2'); subplot(222); % upper right of four subplots plot(x,z); axis([0 2*pi 1]); title('z=(cosx)^2'); subplot(223); % lower left of four subplots plot(x,w); axis([0 2*pi 0.3]); title('w=(sinx)^2*(cosx)^2'); subplot(224); % lower right of four subplots plot(x,v); axis([0 2*pi 400]); title('v=(sinx)^2/(cosx)^2'); ) Các em tìm hiểu giải thích dòng lệnh, sau vẽ lại bốn đồ thị Hình 1.7 y=(sinx)2 z=(cosx)2 1 0.5 0.5 0 w=(sinx)2*(cosx)2 v=(sinx)2/(cosx)2 400 300 0.2 200 0.1 100 6 Hình 1.7 Các đồ thị cho Bài 1.7 Bài 1.8 (về nhà tự làm): Tính toán biểu diễn số phức Bài tập minh họa khả MATLAB với số phức real(z) imag(z) hiển thị phần thực phần ảo số phức z = x + iy abs(z) angle(z) tính toán độ lớn góc pha số phức z = x + iy = r ∠θ polar(theta,r) vẽ đồ thị tọa độ cực, r độ lớn theta góc pha tính theo radian round(n) làm tròn số thực n thành số nguyên gần với 1-7 Xét mạch điện Hình 1.1, với giá trị điện trở, điện cảm điện dung cho, trở kháng mạch Z ab hàm tần số ω có biểu thức sau: 104 − j (106 ω ) 10 + j (0.1ω − 105 ω ) Hãy viết đoạn lệnh MATLAB để thực yêu cầu sau vẽ lại đồ thị Hình 1.9 a) Vẽ Re {Z } (phần thực trở kháng Z ) theo tần số ω b) Vẽ Im {Z } (phần ảo trở kháng Z ) theo tần số ω c) Vẽ trở kháng Z theo tần số ω hệ tọa độ cực Z ab = Z = 10 + ) Hãy viết đoạn lệnh vào ô chữ nhật (dòng lệnh viết sẵn): Hình 1.8 Mạch điện cho Bài 1.8 w=0: 1: 2000; % Define interval with one radian interval Real part of Z 1500 1000 120 500 90 2000 60 1000 0 500 1000 1500 radian frequency w 2000 Imaginary part of Z 500 Polar Plot of Z 150 180 210 330 240 -500 -1000 500 1000 1500 radian frequency w 2000 Hình 1.9 Các đồ thị cho Bài 1.8 1-8 30 270 300 ... 19 00 2000 210 0 2200 2300 2400 2500 2600 2700 2800 2900 3000]; % z=[39.339 52.789 71. 104 97.665 14 0.437 222 .18 2 436.056 10 14.938 469.830 266.032 18 7.052 14 5.7 51 120.353 10 3 .11 1 90.603 81. 088 73.588... vào dạng vector ma trận, cụ thể cho tập ta cần sử dụng hai biến w z sau (giữa phần tử vector phân biệt dấu cách): w=[300 400 500 600 700 800 900 10 00 11 00 12 00 13 00 14 00 15 00 16 00 17 00 18 00 19 00... loglog(x,y) 1- 3 Bài 1. 3 (thực có hướng dẫn PTN): Vẽ tín hiệu hình sin Ta thực hành vẽ đồ thị sóng sin pha Lưu ý rằng, thực chất máy tính ta vẽ tín hiệu không liên tục (tức vẽ điểm rời rạc) Tuy nhiên, tín

Ngày đăng: 07/12/2015, 12:46

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan